Arduino Nano with RA-02(SX1278) 收到后冻结

问题描述 投票:0回答:2

我从同一个地方得到了两个相同的 Arduino Nano 克隆(CH340),带有 RA-02 LoRa 模块。我正在使用 Esplora 库中的 LoRaReceiver 和 LoRaSender 草图(刚刚将频率更改为 433)

接收者: '''

#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();
  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());
  }
}

'''

发件人:'''

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

int counter = 0;

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

  Serial.println("LoRa Sender");

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

void loop() {
  Serial.print("Sending packet: ");
  Serial.println(counter);

  // send packet
  LoRa.beginPacket();
  LoRa.print("hello ");
  LoRa.print(counter);
  LoRa.endPacket();

  counter++;

  delay(5000);
}

'''

Connected as

链接到带有图片的网站

注意没有使用电位器。 它在死亡之前会收到随机数量的消息。它仍然消耗电流,因此模块必须工作(TX 空闲时约为 5mA,发送时约为 130mA,而 RX 始终约为 5mA)。每个模块均通过 2 个(3.3V DC2DC 100mA 模块)供电,每个 RA-02 的总电流为 200mA。这些 DC2DC 的电源取自 arduino 的 5V,该 arduino 通过 USB 连接到我的桌面。

重新启动后(更改显示器的带宽并将其设置回 9600),它会在很短的时间内再次开始接收。再次冻结之前平均大约有 7 条消息。

arduino freeze lora
2个回答
0
投票

上周与我的一位朋友进行了大量测试后,我们决定尝试使用更大的板来接收,因为发送并没有停滞。他建议使用 Arduino Mega,但由于我桌上有一个 4GB RPi,我们决定将其连接起来。

它没有问题,所以如果有人遇到此类问题,我建议尝试模板(这样你就会留下足够的可用空间),如果可能的话使用更大的板。

PI 接收了大约一个小时,没有任何问题。

如果使用 PI,我还会使用 htop 来查看内存是否有任何问题:]

哦,我使用的设置指南:https:// Circuitdigest.com/microcontroller-projects/raspberry-pi-with-lora-peer-to-peer-communication-with-arduino

我只需要使用

sudo apt-get install python3-pip
sudo apt-get install python-pip
安装 pip3 (我使用 python3)。其他一切均按指南中的“原样”进行。


0
投票

我找到了解决办法!!!

很多人都经历过这种情况,但到目前为止还没有人找到解决方案: https://arduino.stackexchange.com/questions/94389/lora-sx1278-stops-receiving-after-a-short-time https://github.com/sandeepmistry/arduino-LoRa/issues/447 https://github.com/HelTecAutomation/Heltec_ESP32/issues/61

这是一个很好的解决方法,但对于 SEMTECH 来说了解为什么会发生这种情况也没什么坏处 并且他会给我们官方的解决方案,或者修复他芯片中的缺陷。

// ============================================================================
//  Each time the OnReceive callback is called there is a small error chance
//  this could be approximately every 1000, 3000 or sometimes 10000 calls. 
// ----------------------------------------------------------------------------
//  When this happens the DIO0 interrupt pin remains stuck high
//  with a voltage fixed to 3.3V and interrupt receiving no longer works.
// ----------------------------------------------------------------------------
//  To correct this problem we test in the loop() if the DIO0_PIN is HIGH
//  and in this case we redo all the initializations.
// ============================================================================

// ============================================================================
//  RESTART RECEIVER INTERRUPT IF LOCKED
//  This function must be called periodically from the loop()
// ============================================================================
void RestartReceiverInterruptIfLocked()
{
  if (digitalRead(DIO0_PIN) == HIGH)
  {
    RTX_Init();
  }
}

// ============================================================================
//  RTX INIT
// ============================================================================
void RTX_Init()
{
  // ---------------------------------------------- BEGIN
  while (!LoRa.begin(RTX_FREQUENCY))
  { 
    Serial.println("Error initializing LoRa module");
    delay(100);
  }
  // ---------------------------------------------- SETTINGS
  LoRa.setTxPower(17); // do here your additional settings           
  // ---------------------------------------------- REGISTER CALLBACK
  LoRa.onReceive(RTX_OnReceive); 
  // ---------------------------------------------- START RECEIVE 
  LoRa.receive();
}
© www.soinside.com 2019 - 2024. All rights reserved.