Moved LoRaWAN to separated task & improved reliability
This commit is contained in:
parent
1710f6be92
commit
e38fbd54f8
|
@ -18,7 +18,7 @@ void setup() {
|
||||||
M5.Lcd.begin();
|
M5.Lcd.begin();
|
||||||
M5.Lcd.setTextSize(1);
|
M5.Lcd.setTextSize(1);
|
||||||
M5.Lcd.setFreeFont(&Ubuntu_24px);
|
M5.Lcd.setFreeFont(&Ubuntu_24px);
|
||||||
M5.Lcd.drawString("Connecting to LoraWAN...", 0, 0);
|
M5.Lcd.drawString("Connecting to LoRaWAN...", 0, 0);
|
||||||
while (!LoRaWAN.checkDeviceConnect());
|
while (!LoRaWAN.checkDeviceConnect());
|
||||||
LoRaWAN.writeCMD("AT?\r\n");
|
LoRaWAN.writeCMD("AT?\r\n");
|
||||||
delay(100);
|
delay(100);
|
||||||
|
@ -29,17 +29,14 @@ void setup() {
|
||||||
// Enable Log Information
|
// Enable Log Information
|
||||||
LoRaWAN.writeCMD("AT+CSAVE\r\n");
|
LoRaWAN.writeCMD("AT+CSAVE\r\n");
|
||||||
LoRaWAN.writeCMD("AT+IREBOOT=0\r\n");
|
LoRaWAN.writeCMD("AT+IREBOOT=0\r\n");
|
||||||
Serial.println("LoraWan Rebooting");
|
|
||||||
delay(1000);
|
delay(1000);
|
||||||
|
|
||||||
Serial.println("LoraWan config");
|
|
||||||
// Set Join Mode OTAA.
|
// Set Join Mode OTAA.
|
||||||
LoRaWAN.configOTTA("00bdea85badeedf1", // Device EUI
|
LoRaWAN.configOTTA("00bdea85badeedf1", // Device EUI
|
||||||
"00bdea85badeed01", // APP EUI
|
"00bdea85badeed01", // APP EUI
|
||||||
"00bdea85badeed0100bdea85badeed01", // APP KEY
|
"00bdea85badeed0100bdea85badeed01", // APP KEY
|
||||||
"2" // Upload Download Mode
|
"2" // Upload Download Mode
|
||||||
);
|
);
|
||||||
Serial.println("MESSAGE: " + LoRaWAN.waitMsg(1000));
|
LoRaWAN.waitMsg(1000);
|
||||||
|
|
||||||
// Set ClassC mode
|
// Set ClassC mode
|
||||||
LoRaWAN.setClass("2");
|
LoRaWAN.setClass("2");
|
||||||
|
@ -68,11 +65,13 @@ void setup() {
|
||||||
if(recvMsg == "+CJOIN:OK") {
|
if(recvMsg == "+CJOIN:OK") {
|
||||||
Serial.println("Connected!");
|
Serial.println("Connected!");
|
||||||
M5.Lcd.drawString("Connected!", 0, 30);
|
M5.Lcd.drawString("Connected!", 0, 30);
|
||||||
delay(500);
|
delay(500);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
xTaskCreatePinnedToCore(task1, "task1", 4096, NULL, 1, NULL, 1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -167,7 +166,7 @@ String decodeMsg(String hexEncoded) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void receiveMsg() {
|
void receiveMsg() {
|
||||||
String recvMsg = LoRaWAN.waitMsg(500);
|
String recvMsg = LoRaWAN.waitMsg(100);
|
||||||
recvMsg.trim();
|
recvMsg.trim();
|
||||||
if(recvMsg.length() != 0 && recvMsg.substring(0, 8) == "OK+RECV:") {
|
if(recvMsg.length() != 0 && recvMsg.substring(0, 8) == "OK+RECV:") {
|
||||||
String decodedMsg = decodeMsg(split(recvMsg, ',', 3));
|
String decodedMsg = decodeMsg(split(recvMsg, ',', 3));
|
||||||
|
@ -294,9 +293,7 @@ void displayDepartures(int lines) {
|
||||||
// Main loop with time counting
|
// Main loop with time counting
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
receiveMsg();
|
|
||||||
seconds = time(NULL);
|
seconds = time(NULL);
|
||||||
// TODO: Not sure if time is ticking correctly (check by adding real date & time and keep it running)
|
|
||||||
if(seconds / 6 > last_update) {
|
if(seconds / 6 > last_update) {
|
||||||
last_update++;
|
last_update++;
|
||||||
int lines = 7;
|
int lines = 7;
|
||||||
|
@ -304,5 +301,14 @@ void loop() {
|
||||||
displayDepartures(lines);
|
displayDepartures(lines);
|
||||||
displayTimeDate(lines);
|
displayTimeDate(lines);
|
||||||
}
|
}
|
||||||
delay(5);
|
delay(500);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Additional task for receiving LoRaWAN messages
|
||||||
|
|
||||||
|
void task1(void* pvParameters) {
|
||||||
|
while(true) {
|
||||||
|
receiveMsg();
|
||||||
|
delay(1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue