【得捷电子Follow me第2期】 任务提交
[复制链接]
视频链接:https://training.eeworld.com.cn/video/37926
一、介绍
很高兴能够参加这次活动,这次活动使用的是Adafruit ESP32-S3 TFT Feather开发板,搭载ESP32-S3,包含蓝牙,wifi,还有一块tft高清屏幕。开发工具是Vscode和Thonny。
这次活动我做了以下四个任务
- 任务1:控制屏幕显示中文
- 任务2:网络功能使用
- 任务3:控制WS2812B
- 任务4分任务1:日历&时钟
我在七月份在bilibili上通过up主“忙碌的死龙”了解到了这次的活动。
二、任务详情
1、开发环境搭建
在观看直播之后我打算使用Vscode来完成项目,但是Vscode一直无法激活插件,中间我卸载重装两次,到处查资料也没有解决问题。包括使用浏览器在线编程也无法打开。最后只能使用Thonny来完成任务。
好在这个开发板不需要烧录,只需要将执行的代码保存到CIRCUITPY盘根目录中的code.py文件中,所以使用Thonny除了无法在线更新库文件和代码补全功能以外还是非常方便的。至于代码中的错误完全可以在开发板的屏幕上面查看。
2、任务一:显示中文
由于我刚刚开始接触python,没有完整的先学习过python,以前也没有做过什么项目,所以这次活动大部分代码都是在理解的基础上面借鉴而来。
屏幕显示中文需要添加board库,board库是Python中用于控制单片机开发板的一个库,可以用来读写各种传感器、执行控制操作等。以下是board库的一些用法:
- 导入board库:
Import board
- 获取板子上的GPIO引脚
Pin = board.A1
- 初始化GPIO引脚
Import digiaalio
button = digitalio.DigitalInOut(pin)
button.direction = digitalio.Direction.INPUT
button.pull = digitalio.Pull.UP
- 读取GPIO引脚状态
Button.value
- 控制板子上的LED灯
led = digitalio.DigitalInOut(board.D13)
led.direction = digitalio.Direction.OUTPUT
led,value = True #点亮led
led.value = False #熄灭led
还需要导入adafruit_display_text库中的label, wrap_text_to_lines和adafruit_bitmap_font库中的bitmap_font和displayio库
最开始需要初始化需要显示的字符串,然后根据屏幕的旋转角度确定每行显示的字符数
然后将字符串按每行字符数拆分,并添加换行符,初始化显示屏,加载字体和设置颜色
3、任务二:连接网络
(1)、连接wifi
连接wifi需要先导入os和wifi库,读取wifi名称,通过setting.toml文件里面的wifi名称和密码自动连接。
(2)打开热点
热点和wifi的使用方法相同。
4、任务三:控制WS2812B
导入board内置库
导入time内置库
从digitalio内置库导入DigitalInOut, Direction, Pull
导入neopixel内置库
从adafruit_led_animation.animation.blink库导入Blink
从adafruit_led_animation.color库导入五种颜色定义
初始化像素灯引脚
设置像素灯数量,这样分开写方便以后修改代码,例如外接ws2812灯带或者矩阵
初始化像素灯
初始化blink动态效果
初始化btn按钮对象
设置btn引脚为输入
设置btn引脚为上拉
定义led_color变量,用于五种颜色切换
在程序保存到单片机中上电开机以后通过按下boot按键切换LE6D的颜色并且在屏幕上显示目前的颜色
- 任务四:日历&时钟
由于我不会使用python与网络相结合,所以这次代码主要是和官方的例程来完成,在单片机上电以后会先去读取到setting.toml文件里面的wifi名称和密码连接wifi之后会自动打开指定的网页读取相应的日期和天气情况。
三、心得体会
我这是第一次这么投入的学习ESP32-S3开发板,这个开发版的开发当时可以使用micropython,c语言c++,circuitpython,在这几种开发方式中最方便的当属circuitpython,不需要搭建繁琐的开发环境,这个语言只需要有一个能够编辑python的编译器即可,使用方法简单,难度低,非常适合入门。对于一些物联网开发新手来说非常友好。唯一的劣势就是部分库函数只发布于github上面,对于我来说使用起来并不是很方便,有很多库函数无法查看,只能去寻找教学视频,很难自己去翻阅库函数
源码包:https://download.eeworld.com.cn/detail/eew_9QATv7/629872
|