偶然看到CSDN博客上free0loop写的一篇文章,
《超低功耗芯片ESP8266》 ,深受启发,物联网本身作为长期工作的器件来说,功耗一般都比较低,并且人们不想要经常去给他们充电,因为通过WIFI实现的物联网本身是无线的,一般也不会给它扯一根长期供电的电源线,所以就需要大容量电池来续航,如果一个本身功耗就很低的物联网器件通过太阳能电池板加上电池蓄能,那么能不能实现无限续航呢?
这一次我就尝试做了个太阳能的气象站。此模块可以放置在房子周围能连上WIFI的地方,可以放置在阳台接受太阳能无限续航,互联网远程监测家里温度湿度信息并统计。细节介绍如下:
软件方面:使用Arduino IDE编程,使用Yeelink平台统计数据,这个平台的优点是可以记录所有数据不会被删除,查看数据时缩放也很方便。因为是采集空气温度湿度信息上传服务器,所以采集频率可以低一点,一分钟一次即可,剩下的空余时间就进入睡眠模式,使用ESP.deepSleep(60000000);命令,同时要把GPIO16接到RST上,传输复位信号。等待60秒后复位,每次复位都要进行连接WIFI,获取传感器数据,通过tcp上传数据,然后再次进入睡眠。
电路方面:首先利用的是ESP8266作为主控,并且尽量减少周围外设的功耗,比如说去掉LED灯,上下拉电阻换成阻值更大的,FLASH换成超低功耗的,LDO也换成超低静态电流的。
电池方面:使用300mAh锂电池,实测充满电不接太阳能电池板时能续航3天左右,算下来平均功耗为4mA左右,如果采用5000mAh的电池则理论能续航50天,这是一个相当长的时间我们不用操心它的电量问题。当然我没有那么长时间去进行实际测试,只能小容量测试,尽管如此,我也等待了两个多星期测试才编写此文章。
太阳能电池板:我使用的是标称5-6V,80-140mA的太阳能电池板,功率平均约0.5W,用它给我们的手机几乎充不上电,但却能让我的气象站无限续航。第一次接触太阳能电池板,在此之前就知道转换效率极低,实际发现它对光线的要求也极为苛刻,只有在非常充足的光线下才能达到5V的电压,开始测试那几天一直阴天,也没能测试最大电流。充电IC使用TP4057,限制100ma电流,在特殊时刻也可以用充电宝补电。
功耗分析:初期测试时睡眠状态下整体电流约为0.2mA,在启动系统后平均电流为70mA,平均2~4秒内完成连接采集上传,算下来平均电流3.5mA,跟实验测试的4mA出入不大,并且实际上要考虑电池容量虚标,网络连接缓慢延迟等问题,所以整体功耗在可接受范围内。
实验结果:接入太阳能电池板后效果非常棒,光线充足的情况下,一下午就能把电池充满,就算在郑州这样的雾霾城市,看不见太阳一天下来也能维持电池电量不减,只有在连续阴天下才会出现供能不足,尽管如此,在阴天的白天里电量也会出现小幅度回升。
PS:第一次见到锂电池充满电的曲线图,跟官方资料非常吻合,大于4.2V充电截止,放电到4.1V重新充电。
当然现在设计还不够完善,电路还只是用洞洞板焊接,程序也不够优化,没能在多WIFI选择上更省电,smartConfig也没有加入,在没有网络的时候暂存数据统一上传。这些在接下来的改进中可能就会一一添加。
最后附上我的私人气象站的开放传感器数据
http://www.yeelink.net/devices/355407