我在 MKR WAN 1300 和 WEMOS D1 mini EDP32 板之间建立 LoRa 连接时遇到问题。
我已将 WEMOS D1 mini ESP32 连接到 LoRa Grove 模块 (868 MHz)。发送者代码工作正常,但接收者代码没有给我我正在寻找的输出。我多次更改代码。我在 ESP32 上尝试了不同的串行端口(UART0、URT1、UART2),并更改了两个代码的波特率,但我得到的输出仍然是“接收失败”或串行监视器上出现一些奇怪的字符。
这段代码可能有什么问题?
每次更改串口时,我还确保将 ESP32 上的正确引脚连接到 LoRa 模块。
接收者代码
#include <Arduino.h>
#include <RH_RF95.h>
RH_RF95 rf95(Serial2);
#define RXD2 16
#define TXD2 17
void setup() {
// Note the format for setting a serial port is as follows: Serial2.begin(baud-rate, protocol, RX pin, TX pin);
Serial.begin(115200);
// Serial.println("test");
//Serial1.begin(9600, SERIAL_8N1, RXD2, TXD2);
Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2);
Serial.println("Serial Txd is on pin: "+String(TX));
Serial.println("Serial Rxd is on pin: "+String(RX));
}
void loop() {
//Choose Serial1 or Serial2 as required
if (rf95.available()) {
Serial.println("Receiving message...");
uint8_t buf[RH_RF95_MAX_MESSAGE_LEN];
uint8_t len = sizeof(buf);
if(rf95.recv(buf, &len)) {
Serial.print("got request: ");
Serial.println((char*)buf);
}
} else {
Serial.println("Recv failed");
}
delay(5000);
}
发件人代码
#include <SPI.h>
#include <LoRa.h>
int counter = 0;
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("LoRa Sender");
if (!LoRa.begin(868E6)) {
Serial.println("Starting LoRa failed!");
while (1);
}
LoRa.setTxPower(20); // Set transmit power to 20 dBm (maximum)
}
void loop() {
Serial.print("Sending packet: ");
Serial.println(counter);
// send packet
LoRa.beginPacket();
LoRa.print("hello ");
LoRa.print(counter);
LoRa.endPacket();
counter++;
delay(5000);
}
输出
有几个问题。这就是定义 rf95 对象的方式。
RH_RF95<Uart> rf95(Serial2);
并且您不应该设置波特率(这是在内部完成的),尤其不要设置错误的波特率。