474|1

2

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

【得捷电子Follow me第2期】项目 [复制链接]

 

视频链接:https://training.eeworld.com.cn/video/38439

作为一名电子爱好者很开心能参加本次FOLLOW ME 第二期活动,同时也是通过B站UP主忙碌的死龙才得以知晓该活动,能学习一下CircuitPython以及没有使用过的ESP32。

促使我参与此次活动的另一原因是当时对HASS系统智能家居的兴趣,希望能从本次活动中学习一些基础。

 

本项目将包括以下内容:

任务一、完成屏幕的控制,并且能显示中文(屏幕控制,搭配Adafruit ESP32-S3 TFT Feather)

任务二、网络功能使用(   创建热点和连接wifi)

任务三、控制WS2812B(使  板载BOOT控制LED灯的三种变化)

任务四、完成通过互联网更新 的万年历时钟,并显示当地的天气信息(以免费 的URL地址获取信息) 

  

 一、准  备工  

    简单了解一下ESP32 S-3 feather_TFT开发板的信息,通过EEWORLD大学堂的直播课程讲解人乔楚初步了解了一些硬件信息,通过官方板载链接(https://learn.adafruit.com/adafruit-esp32-s3-tft-feather/pinouts)和引脚信息(https://learn.adafruit.com/assets/114106)了解到Adafruit ESP32-S3 TFT Feather开发板拥有4MB falsh以及2M的内存,还有便捷拉满的USB-C扣(烧录,供电,充电集成了),很方便普通玩家自己调试操作。

 

本来希望通过自己的电脑VSCODE方案来进行任务的开发,由于本身电脑环境问题和一些未知的情况,转而使用了网页的在线开发工具https://code.circuitpython.org/(使用下来感觉确实方便不少,调试信息反馈够用)。

首先还是按照官方的步骤来烧录固件双击rst按钮进入U盘烧入模式,具体参考链接(https://circuitpython.org/board/adafruit_feather_esp32s3_tft/

烧录好固件后,显示按照直播内容收悉了工程的结构以及必要的库函数(https://circuitpython.org/libraries)官方库。

 

二、任务部分

1.完成屏幕的控制,并且能显示中文

根据直播内容知晓,显示中文, 需要把TFF字库转换为PBF或者PCF,可以前往(https://fontforge.org/)下载FONTFORGE

 

我这里是自己从网络找的字体,大家可以用直播学习资料里的,占用空间大的可以删除不需要的,再转换城PCF就可以了

建议使用官方资料文件给予的PCF字库,自己找字库和下载过于麻烦,还有美观性也是一大问题。

import board       
import displayio    #内置displayio库   
from adafruit_bitmap_font import bitmap_font    #导入label
from adafruit_display_text import label         #导入label


#创建内容-显示
#屏幕初始化
display = board.DISPLAY     
#group =  displayio.Group(scale=1,x=0,y=0)
#显示组
text_group = displayio.Group()      
font = bitmap_font.load_font("/fonts/jiangxizhuokai-Regular-20.pcf")        #字库文件位置

text = "熬夜真秃头"       #显示内容

#set the of type and color__output
text_area = label.Label(font, text=text, color=0xfffccc,x=0,y=30,line_spacing=0.5,scale=2)
text_group.append(text_area)
display.show(text_group)

while True: 
    pass
 

2.网络功能使用(创建热点和连接wifi)

 

   

该任务wifi的链接通过工程里的settings.toml直接添加自己的wifi  SSID和PASSWORD即可进入局域网。

 

如需要进行输出,根据任务一添加几行代码即可

# connect wifi
wifi.radio.connect(os.getenv("CIRCUITPY_WIFI_SSID"), os.getenv("CIRCUITPY_WIFI_PASSWORD"))
print(f"Connected to {os.getenv('CIRCUITPY_WIFI_SSID')}")
print(f"My IP address: {wifi.radio.ipv4_address}")

接下来的热点创建和连接也是很简单

#wifi.radio.start_ap(ssid='你的ID', password='你的密码')
 
 
 
 

 

 
3.任务控制WS2812B(使 用 板载BOOT控制LED灯的三种变化)
因为当时的周围没有可用按钮,直接使用了板载的BOOT按键来操作
也就是使用自带的BOOT初始化它的一些pin等(低电平,需要拉高),通过数组赋予颜色,做一个3次判断按键的死循环即可。
import time
import board
import digitalio
import neopixel
import random

pixel = neopixel.NeoPixel(board.NEOPIXEL, 1)

# 初始化
button = digitalio.DigitalInOut(board.BOOT0)# 按钮对象
button.direction = digitalio.Direction.INPUT# 设置按钮引脚为输入
button.pull = digitalio.Pull.UP# 设置按钮引脚为上拉


# R G B数组颜色定义
color_RGB = [
            (255, 0, 0), 
            (0, 255, 0), 
            (0, 0, 255)
            ]
t = 0

while True:
    if not button.value:
        # 切换颜色
        if t == len(color_RGB) - 1:
            t = 0
        else:
            t = t+1
        # pixel.fill(random.choice(colorArr)) # 从colorArr中随机选择一个颜色
        pixel.fill(color_RGB[t])
        time.sleep(0.5)
    else:
        # 按键未按下时
        pass

通过按BOOT来循环LED的RGB依次亮。

 

4.完成通过互联网更新的万年历时钟,并显示当地的天气信息(以免费的URL地址获取信息)
因为周边环境不允许,当时选择的是日历&时钟时钟任务,很方便的使用搭载的Adafruit ESP32-S3 TFT Feather屏幕。
 

这里当时希望通过高德地图的API来获取,时间不够麻烦了,借鉴了群里的兄弟参考,使用免费的连接获取天气信息(https://www.sojson.com/api/weather.html)天气代码需要自选查阅本地的code

解析获取到信息,自行加上各种天气抢矿,譬如AQI,海拔,或者天气软件提供的小TIPS,最后输出。

由于自己选择的题库不太好看,影响到实际观感。可进一步细化结构组成,添加背景图片,做成好看一些的画面。

 
这是本地获取的数据信息

 

 

三、 活动体验(意见与建议)

        首先,作为一名电子爱好者很开心能参加本次得捷FOLLOW ME 第二期活动,同时也是通过B站UP主忙碌的死龙才得以知晓该活动,能学习一下CircuitPython以及没有使用过的ESP32。也感谢EEWORLD给予的课程资源和活动资源。

        CircuitPython的使用情况感受就是,仅仅使用库即可,简便行大大强于STM32的开发程度。  

        此次活动使用该开发板遇到的问题是,任务3,4的情况下明显感觉发热量的提高。

四、资源下载
代码等待审核
 
 
 
 
 
 

最新回复

自己选择的题库不太好看,影响到实际观感,还有这种想法   详情 回复 发表于 2023-11-18 09:45
点赞 关注
 
 

回复
举报

6815

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

自己选择的题库不太好看,影响到实际观感,还有这种想法

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表