【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系列的串口驱动

CH341SER.EXE - 南京沁恒微电子股份有限公司

 

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 文档

官方最新文档连接 

posted @ 2025-07-23 16:00  Molesidy  阅读(71)  评论(0)    收藏  举报  来源
//雪花飘落效果