1.1 下载项目到本地

本教程适用于 Windows 平台用户,尤其适合需要低延迟控制的场景。通过 WebSocket 可实现上位机与机器人驱动板的双向实时通信,弥补 HTTP 无主动推送、延迟较高的不足。

Github 项目地址:

https://github.com/EffectsMachine/robot_driver_with_esp32s3_lite

2.1 WebSocket 控制教程 - 无线控制

2.1.1 为什么选择 WebSocket?

WebSocket 是一种基于 TCP 的全双工通信协议,能在单个连接中实现上位机与下位机的双向实时数据传输,完美适配机器人实时控制与状态上报需求,通信频率可达 60 条 / 秒以上。

类别 具体内容
优点 1 低延迟 + 长连接:仅需一次 TCP 握手建立连接,后续通信无需重复创建连接,减少头部开销,延迟可降至毫秒级,适合机器人实时运动控制。
优点 2 双向通信能力:支持上位机主动发指令、下位机主动推数据(如舵机角度、电池电量、碰撞信号),无需像 HTTP 那样通过 “轮询” 获取状态,降低资源占用。
优点 3 兼容性强:与 HTTP 共用 80(ws)/443(wss)端口,可穿透大部分防火墙,且主流编程语言(Python、JavaScript)均有成熟库支持,开发成本低。
缺点 1 连接维护成本:需处理连接断开、重连逻辑(如下位机断网后重新连接),相比 HTTP “发完即断” 的模式,需额外写少量维护代码。
缺点 2 调试稍复杂:无法像 HTTP 那样用浏览器直接访问接口测试,需借助专用工具(如 Postman 的 WebSocket 功能)或脚本调试。

2.1.2 原理概述

驱动板内置轻量级 WebSocket 服务器,默认与 HTTP 共用 80 端口,通信路径固定为 /ws

设备启动后,会同时开启 WebSocket 服务,上位机只需通过 WebSocket 协议连接到指定地址,即可建立双向通信通道:

  1. 连接建立:上位机向驱动板发送 WebSocket 握手请求,成功后建立长连接
  2. 双向通信
  3. 连接关闭:上位机或下位机主动断开,或网络异常时自动断开(需手动处理重连)

通信使用的 JSON 指令格式与 HTTP 兼容,例如:

{"T":202,"line":1,"text":"webSocket msg","update":1}

2.1.3 自动化脚本控制 - 环境准备

与 HTTP 例程环境一致,仅需确保已完成以下步骤:

2.1.4 运行 Python 例程 - WebSocket