【MicroPython】基于ESP32S3+MicroPython固件的初步开发
前言
什么是 MicroPython
固件?它是指运行在 ESP32
上的一段代码,功能为将你写的 python
代码翻译成 ESP32
可以运行的机器码,也称之为 python
解释器。
基于 ESP32S3 与 MicroPython 固件进行初步开发,不仅能让开发者快速掌握微控制器的基本操作,还能为后续更复杂的物联网项目打下坚实的基础。本文将围绕这一开发组合,从基础环境搭建到简单功能实现,逐步引导读者踏入 ESP32S3+MicroPython 开发的世界,帮助读者开启物联网开发的奇妙之旅。
一、ESP32S3的MicroPython固件烧录
1.获取固件
登录MicroPython官网(https://micropython.org/download/
)下载,下拉并选中 ESP32-S3
如下图所示:
选择最新 bin
文件,并下载
2.获取Flash工具
Flash 下载工具用户指南 - ESP32 - — ESP 测试工具 latest 文档
3.安装CH340系列的串口驱动
4.TypeC数据线接上TTL转USB接口
5.使用Flash烧写工具(还有另外两种方法)
进入界面
注:其他方法
方法一:官方有推荐的固件烧写安装方法
方法二:使用Thonny内置更新固件工具
(1)点击右下角,点击配置解释器
(2)点击解释器选项
(3) 选择类型ESP32,并点击右下角的安装或更新
(4)点击三线按钮选择第一个选项,选择烧录我们下载的本地MicroPython固件(镜像)
(5) 烧录固件
Done完成
6.点击第一行的三个点的地方选择固件
7.配置如下:
8.点击ERASE,先擦除
9.点击START,开始烧写
固件烧录完成
二、基于Thonny的ESP32S3开发环境配置
1.安装 Thonny IDE 软件 并配置编译环境
Thonny, Python IDE for beginnershttps://thonny.org/
2.下的Windows版本
3. 配置解释器
4.出现Shell控制台,左下角出现boot.py,表示已同步连接上了ESP32S3
5.查看固件的内置的功能(help())
help()说明:
在 ESP32 上运行的 MicroPython 环境中,help()
命令是获取交互式帮助的重要工具。上述输出展示了 MicroPython 的基础功能和使用方法,下面为你详细解释:
1. 硬件控制(machine
模块)
这部分介绍了借助machine
模块对 ESP32 硬件资源进行操控的方法:
python
运行
import machine
# 配置GPIO引脚12为输出模式,然后输出高电平
pin12 = machine.Pin(12, machine.Pin.OUT)
pin12.value(1)
# 配置GPIO引脚13为输入模式,并且启用上拉电阻,之后读取其电平
pin13 = machine.Pin(13, machine.Pin.IN, machine.Pin.PULL_UP)
print(pin13.value())
# 配置I2C总线,使用GPIO21作为时钟线(SCL),GPIO22作为数据线(SDA)
i2c = machine.I2C(scl=machine.Pin(21), sda=machine.Pin(22))
i2c.scan() # 扫描I2C总线上的设备
i2c.writeto(addr, b'1234') # 向指定地址的设备写入数据
i2c.readfrom(addr, 4) # 从指定地址的设备读取4字节数据
2. WiFi 网络配置(network
模块)
这里说明了如何利用network
模块来配置 ESP32 的 WiFi 连接:
python运行
import network
# 启用STA模式(即作为客户端连接到WiFi)
sta_if = network.WLAN(network.WLAN.IF_STA); sta_if.active(True)
sta_if.scan() # 扫描可用的WiFi接入点
sta_if.connect("<AP_name>", "<password>") # 连接到指定的WiFi
sta_if.isconnected() # 检查是否成功连接
3. REPL 控制命令
REPL(交互式解释器)的控制命令如下,这些命令在空行输入时有效:
- CTRL - A:进入raw REPL 模式。在此模式下,键盘输入会直接传输到设备,不会被本地终端处理,通常用于上传文件。
- CTRL - B:进入normal REPL 模式,也就是普通的交互式解释器模式。
- CTRL - C:中断正在运行的程序,可用于终止无限循环。
- CTRL - D:执行软复位,会重新启动 MicroPython 解释器。
- CTRL - E:进入粘贴模式,适合粘贴多行代码,避免逐行执行。
4. 进一步帮助
help(obj)
:获取特定对象(如模块、函数)的详细帮助信息。例如:help(machine.Pin)
。help('modules')
:查看所有可用模块的列表。
三、基于Thonny+MicroPython+ESP32S3的初步程序开发
1.控制台点灯
电路方面是低电平点亮
>>> import machine
>>> led1 = machine.Pin(1, machine.Pin.OUT)
>>> led1.value(1)
>>> led1.value(0)
2.编写测试程序
import machine
import uos
import gc
import time
def print_system_info():
"""打印ESP32S3的系统信息"""
# Flash信息
fs_stat = uos.statvfs('/')
total_flash = fs_stat[0] * fs_stat[2]
free_flash = fs_stat[0] * fs_stat[3]
# SRAM信息
allocated_ram = gc.mem_alloc()
free_ram = gc.mem_free()
total_ram = allocated_ram + free_ram
# 时钟频率
cpu_freq = machine.freq()
# 打印信息
print("=" * 30)
print("ESP32S3 系统信息")
print("=" * 30)
print(f"Flash: 总空间 {total_flash / 1024:.2f} KB, 可用 {free_flash / 1024:.2f} KB")
print(f"SRAM: 总空间 {total_ram / 1024:.2f} KB, 已用 {allocated_ram / 1024:.2f} KB, 空闲 {free_ram / 1024:.2f} KB")
print(f"CPU: 时钟频率 {cpu_freq / 1000000:.2f} MHz")
print("=" * 30)
def led1_toggle():
"""控制LED闪烁"""
led1.value(1) # 点亮LED
time.sleep_ms(100) # 延时100毫秒
led1.value(0) # 熄灭LED
time.sleep_ms(100) # 延时100毫秒
def main():
"""主函数,程序的入口点"""
global led1 # 声明led1为全局变量,以便在其他函数中使用
# 初始化硬件
led1 = machine.Pin(1, machine.Pin.OUT)
# 打印系统信息
print_system_info()
# 主循环
try:
while True:
led1_toggle()
except KeyboardInterrupt:
print("\n程序已停止")
led1.value(0) # 确保LED在程序退出时熄灭
# 程序入口点
if __name__ == '__main__':
main()
3.ctrl+s保存
4.编译运行
5.实验效果
MicroPyhton学习网址:
MicroPython 文档— MicroPython中文 1.17 文档