示例8:步进电机控制
实验概述
通过 ULN2003 驱动板控制4线步进电机的连续正转、反转、目标转速与显式停止。FastBee 内置 STEPPER_MOTOR(type:42)固定使用8相半步序列,没有定步数运动、到位反馈或精确角度保证。
2026-10-04主仓受检GPIO改动尚待集中测试和设备验收:部分输出/停止失败保留原脚及错误状态,不能以规则动作成功推断机械已经停止。详见步进电机生命周期说明。
硬件接线
| 开发板标识 | GPIO引脚 | 连接设备 |
|---|---|---|
| IN1 | GPIO15 | ULN2003 驱动板 IN1 |
| IN2 | GPIO2 | ULN2003 驱动板 IN2 |
| IN3 | GPIO0 | ULN2003 驱动板 IN3 |
| IN4 | GPIO4 | ULN2003 驱动板 IN4 |
下表引脚只是示意,须按实际板卡保留脚、启动脚和其它占用重新核对。电机与驱动电源须符合实物规格,不能由ESP32 GPIO直接供电;2048为当前调度默认参数,不能当成已校准的一圈。
JSON 配置示例
json
{
"peripherals": [
{
"id": "stepper_01",
"name": "ULN2003步进电机",
"type": 42,
"enabled": false,
"pins": [15, 2, 0, 4],
"params": {
"stepsPerRevolution": 2048,
"speed": 8
}
}
]
}参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
| stepsPerRevolution | 调度间隔使用的每转步数,需按实际机构校准 | 2048 |
| speed | 转速(RPM) | 8 |
外设执行联动
场景1:开始连续正转(平台触发)
功能:通过平台触发规则开始连续正转;须另行配置适合现场的停止条件。
Web界面配置步骤
步骤1:创建规则
- 点击左侧菜单 外设执行
- 点击 新增规则 按钮
- 填写基础配置:
- 规则名称:
步进电机正转 - 上报数据:✅ 启用
- 启用:✅ 启用
- 规则名称:
步骤2:配置触发器
点击 添加触发 按钮
填写触发器配置:
字段 填写内容 说明 触发类型 选择 平台触发 接收云平台指令 操作符 选择 匹配模式 匹配指令 比较值 {"cmd":"forward"}正转指令
步骤3:配置动作
点击 添加动作 按钮
填写动作配置:
字段 填写内容 说明 动作类型 选择 电机控制 步进电机专用动作 目标外设 选择 stepper_01步进电机外设 动作参数 forward开始连续正转 点击 保存 按钮
执行流程:
收到正转指令
↓
接受 stepper_01 的 forward 命令
↓
定时器依次请求受检半步相位
↓
独立stop命令停止并申请清理启动动作以非阻塞方式安排后续相位;返回成功不表示电机已转完。当前没有
stepper_move定步数完成接口。
场景2:显式停止(平台触发)
功能:通过独立平台触发规则停止后续相位,并尝试确认原IN1~IN4低电平与输入模式。
Web界面配置步骤
步骤1:创建规则
- 点击 新增规则
- 填写基础配置:
- 规则名称:
步进电机停止 - 上报数据:✅ 启用
- 启用:✅ 启用
- 规则名称:
步骤2:配置触发器
- 点击 添加触发 按钮
- 填写:
- 触发类型:选择 平台触发
- 操作符:选择 匹配模式
- 比较值:
{"cmd":"stop"}
步骤3:配置动作
点击 添加动作 按钮
填写:
- 动作类型:选择 电机控制
- 目标外设:选择
stepper_01 - 动作参数:
stop
点击 保存 按钮
支持的动作
| 参数 | 行为 | 边界 |
|---|---|---|
forward | 连续正转 | 没有自动到位停止 |
reverse | 连续反转 | 没有自动到位停止 |
stop | 停止调度并申请释放线圈 | SDK确认不等于机械急停 |
{"periphId":"stepper_01","action":"setSpeed","value":"8"} | 目标转速8RPM | 实际速度受调度/电机影响 |
注意事项
- 电源:步进电机需 5V 独立供电,ULN2003 不能从 ESP32 3.3V 取电
- 发热:步进电机静止时仍有保持电流,长时间不用应断电
- 速度限制:28BYJ-48 最高约 15RPM,超过会丢步
- 引脚顺序:IN1-IN4 顺序必须正确,否则电机会震动但不转
- 停止失败:保留故障与原脚,成功清理后才能再次启动;不要用新的方向指令覆盖未知输出状态

