回到首页 返回首页
回到顶部 回到顶部
返回上一页 返回上一页
best-icon

【FireBeetle 2 ESP32 P4 开发套件】步进电机控制与 LabVIEW 数据采集 简单

头像 无垠的广袤 2025.08.03 25 0


本文介绍了 DFRobot FireBeetle 2 ESP32 P4 开发套件通过 MicroPython 编程实现 28-BYJ48 步进电机旋转角度的精确控制,并进一步结合 LabVIEW 和串口通信实现步进电机的远程控制。

 

包括开发环境搭建、固件上传、工程测试、硬件连接、流程图、代码、LabVIEW 上位机设计、运行效果展示等。

 

项目介绍

 

开发环境搭建

工程测试

硬件连接

流程图

工程代码

LabVIEW 上位机

效果演示

 

环境搭建

 

包括软件工具安装部署、固件上传等部分。

 

固件获取

 

编译或下载最新 firmware.bin 固件;(见附件)

 

详见:GitHub - Vincent1-python/micropython at esp32p4 .

 

固件上传

 

下载并安装乐鑫官方提供的 Flash Download Tool 软件;

连接开发板,加载固件,起始地址 0x002000 ,波特率选择合适的配置;

点击 Start 按钮开始并完成固件上传;

firmware_upload.jpg

详见:Flash 下载工具用户指南 - ESP32 - — ESP 测试工具 latest 文档 .

 

工程测试

 

下载并安装 Thonny IDE 软件;

连接开发板和电脑,点击右下角配置解释器;

选择带有 ESP32 字样的设备,连接成功后, Shell 终端打印板端 MicroPython 版本号、设备型号等信息;

 

usb_device.jpg

 

代码

 

使用闪灯代码测试

 

from machine import Pin
import time

led_pin = Pin(3, Pin.OUT)
BLINK_INTERVAL_MS = 100  # milliseconds

try:
    while True:
        led_pin.toggle()
        time.sleep_ms(BLINK_INTERVAL_MS)
except KeyboardInterrupt:
    led_pin.off()
    print("Program stopped")

效果

 

板载 LED 闪烁,间隔 100 毫秒

 

blink_test.gif

 

硬件连接

 

步进电机

Step MotorBoard
IN14
IN25
IN320
IN421
VCC5V
GNDGND

串口

USB to TTLBoard
RXDTXD (37)
TXDRXD (38)
GNDGND

Type-C 数据线连接开发板和电脑,用于程序调试和固件上传。

 

流程图

 

flowchart_step-motor_labview.jpg

 

代码

 

Thonny 新建 .py 文件,添加如下代码

 

from machine import Pin, UART
import utime
import ujson

# 电机控制引脚
coils = [
    Pin(4, Pin.OUT),  # IN1
    Pin(5, Pin.OUT),  # IN2
    Pin(20, Pin.OUT), # IN3
    Pin(21, Pin.OUT)  # IN4
]

# 四相八拍步进电机的相序
STEP_SEQ = [
    [1, 0, 0, 1],  # AB'
    [1, 0, 0, 0],  # A
    [1, 1, 0, 0],  # AB
    [0, 1, 0, 0],  # B
    [0, 1, 1, 0],  # BC
    [0, 0, 1, 0],  # C
    [0, 0, 1, 1],  # CD
    [0, 0, 0, 1]   # D
]

# 初始化 UART
uart = UART(1, baudrate=115200, rx=Pin(38), tx=Pin(37), timeout=10)

def step_motor(steps, delay_ms=1):
    direction = 1 if steps >= 0 else -1
    for _ in range(abs(steps)):
        for phase in range(8)[::direction]:
            for coil, state in zip(coils, STEP_SEQ[phase]):
                coil.value(state)
            utime.sleep_ms(delay_ms)

def rotate_angle(angle):
    steps_per_rev = 509  # 28BYJ-48 步进电机通常需要 509 步/圈
    steps = int(angle * (steps_per_rev / 360))
    step_motor(steps)

def release():
    for coil in coils:
        coil.value(0)

def uart_control():
    while True:
        if uart.any():
            cmd = uart.readline()  # 读取一行数据
            if cmd:
                try:
                    data = ujson.loads(cmd)
                    angle = int(data['angle'])
                    rotate_angle(angle)
                    uart.write("OK\r\n")  # 转动完成后发送 OK
                except ValueError:
                    uart.write("ERROR: Invalid JSON format\r\n")
                except KeyError:
                    uart.write("ERROR: Missing 'angle' field\r\n")
                except Exception as e:
                    uart.write(f"ERROR: {str(e)}\r\n")
                finally:
                    release()  # 确保电机释放
        utime.sleep_ms(100)

# 主循环
if __name__ == '__main__':
    uart_control()

 

保存文件并运行。

 

运行效果

 

step-motor-run.gif

 

LabVIEW 上位机

 

包括前面板和程序框图设计。

 

前面板

 

前面板设计包括串口配置模块、单步旋转控制模块、数据保存模块、连续旋转控制模块、数据采集和曲线显示模块、字符串发送和接收模块、程序启动和终止控制模块等。

 

step-motor_labview_front.jpg

 

程序框图

 

主体使用顺序结构,串口初始化后,通过内嵌循环结构实现连续发送指令、旋转角度控制、数据采集等任务。

 

step-motor_labview_block.jpg

 

效果

 

配置串口波特率、端口号、运行程序;

设置步长、延时、总旋转角度、文件保存路径;

点击 Start 开始采集、点击 Stop 停止采集并保存数据、点击 Terminate 终止程序;

 

labview_step-motor.gif

 

步进电机根据指令,精确连续转动目标角度

 

step-motor_labview_run.gif

 

结束程序后,自动保存数据

 

data_save_labview.jpg

 

总结

 

本文介绍了 DFRobot FireBeetle 2 ESP32 P4 开发套件通过 MicroPython 编程实现 28-BYJ48 步进电机旋转角度的精确控制,并进一步结合 LabVIEW 和串口通信实现步进电机的远程控制。为该开发板在工业和科研领域的开发设计和应用提供了参考。

评论

user-avatar