466|3

9

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

得捷电子 Follow me 第二期汇总贴 [复制链接]

 

任务汇报视频

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

 

写在最前,本人是大一的一名学生,在刷B站时看到了龙哥的视频,对此颇有兴趣,等板子等了2个月,在10月初,板子终于到了,后来断断续续也把必做任务都完成了,选做任务由于学业太过繁忙,没有做。也感谢EEworld社区和得捷电子给我的这个机会。板子确实非常漂亮,非常精致。

任务1:控制屏幕显示中文(必做任务)
完成屏幕的控制,并且能显示中文
搭配器件:Adafruit ESP32-S3 TFT Feather

任务一前期准备工作:

  1. 乐鑫烧录工具
  2. 厂家的固件Adafruit_Feather_ESP32S3_TFT_FactoryTest.bi
  3.  circuitpython固件
  4. IDE(我用的是Thonny)
  5.  字体文件

 

下面是具体步骤:

  1. 将板子连接到电脑。初次连接板子上会显示原厂自带的界面,上面有电池电压,功率等信息
  2.  接下去连按两下ret按键,进入DFU状态
  1. 然后电脑上会弹出名称为FTHRS3BOOT的U盘
  2. 将提前下载好的circuitpython固件拖入该U盘,只要文件拷贝好就是烧录成功了,不需要其他的软件或者其他操作,较我玩过的其他板子都更加方便。
  3. 因为我们需要显示中文,所以我们需要调用两个库文件,分别是adafruit_display_text, adafruit_bitmap_font,将它们拖动到FTHRS3BOOT下的lib文件夹
  4. 接下去在FTHRS3BOOT中新建一个文件夹,命名为fonts,将下载好的字体文件拖入,注意大小,不能用占用空间太大的字体。
  5. 接下去就是编写程序了,程序非常简单,考验人的就是要慢慢调整了,调整字体,位置,颜色等等,以达到最佳效果。
    import board
    from adafruit_display_text import bitmap_label        //导入库文件
    import terminalio
    from adafruit_bitmap_font import bitmap_font
    
    font = bitmap_font.load_font("fonts\wenquanyi_10pt.pcf")//定义字体
    color = 0x11ff11//定义颜色
    
    text2 = "浙江工商大学"//文本内容
    scale = 2//定义字体大小
    
    text_area2 = bitmap_label.Label(font,text=text2,scale=scale)
    text_area2.x = 10//控制文本的位置
    text_area2.y = 30
    board.DISPLAY.show(text_area2)
    
    while True:
     pass
    

    下附各用到的文件

adafruit-circuitpython-adafruit_feather_esp32s3_tft-en_US-8.2.3.uf2 (2.68 MB, 下载次数: 0) Adafruit_Feather_ESP32S3_TFT_FactoryTest.uf2 (638.5 KB, 下载次数: 0) wenquanyi_10pt.pcf (2.18 MB, 下载次数: 0) thonny-4.1.1.exe (20.85 MB, 下载次数: 0) flash_download_tool_3.9.5_0.zip (19.62 MB, 下载次数: 0)

 

任务2:网络功能使用

因为校园网是需要学校账号认证,不是简单的ssid和密码就能连上的,所以这期是在家里完成的。

任务2:网络功能使用(必做任务)
完成网络功能的使用,能够创建热点和连接到WiFi
搭配器件:Adafruit ESP32-S3 TFT Feather

 

在任务一的基础上,我们就没有需要前期准备的了,只要敲代码即可

以下为具体步骤:

一:创建热点

我们只需要导人os和wifi这两个库,再写下wifi.radio.start_ap的语句即可

直接上代码

import os
import wifi

 
wifi.radio.start_ap('ESP', '00000000')

对,非常之简洁,这样子热点就启动完毕了,其中最后一行代码的括号内前面部分是热点名称,后面部分是热点密码,大家可以自行修改

二:连接WiFi

由于这个也是一行代码就可以弄完,我决定将任务二与任务一结合起来,使得当板子连接好WiFi时能够显示一些文字

也是导人以上的库

下面是代码

import board                                         //第一个任务所需要的库
import terminalio
from adafruit_display_text import bitmap_label
from adafruit_bitmap_font import bitmap_font

import os                                            //第二个任务所需要的库
import wifi


font = bitmap_font.load_font("wenquanyi_10pt.pcf")

color = 0x00ff00

wifi.radio.connect('WiFi名称', 'WiFi密码')             //你家的Wi-Fi名称和密码,可别真写这个进去

txt= "Wi-Fi已成功连接\n 重生之\n 我变成了ESP32 "

scale = 2                                             //下面的都是用来控制字体显示的具体数值

text_area = bitmap_label.Label(font,text=txt,scale=scale)
text_area.x = 8
text_area.y = 10


while True:
 pass

可以看到已经成功连接了

任务3:控制WS2812B

这个任务是在是10月23日晚自习时完成的

【得捷电子Follow me第2期】任务3:控制WS2812B

该任务主要是要用按键来控制板子上的灯珠变化,其实灯珠只有那一个,按键有两个,但其中一个是rst,所以到最后也就是一个按键控制一个灯珠

一个灯也可以玩出许多效果,例如通过延时函数来控制闪烁,用代码控制颜色等等。

在该任务中,我导入了官方的neopixel库和adafruit_led_animation库,主要用来控制灯的亮灭和亮的时间长短

在我以为万事大吉时,程序没有跑通,查阅了大佬的资料后,才发现我没有读取按键和控制io口

大意了

所以我们还要取调用库digitalio和库board

以下就是具体的代码,我把我的理解都写在注释了,希望大家斧正。

import board                                      //检测按键的库
import digitalio
import time                                       //控灯的库
import neopixel
from adafruit_display_text import label           //任务一的文字显示库(老常客了)
from adafruit_bitmap_font import bitmap_font


pixel = neopixel.NeoPixel(board.NEOPIXEL, 1)
pixel.brightness = 0.8                            //控制亮度

button = digitalio.DigitalInOut(board.BUTTON)     //初始化按键对象
button.direction = digitalio.Direction.INPUT      //设置按键为输入
button.pull = digitalio.Pull.UP                   //将按键设置为上拉
but_in=3

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

display = board.DISPLAY
font_file = "fonts/wenquanyi_10pt.pcf"             //加载任务一所用字体

font = bitmap_font.load_font(font_file)



      
def button():                                      //定义了一个按键函数
    global but_in
    if(not button.value):                          //按键没按下执行的操作
        but_in=but_in+1
    if (but_in>3):                                 //按键没按下执行的操作
        but_in=0
    
def dispinfo(str):                                 //又定义了一个灯光函数
    if(str=="RED"):
        color = 0xFF0000
        text_area = label.Label(font, text="红色", color=color)
        text_area.x = 80
        text_area.y = 60
        scale = 2
        display.show(text_area)
        pixel.fill(color)
        
    elif(str=="GREEN"):
        color = 0x00FF00
        text_area = label.Label(font, text="绿色", color=color)
        text_area.x = 80
        text_area.y = 60
        scale = 2
        pixel.fill(color)
   
    elif(str=="BLUE"):
        color = 0x0000FF
        text_area = label.Label(font, text="蓝色", color=color)
        text_area.x = 80
        text_area.y = 60
        scale = 2
        pixel.fill(color)
    else :
        color = 0xFFFFFF
        text_area = label.Label(font, text="按下按键以开始", color=color)
        text_area.x = 80
        text_area.y = 60
        scale = 2
        pixel.fill(color)
                                                    //分别输出红绿蓝
        display.show(text_area)
  

while True:                                         //最终输出的执行语句
    colbutton()
    if(but_in==0):
        dispinfo("RED")
    elif(but_in==1):
        dispinfo("BLUE")
    elif(but_in==2):
        dispinfo("GREEN")
    else:
        dispinfo("START")
 
   time.sleep(0.5)                                 //延时
   

 

任务4:分任务1:日历&时钟 

一周之后,这个任务四的分任务一确实较前几个比较难,最近几个晚自习一直在学习相关方面的知识。

发现实现天气的api调用还是比较麻烦的,看了大佬的示例,了解了可以用高德,心知天气的api,不过这些都要注册获取key,比较麻烦

我们可以用这个网站提供的免费api接口

https://www.sojson.com/api/weather.html

这其中又要我们来获取我们所在城市的城市代码

在这里给大家提供对应表

链接已隐藏,如需查看请登录或者注册
  提取码: 

  • u8sk

 

我们get到返回到返回的json字符串后,还要进一步进行解析,前面加上各种名称,如空气质量等等,内容才能被正常阅读

这是下面的具体代码

再多说一句,随着任务的递进,我们所要导入的库文件也越来越多,然而板子的内存实在是有限,2mb,之前的字体文件太大了,导致连库都拖不进去

只好重新换了一个字体,看来还是要自己搞字体啊,用大佬们做好的内存不容易控制住,顾此失彼了。

总的来说,这是得捷电子Follow me第二期汇总贴的内容,包括四个任务:控制屏幕显示中文、网络功能使用、控制WS2812B和日历&时钟。在每个任务中,我都详细介绍了前期准备工作和具体步骤。其中,任务一需要调用两个库文件来控制屏幕显示中文,任务二需要创建热点和连接到WiFi,任务三需要控制WS2812B的灯珠变化,任务四需要获取城市代码以实现天气API调用。

作为电子信息专业的学生,这种活动既是一种激励,又是一种奖励,毕竟在课堂上可学不到什么东西,还是得自己学,自己动手实操,自己感悟。以下是我各个分任务的链接,再次感谢EEworld和得捷电子举办的本次活动。

任务一:https://bbs.eeworld.com.cn/thread-1260113-1-1.html

任务二;https://bbs.eeworld.com.cn/thread-1260316-1-1.html

任务三:https://bbs.eeworld.com.cn/thread-1260503-1-1.html

任务四:https://bbs.eeworld.com.cn/thread-1261095-1-1.html

 

任务二补录视频 https://training.eeworld.com.cn/video/38558

任务四补录视频 https://training.eeworld.com.cn/video/38559

 

代码咋还在审核捏😂

审核通过了贴评论区 

代码包: https://download.eeworld.com.cn/detail/Ykern/629871

 

点赞 关注
 
 

回复
举报

9

帖子

1

TA的资源

一粒金砂(中级)

沙发
 

https://download.eeworld.com.cn/detail/Ykern/629871

点评

这个是代码的链接  详情 回复 发表于 2023-11-25 23:16
 
 
 

回复

9

帖子

1

TA的资源

一粒金砂(中级)

板凳
 

这是回家后任务二的补录视频https://training.eeworld.com.cn/video/38558

这是回家后任务四的补录视频https://training.eeworld.com.cn/video/38559

 
 
 

回复

9

帖子

1

TA的资源

一粒金砂(中级)

4
 
Ykern 发表于 2023-11-15 15:13 https://download.eeworld.com.cn/detail/Ykern/629871

这个是代码的链接

 
 
 

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

随便看看
查找数据手册?

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