|
这个制作其实在去年就已经开始着手制作了,但是有很多问题没有解决就一直懒得去做,其实过年之前就应该做好的。当然这个过程很曲折!
之前做过很多点阵32*64的16*64的16*80的单双色都搞过,没太大的区别大同小异,这次使用的屏是一个坛友送的,一共有六块用了四块来制作本次点阵时钟。这次包含基本时间日期信息,还有天气预报。
边制作边说这过程吧
第一次制作使用的是洞洞板手工焊接的,不太理想。而且主控使用的传统STC12C系列的,发现带不动这么大的屏扫描一轮下来闪烁很严重,肉眼清晰可见那种,就放弃使用51单片机了后来发现NodeMCU也不错,arduino编程就选用这个了。既然选择ESP8266做主控就心思能不能连个网整个天气预报啥的。后来实验证明8266CPU主频率开到160MHZ勉强带动屏幕,就不要提连WiFi获取API了。所以才用两个ESP8266。
听到捷配有薅羊毛活动,就画了自己第一个PCB打样用,不过毕竟是第一次,有很多错误,后面再说
捷配发的顺丰,还是很快的!
一共六片,用到一片就好了
原理电路图
用的立创EDA画的,不得不说立创EDA很强大,封装库很全!适合我这种不专业的新手画PCB。
其实这张图就能看出问题,画的时候一个劲画,都没改线宽,导致什么线都一样宽。。。
把元器件都焊上。是不是有个疑问,ESP8266不是用3.3V供电么,怎么没有1117(后面没有元件)
很简单NodeMCU自带一个1117-3.3V也有3.3V引脚所以直接给8266用了,哈哈很偷懒
和之前洞洞板做的对比一下,当初以为加工异样板要多花钱,打样回来自己手动切下去一块。后来才知道一样不花钱。。。
因为包含温湿度检测,所以用DHT12其实和DHT11一样,只是多了一个可以I2C通讯,而且体积也小了
和光敏电阻放到一起
为了测温的准确性,伸出去一块是有必要的
前面看的效果就是这样
之前说是四块点阵屏拼接的,屏与屏之间就用一段4平方铜线焊上
因为DHT12排针太高了,所以去掉黑色那个头
这就是为啥板子要切下去一块,把点阵屏接口让出来
板子固定方式是把四颗螺丝直接粘到屏的背面
这就是另一个错误,ESP8266外部没接EN和复位电阻就不运行,手动跳线接一下
设计时候用NodeMCU做亮度检测和亮度调整,现在有点后悔了,因为控制屏的亮度用PWM,arduino编程的PWM是使用CPU模拟出来的,占用CPU内存的,最后的解决办法还是用传统的delay来凑合用
电源线就差这一截,就找个粗的电源线凑合一下
这次固定挂墙上也不想之前那样,这次在墙上固定一个铁板,屏后面用磁柱吸在上面
不够高用铜柱加高一下。实际证明这很结实!
这个地方还是高,就趴下一点
所有线都接好,最后还是出了问题,DHT12坏了
因为手头没有多余备件了,就用DHT11凑合一下,其实在程序里读DHT12还是用单总线方式。
DHT11做一下手脚,把光敏电阻也挤到里面,这样省的外部接线乱了
正面就是这个效果,里面塞不下就放外面了
会比DHT12大不少,不过也不影响
最后还是有问题。不知为何每次上电都死机,一查电压只有2.8V肯定哪里有短路!但是吧先上电,再把NodeMCU插上就没事一切都正常,邪门了。一开始以为是GPIO0和GPIO2干扰的?上电这时候拉低了?也不能啊,有245做缓冲。最后查到原来是屏的EN。只要上电时EN和GPIO断开就正常,之后再把EN和GPIO接在一起,所有都正常了。。。我也搞不懂为啥,就接个开关吧
硬件也就这样了,下面搞定软件程序部分,时间联网用NTP授时,计算农历节气都在本地计算。之后是天气预报API获取,可谓是翻遍全网找遍所有API(这里可能要说的多一点)
花钱的吧还不想花,免费的吧又怕某一天挂了,就很纠结。找过和风天气,丫丫天气,甚至都找到了高德,百度,阿里巴巴等等很多平台的API,不是用HTTPS就是没有符合我的要求,后来找到一个个人开发的API网站里面有很多API免费使用,天气,油价,农历等等很多免费API但是没有说明,后来我也没采用。免费API网站如果大家使用的话且用且珍惜,虽然没说调用次数和调用频率,那也不要疯狂获取,毕竟是个人的。而且这个网站的站主人也不错,API有什么问题都会及时解决。后来我进行全网地毯式搜索,终于找到一个让我满意的API!是在京东一个开发平台上(虽然最近京东发生很多不愉快的事情,那和我无关,我只用京东的API)每天限量5000次,算一分钟调用一次一天需要1440次,完全足够了;信息也很全,有天气实况,还有逐小时预报,7天预报,还有各种生活指数都一次获取。也很满意京东万象和风天气需要的坛友自己去注册使用吧,每天还以邮箱方式给你发送昨天API调取状况,嗯——不错。
API接口搞定了,接下来就是显示了,既然涉及到天气预报,就要汉字显示,不可能把所有天气用到的汉字都做好吧,而且为了以后增加节日等显示所以制作一个字库是很有必要的选择!因为ESP8266使用的汉字是UFT-8编码,所以就要知道汉字字库所有汉字编码,这要感谢“落叶风”坛友,他的帖子里有UFT-8编码。但是最坑的是汉字编码是不安顺序的,一个汉字是三个字节,因为我没有用外挂flash做字库,就用NodeMCU自带的Flash存字库吧。我先手动把这些无序编码重新排版,编程有序的,唉这里的苦只有做了才知道。6763个无序汉字,排好序以后是2万多个汉字;耗时三天,用到了Excel排序,那也很费事。
这就是没排序和排序的区别,这样是看不出啥,但是对于汉字编码来讲,变得有顺序之后就能更好的显示出来,ESP8266给NodeMCU发送汉字,接收是一个字节方式接收,连续接收三个字节组成一个汉字,就要根据这三个字节判断是什么字
用Excel排字
分两个屏使用,必要时候还要分成8个窗口
最后排完的样子,还要验证有没有错,不过还是很满意的,没有错误
可以显示的汉字,可能有的字这辈子都用不上,但是必须要有。你说无不无奈
之后就是挂起来,替换我家之前那个1680时钟,这次显得很大气,哈哈
打眼,一开始打算用那种粘墙上的挂钩,后来我爸怕粘不住,就打眼了
而且我爸为了防止那个贴条上锈染黄墙皮,还怕划到墙皮就粘了一层泡沫胶在上面做防护
正面就挂时钟用
之所以做这么长,是为了和上面那个百寿图长度显得和谐点
上面固定显示时间日期还有温度。下面一直流动显示天气预报和倒数节气日
最主要的是这次也加入了贝壳物联,可以控制显示开关,以后反馈温湿度数据可以远程查看家里温度
最后祝大家鼠年大吉!近期就不要参加聚会串门等集体活动了,这个病毒闹得还是挺凶的,做好防护!
next
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|