示例22:舵机控制(SG90)
大约 3 分钟
示例22:舵机控制(SG90)
实验概述
SG90 是一款常用的微型舵机,通过 PWM 信号控制旋转角度(0°~180°)。FastBee 内置 PWM_SERVO 外设类型(type: 41),直接支持角度控制。
硬件接线
| 开发板标识 | GPIO引脚 | 连接设备 |
|---|---|---|
| SIGNAL | GPIO17 | SG90 信号线(橙色) |
SG90 接线:红色→5V, 棕色→GND, 橙色→GPIO 信号线。
JSON 配置示例
{
"peripherals": [
{
"id": "servo_01",
"name": "舵机SG90",
"type": 41,
"enabled": false,
"pins": [13],
"params": {}
}
]
}外设执行联动
场景1:远程设置角度(平台触发)
功能:通过云平台下发指令控制舵机转到指定角度
Web界面配置步骤
步骤1:创建规则
- 点击左侧菜单 外设配置 → 切换到 外设执行管理 标签
- 点击 新增规则 按钮
- 填写基础配置:
- 规则名称:
舵机转到90度 - 上报数据:✅ 启用
- 启用:✅ 启用
- 规则名称:
步骤2:配置触发器
点击 添加触发 按钮
填写触发器配置:
字段 填写内容 说明 触发类型 选择 平台触发 接收云平台指令 操作符 选择 设置模式 接收数据作为动作参数
步骤3:配置动作
点击 添加动作 按钮
填写:
- 动作类型:选择 设置舵机
- 目标外设:选择
servo_01 - 动作参数:
90(角度,0-180)
点击 保存 按钮
场景2:按键控制舵机(事件触发+脚本)
功能:每次按键舵机增加30度,循环0-180度
Web界面配置步骤
- 创建规则,名称:
按键控制舵机 - 触发器配置:
- 触发类型:选择 事件触发
- 事件类型:
100(GPIO中断) - 事件来源:
key1
- 动作配置:
- 动作类型:选择 命令脚本
- 动作参数:
var a=getVar('servo_angle',0); a=(a+30)%180; servoWrite('servo_01',a); setVar('servo_angle',a); - 点击 保存
场景3:舵机扫描模式(定时触发+脚本)
功能:舵机自动来回摆动(0°↔180°)
Web界面配置步骤
- 创建规则,名称:
舵机扫描 - 触发器配置:
- 触发类型:选择 定时触发
- 定时模式:选择 固定间隔
- 间隔时间:
50(50ms刷新)
- 动作配置:
- 动作类型:选择 命令脚本
- 动作参数:
var a=getVar('scan_a',0); var d=getVar('scan_d',1); a+=d*2; if(a>=180){a=180;d=-1;} if(a<=0){a=0;d=1;} servoWrite('servo_01',a); setVar('scan_a',a); setVar('scan_d',d); - 点击 保存
SG90特性说明
| 特性 | 参数 | 说明 |
|---|---|---|
| 角度范围 | 0° ~ 180° | 标准舵机 |
| 供电电压 | 4.8V ~ 6V | 推荐5V |
| PWM频率 | 50Hz | 标准频率 |
| 脉宽范围 | 500~2500μs | 对应0-180° |
| 扭矩 | 1.8kg·cm | 轻负载 |
注意事项
- 供电:SG90 需 5V/500mA 供电,不要从 ESP32 3.3V 取电
- 角度范围:SG90 范围 0°~180°,超范围会损坏齿轮
- PWM 频率:舵机标准 PWM 频率 50Hz,脉宽 500~2500μs
- 抖动:质量较差的舵机在某些角度可能抖动,可微调脉宽范围
- 扭矩:SG90 扭矩 1.8kg·cm,负载过大会导致堵转发热
- 多舵机:多个舵机需独立供电,避免电源波动
