用饭盒+MSP430打造了一个室外空气探测器,后来又发现物联网网站不错,可以把数据上传到物联网上,于是饭盒加上了蓝牙,用PC来上传数据。5月份的时候感觉PC整天开着太费电了,于是想用Arduino来完成上传的功能,于是把无线链接换成了NRF24L01。6月突发奇想,想给家里省点电,于是在家中的电热水器上加上了MSP430做的另一个节点,7月参加了乐联网的网络电表计划,于是整套系统里面有了第三个节点。
下面是盒子的功能介绍:
裸板是一片MSP430的转接板+洞洞板,板上有一片MSP430+SPI Flash用作数据存储
有一片RTC时钟用于记录时间,还有一颗电池,和JTAG调试口。
颗粒物监测器初期使用的是DSM501和DDP42NS,后来感觉这两颗不够稳定,数据也不太精确,然后换成了日货……
Sharp的gp2y1010au。夏普这颗电路控制比较复杂,但精度确实不错,而且很省电。
下图是早起用的DSM501的版本
因为空气探测器是放在室外的,为了整体防泼水,所以用了乐扣乐扣的饭盒,工作半年以来抗大雨无数,完全没问题。
但是密闭和检测空气颗粒物是矛盾的,所以在盒子的隐蔽处有进风口和出风口,有一颗微小的风扇来提供空气流
这颗风扇真的很小,而且只有5V 22mA的耗电。
这是传感器组,温湿度传感器是DHT22,环境光传感器是BH1750FVI,大气压力和温度传感器是BMP085
GPS是SIRF3貌似。电池是一颗3700mah的锂电,板上自带1A的3段充电电路
最早做项目的时候曾经想过用PC和Android手机来提交数据,所以还写了PC和安卓的客户端app
下面是热水器模组的介绍:
模组是安装在热水器里面的,海尔电热水器的侧面板很好拆,于是就直接装在泡沫里面了。
此控制器装有一个NRF24无线通信模块,另外有一只DS18B20温度传感器粘在金属内胆上面读取温度(数据有一定迟滞)
单片机有一根GPIO接在热水器的开关按键上面,所有的过热保护措置还由热水器自身实现,模块只控制开关
下面是电能表模块的介绍:
模块是乐联网团购的,能测量功率因数,电压,电流,总功率,总耗电等……
外部通信板还是MSP430+NRF24,并且还有一颗DS18B20用来读取电表箱外侧的温度
下面是Arduino主控的介绍:
买过多块Arduino,最初是Leonardo,但是写着写着发现存储空间不够了,后来换了MEGA2560,
代码空间够了,但发现运行不稳定,大概4-5个小时就会自动重启,又入了DUE,发现每隔20多小时还是自动重启……
无奈了于是作罢。
主控带有:1、红外感应器,用于检测家中人的活动状况,然后自动控制热水器水温
2、DHT22,检测家中温湿度
3、光照度感应器,检测家中光照
4、带有一只EEPROM,用来存储一些掉电可能会丢的数据(因为总是20多个小时就莫名重启了)
由于arduino可以跑多段代码,同时上传数据到yeelink和乐联网,所以两边网站上都可以查询数据
乐联网的网关地址:
http://www.lewei50.com/u/g/1106
yeelink的网关地址:
http://www.yeelink.net/devices/4096
http://www.yeelink.net/devices/2109
http://www.yeelink.net/devices/3482
附档还有所有程序的源码,因为是个人兴趣项目,本人也不是专业软件工程师(其实是硬件工程师啦)
所以基本都没怎么写注释…… 各位凑合着看啦
所有的pin定义都在各工程的pinmap.h里面
所有的全局变量和全局函数都在variabledefine.h里面
工程请用IAR Embedded Workshop for MSP430打开
Arduino的工程说明:
HomeController.ino是变量声明和初始化函数
HTTPServer.ino是HTTP Server的主要工程,提供了web界面来查看各传感器参数
LeWei50.ino是乐联网的提交模块
Misc.ino是一些杂七杂八的东东
NetProtocol.ino是NRF24L01各节点中间的通信协议解析,我比较偷懒,没弄什么自动组网之类的,各节点编号都是写死的
NRF24L01.ino是NRF24的功能函数
NTPClient.ino是NTP时间校准,负责从NTP Server取回当前时间
Sensors.ino是所有Arduino板上的传感器函数
SubmitData.ino是yeelink的提交函数,以及去各节点的定时读取函数
YeeLight.ino里面是yeelight的控制函数,根据人的活动以及热水器水温来控制yeelight当个小夜灯