舵机(Servo)
大约 3 分钟
舵机(Servo)
功能说明
舵机外设使用 PWM 信号控制舵机角度(0°-180°),适用于机械臂、云台、门锁、机器人关节等场景。
支持的外设类型
| 类型 | type值 | 说明 |
|---|---|---|
| PWM_SERVO | 41 | 舵机(PWM 角度控制) |
硬件接线
SG90 / MG996R 舵机
| 舵机线色 | 连接 | 说明 |
|---|---|---|
| 橙/黄(信号) | GPIO | PWM 信号引脚 |
| 红(VCC) | 5V | 电源(外部供电) |
| 棕/黑(GND) | GND | 地 |
SG90 小舵机可直接用 ESP32 的 5V 引脚供电,MG996R 等大扭矩舵机需外部独立电源。
配置方式
方式1:Web界面配置(推荐)
舵机保存前重点核对 PWM 引脚、角度范围和独立供电能力。
步骤1:进入外设管理页面
- 打开浏览器访问 ESP32 IP 地址
- 登录后点击左侧菜单 外设配置
步骤2:添加舵机外设
点击 新增外设 按钮
填写配置:
字段 填写内容 说明 外设ID servo1唯一标识符 名称 SG90舵机或门锁舵机显示名称 外设类型 PWM舵机 (type: 41) 舵机控制 引脚配置 27信号引脚 最小脉宽 544对应0°(微秒) 最大脉宽 2400对应180°(微秒) 默认角度 90上电初始角度 点击 保存
步骤3:验证配置
- 在外设列表中找到刚添加的外设
- 点击 启用 开关
- 使用控制面板测试角度(0-180)
⚠️ 提示:MG996R等大扭矩舵机需外部5V/2A电源,不可直接从ESP32取电
方式2:JSON配置文件导入
将以下配置添加到 data/config/peripherals.json 的 peripherals 数组中:
{
"id": "servo1",
"name": "舵机",
"type": 41,
"enabled": false,
"pins": [27],
"params": {
"minPulse": 544,
"maxPulse": 2400,
"defaultAngle": 90
}
}参数说明
| 参数 | 说明 |
|---|---|
| minPulse | 最小脉冲宽度(μs),对应 0°,默认 544 |
| maxPulse | 最大脉冲宽度(μs),对应 180°,默认 2400 |
| defaultAngle | 上电后默认角度(0-180) |
pins[0] = 舵机信号引脚
控制命令
通过 MQTT 或 Web 界面发送角度值:
[{"id": "servo1", "value": "90"}]- 值范围:
0~180(单位:度) - 发送
0转到最小角度,180转到最大角度
与外设执行联动
Web界面配置步骤
创建舵机控制规则
- 切换到 外设执行管理 标签
- 点击 新增规则 按钮
- 配置触发器(事件触发、定时触发或平台触发)
- 添加舵机动作:
- 动作类型:设置PWM(舵机使用PWM控制)
- 目标外设:servo1
- 动作值:90(角度0-180)
- 点击 保存
💡 提示:可使用脚本动作实现舵机摆动效果(PERIPH servo1 PWM 角度)
JSON配置示例
按键控制舵机角度
{
"name": "按键开门",
"enabled": true,
"triggers": [
{
"type": "event",
"params": { "periphId": "btn1", "event": "pressed" }
}
],
"actions": [
{
"type": "servo_write",
"params": {
"periphId": "servo1",
"value": "180"
}
}
]
}定时摆动
{
"name": "舵机摆动",
"enabled": true,
"triggers": [
{
"type": "timer",
"params": { "interval": 2000 }
}
],
"actions": [
{
"type": "servo_write",
"params": {
"periphId": "servo1",
"value": "0"
}
},
{ "type": "delay", "params": { "ms": 1000 } },
{
"type": "servo_write",
"params": {
"periphId": "servo1",
"value": "180"
}
}
]
}数据上报格式
当前角度通过 MQTT 上报:
[{"id": "servo1", "value": "90"}]注意事项
- 供电要求:大扭矩舵机(MG996R)需独立 5V/2A 电源,USB 供电可能导致 ESP32 重启
- 信号电平:ESP32 输出 3.3V PWM,大部分舵机可正常识别,无需电平转换
- 抖动问题:如出现微小抖动,可调整 minPulse/maxPulse 参数匹配具体舵机型号
- 角度限制:避免机械卡死,根据实际安装限制角度范围
- 引脚选择:ESP32 任意 GPIO 均可输出 PWM,建议避开 Strapping 引脚(GPIO 0/2/12/15)
