我在这段pico tracker代码中使用了两个函数:
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:
ImplicitOrExplicit = IMPLICIT_MODE;
ErrorCoding = ERROR_CODING_4_5;
Bandwidth = BANDWIDTH_20K8;
SpreadingFactor = SPREADING_6;
LowDataRateOptimize = 0;
我是否需要将这些转换为LoRa库等效项,才能让ESP32获取微微消息?
例如:
LoRa.setSignalBandwidth(20.8E3);
LoRa.setSpreadingFactor(6);
LoRa.implicitHeaderMode();
但对于ErrorCoding
或LowDataRateOptimize
,似乎没有等同的东西。
发布于 2021-04-26 19:34:42
通信确实依赖于各种参数的匹配。使用微微跟踪器代码的help from the developer,我得到一个微微发送消息到一个使用Arduino LoRa库的ESP32 Lolin32精简版。
在微微上:
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);
}
https://stackoverflow.com/questions/66968610
复制相似问题