ESP32+MicroPython开发环境
本文最后更新于 2025-04-21,文章内容可能已经过时。
为什么是MicroPython
MicroPython vs Arduino: Which One Will Power Your Next Project? 🤖 - Robotic Coding
环境配置
安装Python
确保你的计算机上安装了Python 3.7或更高版本。
下载链接:Python官网
安装时,确保勾选“Add Python to PATH”选项。
安装ESP32驱动程序
ESP32通常使用USB转串口芯片(如CP2102或CH340),需要安装相应的驱动程序。
CP2102驱动程序:Silicon Labs官网、网盘链接
CH340驱动程序:WCH官网
下载并安装相应的驱动程序后,重启计算机。
安装esptool.py
esptool.py
是一个用于与ESP32进行烧录的工具。可以通过以下命令在终端(命令提示符或PowerShell)中安装:
pip install esptool
下载MicroPython固件
访问MicroPython的ESP32固件页面下载适合你ESP32型号的最新固件(.bin文件)。
在Download界面选择对应的板子型号,例如我是esp32s3
MicroPython - Python for microcontrollers
来到对应界面后下拉到底部找到Firmware
,下载对应版本的.bin
我们的板子是乐鑫科技的ESP32-S3-WROOM-1-N16R8
,可以从芯片上读出,数据手册为
esp32-s3-wroom-1_wroom-1u_datasheet_cn.pdf
因此我们选择下载红线标注的Firmware
即可
连接Esp32
查找端口号
Windows系统要查找ESP32的串口号,你可以按照以下步骤操作:
连接ESP32:将ESP32通过USB线连接到计算机。
打开设备管理器:
右键点击“开始”按钮,选择“设备管理器”。
查找串口:
在设备管理器中,展开“端口 (COM & LPT)”部分,你应该能看到类似“COM3”或“COM4”的条目,后面的数字就是ESP32的串口号。
其他系统参考原blog
注意,板子必须插COM口而不是USB口
烧录MicroPython固件
具体文档参考:MicroPython - Python for microcontrollers
esptool文档:Basic Options - ESP32 - — esptool.py latest documentation
将ESP32连接到计算机,通过USB线连接后,确认计算机能识别到设备。
打开终端,并查找ESP32的串口号(在Windows上通常是COMx(x指数字),在Linux或macOS上是/dev/ttyUSBx或/dev/tty.wchusbserialxxxx
)。
执行以下命令烧录固件(请根据你的固件路径和串口号进行修改):
esptool --port COMx erase_flash
esptool --port COMx --baud 115200 write_flash -z 0 <path_to_your_firmware.bin>
替换COMx
为你的串口号,<path_to_your_firmware.bin>
为下载的固件文件路径。
其中:
--chip esp32s3
:指定芯片类型。--port <串行端口>
:指定连接模组的串行端口(如/dev/ttyUSB0
或COM3
)。--baud 115200
:设置波特率。write_flash
:烧录命令。-z
:压缩烧录数据。0
:烧录的起始地址。<path_to_your_firmware.bin>
:烧录文件的路径。
配置Cursor
安装Python扩展
在Cursor
中,打开扩展视图(快捷键:Ctrl+Shift+X
),搜索并安装“Python”扩展,以便于代码编辑和调试。
安装RT-Thread MicroPython插件
RT-Thread-连接com时候,一直卡在这个界面,无法进行后续代码运行RT-Thread问答社区 - RT-Thread
RT-Thread MicroPython
是一个VSCode插件,能够方便地与MicroPython
设备进行交互。
创建项目与运行
测试样例
连接WIFI
# ESP32 WiFi连接示例
import network
import time
import gc
# WiFi配置信息
SSID = "unitree"
PASSWORD = "fxy162899"
def connect_wifi():
# 创建WLAN站点接口
wlan = network.WLAN(network.STA_IF)
# 激活接口
wlan.active(True)
# 如果已经连接,则直接返回
if wlan.isconnected():
print('已连接到WiFi')
return wlan
# 连接WiFi
print('正在连接WiFi...')
wlan.connect(SSID, PASSWORD)
# 等待连接或超时
max_wait = 10 # 最大等待10秒
while max_wait > 0:
if wlan.isconnected():
break
max_wait -= 1
print('等待连接...')
time.sleep(1)
# 检查是否连接成功
if wlan.isconnected():
print('WiFi连接成功')
print('网络配置:', wlan.ifconfig())
return wlan
else:
print('WiFi连接失败')
return None
def main():
# 连接WiFi
wlan = connect_wifi()
if wlan:
# 连接成功后,这里可以添加其他功能代码
print('已获取IP地址:', wlan.ifconfig()[0])
else:
# 连接失败处理
print('无法连接WiFi,请检查网络设置')
# 内存回收
gc.collect()
if __name__ == '__main__':
main()
- 感谢你赐予我前进的力量