Skip to content

RobotBase/WebSerial-ServoTest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🤖 LOBOT 串行总线舵机 Web 控制面板

基于 Web Serial API 的总线舵机实时控制面板,可直接在浏览器中控制 LOBOT 串行总线舵机。无需安装驱动程序,无需后端串口依赖——浏览器即是控制器。

Protocol Browser License


✨ 功能特性

功能 说明
🔌 串口连接 浏览器原生串口选择,支持 115200 / 9600 波特率
🔍 自动扫描 广播 + 逐 ID 扫描,自动发现总线上 1~20 号舵机
🎯 位置控制 滑块 + 数字输入,指定移动时间 (50~30000ms)
📊 实时监控 位置、电压、温度实时刷新 + Chart.js 历史曲线
✏️ 修改 ID 在线修改舵机 ID (0~253)
🔓 卸载舵机 单个或全部卸载(释放扭力)
▶️ 动作组 运行/停止/调速控制器板预置动作组
🌐 零依赖 纯浏览器端架构,无需后端服务器

🚀 快速开始

1. 环境要求

  • Chrome 89+Edge 89+ (Web Serial API 支持)
  • USB 转串口线 (如 CH343)
  • LOBOT 总线舵机 (如 LX-16A, LX-15D 等)

2. 使用方式

在线使用:直接访问 Vercel 部署地址(见下方 ☁️ Vercel 部署

本地使用:用浏览器直接打开 index.html 即可(需要通过本地 HTTP 服务器访问以支持 Web Serial API)

3. 使用流程

  1. 选择波特率 → 通常使用 115200 (LX 直连协议)
  2. 点击 "🔌 选择串口并连接" → 浏览器弹出串口选择对话框
  3. 选择你的 USB 串口设备 (如 USB-Enhanced-SERIAL CH343)
  4. 连接成功 → 状态灯变绿
  5. 点击 "🔍 扫描舵机" → 自动发现总线上的舵机
  6. 控制舵机 → 拖动滑块或输入位置值,点击"移动"

⚠️ 安全注意事项

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 直连协议 (115200 baud)

本项目主要使用 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 位置 01000, 时间 030000ms
写 ID 13 new_id 修改舵机 ID
读 ID 14 - 读取舵机 ID
读温度 26 - 返回温度 (°C)
读电压 27 - 返回电压 (mV)
读位置 28 - 返回当前位置

控制器板协议 (9600 baud)

用于批量控制和动作组功能。帧格式无校验和:

┌────────┬────────┬──────┬─────┬────────┐
│ 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. 快速多次拖动滑块 → 舵机应连续跟随 (无卡顿)

ID 修改测试

⚠️ 确保总线上仅连接一个舵机!
1. 点击舵机卡片上的 "✏️ ID" 按钮
2. 输入新 ID (如 5) → 点击"确认修改"
3. 系统自动重新扫描 → 应显示新 ID 的舵机卡片

卸载功能测试

1. 点击舵机卡片上的 "🔓" 按钮 → 单个舵机释放扭力
2. 手动转动舵机轴 → 应可自由旋转
3. 发送移动指令 → 舵机重新锁定并移动

📖 Python CLI 工具

项目同时包含一个 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,项目已包含 vercel.json 配置文件:

Deploy with Vercel

Note

Web Serial API 需要 HTTPS 环境(Vercel 默认提供),但仍需使用 Chrome / Edge 浏览器打开。


📄 License

MIT License

Releases

No releases published

Packages

 
 
 

Contributors