本帖最后由 straka 于 2018-7-24 10:35 编辑
由于单位地处偏远,没有可用的准确的天气预报,今年冬天雾霾又实在很重,于是就想自己做个硬件实时采集气象数据发到服务器,供微信订阅号查询。 首先想到的是基于arduino平台,搭建各种传感器的数据采集端,通过联网模块发送至服务器,然后服务器对数据进行记录和格式处理,当打开微信订阅号发送查询请求时,服务器再将结果返回。 硬件模块: 温湿度模块,由于冬天室外可达零下十几度,为了保证测量范围和精度,放弃常用的DHT11选择DHT22,5V/1.5mA,仅占用一个数字IO口。 RTC模块,根据时间信息进行程序控制。比如晚上降低采集频率节省电能。选择DS1302,1~2mA,占用两个数字IO口,另有一个片选口。 Wifi模块ESP8266,开始设想的是用GSM模块发送,但是功耗较大不容易控制,用wifi模块的弊端是采集器周围必须有wifi覆盖,限制了采集器的放置。5V,66mA,工作电流大,但是不必常开,休眠电流小,uA级可忽略,使用uart总线。 降雨检测模块(定性)。5V/5mA,占用一个模拟输入口。 气压检测模块BMP180,3.3V/1~2mA,使用SPI总线。 PM2.5模块,选择的是某宝国产的模块,5V/150mA,空载48mA。由于PM2.5耗电巨大,故增加继电器模块当不需要PM2.5工作的时候使得PM2.5断电,选择常开继电器,工作时通电闭合电路使得PM2.5模块工作。串联合适的电阻,使得继电器工作电流控制在约5mA(2~4mA触发),uart总线。 主控选择简单易用的Arduino平台,选择mini为了降低模块整体大小能放到气象箱内。3.3V/20mA,休眠电流微安级可忽略。 太阳能电池板:峰值可达12V/3W,给3.7V2600mAh的充满电只需4个小时。 3.3V降压稳压模块,因为很多模块是3.3V工作的,所以需要降压,用的是AMS1117-3.3V。 5V升压稳压模块,主要是将单节锂电池的电压升至5V以支持部分模块工作,某宝买的,没有型号。 全模块待机电流约15mA,满负荷工作时约380mA,每次采集全部信息需要1分钟,按照每小时采集一次,全天需要的电能约5V/512mAh,3.7V2600mAh锂电池按照90%转换效率,可以支持4.5天的工作时长,而太阳能电池板在即使阴天也能提供一定的输出,因而,理论上该装置是可以持续工作的。 【连线】: 电路图就不画了(我自己是手画了个图就照着焊了=_=!),合理分配引脚,没什么多余的外围电路元件,都是引用的模块。。。 【代码】: 忙活了半天,21ic的发帖编辑功能实在不友好,随便贴点代码就超字数了,30k??所以还是看原博客吧,这里就给出链接得了,详细内容看原博客 http://www.straka.cn/blog/meteorological_info_collecter/
图1 半成品电路
图2 电路完工
图3 装箱
图4 成品外观 如有疑问,可以留言! 【附录】 代码及相关资料链接: 原文链接: http://www.straka.cn/blog/meteorological_info_collecter/ 如原博客访问不畅,也可从下述地方下载 【BMP180】 【DHT22-AM2302】 【DS3231】 【PM2.5】 【ESP8266】 【Enerlib】 【资料合集】
|