跳到主要内容

MicroPython

本章节包含以下部分,请按需阅读:

MicroPython 入门教程

初次接触 ESP32 MicroPython 开发,想要快速上手?我们为您准备了一套通用的 ESP32 MicroPython 入门教程

配置开发环境

1. 烧录 MicroPython 固件和配置 Thonny

请参考 搭建 MicroPython 开发环境教程 烧录 MicroPython 固件。

2. 其他提示

示例程序

示例程序基础例程说明
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_lenstart 用于控制读取的数据长度和起始位置,确保正确地从 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,可发送和接收数据,测试稳定性与可靠性

硬件连接

代码分析

  • 模块导入和 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),读取接收特征的值并打印
  • 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 地址并显示

运行效果

  • 代码运行后会打印接入点的 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() 获取并打印

运行效果

  • 可使用 PC 端打开热点,热点名称与密码为:ESP32-S3-GEEK,Waveshare
  • 程序运行并连接上 wifi 后打印输出当前网络配置信息