点阵测试机(ESPx网络点阵时钟入坑指南)
Posted
篇首语:尺有所短;寸有所长。物有所不足;智有所不明。本文由小常识网(cha138.com)小编为大家整理,主要介绍了点阵测试机(ESPx网络点阵时钟入坑指南)相关的知识,希望对你有一定的参考价值。
点阵测试机(ESPx网络点阵时钟入坑指南)
本内容来源于@什么值得买APP|作者:starcly
创作立场声明:1.PO主不是专业人士,只有一点点计算机基础,一些技术操作可能有误,毕竟张大妈藏龙卧虎,有班门弄斧之嫌望,请不吝指正;2.文中涉及的软硬件有参考网上多篇帖子,但不是纯粹抄袭,衷心感谢原作者;3.我愿全部开源与大家分享,但不允许有人将其用于盈利或者非法用途。原创不易,转发注明,切勿洗稿。
ESPx_CLOCK
每天能利用的只有神兽午睡的时间,通过一点点学习,一点点填坑,做了这个“基于ESP8266的网络点阵时钟”。现在回头整理相关资料,尽可能详细地与大家分享,望轻喷。 资料后附,服务三无,先上效果:
先来个张大妈
时间
日期
温度
环境光线感应
PART_0_神坑警告
在此奉劝蠢蠢欲动的手残星人,DIY有风险,入坑需谨慎!风险大于等于以下几点:
- 把你带进坑,我跑了;
- 花时间,花钱,费发际线,啥都做不出来;
- 需要使用工具,可能会造成意外的人身伤害,如:工具割伤,烙铁烫伤,焊料中毒等;
- 错误的设计、操作可能会带来其他意想不到的后果。
PART_1_思路和设计
没被劝退的都是条汉子。
一、 思路
我坚信,思路指引方向,我在做这个小玩意儿过程中,一直都是坚持以下几点原则的:
- 容易:易于获取材料,易于制作,易于成功;
- 廉价:尽量不搞高大上,材料选择尽量便宜的,手头有的一些元件尽量利用起来;
- 实用:做了最终能用、好用。
二、 方案
看了一天,确定了最基本的需求:即能通过SNTP进行网络校时,显示在屏幕上,其他一些附带功能就算送吧,需求勾勒出大概的框图如下:
功能框图
整个系统输入电源、按钮信息、光线亮度信息和WiFi,输出信息到屏幕上和蜂鸣器上。
实际上,由于ESP8266和点阵屏的特性,这个系统并不仅可以用于显示时间,还能通过WiFi取得想要的各类信息,并显示出来,如:天气?股票点数?比特币价格?CPU温度监控?更进一步可以通过ESP8266芯片和服务器进行交互,把数据传送到其他终端上。这些都只要通过修改程序就可以做到。
真,开放题。
三、 设计
接着细化一下,下面列出的是我经过3次尝试最终确定的方案,前面两次的坑我已经用脑子里的水填上了:
- 主控制器:用ESP8266模组,价格便宜,性能强悍,直接搞定主控和WiFi两个问题。现在除了官方给的固件,还能跑Arduino、Lua和MicroPython等框架,我们这次就用Arduino框架;唯一不足就是引脚太少了,但这个不影响我们的项目;
- RTC时钟:DS3231芯片,精度高、内置晶振、简单好用,除了贵就是棒;
- 显示:直接采用成品MAX7219 8*8点阵模块,我也考虑过自己做,但是PCB布局很困难,最终还是要两层结构,那倒不如买成品,省去了很大一堆烦恼;
- 电源:MICRO USB 5V输入,板上稳压到3.3V;
- 其他:蜂鸣器、光感、按钮等配套设备。
三代PCB设计同堂,从上往下分别是1、2、3,打码的地方是嘉立创的客户编码,看到一点点进步了没?
三代PCB同堂
我前面趟的坑可以总结出以下几点经验:
- ESP8266模组同时用作主控和WiFi芯片是OK的,DS3231模组太大大大,要用芯片自己搭建;
- 成品显示模块是OK的,就是固定孔位有点麻烦,点两次都不太准。另外显示模块直接用5V供电,可以亮一点;
- 因为用了点阵模块和ESP8266,所以整机功耗不低,单节锂电池(尝试过18650,还是容量型)续航捉鸡,意义不大;
- 有些LDO(低压差线性稳压)是骗子,压差根本不低;
- 配套设备要注意型号尺寸问题,我为此还买了把卡尺量元件大小。
最终我设计的时钟是这样的一个结构,由于是后期整理的,我直接上成品图来示意。
整体结构1
整体结构2,分两层
打了箭头的都好理解,就红框部分是空着的,原因有二:一是制造PCB的工厂有优惠,10cm以内才能享受,我现在控制到了9.6cm;二是如果要装进壳子,这里可以放一个锂电池充放电模块。
PART_2_准备工作
赴坑前,必要的材料如下,材料丰俭由人,工具自己用着顺手就好:
一、 物料和耗材
物料和耗材主要就是一些电子元件,绝大部分来自X宝,电子元件单价非常便宜,最好还是在一家店买齐,要不运费不划算:
1.ESP-12F模组,其实就是安信可公司(或其他公司)拿乐鑫公司的ESP8266芯片,进行二次封装的产品,安信可的会稍贵一点,我买的是DOIT的。关键字:ESP-12F。
DOIT ESP-12F
不是我手抖,便宜货的工艺就这样,看见那毛刺了没……
2.DS3231芯片,美信公司的高精度时钟芯片,自带温度补偿,准!关键字:DS3231。
3.MAX7219 LED 8*8点阵屏幕模块,大家都差不多,但是要注意孔位。关键字:MAX7219 点阵。
4.SPX3819 LDO稳压芯片,低压差线性稳压芯片(LDO),压差低,可以用电池供电。关键字:SPX3819。
5.MICRO USB母座,就是一个USB插座。关键字:MICRO USB母。
6.CR2032电池和电池座,纽扣电池。关键字:CR2032、CR2032电池座。
7.拨动开关,这个其实不是必须的,毕竟钟不太关,有的话烧程序时候方便点。关键字:12D07拨动开关。
8.轻触开关,微动开关。关键字:微动开关、轻触开关 三脚。
9.12085无源蜂鸣器,无源蜂鸣器可以根据PWM频率发出不同的声音。关键字:无源蜂鸣器。
10.GL5539光敏电阻,会随着光线强弱变化,改变电阻阻值,用来检测环境亮度。关键字:光敏电阻。
11.0805贴片电容、0805贴片电阻、SS14二极管,小小的电容电阻,这个大小还能手工焊接,再小真的难,具体值看原理图。关键字:贴片电阻、贴片电容、0805、SS14。
12.排针、排母,用来做插接件。关键字:排针、排母。
13.M3铜柱、螺丝、螺母,五金连接件。关键字:铜柱、螺丝、螺母。
14.焊锡及助焊剂,很便宜的耗材,但好一点的焊锡和助焊剂会让整个焊接过程好办很多,含铅焊锡熔点低好用但污染大,无铅的环保但熔点高难用。关键字:焊锡丝、助焊剂。
15.洗板水,焊接好之后把板子洗干净的有机溶剂,我用了无水酒精。关键字:洗板水。
二、 软硬件工具
需要用到的工具List:
1.电脑,系统随意,但要确保有USB转TTL模块的驱动;
2.USB转TTL模块,用于烧录程序;
CP2102模块
3.电烙铁,焊接工具,我用的是传说中的“鲍鱼白光”;
4.镊子,焊接辅助工具,毕竟贴片电阻太小了,镊子帮我们夹住元件;
5.旧牙刷,用来洗焊接好的板子,刷刷刷。
需要用到的软件其实就三个:
1.EDA工具使用立创EDA。
这个是国产的、基于HTML的、简单易用的EDA工具,自带了非常全面和开放的封装库,对小白非!常!友!好!【鬼话警告】。
立创EDA
由于是基于Web的,不用安装,只要浏览器打开,注册账号就行。但是有一点问题:画布放大到很大时候,拖动会卡,反正我的Surface Pro 6(i5-8350U)是跑不动的,因为我的古董台式机可以跑(i3-530),所以感觉更像是优化问题。
2.编程使用PlatformIO。
照理说Arduino IDE作用一样,但是我不喜欢……
【吐槽张大妈编辑器,插不进链接还甩锅给网络】,请自行搜索VSCode。
VSCode是PlatformIO的运行环境;PlatformIO可以在VSCode的插件模块直接安装,好用!推荐!
PIO
我的电脑已经安装了,“安装”就变成了 “卸载”,正常情况下点击“安装”就行,非常简单。因为这个插件基于Python,所以安装时会自动安装Python,略慢。
3.其他还需要USB转TTL模块的驱动。
这个取决于模块的芯片,推荐CP2102和CH340,其他差的差贵的贵。Windows10环境下,插上系统自动安装驱动,不愁。
PART_3_构建血肉——硬件
毫无疑问,看到这里的都已经是勇士了……
一、 PCB
首先你需要一张PCB。整个过程大概就是:画原理图——画/选择元件封装——原理图转PCB——布线——导出Gerber文件——做成PCB。实际上没多难,就是鼠标拖一些元件,给他们连上线,这个确实是最简单的EDA工具了,系统也给了很详细的操作手册。
因为是他们自己家的,比X宝便宜点。
书
回过来~PCB的原理如下,我大概解释一下:
原理图
- 电源是Micro USB接口接入的5V,可以使用手机充电器、充电宝供电,并联一个排针,用于外接供电,如装进壳子里用电池供电。电源经过开关,接入SPX3819 LDO稳压到3.3V,由于SPX3819压差足够低,电池供电也没啥大问题,这里需要配套一些电容,具体电路可以参考SPX3819DataSheet给的典型应用电路。
- 主控用的是ESP8266,需要一些外围电路,如:上拉下拉电阻,这个可以参考安信可官方网站给出的DataSheet。
- DS3231模块的外围电路非常简单,只需一个备用电源,我在这里用了一颗CR2032,通过电池座焊在PCB上。
- 光敏电阻通过下面的限流电阻,接入ADC用于感知外界光线亮度变化。
- 蜂鸣器这里使用的是无源蜂鸣器,相对有源蜂鸣器通电就响会麻烦一点,用了一个S8550三极管做开关,为了让声音不那么大,我还是给他接了3.3V电压驱动,喜欢声音洪亮的接5V即可。
- 轻触开关接的是GPIO0,这个IO同时是ESP8266的烧录模式入口,这样这个开关就可以同时起到运行时切换,启动时按住烧录两种功能。
- 剩下三个是排针排母接口,TTL用于烧录,LED MATRIX引出SPI接口匹配MAX7219点阵屏,OUT是我没用到的GPIO16接口,我把他单独引出,还加了GND和VCC,用于扩展一些外设,目前并没用到。
把前面的原理图转换成PCB,调整位置和封装,经过布线,就可以画出PCB来,这个PCB是经过前面两次失败的经验总结起来的成果,凝聚了我海量无知的泪水:
PCB
一通操作后,可以让系统导出一个Gerber文件,所谓Gerber文件就是把电路板的信息,按层打包在一个压缩包里,通过一些软件,可以更加直观地看到PCB的模样。
导出一个Gerber
有了Gerber文件,我们可以制造成PCB了。
2020年了,现在是讲究产业链的时代,我不建议在家自己腐蚀PCB,因为自己做一不环保,废水难以处理;二工艺太差,工业生产的品质和工艺是吊打手工操作的。
我的PCB是在嘉立创做的,因为他们家有一个非常强劲的活动:用他们的电脑版下单助手下单,PCB尺寸在10cm*10cm以内,普通工艺,5张板只要5元!还顺丰包邮!
妙啊~
也正是因为这个原因,你可以看到我做的PCB没有跟点阵屏幕一样长,因为我要控制在10cm*10cm以内。【再次吐槽张大妈编辑器,为什么我word贴进来就变成了250px???】
当然也可以在他们的网站下单,同样要求,20块包邮。疫情期间5元特价活动暂停过一段时间,我的PCB就是那会儿20块做的,你要是查一下以前做个PCB多少钱的话,会觉得20块并不贵。
在PC下单助手里上传Gerber文件
把前面的Gerber文件,在系统里面上传,然后设置一些工艺参数,填上地址,付款,就跟网上买东西一样方便,然后就休息一两天,等快递吧。
二、 焊接组装
由于我打样时工厂才刚刚复工,耐心等待……
顺丰小哥终于把PCB给我送来了:
优秀的包装
真空包装,还有干燥剂
PCB
放在平时就是5块钱包邮的,这包装,这工艺,还是良心吧。拿出来先比划一下,孔位OK【请无视纸巾】:
比划一下
接着电烙铁操作起来,焊好,我少焊了两个电容,那个型号一时半会儿没找到,先空着了,基本不影响使用。焊好用酒精、牙刷洗刷刷:
焊好、洗好了
正常操作里面洗板水更加好用,我没有,但是有无水酒精,一样可以洗板子,注意是无水酒精,医用酒精酒精含量只有75%,含水!不能用!
另外强调一下,焊锡和助焊剂的烟雾和洗板水的挥发性成分都有毒,请在通风的地方操作。细心的可能看出来背景有点不一样,上图那是我的鼠标垫,然后焊的时候不小心烙铁那么一抖,一个洞……所以看好你们的小手……
Part_4_注入灵魂——程序
壮士!先干了这碗!
OK~前面已经提到了,我们的时钟程序是基于Arduino开发的,ESP8266本身官方并没有支持Arduino,它的Arduino框架是第三方提供的。
一、 编写和抄袭程序
申明一下:我这里的代码有抄各种开源项目的~
先用我们的开发工具——PlatformIO,新建一个项目:
PIO新建
PIO新建
点击Finish之后,PlatformIO会自动安装对应的板子、框架,并帮你搭建好Arduino程序的基本框架。
需要修改的2个文件
只需要把main.cpp和platformio.ini这两个文件照抄我提供的程序,更懒一点的话可以复制文件替换掉。因为我的项目文件夹里面有其他子项目的代码,我又没有完全整理好,所以我就不用Git之类的办法开源给大家了。特别说明下,我这程序比较简单,就是做了时钟功能,闹钟硬件已经有,软件没启用。
这里一个问题:由于一些奇奇怪怪的网络问题, , u8g2这个库大家是很难直接从PlatformIO下载和安装好的。没关系,给他手工操作一波,把库文件下载解压,u8g2lib文件夹放到lib文件夹里面就行了。这里注意层级,不要多层文件夹嵌套,具体操作README里面已经写得很清楚了。
u8g2lib
好了,程序抄完了,点一下下面那个钩,编译代码,一般情况下会滚一段时间的代码,最后没报错就是一切OK~
编译成功
二、 烧录
把USB转TTL模块和时钟PCB接好:
接线注意
GND好理解,接地;注意TXD和RXD是交叉连接的,交叉!交叉!交叉!我为了方便,把TTL引脚焊到了背后,这样在插着屏幕时候也能比较容易插拔线:
TTL我焊在背后了
接好线后准备动作:
- 给板子插上电源,关闭开关;
- 把USB转TTL模块插上USB接口;
- 左手按住板子上的轻触开关,右手点一下上传。
上传固件
这时候系统就开始检测板子的连接情况了,注意观察终端的输出,看到Connecting........_____.....时候,就是系统在等待连接了,这时候打开板子的开关(就是上电):
好了,开始烧代码了,进度会刷新百分比。看到[SUCCESS]就烧录完成了。这里提示一下,有可能没到100他就失败了,多半是因为TTL信号完整性的问题,我也碰到过几次,我猜测有两个原因,一是我的板子设计或者焊接有问题;二是usb转TTL模块本身或者杜邦线质量问题。多次尝试吧,没问题的。
拔掉各种线,关掉板子电源开关。
然后开机就可以使用了,第一次使用会按程序进入校时:
出现这个时候就是在等待配网
然后用手机进行配网:
选择这个SSID
这个
选择你要连接的WiFi,下面输入密码
这就好了
搞定。
Part_5_其他
一、 缺憾和改进
留下的缺憾还是有好几个:
1.没有外壳。
其实做外壳的办法有好多种,最方便的还是3D打印,有的话打印一个外壳还是不错的。
2.还是需要外接供电。
这个我预留了接口,目前这个造型下,软包锂电池和21700锂电池都是不错的选项,一起把它做进外壳里面,但是需要外置充放电模块。
3.PCB还是画错了一笔。
线太粗了
这条导线我画的太粗了,把USB的两个脚连起来了——应该是不小心手抖。因为我们USB不传数据,所以不影响使用,但在某些特殊的数据线下面,可能会无法供电。我分享的PCB已经修复这个问题。
4.程序还是随便写写的,闹钟硬件已经有,软件没启用。
还好,我还有个写代码的朋友【写代码的也有朋友?】,他在我的程序上面修修补补,做了闹钟、农历、滚动之类的各种功能。
毕竟他还没女朋友……就不催他合并代码了吧。
二、 分享资料
因为我的项目里面还有其他子项目的资料,我又懒得理,所以我就抽取了有关联的,还是通过百度网盘吧:(请点击扩展链接前往相关页面获取)
提取码: k8yw
如果资源有问题,请反映给我,谢谢~
我哪天想到了的话,我会把代码更新下的~
三、 新坑
疫情期间其实主要精力在搞这个,基于ESP32的平衡车……
原型已经可以站起来了
然后自己打板子
还在调试,现在复工了,坑有空再填。
以上,祝大家身体健康,玩得开心~
相关参考
...我们先来看看这个时钟都有什么能耐。◆24像素×7像素LED点阵显示[单色]◆日期、时间、星期[年、月、日、星期显示]◆温度[0~60℃]◆闹铃[20组,可独立设置开关]◆LED台灯[99级亮度调整,自动亮度记忆]◆走时补偿,自动较准[按...
广告工程(丽江文化旅游学院“芯能力”基于UART广告点阵屏工程项目实训)
2022年11月25日,随着最后一个项目组“基于UART广告点阵屏工程项目”线上总结答辩的结束,丽江文化旅游学院物联网工程、信息管理与信息系统、计算机科学与技术专业的28名学生以线上云实践+线下实地测试的形式圆满完成了为...
(图片来自网络)瘢痕是各种创伤引起的正常皮肤组织外观和组织病理学的改变的总称,是人体创伤修复过程中必然产物,伤口在愈合过程中胶原的合成代谢与降解代谢之间的平衡被破坏即可形成病理性瘢痕。瘢痕从外观和机体...
(图片来自网络)瘢痕是各种创伤引起的正常皮肤组织外观和组织病理学的改变的总称,是人体创伤修复过程中必然产物,伤口在愈合过程中胶原的合成代谢与降解代谢之间的平衡被破坏即可形成病理性瘢痕。瘢痕从外观和机体...
...驱动LED、数码管、LCD等的入门文章随处可见,有关驱动LED点阵屏的文章则不多,至于真正能够显示一个国标汉字的16×16点阵屏的则更少。本文向大家介绍一款用ATmega48单片机控制16×16点阵屏显示汉字,并可做出多种动画特效的实...
...驱动LED、数码管、LCD等的入门文章随处可见,有关驱动LED点阵屏的文章则不多,至于真正能够显示一个国标汉字的16×16点阵屏的则更少。本文向大家介绍一款用ATmega48单片机控制16×16点阵屏显示汉字,并可做出多种动画特效的实...
点阵激光治疗浅表、凹陷性瘢痕具有良好的治疗效果。但是一项效果显著的激光治疗有几大因素,除了仪器设备和医生的操作以外,另一个就是治疗后的恢复保养。那点阵激光应该怎样护理呢?术前注意术后护理1、点阵结束后,...
点阵激光治疗浅表、凹陷性瘢痕具有良好的治疗效果。但是一项效果显著的激光治疗有几大因素,除了仪器设备和医生的操作以外,另一个就是治疗后的恢复保养。那点阵激光应该怎样护理呢?术前注意术后护理1、点阵结束后,...
深圳LED点阵模块(如何用Arduino实现动画效果(1)—点阵模块)
...何通过Arduino来实现动画效果呢?这次就给大家讲解几个点阵模块传感器。这次讲解的两种模块都是实现像素画风格动画的,下次程老师会给大家讲解另外几种LCD屏幕模块。1.电子积木8*8LED点阵模块点阵模块尺寸为32*32*14mm,可以...
深圳LED点阵模块(如何用Arduino实现动画效果(1)—点阵模块)
...何通过Arduino来实现动画效果呢?这次就给大家讲解几个点阵模块传感器。这次讲解的两种模块都是实现像素画风格动画的,下次程老师会给大家讲解另外几种LCD屏幕模块。1.电子积木8*8LED点阵模块点阵模块尺寸为32*32*14mm,可以...