LoRa получает только 2-4 пакета, затем перестает работать

arduino-mega error lora

Я работаю над проектом LoRa, используя [Ai-Thinker RA-01 SX1278 433 МГц LoRa][1] с библиотекой [sandeepmistry/arduino-LoRa][2]. Я изменил пример lorariever, чтобы он выглядел так

#include <SPI.h>
#include <LoRa.h>

void setup() {
  Serial.begin(9600);
  while (!Serial);

  Serial.println("LoRa Receiver");

  if (!LoRa.begin(433E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
}

void loop() {
  // try to parse packet
  int packetSize = LoRa.parsePacket();
  LoRa.onReceive(onReceive);
}
void onReceive(int packetSize) {
  
  if (packetSize) {
    // received a packet
    Serial.print("Received packet '");

    // read packet
    while (LoRa.available()) {
      Serial.print((char)LoRa.read());
    }

    // print RSSI of packet
    Serial.print("' with RSSI ");
    Serial.println(LoRa.packetRssi());
  }
}

Я успешно получаю 2-4 пакета, но затем не получаю ни одного, хотя передатчик все еще передает. (Если я перезапущу свой Arduino, он снова получит 2-4 пакета).

У меня оба модуля LoRa расположены очень близко друг к другу (около 10 см). Может ли это вызвать проблему? - Даже когда я попробовал пройти 15 метров со стенами, проблема осталась.

Иногда приемник прослушивается и начинает все время получать пакеты (один пакет, например, 50 раз), когда он прослушивается подобным образом, он не прекращает получать (уникальные) пакеты после любого числа.

Вы знаете, в чем может быть проблема? Спасибо.

Я использую Arduino Mega

#include <SPI.h>
#include <LoRa.h>

void setup() {
  Serial.begin(9600);
  while (!Serial);

  Serial.println("LoRa Receiver");

  if (!LoRa.begin(915E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
}

void loop() {
  // попытка проанализировать пакет
  int packetSize = LoRa.parsePacket();
  if (packetSize) {
    // получен пакет
    Serial.print("Received packet '");

    // прочитать пакет
    while (LoRa.available()) {
      Serial.print((char)LoRa.read());
    }

    // печать RSSI пакета
    Serial.print("' with RSSI ");
    Serial.println(LoRa.packetRssi());
  }
}

Это оригинальный пример Lorariever, но я ничего не получаю, используя его. [1]: https://www.laskarduino.cz/ai-thinker-ra-01-sx1278-433mhz-lora-modul/ [2]: https://github.com/sandeepmistry/arduino-LoRa

, 👍0

Обсуждение

начните с примера кода ... похоже, что вы внесли сомнительные изменения в пример кода, @jsotola

При использовании кода примера по умолчанию я вообще ничего не получаю., @krystof18


1 ответ


Лучший ответ:

1

Я нашел решение. Проблема заключалась в вызове onRecieve в цикле, а не в настройке Это должно было выглядеть так...

#include <SPI.h>
#include <LoRa.h>

void setup() {
  Serial.begin(9600);
  while (!Serial);

  Serial.println("LoRa Receiver");

  if (!LoRa.begin(433E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }
  LoRa.onReceive(onReceive);
  LoRa.receive();
}

void loop() {
  //do nothing
}
void onReceive(int packetSize) {
  
  if (packetSize) {
    // получен пакет
    Serial.print("Received packet '");

    // прочитать пакет
    while (LoRa.available()) {
      Serial.print((char)LoRa.read());
    }

    // печать RSSI пакета
    Serial.print("' with RSSI ");
    Serial.println(LoRa.packetRssi());
  }
}
,