零基础学ESP32:控制步进电机,让你的设备“动”起来!

前面我们学了点亮LED、显示文字、展示图片——这些都是让设备“表达”。但硬件开发的魅力不止于此,真正的乐趣在于让设备“动”起来。

今天这节课,我们就来学习如何用ESP32控制步进电机。步进电机最大的特点就是能够精确控制旋转角度——你想让它转多少度,它就转多少度,误差极小。

智能窗帘、3D打印机、机器人关节、自动门锁……这些设备背后,都有步进电机在默默工作。学会了这节课,你就掌握了“精确控制运动”的核心技能。

第一步:找到课程,看看成品效果

打开逗脑IDE,点击顶部“教程”,在“硬件” → “ESP32 + MicroPython”分类下,找到控制步进电机。

打开课件,你会看到本节课的最终效果——步进电机在ESP32的控制下,一圈一圈平稳地旋转,精准而有力。

第二步:什么是步进电机?

步进电机是一种将电脉冲信号转换为角位移的执行元件。简单来说:

给它一个脉冲,它就转一个固定的角度。 脉冲越多,转得越多;脉冲频率越快,转得越快。

步进电机最大的优势:

✅精确控制角度:没有累积误差,说转多少就转多少

✅容易控制:只需要按顺序给四相线圈通电就行

✅自锁能力:不通电时也能保持当前位置

本节课用的是五线四相步进电机,配套ULN2003驱动板。驱动板的作用是放大ESP32引脚输出的信号,因为ESP32的GPIO引脚无法直接驱动电机。

第三步:步进电机的工作原理(简单理解)

步进电机内部有4个定子线圈(A、B、C、D四相),转子上有磁铁。通过按特定顺序给线圈通电,就能产生旋转磁场,吸引转子一步步转动。

三种工作模式:

模式

通电方式

特点

单拍模式

A→B→C→D→A…

每次只通一相,功耗小,力矩较小

双拍模式

AB→BC→CD→DA→AB…

每次通两相,力矩大,功耗较大

单双拍模式(八拍)

A→AB→B→BC→C→CD→D→DA→A…

精度最高,步距角减半

本节课我们使用的是单拍模式——A→B→C→D依次通电,电机就会持续旋转。

第四步:动手接线——四根线搞定

接线依然很简单。ULN2003驱动板和ESP32之间的连接只需要4根信号线 + 2根电源线:

驱动板引脚

连接ESP32引脚

说明

IN1

GPIO15

控制A相

IN2

GPIO2

控制B相

IN3

GPIO4

控制C相

IN4

GPIO16

控制D相

VCC

5V

驱动板电源(电机供电)

GND

GND

公共地

💡 小提示: 驱动板的VCC一定要接5V,不能接3.3V,否则电机没有足够的动力旋转。

第五步:理解代码逻辑——按顺序通电

硬件连接好了,来看看控制代码。代码的逻辑非常简单:

四个引脚按顺序依次输出高电平,中间加一点延时,循环往复。

from machine import Pinimport time# 定义四个相位引脚a = Pin(15, Pin.OUT)b = Pin(2, Pin.OUT)c = Pin(4, Pin.OUT)d = Pin(16, Pin.OUT)# 初始状态:全部断电a.value(0)b.value(0)c.value(0)d.value(0)delay_time_ms = 2  # 每步延时2毫秒,控制转速while True:    # 第一步:A相通电    a.value(1)    b.value(0)    c.value(0)    d.value(0)    time.sleep_ms(delay_time_ms)    # 第二步:B相通电    a.value(0)    b.value(1)    c.value(0)    d.value(0)    time.sleep_ms(delay_time_ms)    # 第三步:C相通电    a.value(0)    b.value(0)    c.value(1)    d.value(0)    time.sleep_ms(delay_time_ms)    # 第四步:D相通电    a.value(0)    b.value(0)    c.value(0)    d.value(1)    time.sleep_ms(delay_time_ms)    # 然后回到第一步,循环
代码逻辑图解:

步骤

A相(15)

B相(2)

C相(4)

D相(16)

电机动作

1

1

0

0

0

转子被A吸引

2

0

1

0

0

转子被B吸引 → 转一步

3

0

0

1

0

转子被C吸引 → 转一步

4

0

0

0

1

转子被D吸引 → 转一步

四个步骤循环一次,电机就转过一个完整的步距角。循环越快,电机转得越快;delay_time_ms 越小,转速越快。

第六步:一键打开代码,保存运行

找到课件中的示例代码块,点击“打开”按钮,代码自动加载到编辑器中。

按 Ctrl + S 保存,选择ESP32开发板设备,给文件命名(比如stepper_motor.py),点击保存。

保存成功后,点击运行按钮。

注意看——步进电机开始平稳地旋转起来!一圈、两圈、三圈……只要程序在运行,它就会一直转下去。

调整转速:改一个数字就行

想让电机转得快一点还是慢一点?只需要修改一个变量:

delay_time_ms = 2   # 数值越小,转得越快;数值越大,转得越慢
试试改成 delay_time_ms = 10,电机会明显变慢;改成 delay_time_ms = 1,电机会飞快旋转。

这就是步进电机控制的精髓——通过调整脉冲频率来控制转速。

步进电机能做什么?

步进电机的精确控制能力,让它成为许多设备的关键部件:

应用场景

为什么用步进电机

3D打印机

精确控制喷头XYZ三轴移动

智能窗帘

控制窗帘开合角度

机器人关节

精确控制每个关节的角度

云台/摄像头

控制镜头平稳旋转

自动门锁

控制锁芯旋转角度

数控机床

精确控制刀具位置

学会了步进电机控制,你就能做出这些真正“有用”的项目。

全程回顾

步骤

操作

效果

找到课程

教程→硬件→ESP32+MicroPython→控制步进电机

了解步进电机原理和效果

认识硬件

了解步进电机 + ULN2003驱动板

知道哪个是电机、哪个是驱动

动手接线

IN1→GPIO15, IN2→GPIO2, IN3→GPIO4, IN4→GPIO16

硬件准备就绪

打开代码

点击“打开”按钮

完整代码进入编辑器

保存运行

Ctrl+S → 选择ESP32 → 运行

步进电机开始旋转!

调整转速

修改delay_time_ms值

电机转得快一点或慢一点

如果你对本节课感兴趣,去官网(www.dounao.cn)下载逗脑IDE,准备好ESP32和步进电机,跟着课件走一遍。

有任何问题或建议,欢迎在评论区留言告诉我们。

发表评论