- 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"); 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获取,这次的项目让我真正的领悟到了如何操作,这还是得感谢群里得大佬们。
总之这次得项目收益颇丰,从最开始的延迟发货,担心能不能完成,到现在的完成任务,提交任务。让我更加体会到了这次项目的收获。
代码附件
- 2023-11-12
-
上传了资料:
Follow me 第2期任务
- 2023-11-04
-
发表了主题帖:
【得捷电子 Follow me】 第2期任务提交--汇总帖
本帖最后由 BearF-_- 于 2023-11-4 14:45 编辑
第一部分 视频演示:
https://training.eeworld.com.cn/video/38238
得捷电子 Follow me 第2期任务提交——开发环境的安装
得捷电子 Follow me 第2期任务提交——开发环境的安装 - DigiKey得捷电子技术专区 - 电子工程世界-论坛 (eeworld.com.cn)
得捷电子 Follow me 第2期任务提交——控制WS2812B
得捷电子 Follow me 第2期任务提交——控制WS2812B - DigiKey得捷电子技术专区 - 电子工程世界-论坛 (eeworld.com.cn)
得捷电子 Follow me 第2期任务提交-----网络功能使用
得捷电子 Follow me 第2期任务提交-----网络功能使用 - DigiKey得捷电子技术专区 - 电子工程世界-论坛 (eeworld.com.cn)
得捷电子 Follow me 第2期任务提交----控制屏幕显示中文
得捷电子 Follow me 第2期任务提交----控制屏幕显示中文 - DigiKey得捷电子技术专区 - 电子工程世界-论坛 (eeworld.com.cn)
最后一个部分项目总结
首先 作为一个大二的学生非常荣幸的参加了此次比赛,非常感谢得捷电子和电子工程世界,能给我们一个开发的机会,给我们一个友好的交流环境,交流群的大佬也非常的友好,里面的帖子也非常有质量,再一次感谢电子工程世界。
作为第一次接触circuitpython来编译的小白,路上也有许多坎坎坷坷,但是还是完成了。主要是库已经搭好了,感谢各位无私奉献的开发者,谢谢你们。我从未接触的api获取,这次的项目让我真正的领悟到了如何操作,这还是得感谢群里得大佬们。
总之这次得项目收益颇丰,从最开始的延迟发货,担心能不能完成,到现在的完成任务,提交任务。让我更加体会到了这次项目的收获。
代码附件
-
加入了学习《【得捷电子Follow me】第2期》,观看 【得捷电子Follow me】第2期
-
加入了学习《【得捷电子Follow me第2期】任务一次成》,观看 【得捷电子Follow me第2期】任务一次成
-
加入了学习《基于Arduino玩转pico RP2040》,观看 基于Arduino玩转pico RP2040
- 2023-11-02
-
发表了主题帖:
得捷电子 Follow me 第2期任务提交—— 分任务:日历&时钟
要想获取天气的话先要去高德申请一个api操作如下:
先注册登录高德(网站 高德开放平台 | 高德地图API (amap.com))
成功后就有个这个
添加key
6、然后我们需要记录一下这个
待会要用到
下面就是代码部分
#----------天气获取-----------#
#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
三、运行的结果
- 2023-10-31
-
加入了学习《【得捷电子Follow me第2期】DIY天气时钟 》,观看 【得捷电子Follow me第2期】DIY天气时钟
-
回复了主题帖:
得捷电子 Follow me 第2期任务提交----控制屏幕显示中文
Jacktang 发表于 2023-10-30 07:33
控制屏幕显示中文的效果还是出来了,不错
谢谢大佬夸奖
- 2023-10-29
-
发表了主题帖:
得捷电子 Follow me 第2期任务提交----控制屏幕显示中文
很快哈,我这些任务就要完成了,这次是关于屏幕显示中文,因为这块板子自带了屏幕是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)
屏幕输出字体
- 2023-10-27
-
回复了主题帖:
得捷电子 Follow me 第2期任务提交-----网络功能使用
wangerxian 发表于 2023-10-26 19:06
看来是乔老师的教程好呀,一下就成功了。
hhh,是的,没乔老师的教程,我不知道要浪费多少精力去找
- 2023-10-26
-
发表了主题帖:
得捷电子 Follow me 第2期任务提交-----网络功能使用
我们先来说连接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)
这就是一个完整的程序
运行结果:
手机上也能看见
二、建立热点
前面是wifi的名字,后面是密码
- 2023-10-25
-
发表了主题帖:
得捷电子 Follow me 第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
下面是硬件运行的结果
-
发表了主题帖:
得捷电子 Follow me 第2期任务提交——开发环境的安装
本帖最后由 BearF-_- 于 2023-10-25 15:32 编辑
作为一个学生非常荣幸有机会能够参加这个比赛,在我拿到开发板的时候就开始上手,看乔老师的视频,开始学习circuitpython,开始第一次的esp32之旅,下面就是我的第一个总结,如何配置开发环境:
首先拿到开发板上电是这样的
第二个模式
这个模式会有一个u盘
第三个模式是circuitpython模式,需要在二模式下,把固件复制到u盘里面
第四个是vscode配置
需要配置这几个
代码编写在code.py编写,我这边改了下名字,到此就配置完全了