两块板之间的LoRa通信

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

我在 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);
}

输出
Receiver output

esp32 lora grove
1个回答
0
投票

有几个问题。这就是定义 rf95 对象的方式。

RH_RF95<Uart> rf95(Serial2);

并且您不应该设置波特率(这是在内部完成的),尤其不要设置错误的波特率。

© www.soinside.com 2019 - 2024. All rights reserved.