同步操作将从 Walkline/MicroPython WS2812 Led Clock 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
基于安信可ESP-C3-12F
模组,搭配WS2812
矩阵灯珠,用于显示当前时间
硬件电路使用 立创EDA 设计,完全适合新手小白使用,PCB 板是在 深圳嘉立创 下单打样的,本着薅羊毛的原则,板子尺寸限制在了10cm * 10cm
以内,原理图文件可以在 立创开源硬件平台 查看,这里不再赘述
主控模组选用了
安信可 ESP-C3-12F
,并非常用的ESP32-WROOM-32D
软件整体工作流程大致如下:
配网模式
1分钟
后会自动重启并重复以上步骤配网信息
(写入sta_config.py
文件)并自动重启5秒
刷新一次时间3秒
检测一次环境亮度,如果环境亮度发生变化则自动调整屏幕亮度1小时
进行一次联网校时如果微信配网失败,可以尝试使用 app 进行配网,总有一个可以成功~
板子上集成了4个
功能按键和1个
复位按键,目前按键功能如下:
SW1
:长按3秒
清除配网信息
(sta_config.py
文件)并重启SW2
:屏幕闪烁(整点提醒)SW3
:循环切换屏幕显示亮度,但还会根据环境亮度自动调节,仅做调试用SW4
:屏幕显示开关EN
:手动重启设备MicroPython
不提供SmartConfig
相关功能,也就是Touch
和AirKiss
配网功能,尝试了把IDF
示例代码编译到固件中调用,目前已经可以使用以上两种方式进行配网了
Touch
方式需要使用乐鑫提供的 EspTouch for Android
项目中提供的固件已集成SmartConfig
模块,可用于获取ssid
和password
,使用方法和代码如下:
from utime import sleep
import network
import socket
import smartconfig
def inet_pton(ip_str:str):
'''将字符串 IP 地址转换为字节串'''
ip_bytes = b''
ip_segs = ip_str.split('.')
for seg in ip_segs:
ip_bytes += int(seg).to_bytes(1, 'little')
return ip_bytes
def send_ack(local_ip, local_mac):
'''向手机发送配网完成通知'''
udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
data = smartconfig.info()[2].to_bytes(1, 'little') + local_mac
port = 10000 # airkiss 端口号
if smartconfig.info()[3] == smartconfig.TYPE_ESPTOUCH:
data += inet_pton(local_ip)
port = 18266 # esptouch 端口号
for _ in range(30):
sleep(0.1)
try:
udp.sendto(data, ('255.255.255.255', port))
except OSError:
pass
station = network.WLAN(network.STA_IF)
station.active(True)
smartconfig.start()
# 手机连接 2.4G 无线网络(重要)
# 关注 安信可科技 微信公众号,点击 应用开发→微信配网,或
# 关注 乐鑫信息科技 微信公众号,点击 商铺→Airkiss 设备,或
# 安装 EspTouch app,点击 EspTouch,或
# 安装 腾讯连连 app,任意添加一个设备
# 输入 Wi-Fi密码 后点击 连接按钮
while not smartconfig.success():
sleep(0.5)
ssid, password, sc_type, token = smartconfig.info()
print(smartconfig.info())
>>> ('ssid', 'password', 'sc_type', 'token')
# 以下代码用于向手机发送配网完成通知,可选项
station.connect(ssid, password)
while not station.isconnected():
sleep(0.5)
send_ack(station.ifconfig()[0], station.config('mac'))
如果长时间获取不到信息,则需要手动重启设备并重试
前往观看 配网演示视频
由于点阵数量严重不足,经过思考决定使用如下形式显示当前时间
小时
数字十位数
个位数
因此,上图显示的时间为13点35分
,是不是又能看时间又能活动大脑,一举两得了?
无论是调试代码还是烧录固件,都推荐使用 AMPY Batch Tool,以下说明均使用
ab 工具
进行讲解
设备连接到电脑,打开终端
,输入命令,根据提示信息进行操作即可:
$ cd path/to/repo
$ ab --flash # 选择 esp32c3 开头的固件文件
如果要设置屏幕亮度或其它设置,可以进行如下操作:
# 修改 config.py 文件相关内容并保存文件
$ ab abc_config
根据提示信息选择端口号就可以上传修改后的config.py
文件,之后重启设备即可
设备连接到电脑,打开终端
,输入命令:
$ cd path/to/repo
$ ab # 上传除 main.py 以外的所有文件
$ ab --repl # 进入串口调试
# 使用快捷键 Ctrl+R 选择要调试的文件,如:main.py
# 使用快捷键 Ctrl+Z 退出串口调试
# 快捷键 Ctrl+D 为软重启,Ctrl+X 为硬重启
设备连接到电脑,打开终端
,输入命令:
$ cd path/to/repo
# 修改 abconfig 文件,去掉 main.py 前边的'井号'并保存文件
$ ab # 上传所有源文件
之后重启设备即可
前往观看 设备使用演示
没有安装最上边的透光板可以使用TEST
键切换测试效果,如果不方便使用按键测试,可以使用如下方法:
$ cd path/to/repo
$ ab --repl
# 使用快捷键 Ctrl+R 选择 test\matrix_test.py 文件
>>> test_index=1
>>> test_index=2
>>> test_index=3
>>> test_index=4
>>> test_index=5
>>> test_index=6
目前配网时没有任何提示信息,准备增加一个提示画面(或动画)
计划中还有一个模式切换功能,无非就是手电或者各种乱闪
还可以增加一个整点提醒功能
为了省事没有给每一颗 LED 搭配电容,当全部 LED 以白色最大亮度(255)点亮时,会因为供电不足导致无法继续工作,所以解决方案是降低最大亮度的上限值,目前仅使用10%
亮度,不使用遮光板的前提下亮度已经足够
SmartConfig
偶尔出现卡死的情况,不使用串口调试无法发现,不过无线连接本来就是个概率事件,也能说得过去。。。。吧
SmartConfig
在我的WIFI6
路由器下使用会出现无法发送配网完成通知的情况,无解
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。