ESP8266电纸屏天气预报站

3
5805

这个项目里做了太多工作,画电路板,服务端PHP程序编写,电纸屏驱动完善,中文字库输出工具编写,中文字体显示驱动,中间也遇到很多问题,不过大多数已经顺利解决了。

电路板总共设计三个版本,最后的版本仍有不足之处,对电池电量的检测仍然不够准确,但是也没有想到什么好办法。总体来说稳定运行,充一次电可以用几个月吧,就是因为省电才去研究电纸屏的。一切的程序源码,PCB原理图,PCB gerber文件,模型图等资料都在我的GITHUB上。

下面的内容是我的GITHUB说明的中文版:

Summary

用ESP8266控制墨水屏来显示天气信息,屏幕用的是微雪的墨水屏裸屏

Esp8266在更新完天气后进入低功耗状态,充一次电可以运行几个月。

物料清单

  1. 2.9寸墨水屏
  2. Nodemcu 或 Wemos 或我的集成板( gerber 文件在 /PCB folder,元件清单也在)
  3. 锂电池
  4. 3d打印的外壳(文件在 /stl )

上传代码到esp8266

按照这个教程,把ESP8266添加到arduinoide里,用arduino ide 上传代码。 https://github.com/esp8266/Arduino#installing-with-boards-manager. 别忘了上传字库,教程在这里,别忘了选择spiff为3MB. https://arduino-esp8266.readthedocs.io/en/latest/filesystem.html#uploading-files-to-file-system.

多语言支持

通过修改lang.h可以支持多语言. 天气数据支持的语言有 zh,en,de,es,fr,it,jp,kr,ru,in,th

将ESP8266连接到墨水屏(nodemcu,集成板忽略)

BUSY—->gpio4 RST—->gpio2 DC—->gpio5 CS—->gpio15 CLK—->gpio14 DIN—->gpio13

这些针脚针对的是墨水屏模块,如果用裸屏和集成板的话不用接线

将 gpio16 和 rst 连接。

在气象站上显示消息

通过提供天气的服务器可以发送消息到客户端 (http://duckweather.tk/client.php). 下次更新天气时即可显示。

字库

为了在墨水屏上显示中文,我开发了一个小工具来转换电脑上的字体。 (unicode ucs-2) https://github.com/duck531a98/font-generator

你要是想自定义显示一些文字,要用 DrawUTF函数.

生成的字库文件要上传到SPIFF中

16X16点阵的字库大概是 2MB. 也可以只转换ASCII部分。

低功耗

Nodemcu不适合低功耗

我用了一个HT7333来保证ESP睡眠期间不会消耗太多电量。

天气数据来源

因为ESP8266不能直接访问HTTPS的网站来获取数据(内存不够),只能建了一个转发站。天气源用的是和风天气。每天有3000次使用次数,为了节约,我在服务器上建了个缓存,重复请求在20分钟内得到的都是缓存。

服务器端文件在 /php 文件夹里.

感谢

感谢ESP8266天气预报站界的祖师爷Mike, Daniel, Fred。仿制他们的oled天气预报站给了我很多经验,代码中用了他们的wifi manager json parser的库。特别感谢Mike,电子方面的知识我都是请教他的。

 

3 评论

回复

请输入你的评论
请在此输入你的昵称