BearF-_-

  • 2024-03-12
  • 加入了学习《Digi-Key: Follow Me 系列(2) 直播回放》,观看 Adafruit ESP32-S3 TFT Feather开发板使用入门

  • 2023-11-28
  • 发表了主题帖: 【得捷电子 Follow me】 第2期任务提交--汇总帖(补充)

    经过一段时间总算完成了任务 一、视频演示部分 二、项目总结报告:各阶段作业 1、开发环境配置     开发环境的安装   在我拿到开发板的时候就开始上手,看乔老师的视频,开始学习circuitpython,开始第一次的esp32之旅,下面就是我的第一个总结,如何配置开发环境: 首先拿到开发板上电是这样的 第二个模式 这个模式会有一个u盘   第三个模式是circuitpython模式,需要在二模式下,把固件复制到u盘里面   第四个是vscode配置 需要配置这几个   代码编写在code.py编写,我这边改了下名字,到此就配置完全了   2、>>  控制WS2812B   首先要按键控制就需要知道按键的工作原理,按键原理就是按下时的电平变化,来判断。 我们先建立一个对象给按键,并且给他为上拉电阻,所以说为高电平,代码如下: button =  digitalio.DigitalInOut(board.BUTTON) button.switch_to_input(pull=digitalio.Pull.UP) 这个button变量就继承了按键,然后我就只需要判断他是否被按下,如果button的值为0就是被按下了。所以说按键部分就解决了 下一个就是霓虹灯了 首先我们先要对霓虹灯的电源进行配置, power = digitalio.DigitalInOut(board.NEOPIXEL_POWER) 这个代码是对霓虹灯电源对象赋值的 power.direction = digitalio.Direction.OUTPUT 这个是输出 power.value = True 使能 pixel = neopixel.NeoPixel(board.NEOPIXEL,1) 霓虹灯对象赋值,1是数量 pixel.brightness = 0.1 #亮度 灯珠的亮度 然后pixel里面有几个重要的函数 Pixel.fill((R,G,B))是设置灯珠的颜色 Pixel[0];这个是设置单棵灯珠的颜色 这里就介绍完了,下面就是这个的全部代码 import time import board import digitalio import neopixel Neoflag  = 1 #led灯的情况 led = digitalio.DigitalInOut(board.LED) led.direction = digitalio.Direction.OUTPUT   #按键 button =  digitalio.DigitalInOut(board.BUTTON) button.switch_to_input(pull=digitalio.Pull.UP)   #板载ws2812B灯珠 power = digitalio.DigitalInOut(board.NEOPIXEL_POWER) power.direction = digitalio.Direction.OUTPUT power.value = True   pixel = neopixel.NeoPixel(board.NEOPIXEL,1) pixel.brightness = 0.1 #亮度   # 普通按键 status = False while True:         if not button.value:         time.sleep(0.1)         if button.value:             print("按键已按下")             Neoflag = Neoflag + 1             if Neoflag == 1:                 pixel.fill((255,0,255))             elif Neoflag == 2:                 pixel.fill((0,255,0))             elif Neoflag == 3:                 pixel.fill((255,255,0))                 Neoflag = 0             下面是硬件运行的结果     3、>>  网络功能使用   我们先来说连接WiFi连接部分,我们需要一个操作如下 先打开vscode   点进setting   具体操作如上面注释 代码具体如下:参考的乔老师的代码 这里是引库 #------联网功能--------# import ssl,wifi,time import socketpool print("ESP32-s3 网络功能测试") print("开发板MAC地址:",[hex(i) for i in wifi.radio.mac_address]) while not wifi.radio.connected:     print("开发板正在联网....")     time.sleep(1) print("开发板已经连接到WIFI") print("开发板IP地址",wifi.radio.ipv4_address) 这就是一个完整的程序 运行结果:   手机上也能看见     二、建立热点 image-20231026180415-6.png (15.67 KB, 下载次数: 0) 下载附件  保存到相册 2023-10-26 18:04 上传 https://bbs.eeworld.com.cn//static/image/common//tip_bottom.png&quot;); background-repeat: repeat; background-size: auto; bottom: -6px; left: 113px; overflow: hidden; overflow-wrap: break-word">   前面是wifi的名字,后面是密码   4、>>  控制屏幕显示中文 很快哈,我这些任务就要完成了,这次是关于屏幕显示中文,因为这块板子自带了屏幕是st7789,我们可以直接用他的库进行调用,只需要一部就可以实现了,因为板子的固件默认已经绑定好显示设备,我们只需要引入对应的库,如下: 但是首先我们需要下载一个包操作如下   代码: import board #导入displayio库(显示屏库) import displayio from adafruit_display_text import label #导入自定义文字标签 from adafruit_bitmap_font import bitmap_font #导入自定义字体 # 给一个变量赋值,初始化屏幕 display = board.DISPLAY #创立一个图像组 group =  displayio.Group(scale=1,x=0,y=0) # 加载字体库  字体库我放在后面附件 font = bitmap_font.load_font("/font/wenquanyi_13px.pcf")   #颜色配置 color = 0x200609 color1 = 0x000000 color2 = 0x006051 #屏幕显示字体   #给标签赋值 data = label.Label(font, text="你好,世界!!", color=color) #给位置 data.x = 150 data.y = 50 #将标签添加到图像组 group.append(data) #显示当前图像组 display.show(group)   屏幕输出字体   5、 >>  分任务:日历&时钟 要想获取天气的话先要去高德申请一个api操作如下: 先注册登录高德(网站 高德开放平台 | 高德地图API (amap.com)) image-20231102190750-1.png(115.11 KB, 下载次数: 0) 下载附件 保存到相册 2023-11-2 19:07 上传     image-20231102190750-2.png(20.57 KB, 下载次数: 0) 下载附件 保存到相册 2023-11-2 19:07 上传     成功后就有个这个 image-20231102190750-3.png(12.07 KB, 下载次数: 0) 下载附件 保存到相册 2023-11-2 19:07 上传     添加key image-20231102190750-4.png(75.83 KB, 下载次数: 0) 下载附件 保存到相册 2023-11-2 19:07 上传     6、然后我们需要记录一下这个 image-20231102190750-5.png(17.19 KB, 下载次数: 0) 下载附件 保存到相册 2023-11-2 19:07 上传       待会要用到 下面就是代码部分 #----------天气获取-----------#   #Wifi 相关头文件 import os import wifi   #网络请求相关文件 import adafruit_requests import socketpool import ssl   #定义api请求地址 Weather_URL = 'https://restapi.amap.com/v3/weather/weatherInfo?city=500106&key=这里是你的key' poem_URL = "https://v1.jinrishici.com/all.json" #这个地方是我加的古诗 # 2. 创建套接字池 pool = socketpool.SocketPool(wifi.radio) requests = adafruit_requests.Session(pool, ssl.create_default_context()) response = requests.get(Weather_URL) weather = response.json()     # 关闭连接 response.close() pool = socketpool.SocketPool(wifi.radio) requests = adafruit_requests.Session(pool, ssl.create_default_context()) response_poem = requests.get(poem_URL) poem = response_poem.json() print(poem) #关闭连接 response_poem.close() poem_item  = f"{poem['origin']}  " poem_author = f" {poem['author']} " poem_content = f" {poem['content']}"   #----------这里是获取返回的json的数据格式 weather = f"{weather['lives'][0]['weather']} {weather['lives'][0]['temperature']}℃ {weather['lives'][0]['humidity']}%"   #---------显示字体---------------# # 加载字体并定义字体颜色为黑色 font = bitmap_font.load_font("/font/wenquanyi_13px.pcf")   color = 0xFFD700 # 黄色 color1 = 0x000000 # 黑色 color2 = 0xFF69B4 # 粉色 #年月日 text_year =str(time.tm_year)+"年"+str(time.tm_mon)+"月"+str(time.tm_mday)+"日" data = label.Label(font, text=text_year, color=color2) data.x = 30 data.y = 10 group.append(data) display.show(group) #星期 text_week = str(week(time.tm_wday)) data = label.Label(font, text=text_week, color=color2) data.x = 50 data.y = 30 group.append(data) display.show(group) #时间 text_time = f"{time.tm_hour}:{min(time.tm_min)}:{sec(time.tm_sec)}" data = label.Label(font, text=text_time, color=color2) data.x = 43 data.y = 50 group.append(data) display.show(group) #天气温度 text_weather = weather data = label.Label(font, text=text_weather, color=color2) data.x = 30 data.y = 70 group.append(data) display.show(group) #古诗 text_poem = str(poem_item) data = label.Label(font,text=text_poem,color = color2) print(len(text_poem)) if len(text_poem) > 2 and len(text_poem) < 10:     data.x = 43 if len(text_poem) > 10:     data.x = 10 if len(text_poem) <= 2:     data.x = 60 data.y = 85 group.append(data) display.show(group)   text_poem = str(poem_author) data = label.Label(font,text=text_poem,color = color2) data.x = 50 data.y = 100 group.append(data) display.show(group)   text_poem = str(poem_content) data = label.Label(font,text=text_poem,color = color2) data.x = 10 data.y = 115 group.append(data) display.show(group)   二、是时间的获取   ------------获取实时时间-------------# #使用adafruit_ntp.NTP函数初始化ntp服务 import adafruit_ntp,socketpool,ssl pool = socketpool.SocketPool(wifi.radio) ntp = adafruit_ntp.NTP(pool, tz_offset=8, server="ntp.aliyun.com")   time = ntp.datetime   三、运行的结果 IMG_20231102_190445.jpg(4.8 MB, 下载次数: 0) 下载附件 保存到相册 2023-11-2 19:08 上传         项目总结     首先 作为一个大二的学生非常荣幸的参加了此次比赛,非常感谢得捷电子和电子工程世界,能给我们一个开发的机会,给我们一个友好的交流环境,交流群的大佬也非常的友好,里面的帖子也非常有质量,再一次感谢电子工程世界。     作为第一次接触circuitpython来编译的小白,路上也有许多坎坎坷坷,但是还是完成了。主要是库已经搭好了,感谢各位无私奉献的开发者,谢谢你们。我从未接触的api获取,这次的项目让我真正的领悟到了如何操作,这还是得感谢群里得大佬们。     总之这次得项目收益颇丰,从最开始的延迟发货,担心能不能完成,到现在的完成任务,提交任务。让我更加体会到了这次项目的收获。   代码附件      

最近访客

< 1/1 >

统计信息

已有14人来访过

  • 芯积分:74
  • 好友:1
  • 主题:7
  • 回复:4

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言