本項目通過MSP430開發(fā)而成,貼近生活的解決方案,,融合多傳感器,讓環(huán)境質(zhì)量得到有效監(jiān)控,
起初做這個項目的念頭在2013年3月,當(dāng)時覺得北京的空氣實在是太差了,需要做一個設(shè)備放在窗外做實時提醒用,所以就用飯盒+MSP430打造了一個室外空氣探測器,后來又發(fā)現(xiàn)物聯(lián)網(wǎng)網(wǎng)站不錯,可以把數(shù)據(jù)上傳到物聯(lián)網(wǎng)上,于是飯盒加上了藍牙,用PC來上傳數(shù)據(jù)。5月份的時候感覺PC整天開著太費電了,于是想用Arduino來完成上傳的功能,于是把無線鏈接換成了NRF24L01。6月突發(fā)奇想,想給家里省點電,于是在家中的電熱水器上加上了MSP430做的另一個節(jié)點,7月參加了樂聯(lián)網(wǎng)的網(wǎng)絡(luò)電表計劃,于是整套系統(tǒng)里面有了第三個節(jié)點。
下面是盒子的功能介紹:
裸板是一片MSP430的轉(zhuǎn)接板+洞洞板,板上有一片MSP430+SPI Flash用作數(shù)據(jù)存儲
有一片RTC時鐘用于記錄時間,還有一顆電池,和JTAG調(diào)試口。
顆粒物監(jiān)測器初期使用的是DSM501和DDP42NS,后來感覺這兩顆不夠穩(wěn)定,數(shù)據(jù)也不太精確,然后換成了日貨……
Sharp的gp2y1010au。夏普這顆電路控制比較復(fù)雜,但精度確實不錯,而且很省電。
下圖是早起用的DSM501的版本
因為空氣探測器是放在室外的,為了整體防潑水,所以用了樂扣樂扣的飯盒,工作半年以來抗大雨無數(shù),完全沒問題。
但是密閉和檢測空氣顆粒物是矛盾的,所以在盒子的隱蔽處有進風(fēng)口和出風(fēng)口,有一顆微小的風(fēng)扇來提供空氣流
這顆風(fēng)扇真的很小,而且只有5V 22mA的耗電。
這是傳感器組,溫濕度傳感器是DHT22,環(huán)境光傳感器是BH1750FVI,大氣壓力和溫度傳感器是BMP085
GPS是SIRF3貌似。電池是一顆3700mah的鋰電,板上自帶1A的3段充電電路
最早做項目的時候曾經(jīng)想過用PC和Android手機來提交數(shù)據(jù),所以還寫了PC和安卓的客戶端app
下面是熱水器模組的介紹:
模組是安裝在熱水器里面的,海爾電熱水器的側(cè)面板很好拆,于是就直接裝在泡沫里面了。
此控制器裝有一個NRF24無線通信模塊,另外有一只DS18B20溫度傳感器粘在金屬內(nèi)膽上面讀取溫度(數(shù)據(jù)有一定遲滯)
單片機有一根GPIO接在熱水器的開關(guān)按鍵上面,所有的過熱保護措置還由熱水器自身實現(xiàn),模塊只控制開關(guān)
下面是電能表模塊的介紹:
模塊是樂聯(lián)網(wǎng)團購的,能測量功率因數(shù),電壓,電流,總功率,總耗電等……
外部通信板還是MSP430+NRF24,并且還有一顆DS18B20用來讀取電表箱外側(cè)的溫度
下面是Arduino主控的介紹:
買過多塊Arduino,最初是Leonardo,但是寫著寫著發(fā)現(xiàn)存儲空間不夠了,后來換了MEGA2560,
代碼空間夠了,但發(fā)現(xiàn)運行不穩(wěn)定,大概4-5個小時就會自動重啟,又入了DUE,發(fā)現(xiàn)每隔20多小時還是自動重啟……
無奈了于是作罷。
主控帶有:1、紅外感應(yīng)器,用于檢測家中人的活動狀況,然后自動控制熱水器水溫
2、DHT22,檢測家中溫濕度
3、光照度感應(yīng)器,檢測家中光照
4、帶有一只EEPROM,用來存儲一些掉電可能會丟的數(shù)據(jù)(因為總是20多個小時就莫名重啟了)
由于arduino可以跑多段代碼,同時上傳數(shù)據(jù)到y(tǒng)eelink和樂聯(lián)網(wǎng),所以兩邊網(wǎng)站上都可以查詢數(shù)據(jù)
附檔還有所有程序的源碼,因為是個人興趣項目,本人也不是專業(yè)軟件工程師(其實是硬件工程師啦)
所以基本都沒怎么寫注釋…… 各位湊合著看啦
所有的pin定義都在各工程的pinmap.h里面
所有的全局變量和全局函數(shù)都在variabledefine.h里面
工程請用IAR Embedded Workshop for MSP430打開
Arduino的工程說明:
HomeController.ino是變量聲明和初始化函數(shù)
HTTPServer.ino是HTTP Server的主要工程,提供了web界面來查看各傳感器參數(shù)
LeWei50.ino是樂聯(lián)網(wǎng)的提交模塊
Misc.ino是一些雜七雜八的東東
NetProtocol.ino是NRF24L01各節(jié)點中間的通信協(xié)議解析,我比較偷懶,沒弄什么自動組網(wǎng)之類的,各節(jié)點編號都是寫死的
NRF24L01.ino是NRF24的功能函數(shù)
NTPClient.ino是NTP時間校準(zhǔn),負(fù)責(zé)從NTP Server取回當(dāng)前時間
Sensors.ino是所有Arduino板上的傳感器函數(shù)
SubmitData.ino是yeelink的提交函數(shù),以及去各節(jié)點的定時讀取函數(shù)
YeeLight.ino里面是yeelight的控制函數(shù),根據(jù)人的活動以及熱水器水溫來控制yeelight當(dāng)個小夜燈
1363392271.9115.jpg (419.27 KB, 下載次數(shù): 5)
1363612360.8027.jpg (275.88 KB, 下載次數(shù): 4)
1363612375.2532.jpg (286.05 KB, 下載次數(shù): 4)
51hei.png (4.97 KB, 下載次數(shù): 84)
下載附件
2020-1-19 01:51 上傳
全部資料51hei下載地址:
|