首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Raspberry Pi Pico发送LoRa消息

Raspberry Pi Pico发送LoRa消息
EN

Stack Overflow用户
提问于 2021-04-06 20:25:01
回答 1查看 168关注 0票数 0

我在这段pico tracker代码中使用了两个函数:

代码语言:javascript
复制
setup_lora(433.0, 1, "CODEBRANE");
...
SendLoRaPacket(loraBuffer, 16, 0);

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

ESP32/ESP8266在Arduino IDE中使用LoRa库,但是pico使用了上面的Lora.cpp函数,该代码设置了带宽、扩展因子等,而LoRa库没有。

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

pico使用模式1:

代码语言:javascript
复制
ImplicitOrExplicit = IMPLICIT_MODE;
ErrorCoding = ERROR_CODING_4_5;
Bandwidth = BANDWIDTH_20K8;
SpreadingFactor = SPREADING_6;
LowDataRateOptimize = 0;    

我是否需要将这些转换为LoRa库等效项,才能让ESP32获取微微消息?

例如:

代码语言:javascript
复制
LoRa.setSignalBandwidth(20.8E3);
LoRa.setSpreadingFactor(6);
LoRa.implicitHeaderMode();

但对于ErrorCodingLowDataRateOptimize,似乎没有等同的东西。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-27 03:34:42

通信确实依赖于各种参数的匹配。使用微微跟踪器代码的help from the developer,我得到一个微微发送消息到一个使用Arduino LoRa库的ESP32 Lolin32精简版。

在微微上:

代码语言:javascript
复制
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上:

代码语言:javascript
复制
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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66968610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档