这次活动用的开发板 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/
点
击如下按钮:

就会弹出一个小窗口:

这个里面,对应的分别为:
完整circuitpython安装:首次使用建议选择该选项
仅安装circuitpython uf2版本:安装uf2版本
仅安装circuitpython bin版本:安装bin版本
仅安装Bootloader:升级bootloader专用
设置wifi:设置wifi连接信息
因为是首次使用,所以通常选择完整安装即可。
在操作之前,要先让开发板进入DFU烧录模式。
根据官方提供的Pinout:

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

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

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

上述为macOS、Linux界面,如果是在Windows,cu.******会显示为COM*。
选择USB HTAG/serial debug unit的项,进行连接,连接成功后,会提示操作:

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

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

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

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

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

屏幕上显示的0.35.0,就是当前运行的Bootloader固件tinyuf2的版本。
然后,在网页界面上,点击“Select FTHRS3BOOT Drive”按钮,选择刚才的 FTHRS3BOOT U盘:

并允许编辑文件:

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

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

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

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

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

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

只要开发板烧录后自动重启了,能够用开发工具连接了,就可以不用管这个进度条了,刷新一下页面即可。
二、设置WiFi
刷新页面后,可以再次打开小窗口:

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

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

并再次允许编辑:

在随后的界面,根据提示进行设置:
然后点击Next,等待设置成功:

然后按Reset,重启开发板,开发板就会自动联网,在程序中不用再次进行网络连接了。
如果用的Thonny连接进行开发,就会看到如下的连接信息:

虽然前面的设置界面中,提供了网页编辑器的设置信息,但一般不用,速度和性能并不好,建议用专用的开发工具更好。
三、点灯
玩开发板,准备好环境后,第一件事,就是点灯。
在开发板上,有两颗可以被控制的LED:

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

点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就会一闪一闪了:

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

然后,用下面的代码即可控制:
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灯珠,将会根据设定的颜色显示切换了:

注意:如果运行代码,提示有module not found,那么就去扩展库包中,找到对应的,拷贝到 CIRCUITPY U盘的 /lib 目录下即可。
四、点屏显示文字
要电量屏幕,显示文字,需要先在扩展库包中找到adafruit_display_text:

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

然后运行下面的代码:
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)
运行代码后,屏幕上就会显示文字了:

注意:如果运行代码,提示有module not found,那么就去扩展库包中,找到对应的,拷贝到 CIRCUITPY U盘的 /lib 目录下即可。
ciryuitpython的显示功能,不仅可以显示文字,还可以显示复杂的图形:
这里提供一个学习链接,感兴趣的同学可以参考学习研究:https://gitee.com/honestqiao/digikey_follow_me_2003_2
我要赚赏金
