Raspberry Pi与Roomba 9xx/6xx系列SCI端口通信失败求助
Roomba 9xx/6xx与Raspberry Pi SCI通信故障排查
步骤中的潜在错误
- 未激活Roomba的SCI模式:Roomba默认SCI端口处于禁用状态,必须通过串口发送启动指令才能启用通信功能,直接放置在充电底座上不会自动开启SCI。
- 串口配置不完整:你的
minicom命令仅指定了波特率,但未明确设置Roomba SCI要求的8位数据位、1停止位、无校验(8N1)参数,默认配置可能存在偏差。 - Roomba处于休眠状态:充电底座上的Roomba通常处于低功耗休眠,此状态下SCI端口不会响应任何指令。
- 串口映射未验证:部分Raspberry Pi型号(如3B+、4B)默认将硬件串口分配给蓝牙,
/dev/serial0可能映射到不稳定的mini UART(ttyS0),导致通信异常。
修正后的操作步骤
- 重新确认接线逻辑
- 确保电平转换器方向正确:Roomba TXD → 转换器HV TX → Pi RXD;Roomba RXD → 转换器HV RX → Pi TXD;GND引脚共接。
- 转换器HV端建议直接连接Roomba SCI端口的5V引脚(而非Raspberry Pi的5V),避免供电冲突,LV端保持接Pi的3.3V。
- 确认Raspberry Pi串口映射
- 执行命令查看串口映射:
ls -l /dev/serial* - 若
serial0指向ttyS0,需通过raspi-config重新配置:进入Interface Options > Serial Port,选择关闭串行控制台、启用硬件串口,重启后确保serial0映射到ttyAMA0。
- 执行命令查看串口映射:
- 完整配置minicom
- 使用指定参数启动minicom:
其中minicom -b 115200 -8 -c on -D /dev/serial0-8指定8位数据位,-c on开启颜色显示便于观察数据。
- 使用指定参数启动minicom:
- 唤醒并激活Roomba SCI
- 将Roomba从充电底座取出,按清洁键唤醒机器人。
- 在minicom控制台中发送启动指令:按
Ctrl+A→Z→S,选择Hex模式,输入80并发送(对应Roomba的Start命令)。 - 可选发送安全模式指令
83,此模式下可读取传感器并发送基础控制指令。
- 读取充电状态数据
- 在minicom中发送传感器读取指令(十六进制):
84 15,其中84是Sensor命令,15是充电状态传感器的ID。 - 此时会收到Roomba返回的1字节数据,对应充电状态(0=未充电,1=充电中,2=充电完成等,具体参考Roomba SCI官方定义)。
- 在minicom中发送传感器读取指令(十六进制):
后续实现碰撞传感器读取与控制的建议
- 碰撞传感器的ID为
7,发送84 07可读取碰撞数据(返回2字节,高位代表左碰撞状态,低位代表右碰撞状态)。 - 控制机器人移动需先进入安全/全模式,发送
89(Drive命令)配合速度和转向参数,例如89 00 1F 00 00代表以31mm/s的速度向前直行。
内容的提问来源于stack exchange,提问作者rojele
相关产品推荐
相关产品推荐

