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