1172|3

57

帖子

5

TA的资源

一粒金砂(高级)

楼主
 

【得捷电子Follow me第2期】 汇总提交帖:上手Adafruit ESP32-S3 TFT Feather [复制链接]

 

首先感谢得捷电子和EEworld组织的Follow me活动,让我体验了Adafruit ESP32-S3 TFT Feather开发板。我使用的是Mac系统,编程工具为VSCode。看了一下论坛里大家的作品,小抄了一波作业,自己改了改完成了以下四个任务。

 

第一部分

https://training.eeworld.com.cn/video/37987

 

第二部分

 

前期工作:

到这里下载固件 https://circuitpython.org/board/adafruit_feather_esp32s3_tft/并解压,注意左边的语言选择,我直接选的英语

然后把板子连到电脑上,快速按两下RST,屏幕就会出现让把固件放U盘里的提示,把之前解压好的固件放进去重启就可以了

 

然后电脑上就会出现CIRCUITPY的这个U盘,进去后打开settings.toml,添加好网络信息

CIRCUITPY_WIFI_SSID = "2.4G WIFI名称"
CIRCUITPY_WIFI_PASSWORD = "WIFI密码"
CIRCUITPY_WEB_API_PASSWORD = "WEB页面密码"
CIRCUITPY_WEB_API_PORT = 80

接下来,屏幕出现ip地址后用ip+端口就能访问CIRCUITPY的调试网页了,也可以直接使用VSCODE,打开VSCODE拓展页面,搜CIRCUITPY然后安装后,将项目文件夹直接设置为那个U盘,右下角就可以打开串口监视器了,具体可以看得捷的官方视频教程

 

必做任务1:控制屏幕显示中文

介绍:

本任务旨在演示如何在嵌入式系统中控制显示屏以显示中文文本。在这个任务中使用 CircuitPython 和 Adafruit 的库来控制显示屏,将中文文本显示在屏幕上。

主要代码片段及说明:

import board

from adafruit_display_text import bitmap_label

from adafruit_bitmap_font import bitmap_font

# 加载中文字体

font = bitmap_font.load_font("/font/sytq_16.pcf")

color = 0x66ccff

# 创建中文文本

text = "10月8日\n周日"

# 创建文本标签

text_box = bitmap_label.Label(font, text=text, scale=2)

text_box.x = 10

text_box.y = 30

text_box.color = color

board.DISPLAY.show(text_box)

while True:

pass

以上代码演示了如何使用 adafruit_display_text 和 adafruit_bitmap_font 库来加载中文字体,并在显示屏上创建文本标签。文本标签包括了中文文本 "10月8日\n周日",并设置了字体大小、颜色以及位置。屏幕上将显示该中文文本。

 

心得体会建议:

在嵌入式系统中显示中文文本需要合适的字体支持。在这个示例中,我们使用了 bitmap_font.load_font() 来加载一个中文字体文件。因为本人使用的是mac系统,安装一堆东西太麻烦,所以直接使用了大佬做好的字体。

 

 

必做任务2:网络功能使用

   

介绍:

本任务旨在演示如何在嵌入式系统中使用网络功能,连接到 Wi-Fi 并显示网络连接状态和 IP 地址。在这个任务中,我们使用 CircuitPython 和 Adafruit 的库来控制 Wi-Fi 模块,显示连接状态和 IP 地址。

 

主要代码片段及说明:

import board

from adafruit_display_text import bitmap_label

from adafruit_bitmap_font import bitmap_font

import os

import wifi

import time

text=""

font = bitmap_font.load_font("/font/OPSans_16.pcf")

color = 0x66ccff

text_box = bitmap_label.Label(font, text=text)

text_box.x = 10

text_box.y = 30

text_box.color = color

board.DISPLAY.show(text_box)

# 从环境变量获取 Wi-Fi SSID 和密码

ssid = os.getenv("CIRCUITPY_WIFI_SSID")

password = os.getenv("CIRCUITPY_WIFI_PASSWORD")

# 显示连接中状态

text_box.text = "Connecting..."

wifi.radio.connect(ssid, password)

time.sleep(1)

# 显示连接状态和 IP 地址

text_box.text = "Connected" + "\nIP:" + str(wifi.radio.ipv4_address)

while True:

pass

 

功能展示及说明:

 

 

 

 

以上演示了如何使用 wifi 库连接到 Wi-Fi 网络,并在显示屏上显示连接状态和获取的 IP 地址。通过环境变量获取 Wi-Fi SSID 和密码。然后,显示 "Connecting..." 表示正在连接,连接成功后显示 "Connected" 和获取的 IP 地址。

 

创建AP整个原理和连WIFI差不多,就不直接演示了,代码在此

import board

from adafruit_display_text import bitmap_label

from adafruit_bitmap_font import bitmap_font

import os

import wifi

import time

text=""

font = bitmap_font.load_font("/font/OPSans_16.pcf")

color = 0x66ccff

text_box = bitmap_label.Label(font, text=text)

text_box.x = 10

text_box.y = 30

text_box.color = color

board.DISPLAY.show(text_box)

 

# 创建AP

AP_SSID='Esp32'

AP_PWD='Esp32'

wifi.radio.start_ap(AP_SSID, 'AP_PWD')

 

time.sleep(1)

#屏幕显示创建的热点名称和密码

text_box.text = AP_SSID + "\n" +AP_PWD

while True:

pass

 

 

 

 

 

必做任务3:控制WS2812B

本任务旨在演示如何在嵌入式系统中控制 WS2812B LED,通过按下按钮来切换 LED 的颜色。在这个任务中,我们使用 CircuitPython 和 Adafruit 的库来控制 WS2812B LED,并通过按钮按下来切换 LED 的颜色,同时屏幕也会显示led的颜色。

 

主要代码片段及说明:

 

初始化显示屏

display = board.DISPLAY

group = displayio.Group()

rect = Rect(0, 0, display.width, display.height, fill=BLACK)

group.append(rect)

display.show(group)

 

初始化 WS2812B LED

pixels = neopixel.NeoPixel(

board.NEOPIXEL, 1, brightness=0.2, auto_write=False, pixel_order=neopixel.GRB

)

 

初始化按钮

btn = DigitalInOut(board.BOOT0)

btn.direction = Direction.INPUT

btn.pull = Pull.UP

led_color = 0

 

创建 LED 动画对象

blink = Blink(pixels, speed=0.5, color=BLACK)

while True:

if not btn.value:

 

按钮按下时切换 LED 颜色

if led_color % 5 == 0:

blink = Blink(pixels, speed=0.5, color=JADE)

rect.fill = JADE

display.refresh()

elif led_color % 5 == 1:

blink = Blink(pixels, speed=0.5, color=ORANGE)

rect.fill = ORANGE

display.refresh()

elif led_color % 5 == 2:

blink = Blink(pixels, speed=0.5, color=GOLD)

rect.fill = GOLD

display.refresh()

elif led_color % 5 == 3:

blink = Blink(pixels, speed=0.5, color=OLD_LACE)

rect.fill = OLD_LACE

display.refresh()

elif led_color % 5 == 4:

blink = Blink(pixels, speed=0.5, color=BLACK)

rect.fill = BLACK

display.refresh()

led_color += 1

else:

pass

time.sleep(0.4)

blink.animate()

 

功能展示及说明:

 

 

 

以上演示了如何使用 neopixel 库控制 WS2812B LED,通过按下按钮来切换 LED 的颜色。LED 的颜色可以循环切换为 JADE、ORANGE、GOLD、OLD_LACE 和 BLACK。屏幕上也会相应地显示相同颜色。

 

心得体会建议:

这个任务演示了如何在嵌入式系统中控制 WS2812B LED,并通过按钮按下来切换 LED 的颜色。这是一个常见的嵌入式应用场景,可以用于创建交互式的 LED 灯效或指示器。

 

必做任务4:日历&时钟

介绍:

本任务旨在演示如何在嵌入式系统中创建一个简单的日历和时钟应用。通过连接到 Wi-Fi 获取实时时间和天气信息,同时在显示屏上显示日期、星期、时间和天气情况。

主要代码片段及说明:

 

连接到 wifi

print("Connecting to", ssid)

wifi.radio.connect(ssid, password)

print("Connected to", ssid)

 

使用adafruit_ntp.NTP函数初始化ntp服务

pool = socketpool.SocketPool(wifi.radio)

ntp = adafruit_ntp.NTP(pool, tz_offset=8, server="ntp.aliyun.com")

 

使用ntp时间更新系统时间

rtc.RTC().datetime = ntp.datetime

 

初始化requests对象

pool = socketpool.SocketPool(wifi.radio)

requests = adafruit_requests.Session(pool, ssl.create_default_context())

def get_weather():

 

拼接天气API链接

getweather_url = "https://restapi.amap.com/v3/weather/weatherInfo?city=" + city + "&key=" + key

获取天气json数据,解析并返回温度和天气信息

response = requests.get(getweather_url)

json_resp = response.json()

for da in json_resp["lives"]:

#print(da["temperature"])

return da["temperature"], da["weather"]

 

功能展示及说明:

 

 

以上代码演示了如何创建一个日历和时钟应用,通过连接到 Wi-Fi 获取实时时间和天气信息,并在显示屏上实时显示日期、星期、时间和天气情况。

 

第三部分:源代码

https://download.eeworld.com.cn/detail/eew_nkXjf8/629529

 

心得体会

很高兴能够参加DigiKey联合EEWORLD发起的Follow Me活动,这次活动提供的adafruit ESP32-S3 TFT Feather开发板十分精致,性能和拓展性也非常不错,用来自己DIY各种项目还是很适合的。这个活动提供了一个很好的机会,让开发者能够深入了解并尝试Adafruit ESP32-S3 TFT Feather开发板。这种免费使用的机会让我能够在实际项目中测试该开发板的性能,这对于个人DIY玩家来说是非常宝贵的。这个板子搭载了ESP32-S3芯片,支持Wi-Fi和蓝牙功能,而且还具有TFT显示屏,这使得它非常适合物联网和嵌入式系统开发。开发板上的GPIO引脚和外部接口也非常丰富,这对于与其他传感器和设备进行连接非常方便。我也有一些建议和意见。首先,我觉得活动的资源支持可以进一步改善。提供更多的中文教程、示例代码和文档将有助于新手更快地入门并充分利用这个开发板的功能。此外,直播回放没有时间点提示有一些遗憾,例如想了解一下字库具体的制作方式,还得自己从头到尾拖进度条,这感觉不太方便,可以像B站一样加入一些章节提示,以便能够快速定位感兴趣的章节。

 

总的来说,参加Follow me是一次非常有价值的体验。我期待着看到这个活动的不断发展,以使更多的用户能够受益,同时也期待看到这个开发板在物联网和嵌入式开发领域的广泛应用。本期也是我第一次参加这个活动,当时没太理解规则,只订购了板子没买一下推荐元器件有点遗憾,如果有机会参加第三期的话我会尽量把推荐元件都买了,增加一些自己DIY的空间,做一些更有趣的东西。

最新回复

按钮按下来切换 LED 的颜色,可创建交互式的 LED 灯效或指示器,虽然常见,楼主整的挺好   详情 回复 发表于 2023-10-15 08:15
点赞 关注
 
 

回复
举报

6960

帖子

11

TA的资源

版主

沙发
 

我使用的是Mac系统,编程工具为VSCode。不错不错!

 
 
 

回复

6802

帖子

0

TA的资源

五彩晶圆(高级)

板凳
 

按钮按下来切换 LED 的颜色,可创建交互式的 LED 灯效或指示器,虽然常见,楼主整的挺好

 
 
 

回复

57

帖子

5

TA的资源

一粒金砂(高级)

4
 

补充一下,之前我的用户名是注册默认的那个,太像三无小号所以改了个名,之前的那个名字是eew_nkXjf8,当时参加follow me是用这个名字填写的 。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表