设计一个ESP32太阳能气象站
这是我第一个物联网项目,想搭建一个气象站并将数据发送到平台。
位置
系统将安装在我的阳台上,用于实时获取温度、湿度和气压。
FireBeetle
本项目所选用的微控制器是DFRobot提供的FireBeetle ESP32物联网微控制器。
传感器
所有物理参数均由BME280传感器提供。更多详细信息请参阅维基页面。
电源
为了使系统完全“无线化”,所需的电力由两个6V太阳能板提供,每块可输出2W功率。电池单元将并联连接。产生的电能随后储存在一个3.7V聚合物锂离子电池中,容量为±1000mAh。
DFRobot的太阳能锂电充电模块将负责能量管理。
组件
连接组件
FireBeetle ESP32物联网微控制器由连接到电池输入端口的3.7V电池供电。太阳能电池板则接入电源输入端口(PWR In)。FireBeetle ESP32物联网微控制器的Vcc和GND端口分别连接至太阳能锂电池充电器的输出端口(Vout)。
BME280的电源来自FireBeetle ESP32物联网微控制器的3.3V接口,通信通过I2C线路(SDA/SCL)进行。
为了将所有组件固定在盒内,我使用了电路板、一些接头和电线。
基本思路如下:
最终效果:
对于太阳能电池板,我仅用热熔胶将其固定在盒子的顶部盖板上。由于盒子本身已有孔洞,无需额外打孔。
所有部件安装完毕,即可进行组装。
代码
要使用我的代码,您需要进行一些修改。
首先,您需要设置自己的Wi-Fi网络名称和密码。
此外,如果您愿意,还可以设定新的休眠时间间隔。
在您的邮箱验证通过后,即可进入“频道”页面并创建一个新频道。
添加您想要上传的变量,本项目中包括温度、湿度和气压。
向下滚动并点击“保存频道”。
之后,您可以进入“API密钥”部分,获取API写入密钥,并将其添加到您的代码文件中。
如果一切正确,您的气象站将开始向您的频道发送数据。
结论
和以往一样,我的项目中总会为未来的改进留出空间,这一点也不例外。
在开发过程中,我开始关注系统的功耗问题。我已经将ESP32和BME280设置为睡眠模式,但功耗仍然约为2mA!由于BME280是主要消耗能量的部件,因此我可能需要一个开关,在睡眠模式下完全关闭该模块。
另一个有趣的功能是获取电池电压。经过对ESP32部分内部功能的调查和测试,目前尚未找到有效的方法。因此,我可能会添加一个分压器,并将其连接到模拟输入端口,直接读取电压值。如果你们有更优的解决方案,请随时告知。
本文编译自hackster.io





