You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MKR WAN 1300与WEMOS D1 mini ESP32的LoRa通信故障排查求助

问题排查与解决方案

核心问题分析

  • 库协议不兼容:发送端使用LoRa库(基于SPI通信),接收端却误用RH_RF95库并尝试通过UART(Serial2)驱动模块,两者底层通信逻辑完全不匹配。
  • RH_RF95初始化错误:RH_RF95库是为SPI连接的SX127x系列LoRa模块设计的,不能直接传入UART对象作为初始化参数。
  • 代码配置混乱:接收端未正确初始化SPI引脚,还错误打印了默认串口的RX/TX引脚(String(TX)/String(RX)),而非实际使用的RXD2/TXD2。

修复方案

方案1:接收端统一使用LoRa库(SPI通信)

如果你的Grove LoRa模块支持SPI通信,直接和发送端用相同的库,修正代码如下:

接收端修正代码

#include <Arduino.h>
#include <SPI.h>
#include <LoRa.h>

// WEMOS D1 mini ESP32默认SPI引脚配置,可根据实际连线调整
#define LORA_SS 18
#define LORA_RST 14
#define LORA_DIO0 26

void setup() {
  Serial.begin(115200);
  while (!Serial);

  // 初始化LoRa模块引脚与频段
  LoRa.setPins(LORA_SS, LORA_RST, LORA_DIO0);
  if (!LoRa.begin(868E6)) {
    Serial.println("LoRa初始化失败!");
    while (1);
  }
  Serial.println("LoRa接收端就绪");
}

void loop() {
  // 检测是否有数据包到来
  int packetSize = LoRa.parsePacket();
  if (packetSize) {
    Serial.println("收到数据包:");
    // 读取数据包内容
    while (LoRa.available()) {
      String message = LoRa.readString();
      Serial.print("内容:");
      Serial.println(message);
    }
    // 打印信号参数(可选)
    Serial.print("信号强度(RSSI): ");
    Serial.println(LoRa.packetRssi());
    Serial.print("信噪比(Snr): ");
    Serial.println(LoRa.packetSnr());
    Serial.println("-------------------");
  } else {
    Serial.println("未收到数据包");
  }
  delay(5000);
}

方案2:针对UART型LoRa模块调整代码

如果你的Grove LoRa模块是UART通信版本(如E32系列),则无需SPI类LoRa库,直接通过串口收发:

UART接收端示例代码

#include <Arduino.h>
#define RXD2 16
#define TXD2 17

void setup() {
  Serial.begin(115200);
  Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2);
  Serial.print("UART LoRa接收端就绪 | RX引脚:");
  Serial.println(RXD2);
  Serial.print("TX引脚:");
  Serial.println(TXD2);
}

void loop() {
  if (Serial2.available()) {
    String received = Serial2.readStringUntil('\n');
    Serial.print("收到数据:");
    Serial.println(received);
  } else {
    Serial.println("未收到UART数据");
  }
  delay(5000);
}

额外注意事项

  • 确保两端LoRa模块的频段(868MHz)、扩频因子、带宽、编码率等参数完全一致
  • SPI模块需正确连接SCK、MISO、MOSI、SS、RST、DIO0引脚;UART模块需交叉连线(发送端TX接接收端RX,接收端TX接发送端RX)
  • 测试时尽量缩短模块距离,避开信号干扰源

内容的提问来源于stack exchange,提问作者Nazanin Ghasemi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 13:35:28