eew_梁历

  • 2023-10-26
  • 上传了资料: 【得捷电子Follow me第2期】 任务汇总

  • 2023-10-19
  • 发表了主题帖: 【得捷电子Follow me第2期】任务汇总+修改版

    #【得捷电子Follow me第2期】任务汇总 十分荣幸能够参加这次**得捷电子Follow me第2期**的活动!我也是熬了几天把任务给干完了。 通过这次活动我是学习到了许多新事物,比如:Markdown , circuitpython , 如何写帖子等等 [TOC] ##Adafruit Feather ESP32-S3 TFT 介绍: ###硬件方面: Adafruit Feather ESP32-S3 TFT 板子上有着丰富的资源 ####特征: - ESP32-S3 双核 240MHz 天硅处理器 - 下一代 ESP32-Sx,配备原生 USB,可用作键盘/鼠标、MIDI 设备、磁盘驱动器等! - 迷你模块具有FCC / CE认证,并带有4 MB的闪存和2 MB的PSRAM - 您可以拥有巨大的数据缓冲区。 - 彩色 1.14“ IPS TFT,240x135 像素 - 采用 ST7789 芯片组的明亮多彩显示屏,可从任何角度观看。 - 电源选项 - USB C 型或锂聚合物电池 - 通过 USB-C 供电时内置电池充电。 - LiPoly 电池监控器 - LC709203芯片主动监控电池的电压和充电状态/通过 I2C 报告的百分比。 - 重置和DFU(BOOT0)按钮以进入ROM引导加载程序(这是一个USB串行端口,因此您不需要单独的电缆! - 串行调试输出引脚(可选,用于检查硬件串行调试控制台) - 用于 I2C 设备的 STEMMA QT 连接器,具有可切换电源,因此您可以进入低功耗模式。 - 开/电/用户LED + 状态 NeoPixel 具有引脚控制电源,可实现低功耗。 - 低功耗友好!在深度睡眠模式下,我们可以从Lipoly连接获得80~100uA的电流消耗。静态电流来自电源稳压器、ESP32-S2 芯片和锂聚合物显示器。关闭 NeoPixel 和外部 I2C/TFT 电源,以获得最低的静态电流消耗。 - 与Arduino或CircuitPython一起使用 ####引脚排列: ###软件方面: ####编译环境: 复制和编辑 CIRCUITPY 驱动器上的文件即可进行迭代。要创建和编辑代码,您只需要一个编辑器。有很多选择。官方文档是推荐使用 **Mu** , 与可以使用 **Thonny** 或 **vscode+circuitpython** ####编程资料: [外置库](https://learn.adafruit.com/adafruit-esp32-s3-tft-feather/circuitpython-libraries "外置库") [库文件文档](https://docs.circuitpython.org/projects/bundle/en/latest/drivers.html "库文件文档") ##任务汇总 其实我每个任务都有单独的帖子,但不能计算到提交帖内,所以在此再次赘述 也可以直接点击链接进行观看 [任务一](https://bbs.eeworld.com.cn/thread-1259275-1-1.html "任务一") [任务二](https://bbs.eeworld.com.cn/thread-1259365-1-1.html "任务二") [任务三](https://bbs.eeworld.com.cn/thread-1259422-1-1.html "任务三") [任务四](https://bbs.eeworld.com.cn/thread-1259426-1-1.html "任务四") ###任务一 【得捷电子Follow me第2期】 任务1:控制屏幕显示中文 ####刷固件 这里是第一个任务,笔者打算从刚收到板子刷固件讲起(凑点字数) 我们刚收到板子是有厂商默认的固件,上电后如下 上面有两个按键,RST和BOOT,双击RST即可进入UF2模式 电脑上会弹出如图下的U盘设备 我们这时只需要将UF2格式的固件复制到U盘里即可完成固件更新,十分方便 ! [固件链接](https://circuitpython.org/board/adafruit_feather_esp32s3_tft/ "固件链接") 字体文件的裁剪我使用的是FontForge和Fontmin 编程方式我是用 vscode+circuitpython 进行编程 code.py文件里放我们的程序 lib文件夹里放我们的外置库 对于外置库的下载我们可以在 vscode 用命令行的方式 >circuitpython show available libraries,也可以直接把外置库文件复制到U盘的llib里 ####代码 下面开始是任务正文 首先是效果展示 import 的库 ```python import board import displayio from adafruit_display_text import label from adafruit_bitmap_font import bitmap_font ``` 屏幕基础配置 ```python # 1. 屏幕基础配置 display = board.DISPLAY ``` 字体使用 ```python # 2. 使用字体 font_file = "fonts/SJxinweibeijian_test-21.bdf" font = bitmap_font.load_font(font_file) ``` 我们在U盘设备里创建Fonts文件夹用来存放字体文件 屏幕显示 ```python # 3. 屏幕显示 text = "行路难,\n行路难,\n多歧路,\n今安在?" text_group = displayio.Group(scale=1,x=0,y=0,) text_area = label.Label(font, text=text, color=0xFFFFFF, x=85, y=25) text_group.append(text_area)  # Subgroup for text scaling display.show(text_group) ``` scale可调整放大倍数 label.Label(font, text=text, color=0xFFFFFF, x=85, y=25),font为前面创建的字体对象 ; color是RGB色彩,RGB即是代表红、绿、蓝三个通道的颜色,0~255十进制转换为十六进制 完整代码 ```python import board import displayio from adafruit_display_text import label from adafruit_bitmap_font import bitmap_font # 1. 屏幕基础配置 display = board.DISPLAY # 2. 使用字体 font_file = "fonts/SJxinweibeijian_test-21.bdf" font = bitmap_font.load_font(font_file) # 3. 屏幕显示 text = "行路难,\n行路难,\n多歧路,\n今安在?" text_group = displayio.Group(scale=1,x=0,y=0,) text_area = label.Label(font, text=text, color=0xFFFFFF, x=85, y=25) text_group.append(text_area)  # Subgroup for text scaling display.show(text_group) while True:     pass ``` ###任务二 【得捷电子Follow me第2期】任务2:连接WIFI和创建热点 此任务相对简单,连接WIFI和创建热点都只需要使用一句函数即可完成 话不多说,我们直接 上代码!:Onion-37: ####WiFi连接 效果图 import 的库 ```python import board import displayio import terminalio import wifi from adafruit_display_text import label from adafruit_bitmap_font import bitmap_font ``` WiFi连接 ```python # 3. WiFi连接 wifi.radio.connect(SSID, PASSWORD) ``` 屏幕显示 ```python # 4. 屏幕显示 text="WiFi:"+SSID+"\n"+"IP:"+str(wifi.radio.ipv4_address) text_group = displayio.Group(scale=2,x=0,y=0,) text_area = label.Label(terminalio.FONT, text=text, color=0xFFFFFF, x=10, y=25) text_group.append(text_area)  # Subgroup for text scaling display.show(text_group) ``` str() 函数可以将对象转化字符串 完整代码 ```python import board import displayio import terminalio import wifi from adafruit_display_text import label from adafruit_bitmap_font import bitmap_font # 1. 屏幕基础配置 display = board.DISPLAY # 2. 设置wifi和密码 SSID = "ESP32-S3" PASSWORD = "12345678" # 3. WiFi连接 wifi.radio.start_ap(SSID, PASSWORD) # 4. 屏幕显示 text="WiFi:"+SSID+"\n"+"PASSWORD:"+PASSWORD text_group = displayio.Group(scale=2,x=0,y=0,) text_area = label.Label(terminalio.FONT, text=text, color=0xFFFFFF, x=10, y=25) text_group.append(text_area)  # Subgroup for text scaling display.show(text_group) while True:     pass ``` ####创建热点 效果图 基于上文的代码,我们只需效果部分即可 设置wifi和密码 ```python # 2. 设置wifi和密码 SSID = "ESP32-S3" PASSWORD = "12345678" ``` 这里填要创建的WiFi和WiFi密码,密码是8~64位的 创建热点 ```python # 3. WiFi连接 wifi.radio.start_ap(SSID, PASSWORD) ``` 相比于前面,只需要将connect替换成start_ap即可 完整代码 ```python import board import displayio import terminalio import wifi from adafruit_display_text import label from adafruit_bitmap_font import bitmap_font # 1. 屏幕基础配置 display = board.DISPLAY # 2. 设置wifi和密码 SSID = "ESP32-S3" PASSWORD = "12345678" # 3. WiFi连接 wifi.radio.start_ap(SSID, PASSWORD) # 4. 屏幕显示 text="WiFi:"+SSID+"\n"+"PASSWORD:"+PASSWORD text_group = displayio.Group(scale=2,x=0,y=0,) text_area = label.Label(terminalio.FONT, text=text, color=0xFFFFFF, x=10, y=25) text_group.append(text_area)  # Subgroup for text scaling display.show(text_group) while True:     pass ``` ###任务三 【得捷电子Follow me第2期】任务3:控制WS2812B 本文会涉及通用的编程思维,十分推荐一个学习网站——菜鸟教程 import 的库 ```python import board import neopixel import digitalio import time ``` neopixel是一个外置库,是用来控制WS2812B 按键基础配置 ```python # 按键基础配置 button = digitalio.DigitalInOut(board.BUTTON) button.switch_to_input(pull=digitalio.Pull.UP) ``` 板子上的按键是按下为低电平,所以要加上上拉电阻 WS2812B基础配置 ```python # 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 ``` 首先,我们需要将WS2812B引脚置为高电平 neopixel.NeoPixel(board.NEOPIXEL, 1)  board.NEOPIXEL为WS2812B的控制引脚,后者为WS2812B的数量 颜色控制函数 ```python def WS2812B(color):     pixel.fill(((color&0x0000FF),(color&0x00FF00)>>8,(color&0xFF0000)>>16)) ``` 这里我定义了一个函数 pixel.fill()函数可以控制颜色,传递的参数为元组(不了解的可以去菜鸟教程);元组的元素有三个,分别为:R,G,B 那么我们这函数用途就很明显了,是想用一个十六进制数来控制WS2812B的颜色 主循环 ```python color=0x0000FF flag=False while True:     if  button.value==False:         if flag==False:             flag=True             WS2812B(color=color)             if color==0xFF0000:                 color=0X0000FF             else :                 color8,(color&0xFF0000)>>16)) color=0x0000FF flag=False while True:     if  button.value==False:         if flag==False:             flag=True             WS2812B(color=color)             if color==0xFF0000:                 color=0X0000FF             else :                 color

  • 2023-10-15
  • 发表了主题帖: 【得捷电子Follow me第2期】任务汇总

    【得捷电子Follow me第2期】任务汇总 本文为任务汇总,详情可点击下方链接   任务一:https://bbs.eeworld.com.cn/thread-1259275-1-1.html 任务二:https://bbs.eeworld.com.cn/thread-1259365-1-1.html 任务三:https://bbs.eeworld.com.cn/thread-1259422-1-1.html 任务四:https://bbs.eeworld.com.cn/thread-1259426-1-1.html   资源下载:https://download.eeworld.com.cn/detail/eew_DG590F/629572   视频任务:https://training.eeworld.com.cn/course/68143

  • 上传了资料: 【得捷电子Follow me第2期】 任务汇总

  • 发表了主题帖: 【得捷电子Follow me第2期】任务4.1:日历&时钟

    【得捷电子Follow me第2期】任务4.1:日历&时钟 本文的代码 “参考” 了许多帖子的代码,望海涵   完整代码 import board import digitalio import time import wifi import os import ssl import socketpool import adafruit_requests import displayio from adafruit_display_text import label from adafruit_bitmap_font import bitmap_font # 屏幕基础配置 display = board.DISPLAY # 使用字体 font_file = "fonts/SJxinweibeijian-Regular-21.bdf" font = bitmap_font.load_font(font_file) # WiFi连接 wifi.radio.connect(os.getenv("WIFI_SSID"), os.getenv("WIFI_PASSWORD")) # JSON获取 JSON_URL = "http://t.weather.itboy.net/api/weather/city/"+os.getenv("city") pool = socketpool.SocketPool(wifi.radio) requests = adafruit_requests.Session(pool, ssl.create_default_context()) response = requests.get(JSON_URL) # JSON分析 weather = response.json() cityInfo = weather['cityInfo'] city_weather = weather['data'] forecast = city_weather['forecast'] dis_str = ""+cityInfo['parent']+' '+cityInfo['city'] +' '+weather['time'][:11] + forecast[0]['week'] dis_str += '\n 空气质量:'+city_weather['quality'] +" " +forecast[0]['type'] dis_str += "\n 最"+forecast[0]['high']+' 最'+forecast[0]['low'] dis_str += "\n 湿度: "+city_weather['shidu'] # 屏幕显示 text_group = displayio.Group(scale=1,x=0,y=0,) text_area = label.Label(font, text=dis_str, color=0xFFFFFF, x=10, y=25) text_group.append(text_area) # Subgroup for text scaling display.show(text_group) while True: pass    

  • 2023-10-14
  • 发表了主题帖: 【得捷电子Follow me第2期】任务3:控制WS2812B

    【得捷电子Follow me第2期】任务3:控制WS2812B 本文会涉及通用的编程思维,十分推荐一个学习网站——菜鸟教程   import 的库如下 import board import neopixel import digitalio import time neopixel是一个外置库,是用来控制WS2812B   按键基础配置 # 按键基础配置 button = digitalio.DigitalInOut(board.BUTTON) button.switch_to_input(pull=digitalio.Pull.UP) 板子上的按键是按下为低电平,所以要加上上拉电阻   WS2812B基础配置 # 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 首先,我们需要将WS2812B引脚置为高电平 neopixel.NeoPixel(board.NEOPIXEL, 1)  board.NEOPIXEL为WS2812B的控制引脚,后者为WS2812B的数量   颜色控制函数 def WS2812B(color): pixel.fill(((color&0x0000FF),(color&0x00FF00)>>8,(color&0xFF0000)>>16)) 这里我定义了一个函数 pixel.fill()函数可以控制颜色,传递的参数为元组(不了解的可以去菜鸟教程);元组的元素有三个,分别为:R,G,B 那么我们这函数用途就很明显了,是想用一个十六进制数来控制WS2812B的颜色   主循环 color=0x0000FF flag=False while True: if button.value==False: if flag==False: flag=True WS2812B(color=color) if color==0xFF0000: color=0X0000FF else : color<<=8 elif button.value==True: flag=False 这里定义了一个color,flag来存储我们的WS2812B颜色数据和按键标志位 按键按下,color左移8位,color在0x0000FF,0x00FF00,0xFF0000之间循环 flag的用途为按键标志位,可以使我们按键按下时程序只执行一次   完整代码 import board import neopixel import digitalio import time # 按键基础配置 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 # WS2812B设置 pixel = neopixel.NeoPixel(board.NEOPIXEL, 1) # 亮度 pixel.brightness = 0.5 def WS2812B(color): pixel.fill(((color&0x0000FF),(color&0x00FF00)>>8,(color&0xFF0000)>>16)) color=0x0000FF flag=False while True: if button.value==False: if flag==False: flag=True WS2812B(color=color) if color==0xFF0000: color=0X0000FF else : color<<=8 elif button.value==True: flag=False  

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

  • 发表了主题帖: 【得捷电子Follow me第2期】任务2:连接WIFI和创建热点

    本帖最后由 eew_梁历 于 2023-10-15 03:08 编辑 【得捷电子Follow me第2期】任务2:连接WIFI和创建热点 此任务相对简单,连接WIFI和创建热点都只需要使用一句函数即可完成 话不多说,我们直接 上代码!   WiFi连接:   效果图   import 的库如下 import board import displayio import terminalio import wifi from adafruit_display_text import label from adafruit_bitmap_font import bitmap_font 连接WIFI和创建热点使用的是wifi的函数   屏幕基础配置 # 1. 屏幕基础配置 display = board.DISPLAY   设置wifi和密码 # 2. 设置wifi和密码 SSID = "Redmi K40" PASSWORD = "15813991772" 这里填自己的WiFi名和密码   WiFi连接 # 3. WiFi连接 wifi.radio.connect(SSID, PASSWORD)   屏幕显示 # 4. 屏幕显示 text="WiFi:"+SSID+"\n"+"IP:"+str(wifi.radio.ipv4_address) text_group = displayio.Group(scale=2,x=0,y=0,) text_area = label.Label(terminalio.FONT, text=text, color=0xFFFFFF, x=10, y=25) text_group.append(text_area) # Subgroup for text scaling display.show(text_group) str() 函数可以将对象转化字符串   完整代码 import board import displayio import terminalio import wifi from adafruit_display_text import label from adafruit_bitmap_font import bitmap_font # 1. 屏幕基础配置 display = board.DISPLAY # 2. 设置wifi和密码 SSID = "Redmi K40" PASSWORD = "15813991772" # 3. WiFi连接 wifi.radio.connect(SSID, PASSWORD) # 4. 屏幕显示 text="WiFi:"+SSID+"\n"+"IP:"+str(wifi.radio.ipv4_address) text_group = displayio.Group(scale=2,x=0,y=0,) text_area = label.Label(terminalio.FONT, text=text, color=0xFFFFFF, x=10, y=25) text_group.append(text_area) # Subgroup for text scaling display.show(text_group) while True: pass   创建热点:   效果图   基于上文的代码,我们只需效果部分即可   设置wifi和密码 # 2. 设置wifi和密码 SSID = "ESP32-S3" PASSWORD = "12345678" 这里填要创建的WiFi和WiFi密码,密码是8~64位的   创建热点 # 3. WiFi连接 wifi.radio.start_ap(SSID, PASSWORD) 相比于前面,只需要将connect替换成start_ap即可   屏幕显示 # 4. 屏幕显示 text="WiFi:"+SSID+"\n"+"PASSWORD:"+PASSWORD text_group = displayio.Group(scale=2,x=0,y=0,) text_area = label.Label(terminalio.FONT, text=text, color=0xFFFFFF, x=10, y=25) text_group.append(text_area) # Subgroup for text scaling display.show(text_group)   完整代码 import board import displayio import terminalio import wifi from adafruit_display_text import label from adafruit_bitmap_font import bitmap_font # 1. 屏幕基础配置 display = board.DISPLAY # 2. 设置wifi和密码 SSID = "ESP32-S3" PASSWORD = "12345678" # 3. WiFi连接 wifi.radio.start_ap(SSID, PASSWORD) # 4. 屏幕显示 text="WiFi:"+SSID+"\n"+"PASSWORD:"+PASSWORD text_group = displayio.Group(scale=2,x=0,y=0,) text_area = label.Label(terminalio.FONT, text=text, color=0xFFFFFF, x=10, y=25) text_group.append(text_area) # Subgroup for text scaling display.show(text_group) while True: pass  

  • 2023-10-13
  • 上传了资料: 【得捷电子Follow me第2期】 任务1:控制屏幕显示中文

  • 发表了主题帖: 【得捷电子Follow me第2期】 任务1:控制屏幕显示中文

    本帖最后由 eew_DG590F 于 2023-10-13 19:56 编辑 【得捷电子Follow me第2期】 任务1:控制屏幕显示中文     这里是第一个任务,笔者打算从刚收到板子刷固件讲起(凑点字数)     我们刚收到板子是有厂商默认的固件,上电后如下                 上面有两个按键,RST和BOOT,双击RST即可进入UF2模式              电脑上会弹出如图下的U盘设备              我们这时只需要将UF2格式的固件复制到U盘里即可完成固件更新,十分方便 !     固件链接:https://circuitpython.org/board/adafruit_feather_esp32s3_tft/          字体文件的裁剪我使用的是FontForge和Fontmin,这里不多赘述       编程方式我是用 vscode+circuitpython 进行编程     code.py文件里放我们的程序     lib文件夹里放我们的外置库     对于外置库的下载我们可以在 vscode 用命令行的方式 >circuitpython show available libraries,也可以直接把外置库文件复制到U盘的llib里          下面开始是任务正文     首先是效果展示           import 的库如下 import board import displayio from adafruit_display_text import label from adafruit_bitmap_font import bitmap_font adafruit_display_text是用于文本显示,adafruit_bitmap_font是用于字体选择 要记得将外置库下载到lib里   屏幕基础配置如下 # 1. 屏幕基础配置 display = board.DISPLAY   字体使用 # 2. 使用字体 font_file = "fonts/SJxinweibeijian_test-21.bdf" font = bitmap_font.load_font(font_file) 我们在U盘设备里创建Fonts文件夹用来存放字体文件   屏幕显示 # 3. 屏幕显示 text = "行路难,\n行路难,\n多歧路,\n今安在?" text_group = displayio.Group(scale=1,x=0,y=0,) text_area = label.Label(font, text=text, color=0xFFFFFF, x=85, y=25) text_group.append(text_area) # Subgroup for text scaling display.show(text_group) scale可调整放大倍数 label.Label(font, text=text, color=0xFFFFFF, x=85, y=25),font为前面创建的字体对象 ; color是RGB色彩,RGB即是代表红、绿、蓝三个通道的颜色,0~255十进制转换为十六进制   最后是完整代码 import board import displayio from adafruit_display_text import label from adafruit_bitmap_font import bitmap_font # 1. 屏幕基础配置 display = board.DISPLAY # 2. 使用字体 font_file = "fonts/SJxinweibeijian_test-21.bdf" font = bitmap_font.load_font(font_file) # 3. 屏幕显示 text = "行路难,\n行路难,\n多歧路,\n今安在?" text_group = displayio.Group(scale=1,x=0,y=0,) text_area = label.Label(font, text=text, color=0xFFFFFF, x=85, y=25) text_group.append(text_area) # Subgroup for text scaling display.show(text_group) while True: pass  

最近访客

< 1/1 >

统计信息

已有9人来访过

  • 芯积分:52
  • 好友:--
  • 主题:6
  • 回复:0

留言

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


现在还没有留言