前言
在接触到物联网后总是想着将自己的所学应用到实处,人在外地上学,也十分关心家里的天气状况。此篇文章记录自己学习STM32中开发的一个小应用,利用STM32的睡眠功能通过NRF24L01(2.4G模块)将ATH10、BH1750和BMP280的数据发送到物联网网关(使用合宙的ESP32-C3),再通过网关使用MQTT协议发送给手机APP(Android studio开发)。其中电池使用太阳能板充电,可做到无限续航。
实现在公网查看家里室内外的温湿度数据,并可根据光照度传感器和水滴传感器的数据来判断是否下雨
本篇涉及到:STM32低功耗、温湿度传感器的应用(IIC)、墨水屏、Android、天气时钟
一、硬件选型
STM32
- 主控选择STM32F103C6T6,实际上选择STM32Lxx系列比较好,但是因为某些原因选择了F103C6T6。
- 温湿度传感器使用AHT10,此款传感器测量精准功耗仅有几微安
- 大气压强传感器:BMP280同样是低功耗传感器
- BH1750以及水滴传感器
STM32 PCB
PCB上使用TP4056充电管理芯片和AMS1117降压芯片(后来更换为超低功耗的HT7533,整板功耗休眠时低至0.5ua)。
因使用的LDO和板子上有很多灯,所以功耗不算低。不过对于有太阳能板充电来说这点功耗也不算高,主要还是学习STM32的睡眠模式。
物联网网关
使用合宙的ESP32-C3搭配NRF24L01。这部分就很简单,画个PCB把传感器连接起来就行,也没有低功耗的要求,就是接受到NRF的数据通过MQTT发送出去即可
桌面终端
墨水屏搭配ESP32-C3使用Arduino编写锂电池供电,可放在桌面上当个摆件。能够自动联网获取时间和当地天气状况,并且接受MQTT的数据
移动终端
Android studio 编写,能够连接MQTT服务器,仅仅作为移动显示终端使用。
结束语
这个小应用功能很简单,一个传感器加上太阳能板供电配合上MQTT协议的使用能够让在外地上学的我监控到家里的一些天气状况。
想要以上所有完整工程的可以私我,稍后我也会上传到github