Dragino LG01-S получает необычный пакет и перестает работать

У меня проблема с соединением между Dragino LG01-S и Heltec WiFi LoRa 32.

WiFi LoRa 32 отправляет пакеты с данными о температуре на LG01-S каждые 5 секунд. LG01-S принимает пакеты постоянно, но через некоторое время (может быть 20 минут, может быть 7 часов) он получает пакет, который не похож на другие. Я следил за пакетами в последовательном мониторе, пока не обнаружился неисправный, вот так я увидел, как они выглядели.

«Неудачные» пакеты выглядят так:

¹h260 äàŽÛNR · à, ªê @ ö9AÚo … Œ £ ŪK;??! E I × .U * ®d§ «¿ ‘Зол

Обычно это что-то вроде:

30,00

Размер обычных пакетов составляет пять байт, тогда как размер ошибочного пакета составляет 73 байта.

Ошибка в приемнике (LG01-S), потому что после обнаружения сбойного пакета он просто прекращает получать любые данные и вообще не выполняет никакого кода. После сбоя LoRa32 продолжает отправлять пакеты.

Я проверил, соответствуют ли сбои, но это не так, как уже упоминалось, они происходят в разное время.

Ниже вы можете увидеть код отправителя и получателя.

отправитель

    #include <SPI.h>
#include <LoRa.h>
#include "SSD1306.h"#include<Arduino.h>
#include <dht.h>SSD1306  display(0x3c, 4, 15);

#define DHTPIN  17

#define SS      18
#define RST     14
#define DI0     26
#define BAND    915E6

//create an instance of DHT sensor
dht TempSensor;

void setup()
{
pinMode(16, OUTPUT);
digitalWrite(16, LOW);
delay(50);
digitalWrite(16, HIGH);

Serial.begin(115200);
while (!Serial);
display.init();
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(5, 5, "LoRa Sender");
display.display();

SPI.begin(5, 19, 27, 18);
LoRa.setPins(SS, RST, DI0);
Serial.println("LoRa Sender");
if (!LoRa.begin(BAND)) {
Serial.println("Starting LoRa failed!");
while (1);
}

LoRa.setSyncWord(0xF3);
Serial.println("LoRa Initial OK!");
display.drawString(5, 20, "LoRa Initializing OK!");
display.display();
delay(2000);
}

void loop() {
double check = TempSensor.read11(DHTPIN);
Serial.println(TempSensor.temperature);
Serial.print("Sending temperature: ");
Serial.println(TempSensor.temperature);
display.clear();
display.setFont(ArialMT_Plain_16);
display.drawString(3, 5, "Sending temperature ");
display.drawString(50, 30, String(TempSensor.temperature));
display.display();
// sending packet
LoRa.beginPacket();
LoRa.print(TempSensor.temperature);
Serial.println("package sent");
LoRa.endPacket();
delay(5000);
}

Получатель:

#include <SPI.h>
#include <LoRa.h>
#include <Console.h>
#include <Process.h>
#include <Bridge.h>

// Set center frequency
uint32_t freq = 915E6;
Process logdata;
int timeCounter = 0;
void setup() {
Bridge.begin(115200);
Console.begin();
Console.println("LoRa Receiver");

if (!LoRa.begin(freq)) {
Console.println("Starting LoRa failed!");
while (1);
}
LoRa.setSyncWord(0xF3);
LoRa.receive();
}

void loop() {
// try to parse packet
int packetSize = LoRa.parsePacket();
if (packetSize) {
// received a packet read packet
while (LoRa.available()) {
String TemperatureData = LoRa.readString();
Console.println(TemperatureData);
Console.println(packetSize);
//Save in db
logdata.begin("lua");
logdata.addParameter("/root/LinkTempInside.lua");  //
logdata.addParameter(String(TemperatureData));  //
logdata.run();  // run the command

// read the output of the command
while (logdata.available() > 0) {
char c = logdata.read();
}
Console.println("Data Sent");
}
}
}

Спасибо за помощь.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector