Esp32 received the parsed packet value through esp32uart communication with atmega328.
I want to register this packet value with the server as real-time data value by communicating wifi again.
What should I do? I don't know how.
-----------------------------------------------------------------------
main code
-----------------------------------------------------------------------
#include <WiFi.h>
#include <FirebaseESP32.h>
#include <HardwareSerial.h>
#define SSID_id "NZR" //공유기 이름
#define password "needsrobot"//공유기 비밀번호
#define FIREBASE_AUTH "RddMa9fJUuRJ8MoHqNYoSZr71fIznCWV8LK1Wd8m"//파이어베이스 암호키
#define FIREBASE_HOST "parmkit-packetdatatx-default-rtdb.firebaseio.com" //파이어베이스 호스트 주소
#define RXD2 16
#define TXD2 17
//tx관련
#define ControlPacket_length 23 //컨트롤메시지 패킷 길이
byte ControlPacket_data[ControlPacket_length]={0, }; //컨트롤패킷데이터 배열변수
//rx관련
#define SensorPacket_length 16 // 센서메세지 패킷 길이
//버튼 트리거
#define button1 0
//파싱관련
byte rxPacketData[ControlPacket_length]={0, };
byte data=0;
byte cntVal=0;
boolean flagComRx=false;
// 카운터 관련
uint32_t cntLoop=0;
uint8_t valButton;
void controlpacket()
{
ControlPacket_data[0] = 0x03;
ControlPacket_data[1] = 0x02;
ControlPacket_data[2] = ControlPacket_length;
ControlPacket_data[3] = 0x02;
ControlPacket_data[4] = cntVal++;
ControlPacket_data[ControlPacket_length-1] = ControlPacket_data[0];
for(byte i=1; i<ControlPacket_length-1; i++) //CRC 생성
{
ControlPacket_data[ControlPacket_length-1]=ControlPacket_data[ControlPacket_length-1]^ControlPacket_data[i];
}
Serial2.write(ControlPacket_data, ControlPacket_length);
Serial.print("[Tx}: ");
printString(ControlPacket_data, ControlPacket_length);
}
void setup(){
WiFi_FireBase_connect();
}
void loop()
{
if(Serial2.available()) //센서데이터 패킷이 들어오면
{
data=Serial2.read(); //임시변수에 집어넣고
fnAPP_Packet_Parsing(data); // 패킷분석 후 flagComRx 값을 false 변환되면
}
valButton = digitalRead(button1);
if(valButton==0) // (flagComRx==false) && if조건을 만족 하기 때문에 버튼을 누르면
{
cntLoop++;
if (cntLoop>5000) { // 200ms
controlpacket();//컨트롤패킷을 보내면서 flagComRx 값을 true로 변경되고 if문을 빠져나옴
cntLoop = 0;
}
}
delayMicroseconds(10);
}
void printString(byte *buffTemp, byte lenStr) // 더비깅 테스팅
{
for (byte i=0; i<lenStr; i++)
{
Serial.print(buffTemp[i]);
Serial.print(" ");
}
Serial.println();
}
void WiFi_FireBase_connect()
{
Serial.begin(115200);
Serial2.begin(57600);
Serial.println("Test begin");
pinMode(button1, INPUT_PULLUP);
Serial.print("Wifi Start"); // 와이파이 시작
WiFi.begin(SSID_id, password);// 접속요청
delay(100);
while(WiFi.status()!=WL_CONNECTED) //와이파이 접속이 완료될때까지 계속 연결
{
Serial.print(".");
delay(500);
}
Serial.println("Connected"); //연결 성공시 텍스트 출력
Serial.print("ip Adress: ");
Serial.print(WiFi.localIP()); //ip주소 호출
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); //파이어베이스 웹서버 연결시작
Firebase.reconnectWiFi(true);//와이파이 끊어졋을때 웹서버 재연결
}