数码之家

 找回密码
 立即注册
搜索
查看: 15618|回复: 102

[Arduino] 256*64双ESP8266点阵时钟制作 支持微信开关

    [复制链接]
发表于 2020-1-29 11:00:42 | 显示全部楼层 |阅读模式
这个制作其实在去年就已经开始着手制作了,但是有很多问题没有解决就一直懒得去做,其实过年之前就应该做好的。当然这个过程很曲折!
之前做过很多点阵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

打赏

参与人数 12家元 +235 收起 理由
ljlun + 20 谢谢分享,加上滤色片就更好了.
trg13 + 20 真厉害 羡慕 只会简单的51单片机.....
stdzlqz + 20 優秀文章
花生仔 + 20 優秀文章
乐100 + 20 優秀文章
zhkrid + 20
有点不烧 + 20 謝謝分享
snowrose2000 + 20 謝謝分享
慕名而来 + 20 又见大作,热闹喜庆。
落叶风 + 20

查看全部打赏

 楼主| 发表于 2020-1-29 11:01:55 | 显示全部楼层
程序代码和电路图都放在里面了:

联网程序要改的地方


这个地方每个人的key都不一样,去上面我说的京东万象申请个账号填上key就行


另外注明一下:本程序有web-OTA功能,只需连接在同一网络用电脑输入web地址即可,然后导出bin文件就好


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-29 17:49:09 | 显示全部楼层
老张37475 发表于 2020-1-29 12:17
直接用ESP32吧双核够不够

哈哈,一直没有买,而且ESP32好贵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-29 17:49:51 | 显示全部楼层
社會忒墟僞 发表于 2020-1-29 13:12
贝壳物联怎么玩呢  可以加在以前的程序上使用吗

可以去贝壳物联官网看看,有很多介绍
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-29 19:23:54 | 显示全部楼层
750123208 发表于 2020-1-29 19:00
两个esp8266有点多余了,直接IDE里面变不就好了,联网又不是一直需要查的

第一,首先IO口不够用,第二ESP8266在访问API过程不能干其他事所以每次访问API时就不能显示屏幕,访问API还是需要延迟的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-30 17:57:43 | 显示全部楼层
snowrose2000 发表于 2020-1-30 17:35
折腾的不错!不过个人觉得挂在家里有点太大了。

悄悄告诉你,这我都觉得小,哈哈;
我喜欢那种简约的,直白的,没有那些花里胡哨动作,毕竟是显示信息又不是广告为了引人注目。所以尽可能都把所有信息显示全,静态显示。所以就要大了
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-1-30 18:47:11 | 显示全部楼层
cj8510 发表于 2020-1-30 18:45
前面加个茶色或者黑色半透明的亚克力吧,这样不好看。

不好搞这么大张的,得有1.2米长
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-30 19:13:20 | 显示全部楼层
cj8510 发表于 2020-1-30 19:08
可以的,弄个做灯箱用的铝合金支架,搞个框框,把亚克力卡到里面。完美。 ...

我的意思是说这么大的亚克力搞不到,不好搞,买的话肯定不便宜
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-31 01:05:54 | 显示全部楼层
zhkrid 发表于 2020-1-30 21:44
楼主东北的啊,外面这么冷,家里这么热,我家里8-9度,外面7度

哈哈,这都看出来了,现在还好点,年前三九时候能达到零下三十多度
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-31 13:14:52 | 显示全部楼层
junyee 发表于 2020-1-31 12:47
用上硬件 SPI 的话,刷 256*64 应该不难呀.

这是双色的,扫描方式是上下屏分开扫,一共四个数据。硬件就一个,咋搞。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-1-31 17:33:49 | 显示全部楼层
netbeetle 发表于 2020-1-31 16:04
都画了板了,不能全部一次焊板上?

焊板上?温度探头是我故意引出的,放在板上会测温不准
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-1 11:06:51 | 显示全部楼层
ploestar 发表于 2020-1-31 22:41
看人用245和595扩展,点过8块屏,理论可以更多

这个屏就是245+595+138驱动的,一块屏就四个数据,R1R2G1G2,他是上下屏分开扫描的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-1 11:09:17 | 显示全部楼层
netbeetle 发表于 2020-2-1 09:29
除了温度探头,全部都可以芯片级别焊在板上,不需要再用现成的模块了。而且都网络获取天气了,这个温度探 ...

模块化更新程序修改起来更方便,NodeMCU里面用来存字库了,Flash还生不到10%就被写满了,不能使用OTA更新,所以要更新NodeMCU还是需要拿下来升级更新,以后还会加上手动亮度速度调节等,都需要修改NodeMCU
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-1 13:21:31 | 显示全部楼层
junyee 发表于 2020-2-1 12:07
那可以 SPI 驱动  595 再接到08接口上,不过性能损失有点大.

或者改屏, 把  r0 r1 g1 g2 级联起来. 飞3根 ...

第一种就不说了,那肯定是来不及
第二种就更麻烦了,那就相当于往128个595传数据,速度更慢
ESP有SPI,但是不知道是硬件还是软件的,要是软件就算了。
滚动显示很简单,因为滚动显示LED一直处于闪烁状态,闪烁问题很好解决,要是静态显示就不行了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 10:09:36 | 显示全部楼层
hu2011q 发表于 2020-2-1 20:51
要半分钟看完整的万年历。

万年历部分是固定不动的,下面流动显示的是天气
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 10:10:12 | 显示全部楼层
三硝基甲苯 发表于 2020-2-3 21:04
做的很棒,先赞一个!我这里有两块P4的单元板,不知能否改造成万年历时钟之类的。。。 ...

那种户外的?我驱动过P1的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 10:10:43 | 显示全部楼层
学海无崖 发表于 2020-2-4 12:05
看着看着,玩不来了!没时间玩太大!看小孩

哈哈,我兴许也有那一天
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 10:11:49 | 显示全部楼层
limcs51 发表于 2020-2-4 13:35
给楼主点个赞,特别是API网站很好,已经移植到我的时钟上,还加了湿度。
...

你这是ESP8266直驱的?用的是京东那个?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-5 10:12:33 | 显示全部楼层
se7ens 发表于 2020-2-4 17:19
带定时功能吗,比如晚上睡觉会自动关掉

贝壳物联网站有定时功能,可以实现定时打开和关闭功能
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-25 15:39:30 | 显示全部楼层
fryefryefrye 发表于 2020-2-25 14:35
你那个字模文件,里面好像有很多空位,是不是浪费空间了啊?
如果把空位都去掉,再另作一个转换表,是不是 ...

这是UTF8编码决定的,我也不想有空位,但是要使用的汉字太多,如果那样自己编码的话更费事,不如这样搞,如果以后需要加的话,直接改字模就好
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-27 18:51 , Processed in 0.280800 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表