基于 Web Serial API 的总线舵机实时控制面板,可直接在浏览器中控制 LOBOT 串行总线舵机。无需安装驱动程序,无需后端串口依赖——浏览器即是控制器。
| 功能 | 说明 |
|---|---|
| 🔌 串口连接 | 浏览器原生串口选择,支持 115200 / 9600 波特率 |
| 🔍 自动扫描 | 广播 + 逐 ID 扫描,自动发现总线上 1~20 号舵机 |
| 🎯 位置控制 | 滑块 + 数字输入,指定移动时间 (50~30000ms) |
| 📊 实时监控 | 位置、电压、温度实时刷新 + Chart.js 历史曲线 |
| ✏️ 修改 ID | 在线修改舵机 ID (0~253) |
| 🔓 卸载舵机 | 单个或全部卸载(释放扭力) |
| 运行/停止/调速控制器板预置动作组 | |
| 🌐 零依赖 | 纯浏览器端架构,无需后端服务器 |
- Chrome 89+ 或 Edge 89+ (Web Serial API 支持)
- USB 转串口线 (如 CH343)
- LOBOT 总线舵机 (如 LX-16A, LX-15D 等)
在线使用:直接访问 Vercel 部署地址(见下方 ☁️ Vercel 部署)
本地使用:用浏览器直接打开 index.html 即可(需要通过本地 HTTP 服务器访问以支持 Web Serial API)
- 选择波特率 → 通常使用
115200(LX 直连协议) - 点击 "🔌 选择串口并连接" → 浏览器弹出串口选择对话框
- 选择你的 USB 串口设备 (如
USB-Enhanced-SERIAL CH343) - 连接成功 → 状态灯变绿
- 点击 "🔍 扫描舵机" → 自动发现总线上的舵机
- 控制舵机 → 拖动滑块或输入位置值,点击"移动"
Caution
电压要求:舵机工作电压一般为 6V~8.4V,请勿超压供电!超压会导致舵机烧毁。
Warning
修改 ID:修改舵机 ID 时,务必确保总线上仅连接一个舵机,否则所有舵机会被同时修改为新 ID。
Important
接线顺序:请先连接信号线,再通电。断电后再拔线。热插拔可能导致舵机损坏。
| 舵机型号 | 工作电压 | 建议电压 |
|---|---|---|
| LX-16A | 6.0~8.4V | 7.4V (2S 锂电) |
| LX-15D | 5.0~8.4V | 7.4V (2S 锂电) |
| LX-224 | 6.0~8.4V | 7.4V (2S 锂电) |
本项目主要使用 LX 直连协议 与舵机通信。帧格式:
┌────────┬────────┬──────┬──────┬─────┬────────┬──────────┐
│ 0x55 │ 0x55 │ ID │ LEN │ CMD │ PARAMS │ CHECKSUM │
│ 帧头1 │ 帧头2 │舵机ID│ 长度 │ 指令│ 参数 │ 校验和 │
└────────┴────────┴──────┴──────┴─────┴────────┴──────────┘
校验和 = ~(ID + LEN + CMD + PARAMS) & 0xFF
| 指令 | CMD | 参数 | 说明 |
|---|---|---|---|
| 移动 | 1 | pos_L, pos_H, time_L, time_H | 位置 0 |
| 写 ID | 13 | new_id | 修改舵机 ID |
| 读 ID | 14 | - | 读取舵机 ID |
| 读温度 | 26 | - | 返回温度 (°C) |
| 读电压 | 27 | - | 返回电压 (mV) |
| 读位置 | 28 | - | 返回当前位置 |
用于批量控制和动作组功能。帧格式无校验和:
┌────────┬────────┬──────┬─────┬────────┐
│ 0x55 │ 0x55 │ LEN │ CMD │ PARAMS │
└────────┴────────┴──────┴─────┴────────┘
| 功能 | CMD | 说明 |
|---|---|---|
| 多舵机移动 | 3 | 同时控制多个舵机 |
| 运行动作组 | 6 | times=0 为无限循环 |
| 停止动作组 | 7 | 立即停止 |
| 设置速度 | 11 | 百分比 (100=原速) |
| 读电池电压 | 15 | 返回 mV |
| 卸载舵机 | 20 | 释放扭力 |
| 读多位置 | 21 | 批量读取位置 |
WebSerial-ServoTest/
├── index.html # 主页面
├── style.css # 样式 (暗色主题)
├── app.js # 全部前端逻辑 + 串口协议实现
├── vercel.json # Vercel 部署配置
├── docs/ # 硬件文档 (PDF)
│ └── servo_test.py # Python CLI 测试工具 (可选)
└── README.md
1. 打开控制面板 → 选择 115200 波特率 → 连接串口
2. 点击"扫描舵机" → 应发现至少 1 个舵机
3. 查看舵机卡片:位置、电压、温度应显示正常值
✓ 位置: 0~1000 之间
✓ 电压: 6000~8500 mV (约 6~8.5V)
✓ 温度: 20~50 °C
1. 将滑块拖到 200 → 点击"移动" → 舵机应转到左侧
2. 将滑块拖到 800 → 点击"移动" → 舵机应转到右侧
3. 输入位置 500, 时间 2000ms → 点击"移动" → 舵机应缓慢回中
4. 快速多次拖动滑块 → 舵机应连续跟随 (无卡顿)
⚠️ 确保总线上仅连接一个舵机!
1. 点击舵机卡片上的 "✏️ ID" 按钮
2. 输入新 ID (如 5) → 点击"确认修改"
3. 系统自动重新扫描 → 应显示新 ID 的舵机卡片
1. 点击舵机卡片上的 "🔓" 按钮 → 单个舵机释放扭力
2. 手动转动舵机轴 → 应可自由旋转
3. 发送移动指令 → 舵机重新锁定并移动
项目同时包含一个 Python 命令行测试工具 servo_test.py:
# 安装依赖
pip install pyserial
# 扫描串口
python servo_test.py --scan
# 扫描舵机 ID
python servo_test.py --id-scan
# 舵机来回移动测试
python servo_test.py --move
# 修改舵机 ID 为 5
python servo_test.py --change-id 5
# 测试全部控制器板 API
python servo_test.py --test-all-apis --baud 9600| 浏览器 | 版本 | Web Serial API |
|---|---|---|
| Chrome | 89+ | ✅ 支持 |
| Edge | 89+ | ✅ 支持 |
| Opera | 76+ | ✅ 支持 |
| Firefox | - | ❌ 不支持 |
| Safari | - | ❌ 不支持 |
如果 Chrome 中未生效,请访问
chrome://flags/#enable-experimental-web-platform-features并启用。
本项目可一键部署到 Vercel,项目已包含 vercel.json 配置文件:
Note
Web Serial API 需要 HTTPS 环境(Vercel 默认提供),但仍需使用 Chrome / Edge 浏览器打开。
MIT License