跳转到正文

C30D 底板小车:硬件与准备工作

本页介绍教程适用范围、通信链路、软硬件准备、参数记录,以及 C30D 版本和 UART5 参数确认。

1. 教程适用范围与最终效果

1.1 适用范围

本文适用于以下软硬件组合:

  • WHEELTEC R550/V550 等使用 C30D 控制板的小车;
  • C30D 2.0、2.1、2.2 底板;
  • 支持 AT 指令和串口 UDP 透传的 WiFi 模块;
  • ROS2 Humble;
  • wheelswarm_bridge UDP 桥接包;
  • aiswarmlab ROS2 地面站。

不同批次 WiFi 模块的 AT 固件可能存在差异。本文使用以下已验证指令格式:

text
AT+UARTCFG=921600,8,1,0
AT+SOCKET=2,192.168.2.128,8888
AT+SOCKETAUTOTT=2,192.168.2.128,8888

如果模块不识别这些指令,应先核对模块型号和对应 AT 指令手册,不要直接尝试其他厂商的命令。

1.2 完成后的通信链路

text
C30D 小车固件
  UART5:921600 8N1
  PC12/TX  ----------------->  RX/WiFi 模块
  PD2/RX   <-----------------  TX/WiFi 模块
  GND      ------------------  GND
       |
       | 串口原始数据
       v
WiFi 串口透传模块
  STA 模式 + UDP Client + 上电自动透传
       |
       | WiFi 局域网
       | 状态帧:小车 -> 地面站
       | 控制帧:地面站 -> 小车
       v
地面站主机:<GROUND_IP>:8888
       |
       +-- wheelswarm_bridge
       |     +-- /robot_{id}/velocity
       |     +-- /robot_{id}/imu
       |     +-- /robot_{id}/battery
       |     +-- /vehicle_info
       |     +-- /robot_{id}/cmd_vel
       |
       +-- EKF / 动捕
       |     +-- /robot_{id}/odom
       |     +-- /robot_{id}/pose
       |
       +-- ROS2 地面站和集群算法

1.3 数据方向

方向内容典型长度
C30D小车 -> WiFi -> 地面站速度、IMU、电池等状态24 字节状态帧
地面站 -> WiFi -> C30D小车线速度、角速度控制11 字节控制帧

WiFi 模块只负责串口与 UDP 之间的透明转发,不解析小车协议。协议解析和 ROS2 话题转换由 wheelswarm_bridge 完成。

2. 准备工作

2.1 硬件清单

  • C30D 底板小车;
  • WiFi 串口透传模块;
  • USB-TTL 串口模块,必须是 TTL 电平,不可使用 RS232 转换器;
  • 与模块匹配的连接线或杜邦线;
  • 用于配置 WiFi 模块的电脑;
  • 无线路由器或热点;
  • 运行 ROS2 地面站的电脑。

2.2 软件清单

  • 串口调试助手,例如之前在配置无人机 Wi-Fi 模块时用到的 sscom5.13.1.exe ,或其他可以配置 CRLF 的串口软件;
  • USB-TTL 对应驱动;
  • Ubuntu 22.04;
  • ROS2 Humble;
  • tcpdumpss 等网络诊断工具;
  • aiswarmlab ROS2 工作空间和地面站。

2.3 配置参数记录表

开始操作前必须先注意下表所示参数。当在实验室中进行操作时,部分参数的常用值已经在“本文示例”一栏给出,但仍有许多参数并非完全固定值,需要结合实际情况进行调整。

参数本文示例
WiFi 名称(SSID)aiswarmlab
WiFi 密码22222222
地面站 IPv4 地址192.168.1.43(本栏目需以实际为准)
UDP 目标端口8888
WiFi 模块/小车源 IP192.168.1.45(本栏目需以实际查询到的ip为准)
车辆物理 ID2
ROS2 映射 ID2
WiFi 模块初始波特率115200
C30D UART5 运行波特率921600
串口数据格式8N1

2.4 查询地面站 IP

在 Ubuntu 地面站执行:

bash
ip -br address
ip route

找到与小车 WiFi 位于同一局域网的网卡地址。例如:

text
wlp3s0    UP    192.168.1.43/22

此时 UDP 目标 IP 为 192.168.1.43不要填写 Docker 容器内部地址、127.0.0.1,也不要填写 WiFi 模块自己的地址。

3. 确认 C30D 版本和 UART5 参数

3.1 识别 C30D 接口

C30D V2.2 侧面接口图如下:

C30D V2.2 版侧面接口图

图中右侧中部的四针插座标注为“雷达串口”,从上到下为:

text
PC12
GND
PD2
5V

不要把 WiFi 模块接到旁边的 USB、CAN 或巡线接口。

3.2 UART5 引脚方向

当前 C30D 固件中:

C30D 引脚UART5 功能接线方向
PC12TX,C30D 发送接 WiFi 模块 RX
PD2RX,C30D 接收接 WiFi 模块 TX
GND信号地接 WiFi 模块 GND
5V电源输出仅在模块确认支持该电压时接入

仓库中的当前固件在 system.c 中调用:

c
uart5_init(921600);

因此 C30D 与 WiFi 模块之间必须配置为:

text
波特率:921600
数据位:8
停止位:1
校验位:None
硬件流控:None

3.3 关于 115200 与 921600

本教程涉及两个波特率阶段:

阶段波特率用途
WiFi 模块首次配置或恢复出厂后115200初始阶段配置 USB-TTL 与 WiFi 模块发送 AT 指令
修改模块参数并重启后921600继续发送 AT 指令,以及连接 C30D UART5 正式运行

发送信息时所用的波特率一旦更改,后面就必须一直使用更改后的波特率进行收发数据。举例而言,如果串口工具仍是 115200,而模块已经切换到 921600,接收区会乱码或完全没有有效返回。反之亦然。


解决方案:尝试重置 wifi 模块。在 WiFi 模块的 TypeC 接口已与电脑 USB 接口相连接的情况下,长按下图红圈标出的按钮:

C30D V2.2 版侧面接口图

长按一段时间后,关闭串口,更改波特率,随后重新打开串口,测试是否能够正常收发数据。

完成硬件检查并确认 UART5 参数后,继续进行 WiFi 模块 AT 配置