跳到主要内容

MicroPython 开发

MicroPython 入门教程

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

请注意:该教程使用 ESP32-S3-Zero 作为教学示例,所有硬件代码均基于其引脚布局。在动手实践前,建议您对照手中的开发板引脚图,确认引脚配置无误。

配置开发环境

1. 配置 Thonny 和烧录 MicroPython 固件

2. 其他提示

  • 目前开发板使用定制的固件进行开发,固件在 ESP32-S3-LCD-1.28 示例程序 中,固件合并成单个文件,注意下载地址是 0x00 位置

  • 固件路径:

    ...\ESP32-S3-LCD-1.28-Demo\Firmware\MicroPython-bin
  • 若通过 乐鑫 Flash 下载工具 烧录 MicroPython 固件,烧录地址为 0x0

  • factory-bin 文件夹下的 bin 文件为测试板载功能的文件,在此处无需烧录

  • MicroPython 固件制作来自 链接MicroPython 固件编译 更多学习链接

Thonny 使用说明

如果你刚入门学习 ESP32 和 Thonny,还不知道如何使用 Thonny,那么请展开看看,希望可以帮助到你!

选择开发板及型号

  • 下载安装最新 Thonny IDE 后,打开 Thonny IDE -> Configure interpreter...,如下图所示
    ESP32-S3-Touch 1
    ESP32-S3-Touch 1
  • 选择 ESP32 与选择对应的 COM 口
    ESP32-S3-Touch 1
  • 点击该按钮,可看到 shell 中输出语句,则说明开发板固件成功使用
    ESP32-S3-Touch 1

上传例程

下文以使用“ESP32-S3-Touch_1.28 ”例程为例,若使用其他例程,操作步骤类推。

  • 如何找到您想要的示例程序,如果最开始没有 files 这一栏,我们可以在 view 里面找到
    ESP32-S3-Touch 1
    ESP32-S3-Touch 1
  • 将本地文件上传到开发板,选择文件,鼠标右键,找到"upload to/",进行下载
    ESP32-S3-Touch 1
  • 以下是全部上传完成的界面,下载的文件请务必与红框内文件保持一致 ,否则可能会运行失败
    ESP32-S3-Touch 1
  • 选择.py 后缀的文件,点击绿色按钮烧录运行
    ESP32-S3-Touch 1
  • 运行另一份文件时要先点击红色 stop 按钮,这样另一份文件才能正常运行
    ESP32-S3-Touch 1

示例程序

Demo-flow-02

ESP32-S3-LCD-1.28 示例程序

示例程序基础例程说明
alien.py随机显示 “alien.jpg” 图像
bitarray.py创建并展示多个随机位置的 “吃豆人” 精灵动画
hello.py随机显示不同颜色的 “Hello!” 文本,并且可以通过循环切换不同的旋转角度
hershey.py循环展示不同的问候语
jpg.py轮流显示两张 JPEG 图片
noto_fonts.py展示三种不同字体的名称
pbitmap.py显示一个预编译的位图图像
rotation.py循环展示不同旋转值下的文本显示效果
scroll.py在显示屏上实现字符的平滑滚动显示

上传例程及特殊例程

上传例程

  • 将本地文件上传到开发板,选择文件,鼠标右键,找到"upload to/", 进行下载

    ESP32-S3-LCD-1.28

  • 以下是全部下载完成的界面,下载的文件请务必与红框内文件保持一致 ,否则可能会运行失败

    ESP32-S3-LCD-1.28

  • 选择.py 后缀的文件,点击绿色按钮烧录运行(运行图置于后文)
    ESP32-S3-LCD-1.28

  • 运行另一份文件时要先点击红色 stop 按钮,这样另一份文件才能正常运行
    ESP32-S3-LCD-1.28

特殊例程

  • 在所给例程中,boot.py 为自动生成的空白文件,bluenarble.py 存放的是图片,运行无现象
    ESP32-S3-LCD-1.28

alien.py

【程序说明】

  • 该程序用于在特定显示屏上随机显示 “alien.jpg” 图像

【硬件连接】

  • 将开发板接入电脑

ESP32-S3-LCD-1.28

【代码分析】

  • GC9A01() :GC9A01 构造函数重要性在于建立硬件连接、设置初始参数并创建可操作的显示屏对象,为后续的显示操作奠定基础
    • spi_interface :建立与显示屏的 SPI 通信
    • widthheight :设置显示屏分辨率
    • reset_pin :连接显示屏的各种控制引脚
    • rotation :设置初始旋转角度

【运行效果】

  • LCD 屏幕显示

ESP32-S3-Touch 1

bitarray.py

【程序说明】

  • 该程序是在特定显示屏上创建并展示多个随机位置的 “吃豆人” 精灵动画

【硬件连接】

  • 将开发板接入电脑

【代码分析】

  • pacman 类的 move 方法 :负责更新 “吃豆人” 精灵的状态,实现其在屏幕上的移动和动画效果

    • 首先增加精灵的当前步数,然后通过取模操作确保步数在规定的 SPRITE_STEPS 范围内循环,对应精灵的不同动画帧或状态
    • 接着在水平方向上移动精灵的位置,当精灵的水平位置达到特定值 302 时,重置步数,是为了触发特定动画状态或行为。最后,通过取模操作确保精灵的水平位置在一定范围内循环,避免超出显示区域
  • tft.map_bitarray_to_rgb565

    • tft.map_bitarray_to_rgb565 函数根据精灵的当前步数从 SPRITE_BITMAPS 中选取位图数据,将其转换为 RGB565 格式的缓冲区 sprite 。同时,指定了精灵的宽度以及前景色和背景色
  • tft.blit_buffer

    • tft.blit_buffer 函数将转换后的缓冲区绘制到显示屏上特定的位置,该位置由精灵的当前坐标确定,并指定了精灵的宽度和高度

【运行效果】

  • LCD 屏幕显示

ESP32-S3-Touch 1

hello.py

【程序说明】

  • 该程序是在特定的显示屏上随机显示不同颜色的 “Hello!” 文本,并且可以通过循环切换不同的旋转角度

【硬件连接】

  • 将开发板接入电脑

【代码分析】

  • tft.text :在显示屏上绘制文本 “Hello!”

    • 使用指定字体,文本位置通过随机数在显示屏范围内确定,前景色和背景色由随机生成的 RGB565 颜色值决定
  • while True :实现 “Hello!” 文本在不同旋转角度下的随机显示动态效果

    • 通过无限循环和遍历四个旋转角度,设置显示屏旋转角度后清空屏幕,计算文本显示范围,循环调用 tft.text 函数在随机位置以随机颜色显示文本

【运行效果】

  • LCD 屏幕显示

ESP32-S3-Touch 1

hershey.py

【程序说明】

  • 该程序是在一个特定的显示屏上循环展示不同的问候语

【硬件连接】

  • 将开发板接入电脑

【代码分析】

  • main :函数中的循环部分,在显示屏上循环显示不同字体、颜色和问候语

    • 逐行移动显示位置,获取下一个颜色、字体和问候语,清除上一行内容并绘制新内容,当超出一定范围时重置行位置,添加延迟控制显示速度
  • cycle :创建可循环迭代的对象

    • 接受参数,若可迭代则直接循环,若单个元素则转换为可迭代列表并循环返回,用于方便地循环使用颜色、字体和问候语列表

【运行效果】

  • LCD 屏幕显示

ESP32-S3-Touch 1

jpg.py

【程序说明】

  • 该程序是在特定的显示屏上轮流显示两张 JPEG 图片

【硬件连接】

  • 将开发板接入电脑

【代码分析】

  • main

    • 遍历图片文件名列表,调用 tft.jpg 函数在特定位置以较慢方式显示图片,然后等待 5 秒
  • tft.jpg :在显示屏上显示指定的 JPEG 图片

    • 读取、解码图片文件并绘制到显示屏,根据传入参数确定显示位置和模式

【运行效果】

  • LCD 屏幕显示

ESP32-S3-Touch 1ESP32-S3-Touch 1

noto_fonts.py

【程序说明】

  • 该程序是在特定的显示屏上展示三种不同字体(NotoSans、NotoSerif、NotoSansMono)的名称,并且将这些字体名称以居中的方式显示在不同的行上

【硬件连接】

  • 将开发板接入电脑

【代码分析】

  • main :程序主入口,初始化显示屏并展示三种字体名称

    • 创建显示屏对象并初始化,填充背景为黑色,调用 center 函数依次显示三种字体名称
  • center :将给定字符串以指定字体在显示屏上居中显示

    • 获取显示屏宽度,计算字符串宽度,若小于屏宽则水平居中计算坐标,否则左对齐,最后在指定位置显示字符串

【运行效果】

  • LCD 屏幕显示

ESP32-S3-Touch 1

pbitmap.py

【程序说明】

  • 该程序是在特定的显示屏上显示一个预编译的位图图像

【硬件连接】

  • 将开发板接入电脑

【代码分析】

  • main :程序主入口,初始化显示屏并显示位图

    • 创建显示屏对象,初始化后填充黑色背景,调用 tft.pbitmap 显示预编译位图模块中的图像
  • tft.pbitmap :在显示屏上显示预编译位图

    • 读取位图数据并绘制到显示屏,根据传入参数确定显示位置

【运行效果】

  • LCD 屏幕显示

ESP32-S3-Touch 1

rotation.py

【程序说明】

  • 该程序是在特定的显示屏上循环展示不同旋转值下的文本显示效果

【硬件连接】

  • 将开发板接入电脑

【代码分析】

  • main :程序主入口,初始化显示屏并循环展示不同旋转值下的文本效果

    • 创建显示屏对象并初始化,在循环中依次设置不同旋转值,清空屏幕后显示包含旋转值信息的文本并等待观察
  • tft.rotation :设置显示屏旋转角度

    • 根据传入参数调整显示屏显示方向置

【运行效果】

  • LCD 屏幕显示

ESP32-S3-Touch 1

scroll.py

【程序说明】

  • 该程序是在特定的显示屏上实现字符的平滑滚动显示

【硬件连接】

  • 将开发板接入电脑

【代码分析】

  • main :程序主入口,初始化显示屏、设置颜色并滚动显示字符

    • 创建显示屏对象,设置颜色生成器获取前景色,初始化显示屏后设置滚动区域,在循环中清除顶部行、在新行显示字符并更新颜色和字符值,通过设置滚动地址实现滚动并控制速度
  • cycle :创建可循环迭代对象

    • 接受参数,若可迭代则直接循环,若单个元素则转换为可迭代列表并循环返回

【运行效果】

  • LCD 屏幕显示

ESP32-S3-Touch 1