摘 要: 為解決普通計算機愛好者及在校學生難以入門物聯(lián)網(wǎng)和嵌入式技術(shù)的問題,介紹了一種基于ARM的簡單而強大的微型計算機,并利用該計算機平臺設(shè)計和實現(xiàn)了智能監(jiān)控、火警預(yù)警和溫濕度監(jiān)測。
關(guān)鍵詞:ARM;Raspberry Pi;監(jiān)測;智能家居;溫/濕度監(jiān)測;紅外拍照
0 引言
隨著集成電路技術(shù)的發(fā)展,計算機的體積繼續(xù)縮小,各方面的性能飛速提高,而價格卻不斷下跌,計算機逐漸走進人們生產(chǎn)生活的各個領(lǐng)域。物聯(lián)網(wǎng)和集成電路的快速發(fā)展及人們對居住環(huán)境舒適、便捷、安全等要求的不斷提高,智能設(shè)備及智能家居已經(jīng)呼之欲出[1]。目前,國內(nèi)外都對智能家居進行了廣泛而深入的研究及建設(shè),然而大多數(shù)開發(fā)組都是自己設(shè)計電路、焊接元件,這就將很多非電子專業(yè)的電腦愛好者限制在了門外。本文介紹了基于Raspberry Pi的監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn),大大降低了普通愛好者及個人開發(fā)智能家居的難度。
Raspberry Pi[2]是一款基于ARM的只有一張信用卡大小的單板機計算機。它由英國的Raspberry Pi基金會所開發(fā),目的是以低價硬件及自由軟件刺激在學校的基本的電腦科學教育。Raspberry Pi只有信用卡大小,B板配有基于ARM11的700 MHz處理器,512 MB內(nèi)存,RJ45以太網(wǎng)接口和GPIO、UART、I2C、SPI等接口。本文利用GPIO(通用輸入/輸出接口)實現(xiàn)了溫度/濕度監(jiān)測、火焰警報,并且紅外配合攝像頭實現(xiàn)了有人時才拍照存檔及通過手機或電腦查看“MJPG-streamer[3]”實時視頻流的一種智能家居解決方案。
1 系統(tǒng)設(shè)計
1.1 系統(tǒng)架構(gòu)
智能家居采用三層結(jié)構(gòu),用戶可以通過PC或手機登錄瀏覽器查看存儲在服務(wù)器上的溫度、濕度、照片、火焰異常。其中照片以時間為文件名,火焰異常時記錄時間,用戶可以查看指定時間段的照片或火焰異常。用戶還可以通過PC或手機登錄瀏覽器直接查看終端攝像頭實時視頻監(jiān)控。終端將收集到的溫度、濕度、照片上傳到CentOS服務(wù)器,用戶通過瀏覽器查看終端上傳到服務(wù)器的數(shù)據(jù)[4]。當查看實時視頻監(jiān)控時用戶通過客戶端直接查看終端視頻流。完整智能家居系統(tǒng)框架如圖1所示。
1.2 終端模塊
終端由Raspberry Pi B板、獲取溫濕度的DHT11傳感器模塊、人體紅外感應(yīng)模塊、火焰?zhèn)鞲衅髂K和用于拍照及視頻監(jiān)控的攝像頭模塊組成。其中DHT11[5]溫度測量范圍為0~50℃,濕度測量范圍為20 %RH~90 %RH,人體紅外感應(yīng)模塊為 HC-SR501,火焰?zhèn)鞲衅髂K基于LM393,攝像頭模塊為Raspberry Pi Camera模塊。終端模塊及接口如圖2所示。
2 系統(tǒng)實現(xiàn)
2.1 各模塊實現(xiàn)
Raspberry Pi終端開機后啟動監(jiān)控主程序,主程序創(chuàng)建3個進程,分別為溫濕度監(jiān)測進程、火焰預(yù)警進程和人體紅外監(jiān)測進程。系統(tǒng)每隔60 s通過GPIO激活溫濕度傳感器獲取一次數(shù)據(jù)?;鹧骖A(yù)警進程每隔3 s查詢一次火警傳感器狀態(tài)是否正常,若不正常則發(fā)出預(yù)警并記錄時間。人體紅外監(jiān)測進程查詢?nèi)梭w紅外狀態(tài)并進行拍照,為了減少拍照數(shù)量且不漏拍重要照片,本文設(shè)計了兩種拍照方式:連拍3張和拍1張。當監(jiān)測區(qū)域內(nèi)之前沒有人活動,現(xiàn)在有人進入?yún)^(qū)域時采用第一種連拍3張方式;當監(jiān)測區(qū)域內(nèi)持續(xù)有人活動時采用第二種拍攝1張方式。為此,需要設(shè)置兩種狀態(tài):上次查詢狀態(tài)ilstate和本次查詢狀態(tài)iv,偽代碼如下:
while(true)
{
infr(iv); //獲取本次狀態(tài)
if(iv==1&&ilstate==0) //有人進入?yún)^(qū)域
{
拍照3張,時間間隔0.5 s;
}
else if(iv==1&&ilstate==1)
{
拍照1張;
ilstate=iv;
}
sleep(3);
}
火焰?zhèn)鞲衅骱腿梭w紅外傳感器是狀態(tài)傳感器,分別有3個接口:正極、接地和信號輸出口,當狀態(tài)發(fā)生轉(zhuǎn)變時信號輸出電平翻轉(zhuǎn),Raspberry Pi通過單個GPIO接口接收狀態(tài)轉(zhuǎn)變。本文使用GPIO1作為火焰?zhèn)鞲衅鞯男盘枡z測接口,即26個接口中的12號,GPIO4作為人體紅外傳感器信號檢測接口,即26個接口中的16號,GPIO6作為DHT11的通信接口,即26個接口中的22號。火焰?zhèn)鞲衅鞅挥|發(fā)后輸出高電平,當GPIO1檢測到高電平時則啟動預(yù)警。人體紅外傳感器被觸發(fā)后由輸出低電平轉(zhuǎn)變?yōu)檩敵龈唠娖?,GPIO4檢測到高電平后根據(jù)兩個狀態(tài)調(diào)用拍照功能。DHT11采用單個針腳實現(xiàn)與Raspberry Pi之間的同步和通信,一次完整的數(shù)據(jù)傳輸為40 bit,高位先出,數(shù)據(jù)格式為8 bit濕度整數(shù)數(shù)據(jù)、8 bit濕度小數(shù)數(shù)據(jù)、8 bit溫度整數(shù)數(shù)據(jù)、8 bit溫度小數(shù)數(shù)據(jù),8 bit校驗位,其時序如圖3所示。各模塊實物連接如圖4所示。
Raspberry Pi已經(jīng)安裝了Raspberry Pi Camera驅(qū)動,使用攝像頭前要進行設(shè)置,命令為sudo raspi-config,然后選擇Enable Camera 確認后關(guān)機就可以連接Raspberry Pi Camera模塊了。Raspberry Pi用raspistill命令配合參數(shù)拍照。將拍照時間設(shè)為照片文件名,方便以后按時間查看及分類,拍照及照片上傳代碼在shoot.sh腳本中,通過C++程序來調(diào)用此腳本。
MJPG-streamer[6]是基于IP網(wǎng)絡(luò)的命令行應(yīng)用程序,它從攝像頭獲取JPEG文件流發(fā)送到Firefox、Cambozola、VLC、Windows Mobile或者移動電話等包含瀏覽器的設(shè)備??梢岳脭z像頭對JPEG文件進行硬件壓縮,減少服務(wù)器上的CPU周期消耗,這為CPU資源不足的嵌入式設(shè)備或者常規(guī)服務(wù)器提供了一種輕量級的解決方案。例如,在一個200 MHz的路由器上960×720像素的文件流使用的CPU資源小于10% 。
使用“MJPG-streamer”需要安裝相關(guān)庫libjpeg8-dev,源碼下載方法可以使用wget 或者git:wget:https://codeload.github.com/jacksonliam/mjpg-streamer/zip/master;git pull: https://github.com/jacksonliam/mjpg-streamer.git。
2.2 代碼編寫
程序為每個模塊創(chuàng)建了一個進程,代碼托管在google code,可以使用git克隆或者打包下載,git下載地址為:https://pottery19@code.google.com/p/ccnu-smart-house/。進行編譯前要先安裝wiringPi庫和mysqlclient庫,安裝后make即可編譯鏈接生成運行文件main。
3 系統(tǒng)測試
經(jīng)測試系統(tǒng)基本達到了預(yù)定目標,獲得溫度、濕度數(shù)據(jù)如圖5所示,數(shù)據(jù)屬性分別為溫度、濕度、時間??梢钥吹讲⒉皇敲?0 s都產(chǎn)生一組數(shù)據(jù),這是因為DHT11不夠準確,通過校驗碼校驗刪除傳輸錯誤及明顯超過范圍的數(shù)據(jù)(如溫度大于100℃)后可得到大部分準確數(shù)據(jù)。
如圖6所示,人體紅外感應(yīng)模塊探測到有人活動時輸出高電平,記錄1。從圖7可以看到,攝像頭確實根據(jù)圖6所示紅外探測情況拍下了照片。火焰探測模塊探測到火焰時輸出低電平,記錄0,圖8為用火機測試情況,火焰探測確實根據(jù)嚴格的3 s時間記錄了有火焰時的時間。
遠程視頻測試如圖9所示,當畫面為20幀像素320×240時占用帶寬約為600 kb/s,畫面十分流暢,當畫面為10幀像素320×240時占用帶寬約為300 kb/s,畫面略有卡頓。
4 結(jié)束語
本文提出了一種新的智能家居方案,實現(xiàn)了智能家居遠程監(jiān)測系統(tǒng)功能,整個系統(tǒng)架構(gòu)簡單,功能擴展方便,在此系統(tǒng)設(shè)計上稍加修改即可添加更多功能的傳感器,實現(xiàn)更加智能的功能,可結(jié)合ZigBee實現(xiàn)無線傳輸,結(jié)合arduino實現(xiàn)更方便的管理。
參考文獻
[1] 朱仲英.傳感網(wǎng)與物聯(lián)網(wǎng)的進展與趨勢[J].微型電腦應(yīng)用,2010,26(1):1-3.
[2] Wikipedia. Raspberry_Pi [S/OL]. http://it.wikipedia.org/wiki/Raspberry_Pi.
[3] 肖兒良,毛海軍,鞠軍平,等.基于開源軟件MJPG_ Streamer的智能視頻監(jiān)控系統(tǒng)設(shè)計[J].微電子學與計算機, 2013,30(6):84-87.
[4] 劉政,袁國良,王麗芳.基于Cortex-M0 的室內(nèi)溫控系統(tǒng)的設(shè)計[J].中國科技信息,2011(8):165-166.
[5] D-Robotics UK. DHT11[S/OL].http://www.micro4you.com/files/sensor/DHT11.pdf.
[6] Jacksonliam. MJPG-streamer [CP/OL].https://github.com/jacksonliam/mjpg-streamer#.