《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Raspberry Pi的遠(yuǎn)程監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
基于Raspberry Pi的遠(yuǎn)程監(jiān)測(cè)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
2014年微型機(jī)與應(yīng)用第19期
鄭世玨, 徐 虹
華中師范大學(xué) 計(jì)算機(jī)學(xué)院,湖北 武漢 430079
摘要: 為解決普通計(jì)算機(jī)愛好者及在校學(xué)生難以入門物聯(lián)網(wǎng)和嵌入式技術(shù)的問題,介紹了一種基于ARM的簡(jiǎn)單而強(qiáng)大的微型計(jì)算機(jī),并利用該計(jì)算機(jī)平臺(tái)設(shè)計(jì)和實(shí)現(xiàn)了智能監(jiān)控、火警預(yù)警和溫濕度監(jiān)測(cè)。
Abstract:
Key words :

  摘 要: 為解決普通計(jì)算機(jī)愛好者及在校學(xué)生難以入門物聯(lián)網(wǎng)和嵌入式技術(shù)的問題,介紹了一種基于ARM的簡(jiǎn)單而強(qiáng)大的微型計(jì)算機(jī),并利用該計(jì)算機(jī)平臺(tái)設(shè)計(jì)和實(shí)現(xiàn)了智能監(jiān)控、火警預(yù)警和溫濕度監(jiān)測(cè)。

  關(guān)鍵詞:ARM;Raspberry Pi;監(jiān)測(cè);智能家居;溫/濕度監(jiān)測(cè);紅外拍照

0 引言

  隨著集成電路技術(shù)的發(fā)展,計(jì)算機(jī)的體積繼續(xù)縮小,各方面的性能飛速提高,而價(jià)格卻不斷下跌,計(jì)算機(jī)逐漸走進(jìn)人們生產(chǎn)生活的各個(gè)領(lǐng)域。物聯(lián)網(wǎng)和集成電路的快速發(fā)展及人們對(duì)居住環(huán)境舒適、便捷、安全等要求的不斷提高,智能設(shè)備及智能家居已經(jīng)呼之欲出[1]。目前,國(guó)內(nèi)外都對(duì)智能家居進(jìn)行了廣泛而深入的研究及建設(shè),然而大多數(shù)開發(fā)組都是自己設(shè)計(jì)電路、焊接元件,這就將很多非電子專業(yè)的電腦愛好者限制在了門外。本文介紹了基于Raspberry Pi的監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),大大降低了普通愛好者及個(gè)人開發(fā)智能家居的難度。

  Raspberry Pi[2]是一款基于ARM的只有一張信用卡大小的單板機(jī)計(jì)算機(jī)。它由英國(guó)的Raspberry Pi基金會(huì)所開發(fā),目的是以低價(jià)硬件及自由軟件刺激在學(xué)校的基本的電腦科學(xué)教育。Raspberry Pi只有信用卡大小,B板配有基于ARM11的700 MHz處理器,512 MB內(nèi)存,RJ45以太網(wǎng)接口和GPIO、UART、I2C、SPI等接口。本文利用GPIO(通用輸入/輸出接口)實(shí)現(xiàn)了溫度/濕度監(jiān)測(cè)、火焰警報(bào),并且紅外配合攝像頭實(shí)現(xiàn)了有人時(shí)才拍照存檔及通過手機(jī)或電腦查看“MJPG-streamer[3]”實(shí)時(shí)視頻流的一種智能家居解決方案。

1 系統(tǒng)設(shè)計(jì)

  1.1 系統(tǒng)架構(gòu)

  智能家居采用三層結(jié)構(gòu),用戶可以通過PC或手機(jī)登錄瀏覽器查看存儲(chǔ)在服務(wù)器上的溫度、濕度、照片、火焰異常。其中照片以時(shí)間為文件名,火焰異常時(shí)記錄時(shí)間,用戶可以查看指定時(shí)間段的照片或火焰異常。用戶還可以通過PC或手機(jī)登錄瀏覽器直接查看終端攝像頭實(shí)時(shí)視頻監(jiān)控。終端將收集到的溫度、濕度、照片上傳到CentOS服務(wù)器,用戶通過瀏覽器查看終端上傳到服務(wù)器的數(shù)據(jù)[4]。當(dāng)查看實(shí)時(shí)視頻監(jiān)控時(shí)用戶通過客戶端直接查看終端視頻流。完整智能家居系統(tǒng)框架如圖1所示。

001.jpg

  1.2 終端模塊

  終端由Raspberry Pi B板、獲取溫濕度的DHT11傳感器模塊、人體紅外感應(yīng)模塊、火焰?zhèn)鞲衅髂K和用于拍照及視頻監(jiān)控的攝像頭模塊組成。其中DHT11[5]溫度測(cè)量范圍為0~50℃,濕度測(cè)量范圍為20 %RH~90 %RH,人體紅外感應(yīng)模塊為 HC-SR501,火焰?zhèn)鞲衅髂K基于LM393,攝像頭模塊為Raspberry Pi Camera模塊。終端模塊及接口如圖2所示。

002.jpg

2 系統(tǒng)實(shí)現(xiàn)

  2.1 各模塊實(shí)現(xiàn)

  Raspberry Pi終端開機(jī)后啟動(dòng)監(jiān)控主程序,主程序創(chuàng)建3個(gè)進(jìn)程,分別為溫濕度監(jiān)測(cè)進(jìn)程、火焰預(yù)警進(jìn)程和人體紅外監(jiān)測(cè)進(jìn)程。系統(tǒng)每隔60 s通過GPIO激活溫濕度傳感器獲取一次數(shù)據(jù)?;鹧骖A(yù)警進(jìn)程每隔3 s查詢一次火警傳感器狀態(tài)是否正常,若不正常則發(fā)出預(yù)警并記錄時(shí)間。人體紅外監(jiān)測(cè)進(jìn)程查詢?nèi)梭w紅外狀態(tài)并進(jìn)行拍照,為了減少拍照數(shù)量且不漏拍重要照片,本文設(shè)計(jì)了兩種拍照方式:連拍3張和拍1張。當(dāng)監(jiān)測(cè)區(qū)域內(nèi)之前沒有人活動(dòng),現(xiàn)在有人進(jìn)入?yún)^(qū)域時(shí)采用第一種連拍3張方式;當(dāng)監(jiān)測(cè)區(qū)域內(nèi)持續(xù)有人活動(dòng)時(shí)采用第二種拍攝1張方式。為此,需要設(shè)置兩種狀態(tài):上次查詢狀態(tài)ilstate和本次查詢狀態(tài)iv,偽代碼如下:

  while(true)

  {

  infr(iv); //獲取本次狀態(tài)

  if(iv==1&&ilstate==0) //有人進(jìn)入?yún)^(qū)域

  {

  拍照3張,時(shí)間間隔0.5 s;

  }

  else if(iv==1&&ilstate==1)

  {

  拍照1張;

  ilstate=iv;

  }

  sleep(3);

  }

  火焰?zhèn)鞲衅骱腿梭w紅外傳感器是狀態(tài)傳感器,分別有3個(gè)接口:正極、接地和信號(hào)輸出口,當(dāng)狀態(tài)發(fā)生轉(zhuǎn)變時(shí)信號(hào)輸出電平翻轉(zhuǎn),Raspberry Pi通過單個(gè)GPIO接口接收狀態(tài)轉(zhuǎn)變。本文使用GPIO1作為火焰?zhèn)鞲衅鞯男盘?hào)檢測(cè)接口,即26個(gè)接口中的12號(hào),GPIO4作為人體紅外傳感器信號(hào)檢測(cè)接口,即26個(gè)接口中的16號(hào),GPIO6作為DHT11的通信接口,即26個(gè)接口中的22號(hào)?;鹧?zhèn)鞲衅鞅挥|發(fā)后輸出高電平,當(dāng)GPIO1檢測(cè)到高電平時(shí)則啟動(dòng)預(yù)警。人體紅外傳感器被觸發(fā)后由輸出低電平轉(zhuǎn)變?yōu)檩敵龈唠娖?,GPIO4檢測(cè)到高電平后根據(jù)兩個(gè)狀態(tài)調(diào)用拍照功能。DHT11采用單個(gè)針腳實(shí)現(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校驗(yàn)位,其時(shí)序如圖3所示。各模塊實(shí)物連接如圖4所示。

004.jpg

  Raspberry Pi已經(jīng)安裝了Raspberry Pi Camera驅(qū)動(dòng),使用攝像頭前要進(jìn)行設(shè)置,命令為sudo raspi-config,然后選擇Enable Camera 確認(rèn)后關(guān)機(jī)就可以連接Raspberry Pi Camera模塊了。Raspberry Pi用raspistill命令配合參數(shù)拍照。將拍照時(shí)間設(shè)為照片文件名,方便以后按時(shí)間查看及分類,拍照及照片上傳代碼在shoot.sh腳本中,通過C++程序來調(diào)用此腳本。

  MJPG-streamer[6]是基于IP網(wǎng)絡(luò)的命令行應(yīng)用程序,它從攝像頭獲取JPEG文件流發(fā)送到Firefox、Cambozola、VLC、Windows Mobile或者移動(dòng)電話等包含瀏覽器的設(shè)備??梢岳脭z像頭對(duì)JPEG文件進(jìn)行硬件壓縮,減少服務(wù)器上的CPU周期消耗,這為CPU資源不足的嵌入式設(shè)備或者常規(guī)服務(wù)器提供了一種輕量級(jí)的解決方案。例如,在一個(gè)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 代碼編寫

  程序?yàn)槊總€(gè)模塊創(chuàng)建了一個(gè)進(jìn)程,代碼托管在google code,可以使用git克隆或者打包下載,git下載地址為:https://pottery19@code.google.com/p/ccnu-smart-house/。進(jìn)行編譯前要先安裝wiringPi庫和mysqlclient庫,安裝后make即可編譯鏈接生成運(yùn)行文件main。

3 系統(tǒng)測(cè)試


005.jpg

  經(jīng)測(cè)試系統(tǒng)基本達(dá)到了預(yù)定目標(biāo),獲得溫度、濕度數(shù)據(jù)如圖5所示,數(shù)據(jù)屬性分別為溫度、濕度、時(shí)間。可以看到并不是每30 s都產(chǎn)生一組數(shù)據(jù),這是因?yàn)镈HT11不夠準(zhǔn)確,通過校驗(yàn)碼校驗(yàn)刪除傳輸錯(cuò)誤及明顯超過范圍的數(shù)據(jù)(如溫度大于100℃)后可得到大部分準(zhǔn)確數(shù)據(jù)。

  如圖6所示,人體紅外感應(yīng)模塊探測(cè)到有人活動(dòng)時(shí)輸出高電平,記錄1。從圖7可以看到,攝像頭確實(shí)根據(jù)圖6所示紅外探測(cè)情況拍下了照片?;鹧嫣綔y(cè)模塊探測(cè)到火焰時(shí)輸出低電平,記錄0,圖8為用火機(jī)測(cè)試情況,火焰探測(cè)確實(shí)根據(jù)嚴(yán)格的3 s時(shí)間記錄了有火焰時(shí)的時(shí)間。

006.jpg

  遠(yuǎn)程視頻測(cè)試如圖9所示,當(dāng)畫面為20幀像素320×240時(shí)占用帶寬約為600 kb/s,畫面十分流暢,當(dāng)畫面為10幀像素320×240時(shí)占用帶寬約為300 kb/s,畫面略有卡頓。

4 結(jié)束語

  本文提出了一種新的智能家居方案,實(shí)現(xiàn)了智能家居遠(yuǎn)程監(jiān)測(cè)系統(tǒng)功能,整個(gè)系統(tǒng)架構(gòu)簡(jiǎn)單,功能擴(kuò)展方便,在此系統(tǒng)設(shè)計(jì)上稍加修改即可添加更多功能的傳感器,實(shí)現(xiàn)更加智能的功能,可結(jié)合ZigBee實(shí)現(xiàn)無線傳輸,結(jié)合arduino實(shí)現(xiàn)更方便的管理。

參考文獻(xiàn)

  [1] 朱仲英.傳感網(wǎng)與物聯(lián)網(wǎng)的進(jìn)展與趨勢(shì)[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ì)[J].微電子學(xué)與計(jì)算機(jī), 2013,30(6):84-87.

  [4] 劉政,袁國(guó)良,王麗芳.基于Cortex-M0 的室內(nèi)溫控系統(tǒng)的設(shè)計(jì)[J].中國(guó)科技信息,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#.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。