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