壹
本項目開發了一種家庭設備控制平臺,提供家庭環境的實時監控功能(溫度、濕度、火災報警),提供安防功能(視頻監控,紅外人體識別,錄像和抓拍),針對老人和職場人士的日常事務管理方案,此外還有家庭ftp服務器,wifi熱點等輔助功能。系統以樹莓派及openHAB2為基礎,力圖將家電設備納入統一管理,提供高度集成的管理界面,可通過手機、電腦直接對家庭環境進行監測和控制。
系統設計方案
貳
1. 總體設計
本系統以樹莓派和openHAB2為基礎,結合單片機控制的傳感器,實現輔助管理平臺的功能。其中,以flask框架建立web服務器,實現與openHAB2的交互。本服務器向下通過GPIO口與單片機通訊,接收單片機上各個傳感器的狀態;向上與openHAB2交互,可以實時返回請求數據或傳遞用戶命令,執行相關功能。
2. 樹莓派系統設計
樹莓派作為本地服務端,兼顧flask框架下webserver的實現和openHAB2的運行。Webserver結合Rpi.GPIO模塊以實現和單片機的通訊。數據獲取方式為自定義的“接收請求-發送數據”的被動模式,該模式是阻塞式設計,數據的發送和接收完全由樹莓派控制,增強可靠性。從單片機獲得的數據在服務器中進行處理,之后直接返回給openHAB2。OpenHAB2中的界面為自定義界面,每個磁貼實現單獨的一種或一個功能,該頁面支持用戶根據自身需要進行更改,方便后期添加新功能。
3.單片機系統設計
本系統使用廉價的51單片機做下位機,單片機負責管理溫度傳感器、濕度傳感器、煙霧傳感器、蜂鳴器。人體紅外識別模塊從單片機系統中脫離出來,單獨委托給樹莓派直接管理,以提高系統反應速度。
硬件系統設計
叁
1.單片機的設計
① 程序目的:通過c51單片機讀取DHT11溫度濕度傳感器的數據,以及MQ-2煙霧傳感器的數據,并使用一種自定義的數據傳輸方式,將讀取到的數據傳輸給樹莓派,由樹莓派處理傳輸的數據。
②程序思路:讀取DTH11溫度濕度傳感器中的數據(在wendushidu.c中),將讀取到的40位二進制數據,取其前16位轉化為三位十進制數字(濕度),取中間16位轉化為有一位小數的三位十進制數字(溫度),將濕度與溫度合并轉化為六位十進制數據并將其傳送給main.c進行處理。
讀取MQ-2煙霧傳感器的數據(在main.c中),將煙霧傳感器輸出高低電平給單片機的P2^6引腳,判斷引腳的高低電平就可以知道周圍環境煙霧是否達到設定值。
C51與樹莓派的通訊:在main.c中將從wendushidu.c接收的六位十進制數據轉化為有三位十進制數字(濕度),三位十進制數字(溫度),都帶有一位小數,將接受到的煙霧傳感器數據轉化為一位十進制數據。將每一位十進制數據轉化為四位二進制數據,有7位十進制數據,轉化為28位二進制數據,其中前12位為濕度,中間十二位為溫度,最后四位為煙霧標志值。當樹莓派發送給c51的P3^2管腳一個低電平時,c51觸發中斷,進入main.c中的中斷函數。當樹莓派發送給c51的P3^1管腳一個高電平時,c51的P2^1便發送給樹莓派一個高低電平,也就是一位二進制數據,c51等待下一次P2^1管腳低電平,樹莓派給P2^1管腳高電平。重復上述操作28次,便將濕度溫度煙霧標志值這28位二進制數據傳遞給樹莓派,樹莓派將c51的P3^2管腳拉高,結束完整的一次傳輸。重復中斷操作,就可以實現實時讀取傳感器數據并傳輸數據到樹莓派。
③ 溫度濕度傳感器DTH11:DHT11是一款有已校準數字信號輸出的溫濕度傳感器。 其精度濕度+-5%RH, 溫度+-2℃,量程濕度20-90%RH, 溫度0~50℃。DHT11數字溫濕度傳感器是一款含有已校準數字信號輸出的溫濕度復合傳感器,它應用專用的數字模塊采集技術和溫濕度傳感技術,確保產品具有極高的可靠性和卓越的長期穩定性。傳感器包括一個電阻式感濕元件和一個NTC測溫元件,并與一個高性能8位單片機相連接。因此該產品具有品質卓越、超快響應、抗干擾能力強、性價比極高等優點。每個DHT11傳感器都在極為精確的濕度校驗室中進行校準。校準系數以程序的形式存在OTP內存中,傳感器內部在檢測信號的處理過程中要調用這些校準系數。單線制串行接口,使系統集成變得簡易快捷。超小的體積、極低的功耗,使其成為該類應用中,在苛刻應用場合的最佳選擇。產品為4針單排引腳封裝,連接方便。
DHT11與c51的接線說明▼
將DHT11的2引腳接到c51的P3^6引腳,VCC接5v正電源,GND接地;
DHT11的程序說明:見程序文件c51程序.txt
1)初始化DHT11 見函數DHT11_start()
2)從DHT11中讀取一位數據 見函數DHT11_rec_byte()
3)從DHT11中讀取四十位數據,并將其轉化為濕度溫度,返回 出函數見函數DHT11_receive()
④煙霧傳感器MQ-2:適用于家庭或者工廠的氣體泄漏檢測裝置,適宜與液化氣,丁烷,丙烷,甲烷,酒精,氫氣,煙霧等檢測裝置。故因此,MQ-2可以準確來說是一個多種氣體探測器。MQ-2的探測范圍極其的廣泛。它的優點:靈敏度高、響應快、穩定性好、壽命長、驅動電路簡單。
MQ-2的工作原理:MQ-2型煙霧傳感器屬于二氧化錫半導體氣敏材料,屬于表面離子式N型半導體。處于200~300攝氏度時,二氧化錫吸附空氣中的氧,形成氧的負離子吸附,使半導體中的電子密度減少,從而使其電阻值增加。當與煙霧接觸時,如果晶粒間界處的勢壘收到煙霧的調至而變化,就會引起表面導電率的變化利用這一點就可以獲得這種煙霧存在的信息,煙霧的濃度越大,導電率越大,輸出電阻越低,則輸出的模擬信號就越大。
調定MQ-2上的螺母,就可以調節檢測的限定值,當未達到限定值時,DO輸出高電平;當煙霧或有害氣體濃度過大時,達到限定的濃度值,DO輸出低電平。
MQ-2與c51接線說明:
MQ-2有四個管腳,分別為VCC,GND,AO,DO。VCC管腳接+5V,GND管腳接地,AO懸空,DO接c51上的P2^6;
MQ-2的程序說明:見c51文檔中的main.c文件
MQ-2的DO管腳發出的電平傳遞到c51上的P2^6上,讀取P2^6上的電平高低就可以判斷是否周圍環境的煙霧有害氣體濃度是否達到限定值,當達到限定值時,P2^6讀取到低電平;當未達到限定值時,P2^6讀取到的時低電平。
2.樹莓派GPIO口設計
對樹莓派GPIO口的設計上,采用單獨功能的GPIO口進行通訊。其中單片機由樹莓派GPIO模塊供電,樹莓派與下位機通訊使用三個引腳,樹莓派控制臺燈功能的實現使用了區別于單片機供電的另外兩個電源和兩個地,繼電器模塊使用一電源,臺燈供電由繼電器控制,繼電器作用信號由樹莓派控制,向上由openHAB2的用戶界面經用戶觸發。
3.其他器件的連接
蜂鳴器直連在煙霧監測模塊上,不經過單片機,保證可靠。
軟件設計方案
肆
1.OpenHAB2的介紹和設計
①介紹
openHAB全稱為open Home Automation Bus,即開放式家庭自動化總線,該項目旨在為家庭自動化構建提供一個通用的集成平臺。openHAB是一個純Java打造的開源項目,完全基于OSGi(Open Service Gateway Initiative),并使用Jetty作為web服務器。Jetty和Equinox OSGi運行時一起構成了openHAB的核心基礎。
? 工作原理
openHAB的設計是廠商中立的,且與硬件/協議無關。openHAB通過綁定(binding),匯集了不同的總線系統、硬件設備和接口協議。這些綁定可以通過openHAB事件總線發送和接收命令,并更新狀態。開發者可以在openHAB的基礎上設計獨特的操作界面,以開放自己的家庭自動化系統,或者利用其他技術來創建設備的新的控制方式。
? 平臺架構
openHAB平臺架構圖如上所示。openHAB平臺架構具有極強的模塊化設計特點,用戶可以動態的向平臺添加新的功能,移除不需要的模塊?;诖颂匦?,在平臺開發過程中,可以更加靈活的對系統的功能進行控制和擴展。
②設計
? 總體設計
openHAB平臺的總體設計示意圖如下所示。
用戶交互界面我們采用openHAB提供的HABPanel,該UI界面具有美觀、易操作、信息展示全面的特點。通過添加窗口小部件(Widget)即可將我們所需的功能模塊添加到用戶界面上,進行操作與展示。
總體設計分為五個模塊,分別是:天氣預報模塊、燈光控制模塊、攝像監控模塊、溫濕度檢測模塊和日程管理模塊。
? 天氣預報模塊
天氣預報模塊示意圖如下所示。
天氣預報模塊使用openHAB提供的weather binding。通過配置該binding,調用天氣服務提供商提供的天氣預報API獲取天氣信息,然后在openHAB配置文件中將這些天氣服務數據item化,最后在HABPanel的Widget中進行調用,即可將天氣情況展示在界面上。在widget中天氣數據會通過后臺服務傳遞的數據進行實時更新。
Item配置文件代碼如下:
Weather Binding配置文件代碼如下:
此處我們使用的是ForecastIo提供的API,該API支持五天的天氣預報數據。通過輸入ForecastIo提供的API(apikey)以及目標地的經緯度(latitude、longtitude)便可獲得所需地點的天氣數據。
? 燈光控制模塊
燈光控制模塊示意圖如下圖所示。
燈光控制模塊使用openHAB提供的HTTP Binding。通過在openHAB配置文件中生成燈光控制開關實例,然后該實例調用HTTP Binding服務向基于Flask框架實現的本地服務器發送開關命令從而實現燈光的控制。在HABPanel界面生成Button Widget,調用燈光控制開關實例,然后便可以通過點擊該按鈕實現對燈光的開關控制了。
Item配置文件代碼如下:
? 攝像監控模塊
攝像監控模塊示意圖如下所示。
攝像監控模塊共有三部分構成(紅線圈出部分)
對應圖像展示Widget、攝像頭直接控制Widget和紅外人體感應控制Widget。該模塊采用HTTP
Binding和GPIO Binding。通過在openHAB配置文件中生成攝像頭直接控制開關實例,然后該實例調用HTTP Binding服務向基于Flask框架實現的本地服務器發送開關命令從而實現攝像頭的直接開關控制。另一方面,通過添加人體感應傳感器,還可實現感應到有人出現后自動打開攝像頭的操作,紅外人體感應傳感器與樹莓派的引腳連接后,通過GPIO Binding將傳感器信號在配置文件中實例化,將GPIO口傳送過來的高低電平信號(人出現與否的信號)傳送到實例化的對象上,然后通過openHAB中的自定義Rule實現感應后將攝像頭控制開關打開從而打開攝像頭的操作。
在HABPanel中添加上相應Widget后即可通過點按開關按鈕實現攝像頭的開關操作。
Item配置文件代碼如下:
Rule配置文件代碼如下:
? 溫濕度檢測模塊
溫濕度檢測模塊示意圖如下所示。
該模塊主要使用了InfluxDB和Grafana。InfluxDB用于存儲溫濕度傳感器傳送過來的溫濕度數據。Grafana用于溫濕度數據的可視化展示,通過調用InfluxDB中的數據,即可展示出直觀的數據。最后在HABPanel中定義一個
frame Widget,將動態溫濕度數據圖表鏈接綁定到該Widget上,通過不斷刷新InfluxDB中的數據,即可實現圖表的動態展示。
溫濕度數據通過task.py腳步本從樹莓派的GPIO口進行讀取,并直接POST到數據庫中,進行更新。
? 日程管理模塊
日程管理模塊示意圖如下圖所示。
該模塊通過引用第三方日程管理平臺(SuperProductivity),然后在林格愛一個Panel中自定義Widget綁定平臺提供的接口即可實現日程管理的操作,用戶側滑打開task
Panel,然后輸入相應日程任務即可將事項加入到日程表中。該平臺還支持日程的導出和本地日程文件的導入,操作極為方便。除此之外通過點擊頂部的Back to Home按鈕還可迅速跳轉到home Panel主界面,檢測home的其他數據和操作其他硬件設備。
2. Flask框架的介紹及設計
① 介紹
Flask是一個使用 Python 編寫的輕量級 Web 應用框架。其WSGI 工具箱采用 Werkzeug ,模板引擎則使用 Jinja2 。Flask使用 BSD 授權。Flask也被稱為 “microframework” ,因為它使用簡單的核心,用extension 增加其他功能。Flask沒有默認使用的 數據庫、窗體驗證工具。
② 設計
? 基于Flask的Web服務器代碼
此段代碼過長,請點擊“閱讀原文”查看
此代碼通過定義路由的方法,對每個不同的功能定義不同的url,openHAB2通過訪問特定url觸發特定代碼段,結合RPi.GPIO實現具體功能。代碼簡單易懂,變量名稱直白,便不再多加注釋。
? 傳感器的監控程序代碼
此段代碼過長,請點擊“閱讀原文”查看
此段將傳感器的主要功能封裝成一個名為task的模塊,在主程序中調用以實現其功能。腳本將數據從單片機中讀出,進行格式處理,再post給openHAB2用于繪制圖像。
3.51單片機的程序
此段代碼非常長,請點擊“閱讀原文”查看
4. 其他
Wifi熱點的功能使用creat_ap實現,詳見:github*
日程管理功能由super-productivity實現,詳見:網址*
結論
伍
本系統實現了基于樹莓派和openHAB2的家庭設備控制平臺,提供家庭環境的實時監控功能(溫度、濕度、火災報警),提供安防功能(視頻監控,紅外人體識別,錄像和抓拍),針對老人和職場人士的日常事務管理方案,此外還有家庭ftp服務器,wifi熱點等輔助功能。系統以樹莓派及openHAB2為基礎,通過openHAB2和flask框架天然的適應性,將家電設備納入統一管理,提供高度集成的管理界面,可通過手機、電腦直接對家庭環境進行監測和控制。此外,由于openHAB2的高度靈活性,可以根據自身要求添加相應的功能,在flask框架下的webserver中加入對應的響應即可實現定制功能,系統開發適應性強。
評論
查看更多