构建一个日期计数器
扫描二维码
随时随地手机看文章
一个10x10的LED矩阵显示当月的当前日期,随着日期的进展,颜色从红色过渡到绿色。
大家好,欢迎回来,这里有一些令人兴奋的东西。
Date Counter是一个基于Raspberry Pi Pico w的矩阵板,它使用来自NTP客户端的数据在RGB矩阵上显示当前日期。
此日期计数器类似于时钟,显示当月的当前日期。这是一款有趣又引人注目的记录日期的设备,它的颜色会随着日子的流逝而从红色变成绿色。它不像时钟那样精确,有小时、分钟和秒,但它确实提供了一个清晰的每日指示,告诉你这个月的位置。
我们这个项目的目标是开发一个基本的桌面日期时钟,告诉我们今天是几号;它从红色开始,随着时间的推移变成绿色,标志着这个月的结束。
这个项目基本上是未来的Matrix Clock项目的第一个版本,我将展示它,这意味着本文涵盖了这个项目的整个构建过程,所以让我们从构建开始。
材料要求
这些是这个项目需要的材料。
•定制PCB (HQ NextPCB提供)
•树莓派PICO W
•WS2812B发光二极管
•100uF Capacitors
•焊锡膏
•回流电炉
矩阵的设计
在这个项目中,我们利用了我们以前的矩阵项目之一,这是一个带有专用微控制器板(树莓派PICO)的矩阵,可以用于未来基于RGB矩阵的项目,包括我们的日期计数器。
本项目电路的两个主要组成部分是LED矩阵本身,它由100个以标准格式连接的WS2812B LED组成,将第一个LED的输出连接到第二个din,第二个LED的输出连接到第二个din,以此类推,直到第100个LED。每个LED的VCC和GND并联连接。
该电路的第二个组件是一个树莓派Pico W.第一个LED Din连接到树莓派Pico的GPIO D0。我们将USB Type-C端口与Pico的5V IN和GND连接器放在一起,使用Type-C连接器为电路板供电。
我们在每个WS2812B LED上放置了100个去耦电容器,但最终,我们只使用了10x 100 nF电容器,每排一个。
设计完成后,我们将其保存为板文件,并将所有100个led放在10x10的行和列网格中。
请注意,D1到D10的led放置在一排。D11出现在新列的开头,并扩展到D20,然后是D21,它出现在下一列的开头,并扩展到D100。这也被称为蛇形矩阵或蛇形矩阵图案。
在建立PCB并安装Pico和所有SMD组件后,我们导出了Gerber数据,这些数据将发送给PCB制造商以获取样品。
HQ NextPCB服务
PCB设计完成后,我们导出Gerber数据,发送给HQ NextPCB取样。
对于中间层和顶层板,有两个订单。我们为中间层和顶层板订购了一个黑色的带白色屏幕的阻焊板。
下订单后,PCB在一周内收到,PCB质量非常好。
另外,我要把HQDFM带给你,它在很多项目中给了我很大的帮助。华秋的内部工程师开发了免费的制造设计软件HQDFM,彻底改变了PCB设计师如何可视化和验证他们的设计。
利用NextPCB的加速器活动,为您的创新项目获得2个免费组装的基于rp2040的pcb。
此报价涵盖所有费用,包括物流,使您的想法更容易,更实惠的生活。SMT服务可能很昂贵,但NextPCB可以帮助您克服这一障碍。只要分享你的相关项目,他们就会处理好剩下的事情。不要错过这个提升你的科技创作的绝佳机会!
HQDFM:免费在线Gerber查看器和DFM分析工具
此外,NextPCB有自己的Gerber Viewer和DFM分析软件。
您的设计可以通过他们的HQDFM软件(DFM)服务得到改进。因为我发现等待制造商的DFM报告很烦人,所以HQDFM是执行事件前自检的最有效方法。
以下是在线Gerber Viewer向我展示的内容。再清楚不过了。然而,对于完整的功能,如DFM分析的PCBA,你需要下载的软件。在线版本仅提供简单的PCB DFM报告。
具有全面的制造设计(DFM)分析功能,HQDFM是一个免费的,复杂的在线PCB Gerber文件查看器。
它利用超过15年的行业专业知识提供了对先进制造的见解。如果你想以合理的价格获得优质的PCB服务,你可以看看HQ NextPCB。
印刷电路板组装
使用焊锡膏点针,我们将焊锡膏涂在每个元件垫上,开始电路组装过程。在这种情况下,我们使用63/37 SnPB焊膏。
之后,我们选择每个WS2812B LED并将其放置到正确的位置。
然后通过将电路放在回流加热板上,将PCB从下面加热到锡膏熔化温度,这使得所有的SMD led都连接到它们的焊盘上。
回流后,我们放置THT组件,其中包括用于树莓派Pico W的母头引脚连接器和usb型C端口。
使用烙铁,我们从电路板的底部焊接每个通孔组件的引线。
最后,我们将树莓派PICO W安装在引脚上,PCB组装过程完成。
演示测试代码
对于这个项目的Demo测试草图,我们创建了一个数字计数器草图,以1秒的间隔从1计数到30。我们在这个测试代码中添加了一个特性,使颜色从红色变为绿色。
在这里,我们以红色开始一个月,随着日子的流逝,我们接近30,颜色从红色变成绿色。
确保安装所需的库:在使用此草图之前,安装Adafruit NeoPixel, Adafruit GFX和Adafruit neommatrix。
主要代码
在测试了演示测试代码之后,让我们来看看这个项目的主代码,这是一个简单的代码。
我们的代码旨在在LED矩阵上显示当月的当前日期,随着日期的进展,颜色从红色过渡到绿色。脚本首先导入以下库:WiFi, NTPClient和WiFiUdp用于管理WiFi连接和从NTP服务器检索时间;Adafruit_NeoPixel, Adafruit_GFX和Adafruit_NeoMatrix用于控制LED矩阵。
一个NTP客户端被实例化,以检索当前时间从“pool.ntp.org”NTP服务器,与印度标准时间(UTC+5:30)的偏移。
LED矩阵配置了一个定义为GPIO 12的引脚,尺寸为10x10,并指定了连接和颜色顺序。
在setup()函数中,启动串行通信以进行调试。LED矩阵用指定的设置初始化,包括亮度和文本旋转。然后,脚本尝试使用提供的凭据连接到WiFi网络,直到连接建立。连接后,NTP客户端开始检索当前时间。
在loop()函数中,更新NTP客户端以从NTP服务器检索最近的时间。检索当前日期和时间并将其存储为struct对象。然后提取当月的当前日期并将其转换为字符串。用来表示一天的颜色是由一个月中的哪一天决定的,从1号的红色到30号或31号的绿色。然后清除LED矩阵,并以计算的颜色以矩阵为中心打印当前日期。显示器每秒钟刷新一次,以确保它是最新的。
结果
这个简单但实用的构建的最终结果是一个日期计数器,它显示当月的当前日期,并具有随着时间的推移从红色变为绿色的颜色转换。
该项目通过结合WiFi连接、NTP服务器时间检索和LED矩阵显示,创建了一个动态的、视觉上吸引人的日期计数器。
我希望在下一版中改进矩阵大小。我们现在使用的是一个10x10的矩阵,如果我们只想显示一个数字,这是可以的,但我们想要显示整个日期,包括月份和年份;因此,我们需要显著增加矩阵。
此外,我们将增加板载电源,这样整个设备就可以在不使用USB端口的外部电源的情况下工作。
本文编译自hackster.io