0

我正在使用这个pico 跟踪器代码中的两个函数:

setup_lora(433.0, 1, "CODEBRANE");
...
SendLoRaPacket(loraBuffer, 16, 0);

我不确定它是否在发送任何东西。我在另一个 SX1278 板上有一个 ESP32 接收器,我已经测试了 ESP32 上的发送器和接收器板,它从一个正在发送的 ESP8266 接收,并且板子很好。

ESP32/ESP8266 在 Arduino IDE 中使用 LoRa 库,但 pico 使用上述Lora.cpp功能,并且该代码设置带宽、扩频因子等,而 LoRa 库没有。我假设 pico 发送正常,但 ESP32 没有收到任何东西。

发送方和接收方是否必须使用完全相同的设置、模式、带宽、扩频因子、隐式/显式报头等?

pico 使用模式 1:

ImplicitOrExplicit = IMPLICIT_MODE;
ErrorCoding = ERROR_CODING_4_5;
Bandwidth = BANDWIDTH_20K8;
SpreadingFactor = SPREADING_6;
LowDataRateOptimize = 0;    

我是否需要将这些转换为 LoRa 库等价物才能让 ESP32 接收 pico 消息?

例如

LoRa.setSignalBandwidth(20.8E3);
LoRa.setSpreadingFactor(6);
LoRa.implicitHeaderMode();

但似乎没有 or 的等价ErrorCodingLowDataRateOptimize

4

1 回答 1

0

通信确实取决于匹配各种参数。在pico-tracker 代码开发人员的帮助下,我得到了一个 pico 将消息发送到使用 Arduino LoRa 库的 ESP32 Lolin32 Lite。

在 pico 上:

int main() {
  setup_lora(433, 6, "CODEBRANE");
  unsigned char loraBuffer[20] = "Hello From Pico!";
  while (1) {
    SendLoRaPacket(loraBuffer, 16, 0);
    sleep_ms(5000);
  }
}

void SetupRFM98(float Frequency, int Mode) {
  ...
  else if (Mode == 6)
  {
    ImplicitOrExplicit = EXPLICIT_MODE;
    ErrorCoding = ERROR_CODING_4_8;
    Bandwidth = BANDWIDTH_62K5;
    SpreadingFactor = SPREADING_8;
    LowDataRateOptimize = 0;
  }
  ...
}

在 ESP32 Lolin32 Lite 上:

void setup() {
  LoRa.setPins(LORA_SS, LORA_RST, LORA_DIO0);
  if (!LoRa.begin(433E6)) {
    Serial.println("Starting LoRa failed!");
    while (1);
  }

  LoRa.setTxPower(17);
  LoRa.setSpreadingFactor(8);
  LoRa.setCodingRate4(8);
  LoRa.setSignalBandwidth(62.5E3);
}
于 2021-04-26T19:34:42.423 回答