MicroPython
本章节包含以下部分,请按需阅读:
MicroPython 入门教程
初次接触 ESP32 MicroPython 开发,想要快速上手?我们为您准备了一套通用的 ESP32 MicroPython 入门教程。
- 第 1 节 搭建开发环境
- 第 2 节 基础知识
- 第 3 节 GPIO 数字输出/输入
- 第 4 节 ADC 模拟输入
- 第 5 节 PWM 输出
- 第 6 节 UART 通信
- 第 7 节 I2C 通信
- 第 8 节 SPI 通信
- 第 9 节 Wi-Fi 基础用法
- 第 10 节 网页服务器
- 第 11 节 蓝牙
- 第 12 节 综合项目
配置开发环境
1. 烧录 MicroPython 固件和配置 Thonny
请参考 搭建 MicroPython 开发环境教程 烧录 MicroPython 固件。
2. 其他提示
-
MicroPython 固件下载链接:https://micropython.org/download/ESP32_GENERIC_S3/
-
若通过 乐鑫 Flash 下载工具 烧录 MicroPython 固件,烧录地址为
0x0。
示例程序
| 示例程序 | 基础例程说明 |
|---|---|
| lcd_example | 使用 ESP32-S3-GEEK 打开 LCD 屏幕,显示文字信息与显示 bmp 图片 |
| SD | 读取 SD 卡 |
| Uart0 | 串口通信 |
| WS_Bluetooth | 可打开 ESP32-S3-GEEK 的蓝牙,使用蓝牙与手机蓝牙调试助手进行通讯 |
| WIFI_AP | 打开 WIFI 的 AP 模式,PC 可以连接其 WIFI |
| WIFI_STA | 打开 WIFI 的 STA 模式,其可以连接 PC 打开的热点或者其他 WIFI |
lcd_example
程序说明
- 该例程可使用 ESP32-S3-GEEK 打开 LCD 屏幕,显示文字信息与显示 bmp 图片
- 运行时请运行
lcd_example.py
硬件连接
- 开发板接入电脑
代码分析
lcd_example.py主要定义了一个用于控制特定尺寸的 LCD 显示屏的类LCD_1inch14。它包含了初始化显示屏硬件、发送命令和数据到显示屏、对显示屏缓冲区进行操作以及显示图像和文本等功能。- 首先创建了一个
BMPReader对象img,并传入一个 BMP 图像文件路径./ESP32-S3-GEEK.bmp。这调用了第二段代码中BMPReader类的构造函数,该构造函数又调用了_read_img_info方法来读取图像文件的相关信息。 - 然后通过一个循环,调用
img.get_buf(270, 270*x)方法从 BMP 图像中读取特定长度的数据,并将其插入到 LCD 的帧缓冲区中(通过调用第一段代码中LCD_1inch14类的 ins 方法实现)。这里get_buf方法的参数data_len和start用于控制读取的数据长度和起始位置,确保正确地从 BMP 图像中提取数据并显示在 LCD 上
- 首先创建了一个
bmp_reader.py定义了一个BMPReader类,用于读取 BMP 图像文件。它能够解析 BMP 文件的特定信息,并从文件中提取特定位置和长度的数据,将其转换为特定格式(RGB565)的字节数组返回
运行效果
- LCD 屏幕显示
SD
程序说明
- 该例程可读取 ESP32-S3-GEEK 的 SD 卡槽,直接打开 ESP32-S3-GEEK 的 sd 文件夹可浏览 SD 卡中的文件,使用前需要先将 SD 卡插入卡槽中。适用于 ESP32 与 SD 卡交互,初始化 SD 卡并挂载文件系统,测试稳定性与可靠性
硬件连接
- 将 SD 卡装入开发板
- 开发板接入电脑
代码分析
boot.py:- 通过设置芯片选择(CS)引脚和初始化 SPI 总线来连接到 SD 卡
- 创建
sdcard.SDCard实例并将其挂载到文件系统中,使用uos.mount(sd, '/sd')。一旦挂载成功,可以使用os.listdir('/sd')等文件系统操作来查看 SD 卡中的内容,遍历文件和目录、读取文件内容等
sd_card.py:- 定义了
SDCard类,该类提供了与 SD 卡进行交互的方法,初始化 SD 卡、发送命令、读取和写入数据块等。 - 这段代码本身没有直接显示 SD 卡内容的功能,但它为上层代码提供了底层的操作接口。通过这些接口,可以实现读取 SD 卡上的文件并将其内容显示出来,例如可以读取特定文件的内容并打印出来
- 定义了
- 两段代码共同协作,实现了在 MicroPython 环境下对 SD 卡的访问和内容显示。第一段代码通常是用户使用的部分,通过调用第二段代码中实现的功能来完成具体的任务
运行效果
- ①②. 保证两个文件夹已经上传到开发板
- ③. 点击 stop 可以看见设备出现了 sd 文件夹
- ④.sd 文件夹下为所插入 SD 卡中的内容

Uart0
- 该例程可使用 ESP32-S3-GEEK 打开串口 UART0,打开串口调试助手,可以进行串口通信。适用于 MicroPython 与 UART 交互,初始化 UART,可发送和接收数据,测试稳定性与可靠性
硬件连接
- 将开发板接入电脑
- 可以接入 USB 转 UART 通用串口通信模块 等器件进行串口通信
代码分析
- 模块导入和 UART 初始化
import machine:导入 MicroPython 的machine模块,用于控制硬件资源。- 创建一个 UART 对象
uart,指定使用 UART1,设置波特率为 115200,通过指定发送引脚为machine.Pin(43)和接收引脚为machine.Pin(44)来配置 UART 的硬件连接
- 定义函数
send_data函数:接受一个数据参数,使用 UART 的 write 方法发送数据。receive_data函数:检查 UART 是否有可读数据,如果有,则读取数据并打印出来
运行效果
- 运行后发送字符串 "Hello UART"

- 使用串口调试助手进行通信测试

WS_Bluetooth
- 该例程可打开 ESP32-S3-GEEK 的蓝牙,使用蓝牙与手机蓝牙调试助手进行通讯
硬件连接
- 将开发板接入电脑
代码分析
ble_irq:蓝牙中断处理函数,根据不同的事件进行相应的处理- 如果事件为连接(事件值为 1),调用
connected函数 - 如果事件为断开连接(事件值为 2),调用
disconnected函数 - 如果事件为接收数据(事件值为 3),读取接收特征的值并打印
- 如果事件为连接(事件值为 1),调用
advertiser:- 将设备名称转换为字节数组,并构建广播数据
- 使用蓝牙实例的
gap_advertise方法进行广播
Bluetooth_Init:- 初始化蓝牙设备
- 创建蓝牙实例,激活蓝牙,设置设备名称,注册中断处理函数,注册服务并广播设备信息
运行效果
- 程序运行后,打印开发板型号
- 适用手机蓝牙调试助手与其进行通信



WIFI_AP
- 该例程可使用 ESP32-S3-GEEK 打开 WIFI 的 AP 模式,PC 可以连接其 WIFI。适用于 ESP32-S3-GEEK 在 MicroPython 下创建 Wi-Fi 接入点,测试稳定性与可靠性
硬件连接
- 将开发板接入电脑
代码分析
redian- 创建一个 Wi-Fi 接入点(Access Point,AP)对象
ap,使用network.WLAN(network.AP_IF)创建了一个基于接入点模式的网络接口 - 激活接入点
ap.active(True),使设备开始作为一个 Wi-Fi 热点工作 - 通过
ap.config设置接入点的参数,包括网络名称(ESSID)为 'ESP32-S3-GEEK',认证模式为network.AUTH_WPA_WPA2_PSK(即 WPA/WPA2-PSK 加密),以及密码为 'Waveshare' - 打印出接入点的 IP 地址,通过
ap.ifconfig()[0]获取接入点的 IP 地址并显示
- 创建一个 Wi-Fi 接入点(Access Point,AP)对象
运行效果
- 代码运行后会打印接入点的 IP 地址
- 可使用 PC 打开 wifi 连接,WiFi 名称:ESP32-S3-GEEK,密码:waveshare

WIFI_STA
- 该例程可使用 ESP32-S3-GEEK 打开 WIFI 的 STA 模式,其可以连接 PC 打开的热点或者其他 WIFI。适用于 ESP32 在 MicroPython 下连接特定 Wi-Fi 网络,测试稳定性与可靠性
硬件连接
- 将开发板接入电脑
代码分析
do_connect:程序主入口,初始化显示屏并展示三种字体名称- 创建一个 Wi-Fi 客户端接口对象
wlan,使用network.WLAN(network.STA_IF)创建了一个基于站点模式(Station Interface)的网络接口。 - 激活 Wi-Fi 接口
wlan.active(True),使设备能够连接到外部的 Wi-Fi 网络。 - 如果设备当前没有连接到网络,打印出 “connecting to network...” 的提示信息,并尝试连接到指定的 Wi-Fi 网络,这里的网络名称是 'ESP32-S3-GEEK',密码是 'Waveshare'。
- 通过一个循环不断检查是否连接成功,直到
wlan.isconnected()返回True。 - 一旦连接成功,打印出当前的网络配置信息,包括 IP 地址、子网掩码、网关地址等,通过
wlan.ifconfig()获取并打印
- 创建一个 Wi-Fi 客户端接口对象
运行效果
- 可使用 PC 端打开热点,热点名称与密码为:ESP32-S3-GEEK,Waveshare
- 程序运行并连接上 wifi 后打印输出当前网络配置信息
