本教程适用于 Windows 平台用户,尤其适合需要低延迟控制的场景。通过 WebSocket 可实现上位机与机器人驱动板的双向实时通信,弥补 HTTP 无主动推送、延迟较高的不足。
Github 项目地址:
https://github.com/EffectsMachine/robot_driver_with_esp32s3_lite
WebSocket 是一种基于 TCP 的全双工通信协议,能在单个连接中实现上位机与下位机的双向实时数据传输,完美适配机器人实时控制与状态上报需求,通信频率可达 60 条 / 秒以上。
| 类别 | 具体内容 |
|---|---|
| 优点 1 | 低延迟 + 长连接:仅需一次 TCP 握手建立连接,后续通信无需重复创建连接,减少头部开销,延迟可降至毫秒级,适合机器人实时运动控制。 |
| 优点 2 | 双向通信能力:支持上位机主动发指令、下位机主动推数据(如舵机角度、电池电量、碰撞信号),无需像 HTTP 那样通过 “轮询” 获取状态,降低资源占用。 |
| 优点 3 | 兼容性强:与 HTTP 共用 80(ws)/443(wss)端口,可穿透大部分防火墙,且主流编程语言(Python、JavaScript)均有成熟库支持,开发成本低。 |
| 缺点 1 | 连接维护成本:需处理连接断开、重连逻辑(如下位机断网后重新连接),相比 HTTP “发完即断” 的模式,需额外写少量维护代码。 |
| 缺点 2 | 调试稍复杂:无法像 HTTP 那样用浏览器直接访问接口测试,需借助专用工具(如 Postman 的 WebSocket 功能)或脚本调试。 |
驱动板内置轻量级 WebSocket 服务器,默认与 HTTP 共用 80 端口,通信路径固定为 /ws。
设备启动后,会同时开启 WebSocket 服务,上位机只需通过 WebSocket 协议连接到指定地址,即可建立双向通信通道:
通信使用的 JSON 指令格式与 HTTP 兼容,例如:
{"T":202,"line":1,"text":"webSocket msg","update":1}
与 HTTP 例程环境一致,仅需确保已完成以下步骤: