起因
为什么要想起要搞一手低功耗呢?是因为我晚上打游戏的时候打着打着就很热,打开空调呢不一会就很冷,所以就心想有没有可以查看温度的东西方便我开关空调。嗯…然后我就在某宝上一搜。行!九块九,真便宜啊,但是作为一个刚刚入行的嵌入式工程师是不屑于某宝成品的。说干就干,我先是在网上找了相关资料,给我启发较大的一篇是 小米温度计的拆解。结合以上资料我又查找了一些别的资料然后制定了一个初步的方案。
方案设计
首先确定主控,首先定位是我自己熟悉的,然后尽可能低功耗,然后我就去翻了st的官网,行。很巧他们有L系列的低功耗产品。某宝一搜STM32L051C8T6货比较多,那好就选定它了。以下是这款芯片的相关参数。
对我而言,相比于其它功能我更关注他的功耗情况和电压范围,1.65V-3.6V的宽电压范围完全符合一节纽扣电池的电压,加上不到1uA的最低待机电流,对我我现在的需求只能说十分适合。
确定了主控和电压范围选择外围传感器就是水到渠成了,然后可恨的是小米的方案我是找遍了都没有卖的,有的话散装也非常贵,唯一一个能买到的温湿度传感器还还买错了(气死人了)。然后就只能在网上自己找了,好在资料都非常多,以下是我最终确定的方案。
时钟BM8563,电压范围和待机电流十分香。
温湿度AHT20 也很香
然后就是显示屏了,比较可惜的是我没有找到像小米那么低功耗的显示屏,所以用了一款相对来说功耗比较低的液晶屏来使用参数如下:
显示静态内容电流在150uA,相比平常那些毫安级别的显示屏已经好多了。
硬件电路设计
总体来说电路设计十分简单,给出图片瞅瞅就行
然后画个板子
然后就是等待嘉立创发货了
软件设计
直接上连接,软件总体来说不是很难,但是我想尝试一下新东西。
显示屏我移植了简单图形库,这个我之前写过一篇笔记,然后就是用一下状态机设置一下时间的。软件目前还没写完。完成之后我会将所有资料全部同步到gitee中。
结构设计
结构就是给这个做个壳子,这里放上我目前的初稿,后续我可能会开几个按键孔和缩小一下体积。
成品大致就是上图的样子。
测试
我做好之后自己使用了一周,然后就当我周六想继续改进的时候,好嘛,屏幕不亮了,难道是没电了?换节电池,行!亮了。(我之前是使用的睡眠模式,并没有详细的测量功耗),然后我就测试了一下待机功耗1.3mA。给我惊呆了,要知道我现在已经降频2MHz了我以为会按照数据手册上的88uA/MHz呢,没办法只能自己测试了。测试结果如下:
经过一番调试,总算把功耗降下来了,然后小小计算一下一节纽扣电池220mA
220*1000/120/24=76天
除去刷新所耗使用个两个月不成问题。
总结
到这里总体方案验证已经通过,接下来就是完善的事情了。回顾整个方案其实并没有十分难的地方,但是即使如此也让我踩了好多坑,最气人的就是开始用SHT40做温湿度传感器测了半天没数据,怀疑是自己驱动写的有问题,然后一遍遍对数据手册,始终找不到问题,然后拿示波器量发现是传感器没有回应。还以为是焊接有问题,重新贴了块板子还是不行,到最后发现是某宝购买的芯片和数据手册对不上,买成了模拟输出了实际应该是iic接口的才对。就十分崩溃,然后找遍了都没发现小米那个同款,好嘛!只能换方案然后现在才换成了AHT20。还好我不是做硬件的,不然高低给我整郁闷了,贴块板子要好久,贴好没法用。