Moved LoRaWAN reconnect to separated task
This commit is contained in:
parent
179336ef7b
commit
570f3313da
|
@ -11,10 +11,12 @@ Odjezdová tabule městské hromadné dopravy v Plzni postavená na protokolu Lo
|
||||||
- automatické obnovení ztraceného připojení
|
- automatické obnovení ztraceného připojení
|
||||||
|
|
||||||
### 🧰 Použité technologie
|
### 🧰 Použité technologie
|
||||||
|
|
||||||
- **C/C++**, **Python**, **LoRaWAN**
|
- **C/C++**, **Python**, **LoRaWAN**
|
||||||
- HTML, CSS, JavaScript, Vue.js
|
- HTML, CSS, JavaScript, Vue.js
|
||||||
|
|
||||||
### ⚙️ Použité součástky
|
### ⚙️ Použité součástky
|
||||||
|
|
||||||
- [M5Stack Core2](https://shop.m5stack.com/products/m5stack-core2-esp32-iot-development-kit)
|
- [M5Stack Core2](https://shop.m5stack.com/products/m5stack-core2-esp32-iot-development-kit)
|
||||||
- [LoRaWAN UNIT 868MHz (ASR6501)](https://shop.m5stack.com/products/lorawan-unit-868mhz-asr6501-with-antenna)
|
- [LoRaWAN UNIT 868MHz (ASR6501)](https://shop.m5stack.com/products/lorawan-unit-868mhz-asr6501-with-antenna)
|
||||||
- kabely k propojení
|
- kabely k propojení
|
||||||
|
|
|
@ -13,11 +13,14 @@ M5_LoRaWAN LoRaWAN;
|
||||||
bool connected = false;
|
bool connected = false;
|
||||||
int lastMessage = 0;
|
int lastMessage = 0;
|
||||||
|
|
||||||
|
void delay(int d) {
|
||||||
|
vTaskDelay(d/portTICK_PERIOD_MS);
|
||||||
|
}
|
||||||
|
|
||||||
void setupLoRaWAN() {
|
void setupLoRaWAN() {
|
||||||
|
|
||||||
connected = false;
|
connected = false;
|
||||||
LoRaWAN.Init(&Serial2, 13, 14);
|
LoRaWAN.Init(&Serial2, 13, 14);
|
||||||
delay(100);
|
|
||||||
Serial.println("Connecting...");
|
Serial.println("Connecting...");
|
||||||
while (!LoRaWAN.checkDeviceConnect());
|
while (!LoRaWAN.checkDeviceConnect());
|
||||||
LoRaWAN.writeCMD("AT?\r\n");
|
LoRaWAN.writeCMD("AT?\r\n");
|
||||||
|
@ -56,6 +59,7 @@ void setupLoRaWAN() {
|
||||||
LoRaWAN.startJoin();
|
LoRaWAN.startJoin();
|
||||||
|
|
||||||
while(true) {
|
while(true) {
|
||||||
|
delay(10);
|
||||||
String recvMsg = LoRaWAN.waitMsg(1000);
|
String recvMsg = LoRaWAN.waitMsg(1000);
|
||||||
recvMsg.trim();
|
recvMsg.trim();
|
||||||
if(recvMsg == "+CJOIN:OK") {
|
if(recvMsg == "+CJOIN:OK") {
|
||||||
|
@ -80,8 +84,9 @@ void setup() {
|
||||||
setupLoRaWAN();
|
setupLoRaWAN();
|
||||||
M5.Lcd.drawString("Connected!", 0, 30);
|
M5.Lcd.drawString("Connected!", 0, 30);
|
||||||
delay(500);
|
delay(500);
|
||||||
|
M5.Lcd.clear();
|
||||||
|
|
||||||
xTaskCreatePinnedToCore(task1, "task1", 4096, NULL, 1, NULL, 1);
|
xTaskCreatePinnedToCore(taskReceiving, "taskReceiving", 4096, NULL, 1, NULL, 1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -368,12 +373,13 @@ void addDeparture(String s) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Main loop with time counting
|
// Main loop with time counting
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
seconds = time(NULL);
|
seconds = time(NULL);
|
||||||
if(seconds - lastMessage > INACTIVITY_TIME) {
|
if(connected && seconds - lastMessage > INACTIVITY_TIME) {
|
||||||
setupLoRaWAN();
|
xTaskCreate(taskReconnect, "taskReconnect", 4096, NULL, 1, NULL);
|
||||||
}
|
}
|
||||||
if(seconds / 6 > lastUpdate) {
|
if(seconds / 6 > lastUpdate) {
|
||||||
lastUpdate++;
|
lastUpdate++;
|
||||||
|
@ -384,11 +390,18 @@ void loop() {
|
||||||
delay(900);
|
delay(900);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Additional task for receiving LoRaWAN messages
|
// Task for receiving LoRaWAN messages
|
||||||
|
|
||||||
void task1(void* params) {
|
void taskReceiving(void* params) {
|
||||||
while(true) {
|
while(true) {
|
||||||
if(connected) receiveMsg(1);
|
if(connected) receiveMsg(1);
|
||||||
else delay(1000);
|
else delay(1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Task for reconnecting
|
||||||
|
|
||||||
|
void taskReconnect(void* params) {
|
||||||
|
setupLoRaWAN();
|
||||||
|
vTaskDelete(NULL);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue