一.工程简介
本工程是基于ESP12E/12F的网络天气时钟,采用3.7V锂电池供电,可显示当前时间、今天明天后天的天气情况。
整体是由OLED屏以及两块PCB叠加而成,中间为ESP8266最小系统,下面为TP4056充电模块,OLED屏焊接在最上面,在两块PCB之间夹个锂电池。
二.注意事项
OLED屏买的是某宝信泰微电子店里的,0.96寸和1.3寸都可,工程里有两个不同尺寸的PCB,注意别搞混了哈。(我觉得1.3寸好看些。。)
TP4056充电的原理图中,R8用于充电电流大小的设置,由于电池容量较小,各位可适当加大R8的阻值,比如用2.4K的。
焊接的时候注意顺序,焊接好两块PCB的上的元器件后,先焊接ESP8266最小系统上PCB的IN-、IN+的排针,排针放在背面,朝后,与充电PCB连接用;然后把OLED屏焊接到最小系统上;再把电池夹到充电PCB和最小系统之间,把两个PCB叠一块,最后焊接上两个板子连接的排针即可。
焊接时最好上铜柱固定下。0.96寸:OLED屏幕与最小系统之间用M2*5双通铜柱,最小系统与充电PCB之间用M2*10+3的铜柱。1.3寸:OLED屏幕与最小系统之间用M3*5+6铜柱,最小系统与充电PCB之间用M3*8的双通铜柱。两头用对应尺寸的螺丝即可,不过1.3寸屏幕安装孔离屏幕太近,拧不上去螺丝。。。
电池尺寸:0.96寸推荐401020的锂电池,1.3寸推荐402025的锂电池。
如果电池夹不进去就贴最后面吧。。。
大概测试了一下,100mah的电池就够亮20分钟。。。。功耗真高啊。。。各位可以尝试修改程序把每秒显示改为每分钟显示,应该可以亮更久些。
三.硬件部分
空板预览图如下(别吐糟我的拍照技术了。。。)
0.96正反面
1.3寸正反面
四.软件部分
软件是我自己写的,可能不是很好,也有点BUG,各位可以自行修改,我注释的挺全的。
使用Arduino开发,用到了几个库,这些库文件我会放附件。
程序流程:上电-初始化各种玩意-读取闪存中存储的WIFI账号密码尝试连接,失败就创建一个WIFI用于配网(配网使用Arduino WiFiManager库);联网成功,获取时间、天气并显示。其中D3按键写的是外部中断,下降沿触发,用来更改显示内容,按一下切一次界面,有时间、今天天气、明天天气、后天天气四个界面。
获取时间是用的NTPClient库,天气是心知天气,申请个免费的密钥就行。
(由于是自己写的程序,如果用我的程序出现了啥毛病,可以私信或评论问,我会尽量帮忙解决)
城市的中文字需要各位自己取一下模,我没搞中文字库什么的。。。然后取MyFont文件里改下城市的那个数组,大小取32*20就行。
城市文字取模参考示例:以西安市为例,在word中打出 西安 ,将字体设为楷体10号不加粗(字体可改),在字体高级选项中将字符间距设为紧缩1.2磅,然后用截图工具截图并保存文件,大小为32*20;然后打开 http://tools.clz.me/ ,这是arduino社区一个大神的工具库,我们使用其中的图片转bitmap工具(当然可以用别的类似工具),选择文件,选中刚才保存的文件,调整取色阈值,使效果图文字清晰可辨即可,然后将下方转换结果中的数组内容复制到MyFont.h中的城市数组,编译上传即可。如果显示不正常,可以在取模时选上切换大小端,再重复后续步骤试试;如果颜色反了就勾选上颜色反转。
演示视频中是我用手机创建的热点,已经配置过网络,所以它自动连接上了,第一次连接或者换WIFI了需要配置网络,接下来就会自动连接。
!注意:请使用浏览器自带下载,迅雷等下载软件可能无法下载到有效资源。
欢迎加入EEWorld参考设计群,也许能碰到搞同一个设计的小伙伴,群聊设计经验和难点。 入群方式:微信搜索“helloeeworld”或者扫描二维码,备注:参考设计,即可被拉入群。 另外,如您在下载此设计遇到问题,也可以微信添加“helloeeworld”及时沟通。
EEWorld Datasheet 技术支持