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

MicroBit接收Reyax RYLR890/896 LoRa模块消息被截断问题求助

问题排查:Micro:Bit搭配RYLR890 LoRa模块接收消息截断

核心问题分析

消息截断大概率是串口接收缓冲区溢出或数据接收不完整导致的——Micro:Bit默认串口缓冲区容量有限(约64字节),加上onDataReceived的触发时机与数据传输节奏不匹配,容易出现丢字节的情况。

具体排查与修复步骤

1. 确认串口引脚连接方向

你代码中使用serial.redirect(SerialPin.P15, SerialPin.P14, ...),需严格对应LoRa模块的引脚:

  • RYLR890的TX引脚 → Micro:Bit的P14(RX引脚)
  • RYLR890的RX引脚 → Micro:Bit的P15(TX引脚)
    若引脚接反,可能出现部分内容接收、部分丢失的情况,先确认接线无误。

2. 优化串口接收逻辑,避免缓冲区溢出

Micro:Bit的serial.readUntil(NewLine)在数据传输较快时,可能无法一次性读取完整内容,缓冲区满后会自动丢弃后续字节。建议改成逐字节循环读取的方式:

let messageRx = ""
serial.onDataReceived(serial.delimiters(Delimiters.NewLine), function () {
    // 循环读取所有可用字节,直到遇到换行符
    while(serial.available() > 0) {
        let char = serial.readString(1)
        if(char === "\n") break
        messageRx += char
    }
    parseRx(messageRx)
    // 重置接收缓存,准备下一次接收
    messageRx = ""
    basic.clearScreen()
    basic.showIcon(IconNames.Happy)
    basic.clearScreen()
})

3. 修复parseRx函数的字符串截取逻辑

你原代码中手动查找逗号的截取方式容易出错,比如substr的长度参数计算错误,或未处理消息中的换行/空白字符。改用split分割字符串更可靠:

function parseRx (message: string) {
    // 先去除首尾空白字符(包括换行、回车)
    message = message.trim()
    preamble = message.substr(1, 3)
    if (preamble == "RCV") { 
        music.playTone(262, music.beat(BeatFraction.Whole))
        // 用逗号分割AT命令返回的内容
        let parts = message.split(",")
        // 确保分割后有足够的字段
        if(parts.length >= 3){
            sizeTx = parseInt(parts[1])
            payload = parts[2]
            basic.showString("" + payload.length)
            if (payload.includes("WOR")) {
                basic.showIcon(IconNames.SmallHeart)
            }
        }
    }
}

4. 调整串口波特率或发送间隔

尝试将串口波特率从9600降至4800,Micro:Bit的硬件串口对低波特率的处理更稳定;同时延长ESP32的消息发送间隔(比如5秒以上),给Micro:Bit足够的时间处理串口数据。

5. 校验LoRa模块参数一致性

确认发送端与接收端的RYLR890模块参数完全匹配:

  • 频段(如433MHz/868MHz)
  • 扩频因子(SF)
  • 带宽(BW)
  • 校验模式
    参数不匹配会导致接收消息丢包或截断。

内容的提问来源于stack exchange,提问作者Sun Bee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 15:50:13