基于ESP32实现拟态辉光灯文创产品
立项背景
辉光管是发明于1950年代中期,人们期望发明一种非点阵而是线状化地显示数字的方式。
辉光管随之诞生,辉光管属于电子管的一种, 发光原理和霓虹灯差不多。通常在一个真空管里,放置一个金属丝网制成的阳极和10个阴极,形状为数字0到9,某些还有一个或两个小数点。在管内充入惰性气体氖气和汞或氩,再通上高压后,每一个阴极可以发出红橙色光。由于混合气体的不同,光也有绿色、蓝色或者紫色。
辉光管是前苏联生产的一种电子管,曾经在大型电子计算机及后期的古董级计算器上起到显示输出的作用,随着技术的飞速发展早已退出历史舞台。
而我们本次作品则是另辟蹊径,将北京化工大学的校园文化,通过亚克力板与LED结合模拟辉光管时钟的效果**,如此一来就可以解决辉光管昂贵,高压和寿命的问题,**展现北化专属的灯光美学,用现代科技复刻上古神器的美。
项目过程
该项目主要氛围两大板块,分别是利用激光雕刻技术去设计制作实物模型和通过ESP32单片机去控制底部的16个MAX7219。
激光雕刻
设计图纸,对应实物
在项目开始的阶段,就需要在脑海中由明确的设想,究尽是多大的尺寸与可行性的探索。
我们采用的是CAD画图的方法,选取2mm厚的亚克力板,设计灯的外观与灯片。
激光雕刻亚克力板
为了节约成本,我们利用校内工训楼联系对应负责老师协助完成了切割工作。采用透明亚克力板做灯片,采用蓝色亚克力板做外观。通过组合固定得到了实物模型。
底部灯座
利用电烙铁焊接拼接,将MAX7219串联。
代码与单片机控制
MicroPython
MAX7219可以通过级联连接多个LED显示模块,从而控制多个数字或字符的显示。使用ESP32的编程环境(Thonny)编写代码。
单片机接线
项目困难
存在如下问题:
电路图设计存在问题。
灯泡均为串联连接,不好进行故障检测。
缺少系统的知识体系
对WS2812灯珠工作原理理解不透彻,盲目去接线。
电路元器件
(4mm×4mm)。焊接难度巨大。导致检测与调试困难。
项目成果
辉光灯时钟——实时获取时间数据进行展示
辉光灯计时器——精确到毫秒
北化文创——与美育产品结合
项目源码
获取系统时间点亮代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 >from machine import Pin,SPI
>import max7219,time
>import utime
>#引脚定义
>spi=SPI(1,1000000,sck=Pin(14),mosi=Pin(13),miso=Pin(19))
>MAX=max7219.Matrix8x8(spi,Pin(15),16) #CS-pin15;1代表一块8*8,如果有4块就是4;
>#主函数
>def main():
>MAX.brightness(15) #亮度0-15
>MAX.fill(0) #1全部点亮;0全部灭
>MAX.show() #更新显示
>while True:
# 获取时间
# 获取当前时间戳(以秒为单位)
current_time = utime.time()
# 将时间戳转换为时间元组
time_tuple = utime.localtime(current_time)
# 提取时间元组中的各个字段
min, sec = time_tuple[4:6]
min=int(min)
sec=int(sec)
print("当前时间:{}:{}".format(min, sec))
# 3-35-67- 99
#19-51-83-115-esp32
#针对秒针(小于10的情况:十分位补0)
#针对秒针(大于10的情况)
#针对时针(小于10的情况:十分位补0)
#针对时针(大于10的情况)
MAX.show()
time.sleep_ms(1000)
MAX.fill(0)
>if __name__=="__main__":
>main()