王 甜
目前,家庭安防問題已經(jīng)成為人們關(guān)注的重點(diǎn)問題,采用信息技術(shù)手段監(jiān)控家庭安全已經(jīng)成為一種趨勢(shì)。樹莓派是一款基于Raspbian Linux系統(tǒng)的嵌入式計(jì)算機(jī),其具有體積小,集成度高,可擴(kuò)展性強(qiáng)等優(yōu)勢(shì),所以被廣泛使用在物聯(lián)網(wǎng)應(yīng)用系統(tǒng)中。
本文硬件系統(tǒng)開發(fā)選用當(dāng)前流行的開源硬件樹莓派(Raspberry PI),軟件設(shè)計(jì)主要用Python語言對(duì)引腳定義及編程,Linux環(huán)境配置和驅(qū)動(dòng)安裝等。樹莓派采集外部傳感器的感知信息,并將信息傳遞給遠(yuǎn)程終端,通過人機(jī)對(duì)話再實(shí)現(xiàn)返回?cái)?shù)據(jù)給樹莓派開啟報(bào)警器設(shè)備。工作過程是實(shí)現(xiàn)的室內(nèi)入侵報(bào)警并且照片回傳裝置,樹莓派連接服務(wù)器,負(fù)責(zé)實(shí)現(xiàn)傳感器和攝像頭模塊采集的信息,并轉(zhuǎn)發(fā)給移動(dòng)端進(jìn)行查看,同時(shí)接收和處理移動(dòng)端發(fā)送的信號(hào),樹莓派接到同意指令后加以解析,最后打開蜂鳴器報(bào)警。
為了實(shí)現(xiàn)樹莓派的室內(nèi)入侵報(bào)警并且照片回傳裝置,采取以下技術(shù)方案:
硬件系統(tǒng)主要包括樹莓派開發(fā)板,紅外傳感器模塊,蜂鳴器模塊和迷你攝像頭模塊。
圖1系統(tǒng)功能模塊框圖
樹莓派開發(fā)板是一款基于ARM的微型電腦主板,以SD為內(nèi)存硬盤??ㄆ靼逯車?個(gè)USB接口和一個(gè)網(wǎng)口,可連接鼠標(biāo)鍵盤和網(wǎng)線,同時(shí)配有wifi模塊和HDMI高清視頻輸出接口,具有PC機(jī)的基本功能。本設(shè)計(jì)選用的是RPI B+,安裝的系統(tǒng)為Raspbian,RPI B+的管腳定義如圖2所示。它提供了40個(gè)GPIO口,它們與傳統(tǒng)單片機(jī)上的I/O口用法相似。通過這些接口的編程,樹莓派就可以實(shí)現(xiàn)對(duì)外圍硬件的控制。
圖2樹莓派GPIO引腳圖
紅外線傳感器是一種能夠感應(yīng)目標(biāo)輻射的紅外線,利用紅外線的物理性質(zhì)來進(jìn)行測(cè)量的傳感器。本設(shè)計(jì)采用的紅外模塊包括一對(duì)紅外發(fā)射管和接收管,利用發(fā)射管和接收管形成的信號(hào)反射差來判斷障礙物距離,并設(shè)有電位器來調(diào)節(jié)檢測(cè)距離。紅外模塊有三個(gè)引腳,它與主板連接方法如表1所示。
表1樹莓派與紅外傳感器連接
蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,本設(shè)計(jì)采用有源蜂鳴器,它的內(nèi)部帶有振蕩源,只要施加直流電壓就會(huì)發(fā)聲,也可以通過PWM?輸出口驅(qū)動(dòng)蜂鳴器改變聲音頻率。蜂鳴器模塊有三個(gè)引腳,它與主板連接方法如表2所示。
表2樹莓派與蜂鳴器連接
本設(shè)計(jì)采用不變焦的迷你攝像頭,當(dāng)樹莓派與攝像頭連接時(shí),攝像頭不能接入GPIO口,而是接入靠近網(wǎng)孔的排孔中。使用攝像頭時(shí)要注意,不能帶電插拔,要在系統(tǒng)中開啟Camera權(quán)限。連接成功后,使用代碼raspistill-o image.jgp測(cè)試攝像頭,看到圖片image代表攝像頭功能正常。
本設(shè)計(jì)軟件程序用Python語言編寫,Python語言具有靈活強(qiáng)大的功能,最初是由20世紀(jì)80年代末在全國(guó)數(shù)學(xué)與計(jì)算機(jī)科學(xué)研究所Guido van Rossum開發(fā)的ABC語言的繼承語言。自推出以來,由于Python清晰的語法表達(dá),致力于代碼可讀性,它已經(jīng)相當(dāng)普及。
Python是一種高級(jí)語言。這意味著Python代碼是用可讀性很強(qiáng)的英語編寫的。用簡(jiǎn)單易學(xué)的方式向樹莓派提供命令。這與低級(jí)語言(比如匯編),形成了鮮明的對(duì)比,匯編語言更接近計(jì)算機(jī)思維,但讓一個(gè)沒有經(jīng)驗(yàn)的人用它來編程幾乎不可能。高級(jí)與自然清晰的語法使Python成為一個(gè)有價(jià)值的工具。
wxpy庫(kù)是在itchat基礎(chǔ)上的一個(gè)開源的微信個(gè)人號(hào)接口,方便使用Python調(diào)用微信。它支持Python2.0以及Python3,它通過大量接口優(yōu)化提升了模塊的易用性,并進(jìn)行豐富的功能擴(kuò)展。
Picamera庫(kù)是樹莓派調(diào)用攝像頭獲得API數(shù)據(jù)必須使用的接口。該模塊可以返回camera對(duì)象,調(diào)整圖像或者視頻的飽和度,亮度,快門速度,銳度,圖像翻轉(zhuǎn),圖像大小等各種參數(shù)。
Python代碼實(shí)現(xiàn)過程:
首先導(dǎo)入需要的模塊文件,在此我們需要5個(gè)庫(kù),分別是時(shí)鐘模塊,GPIO模塊,攝像頭接口庫(kù)和微信接口庫(kù),代碼如下:
然后是初始化部分,使用BCM的I/O命名,設(shè)置紅外傳感器端口,即24端口為輸入模式,設(shè)置蜂鳴器端口,即25端口為輸出模式,初始化攝像頭,使用picamera模塊中的PiCamera方法創(chuàng)建返回一個(gè)camera對(duì)象。使用wxpy模塊中的Bot方法創(chuàng)建一個(gè)bot對(duì)象。代碼如下:
最后從紅外傳感器獲取信息后,樹莓派做出相應(yīng)的反應(yīng),即當(dāng)紅外傳感器檢測(cè)到有人侵入時(shí),即可回傳照片和時(shí)間信息給移動(dòng)終端并且詢問下一步如何處理。本設(shè)計(jì)可以選擇向微信本人報(bào)警或者向指定好友報(bào)警,在wxpy庫(kù)的方法里,給自己發(fā)送消息和圖片用代碼如下:
在wxpy庫(kù)的方法里,先找到好友,再給指定好友發(fā)送消息和圖片,代碼如下:
在微信好友收到報(bào)警信息后,將和樹莓派進(jìn)行一次人機(jī)對(duì)話,即回復(fù)y或者n,來決定是否啟動(dòng)蜂鳴器報(bào)警。wxpy庫(kù)中回復(fù)好友信息使用的方法如下:
另外,報(bào)警信息中包括當(dāng)前的時(shí)間信息,在這里利用時(shí)間戳得到當(dāng)前系統(tǒng)時(shí)間,再轉(zhuǎn)換為指定格式的日期,用到的模塊是time和datetime。代碼如下:
各硬件模塊連接后(如圖3),樹莓派與傳感器和攝像頭連接,系統(tǒng)連接路由器,通過掃描二維碼登錄微信網(wǎng)頁(yè)版。運(yùn)行python程序后,當(dāng)觸發(fā)紅外傳感器時(shí),樹莓派向移動(dòng)終端發(fā)送報(bào)警信息,包括當(dāng)前時(shí)間和攝像頭采集的照片,并且詢問是否開啟蜂鳴器,當(dāng)終端回復(fù)y時(shí),蜂鳴器發(fā)出聲音。結(jié)果如圖4和圖5所示。
圖3實(shí)物連接圖
本系統(tǒng)切合當(dāng)前安防行業(yè)現(xiàn)狀,以多傳感器融合方式獲取家庭安全隱患,提供手機(jī)端和嵌入式智能終端進(jìn)行數(shù)據(jù)通信,實(shí)現(xiàn)人機(jī)交互和遠(yuǎn)程監(jiān)控,使用網(wǎng)絡(luò)對(duì)用戶和業(yè)主進(jìn)行警報(bào)信息智能化推送,而且本系統(tǒng)采用樹莓派技術(shù)成本低,無須開發(fā)新的APP,利用微信平臺(tái)傳遞信息,簡(jiǎn)單易實(shí)現(xiàn),適用于現(xiàn)有家庭智能安防業(yè)務(wù),也可應(yīng)用在其他智能家居系統(tǒng)場(chǎng)景中。
圖4指定微信好友收到報(bào)警結(jié)果
圖5本人收到報(bào)警結(jié)果