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

HC-05传输Arduino数据至树莓派Python时收到异常数值问题

问题现象
  • 基于HC-05蓝牙模块搭建Arduino到树莓派的通信链路,按TX/RX交叉规则接线,HC-05接Arduino 1、2号引脚
  • 前期使用int.from_bytes实现字节转整数的解析逻辑可正常运行,后续接收端持续收到255、254、10这类异常数值
  • 已完成排查操作:断开Arduino与PC的USB连接,改用电池独立供电,异常未消除;修改Arduino端固件,配置为仅发送固定值2,树莓派端Python程序依旧收到前述异常值
排查&修复方案

按优先级依次排查以下问题,绝大多数同类乱码问题都可解决:

  • 三端波特率不匹配
    HC-05出厂默认波特率通常为9600(部分批次为38400),必须保证Arduino端串口初始化波特率、HC-05实际配置波特率、树莓派端Python串口打开时设置的波特率三者完全一致,且统一配置为1停止位、无校验位。
    可将HC-05切换到AT模式,发送AT+UART?指令查询模块当前实际波特率,不要直接按经验值设置参数。
  • 串口引脚接线错误
    Arduino Uno/Nano的硬件串口固定为0脚(RX)、1脚(TX),2脚是通用数字IO,不具备硬件串口功能。如果把HC-05的RX端接到2脚,通信链路根本没有正确连通,必然出现乱码。
    两种修正方式可选:
    1. 用硬件串口通信:HC-05 TX接Arduino 0(RX),HC-05 RX接Arduino 1(TX),注意:烧录Arduino固件时必须拔掉HC-05接线,避免和USB串口冲突导致烧录失败
    2. 用软串口通信:将HC-05接到2个非0/1的数字引脚,使用SoftwareSerial库初始化模拟串口和HC-05通信,不占用USB调试用的硬件串口
  • 电平不匹配
    HC-05是3.3V逻辑电平器件,Arduino引脚输出为5V电平,如果直接把Arduino的TX引脚接到HC-05的RX引脚,会出现电平识别错误,长期使用还可能烧坏HC-05模块。
    可在Arduino TX到HC-05 RX的线路上串联1个1k~2kΩ的电阻做简单分压,将5V电平降到3.3V区间即可。
  • 解析逻辑错误
    Python端读取串口数据时,不要先做字符串解码再转数值,直接对原始字节做转换即可,参考实现:
    import serial
    # 端口根据实际情况修改,波特率和模块配置保持一致
    bt_ser = serial.Serial('/dev/rfcomm0', baudrate=9600, timeout=1)
    while True:
        raw_data = bt_ser.read(1)
        if raw_data:
            recv_num = int.from_bytes(raw_data, byteorder='little', signed=False)
            print(recv_num)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 05:15:31