这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » 【Let'sdo2025第三期活动】【拾色播放器DIY】烧录固件和点灯亮屏

共1条 1/1 1 跳转至

【Let'sdo2025第三期活动】【拾色播放器DIY】烧录固件和点灯亮屏

菜鸟
2025-11-15 21:31:02     打赏

这次活动用的开发板 Adafruit ESP32-S3 Reverse TFT Feather ,是有 Adafruit 研发的。

Adafruit为自家的开发板,基于micropython,专门定制开发了circuitpython,提供了完善的硬件和功能支持。

下面,就先烧录固件,并电灯亮屏。


一、烧录固件

Adafruit ESP32-S3 Reverse TFT Feather是ESP32-S3的,其上运行的固件程序,通俗的来说,有两套,首先是bootloader,负责硬件的引导启动,另外一套是app,就是实际的用户应用程序。

在Adafruit ESP32-S3 Reverse TFT Feather上面运行circuitpython环境,其bootloader是tinyuf2,可以让开发板连接到电脑时,变为一个U盘,然后将对应的.uf2固件文件,拷贝到这个U盘中,即可自动更新固件。

Adafruit ESP32-S3 Reverse TFT Feather出厂的时候,就烧录好了tinyuf2,不过不是在最新版本的,一般需要先更新。

circuitpython为Adafruit ESP32-S3 Reverse TFT Feather提供了专用固件,并在固件对应的页面,提供了通过浏览器即可进行烧录的工具。

访问专用固件页面:https://circuitpython.org/board/adafruit_feather_esp32s3_reverse_tft/

击如下按钮:

image.png

就会弹出一个小窗口:

image.png

这个里面,对应的分别为:

  1. 完整circuitpython安装:首次使用建议选择该选项

  2. 仅安装circuitpython uf2版本:安装uf2版本

  3. 仅安装circuitpython bin版本:安装bin版本

  4. 仅安装Bootloader:升级bootloader专用

  5. 设置wifi:设置wifi连接信息

因为是首次使用,所以通常选择完整安装即可。

在操作之前,要先让开发板进入DFU烧录模式。

根据官方提供的Pinout:

image.png

可以得知D0对应GPIO0。


先将开发板连接到电脑,然后按住D0按钮不松开,再按一下Reset按钮,按完后,就可以松开D0按钮了。

image.png


点击完整安装后,一路Next,到出现Connect按钮:

image.png

点击Connect后,会出现串口选择界面:

image.png

上述为macOS、Linux界面,如果是在Windows,cu.******会显示为COM*。

选择USB HTAG/serial debug unit的项,进行连接,连接成功后,会提示操作:

image.png

分别为:返回上一步、跳过清空、继续,点继续即可,会自动清空板载Flash:

image.png

清空完成后,会自动下载对应的bootloader固件,并自动安装:

image.png

直到出现如下界面,表示安装Bootloader完成:


image.png

此时按一下Reset按键,在电脑上,会多出一个U盘:

image.png

同时,开发板的屏幕显示如下的画面:

47a3e49007a87c9d97731a71a4a70cb8.jpg

屏幕上显示的0.35.0,就是当前运行的Bootloader固件tinyuf2的版本。


然后,在网页界面上,点击“Select FTHRS3BOOT Drive”按钮,选择刚才的 FTHRS3BOOT U盘:

image.png

并允许编辑文件:

image.png

将再次自动下载circuitpython固件并安装:

image.png

安装完成后,电脑会噔的一声响,是开发板自动重启了,电脑上原有的 FTHRS3BOOT U盘没有了,变成了如下的U盘:

image.png

可以直接点开,查看里面的内容:

image.png


开发板的屏幕,会显示黑色界面黑对应的内容:

50f163baeea6ac056ebeadc38265fe26.jpg


然后,打开Thonny或者其他合适的micropython/circuitpython开发工具,连接到开发板,就可以开始开发了:

image.png

注意,网页界面上的烧录进度条,可能一直没有完成:

image.png

只要开发板烧录后自动重启了,能够用开发工具连接了,就可以不用管这个进度条了,刷新一下页面即可。


二、设置WiFi

刷新页面后,可以再次打开小窗口:

image.png


点击最后一下,设置WiFi连接,并在如下界面的时候:

image.png

选择重启后变成的 CIRCUITPY U盘:

image.png

并再次允许编辑:

image.png

在随后的界面,根据提示进行设置:

image.png然后点击Next,等待设置成功:

image.png


然后按Reset,重启开发板,开发板就会自动联网,在程序中不用再次进行网络连接了。

如果用的Thonny连接进行开发,就会看到如下的连接信息:

image.png

虽然前面的设置界面中,提供了网页编辑器的设置信息,但一般不用,速度和性能并不好,建议用专用的开发工具更好。


三、点灯

玩开发板,准备好环境后,第一件事,就是点灯。

在开发板上,有两颗可以被控制的LED:

image.png

一颗为普通红色LED,连接到了GPIO13;一颗为RGB灯珠,连接到了GPIO33

image.png


点GPIO13的红色LED很简单,用下面的代码即可:

""" 交替亮灭 """
import time
import board
import digitalio

led = digitalio.DigitalInOut(board.LED)
led.direction = digitalio.Direction.OUTPUT

while True:
    led.value = True
    time.sleep(0.5)
    led.value = False
    time.sleep(0.5)

运行后,红色LED就会一闪一闪了:

356031b72c12c89db20ea96ac82727fc.jpg


如果要点RGB灯珠,则需要前往Librarieshttps://circuitpython.org/libraries先下载扩展库包,然后找到其中对应的库,放到 CIRCUITPY U盘的 /lib 目录下:

image.png


然后,用下面的代码即可控制:

import time
import board
import neopixel
import digitalio
# WS2812B 电源控制
power = digitalio.DigitalInOut(board.NEOPIXEL_POWER)
power.direction = digitalio.Direction.OUTPUT
power.value = True
# WS2812B设置
pixel = neopixel.NeoPixel(board.NEOPIXEL, 1)
# 亮度
pixel.brightness = 0.5
# 颜色循环
'''
red: (255, 0, 0)
green: (0, 255, 0)
blue: (0, 0, 255)
cyan: (0, 255, 255)
purple: (255, 0, 255)
yellow: (255, 255, 0)
white: (255, 255, 255)
black (off): (0, 0, 0)
'''
while True:
    pixel.fill((255, 0, 0))
    time.sleep(0.5)
    pixel.fill((0, 255, 0))
    time.sleep(0.5)
    pixel.fill((0, 0, 255))
    time.sleep(0.5)

运行后,开发板上的RGB灯珠,将会根据设定的颜色显示切换了:

d4c7192509720bd0bbfe5f691bde773a.jpg

注意:如果运行代码,提示有module not found,那么就去扩展库包中,找到对应的,拷贝到 CIRCUITPY U盘的 /lib 目录下即可。


四、点屏显示文字

要电量屏幕,显示文字,需要先在扩展库包中找到adafruit_display_text:

image.png

然后拷贝到 CIRCUITPY U盘的 /lib 目录下:

image.png

然后运行下面的代码:

import time
import board
import displayio
import terminalio
from adafruit_display_text import label

# 1. 屏幕基础配置
display = board.DISPLAY

# 2. 显示文本
text = "Hello World!"
text_area = label.Label(terminalio.FONT, text=text, color=0xFF0000, x=20, y=20)
text_group = displayio.Group(
    scale=2,
    x=0,
    y=0,
)
text_group.append(text_area)  # Subgroup for text scaling
display.root_group = (text_group)


运行代码后,屏幕上就会显示文字了:

3e968900fed61a2888eb406bec26d238.jpg

注意:如果运行代码,提示有module not found,那么就去扩展库包中,找到对应的,拷贝到 CIRCUITPY U盘的 /lib 目录下即可。


ciryuitpython的显示功能,不仅可以显示文字,还可以显示复杂的图形:image.png

这里提供一个学习链接,感兴趣的同学可以参考学习研究:https://gitee.com/honestqiao/digikey_follow_me_2003_2







关键词: 拾色     播放器     点灯     亮屏    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]