王 甜
目前,家庭安防問(wèn)題已經(jīng)成為人們關(guān)注的重點(diǎn)問(wèn)題,采用信息技術(shù)手段監(jiān)控家庭安全已經(jīng)成為一種趨勢(shì)。樹(shù)莓派是一款基于Raspbian Linux系統(tǒng)的嵌入式計(jì)算機(jī),其具有體積小,集成度高,可擴(kuò)展性強(qiáng)等優(yōu)勢(shì),所以被廣泛使用在物聯(lián)網(wǎng)應(yīng)用系統(tǒng)中。
本文硬件系統(tǒng)開(kāi)發(fā)選用當(dāng)前流行的開(kāi)源硬件樹(shù)莓派(Raspberry PI),軟件設(shè)計(jì)主要用Python語(yǔ)言對(duì)引腳定義及編程,Linux環(huán)境配置和驅(qū)動(dòng)安裝等。樹(shù)莓派采集外部傳感器的感知信息,并將信息傳遞給遠(yuǎn)程終端,通過(guò)人機(jī)對(duì)話(huà)再實(shí)現(xiàn)返回?cái)?shù)據(jù)給樹(shù)莓派開(kāi)啟報(bào)警器設(shè)備。工作過(guò)程是實(shí)現(xiàn)的室內(nèi)入侵報(bào)警并且照片回傳裝置,樹(shù)莓派連接服務(wù)器,負(fù)責(zé)實(shí)現(xiàn)傳感器和攝像頭模塊采集的信息,并轉(zhuǎn)發(fā)給移動(dòng)端進(jìn)行查看,同時(shí)接收和處理移動(dòng)端發(fā)送的信號(hào),樹(shù)莓派接到同意指令后加以解析,最后打開(kāi)蜂鳴器報(bào)警。
為了實(shí)現(xiàn)樹(shù)莓派的室內(nèi)入侵報(bào)警并且照片回傳裝置,采取以下技術(shù)方案:
硬件系統(tǒng)主要包括樹(shù)莓派開(kāi)發(fā)板,紅外傳感器模塊,蜂鳴器模塊和迷你攝像頭模塊。

圖1系統(tǒng)功能模塊框圖
樹(shù)莓派開(kāi)發(fā)板是一款基于ARM的微型電腦主板,以SD為內(nèi)存硬盤(pán)。卡片主板周?chē)?個(gè)USB接口和一個(gè)網(wǎng)口,可連接鼠標(biāo)鍵盤(pán)和網(wǎng)線(xiàn),同時(shí)配有wifi模塊和HDMI高清視頻輸出接口,具有PC機(jī)的基本功能。本設(shè)計(jì)選用的是RPI B+,安裝的系統(tǒng)為Raspbian,RPI B+的管腳定義如圖2所示。它提供了40個(gè)GPIO口,它們與傳統(tǒng)單片機(jī)上的I/O口用法相似。通過(guò)這些接口的編程,樹(shù)莓派就可以實(shí)現(xiàn)對(duì)外圍硬件的控制。

圖2樹(shù)莓派GPIO引腳圖
紅外線(xiàn)傳感器是一種能夠感應(yīng)目標(biāo)輻射的紅外線(xiàn),利用紅外線(xiàn)的物理性質(zhì)來(lái)進(jìn)行測(cè)量的傳感器。本設(shè)計(jì)采用的紅外模塊包括一對(duì)紅外發(fā)射管和接收管,利用發(fā)射管和接收管形成的信號(hào)反射差來(lái)判斷障礙物距離,并設(shè)有電位器來(lái)調(diào)節(jié)檢測(cè)距離。紅外模塊有三個(gè)引腳,它與主板連接方法如表1所示。

表1樹(shù)莓派與紅外傳感器連接
蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,本設(shè)計(jì)采用有源蜂鳴器,它的內(nèi)部帶有振蕩源,只要施加直流電壓就會(huì)發(fā)聲,也可以通過(guò)PWM?輸出口驅(qū)動(dòng)蜂鳴器改變聲音頻率。蜂鳴器模塊有三個(gè)引腳,它與主板連接方法如表2所示。

表2樹(shù)莓派與蜂鳴器連接
本設(shè)計(jì)采用不變焦的迷你攝像頭,當(dāng)樹(shù)莓派與攝像頭連接時(shí),攝像頭不能接入GPIO口,而是接入靠近網(wǎng)孔的排孔中。使用攝像頭時(shí)要注意,不能帶電插拔,要在系統(tǒng)中開(kāi)啟Camera權(quán)限。連接成功后,使用代碼raspistill-o image.jgp測(cè)試攝像頭,看到圖片image代表攝像頭功能正常。
本設(shè)計(jì)軟件程序用Python語(yǔ)言編寫(xiě),Python語(yǔ)言具有靈活強(qiáng)大的功能,最初是由20世紀(jì)80年代末在全國(guó)數(shù)學(xué)與計(jì)算機(jī)科學(xué)研究所Guido van Rossum開(kāi)發(fā)的ABC語(yǔ)言的繼承語(yǔ)言。自推出以來(lái),由于Python清晰的語(yǔ)法表達(dá),致力于代碼可讀性,它已經(jīng)相當(dāng)普及。
Python是一種高級(jí)語(yǔ)言。這意味著Python代碼是用可讀性很強(qiáng)的英語(yǔ)編寫(xiě)的。用簡(jiǎn)單易學(xué)的方式向樹(shù)莓派提供命令。這與低級(jí)語(yǔ)言(比如匯編),形成了鮮明的對(duì)比,匯編語(yǔ)言更接近計(jì)算機(jī)思維,但讓一個(gè)沒(méi)有經(jīng)驗(yàn)的人用它來(lái)編程幾乎不可能。高級(jí)與自然清晰的語(yǔ)法使Python成為一個(gè)有價(jià)值的工具。
wxpy庫(kù)是在itchat基礎(chǔ)上的一個(gè)開(kāi)源的微信個(gè)人號(hào)接口,方便使用Python調(diào)用微信。它支持Python2.0以及Python3,它通過(guò)大量接口優(yōu)化提升了模塊的易用性,并進(jìn)行豐富的功能擴(kuò)展。
Picamera庫(kù)是樹(shù)莓派調(diào)用攝像頭獲得API數(shù)據(jù)必須使用的接口。該模塊可以返回camera對(duì)象,調(diào)整圖像或者視頻的飽和度,亮度,快門(mén)速度,銳度,圖像翻轉(zhuǎn),圖像大小等各種參數(shù)。
Python代碼實(shí)現(xiàn)過(guò)程:
首先導(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ì)象。代碼如下:

最后從紅外傳感器獲取信息后,樹(shù)莓派做出相應(yīng)的反應(yīng),即當(dāng)紅外傳感器檢測(cè)到有人侵入時(shí),即可回傳照片和時(shí)間信息給移動(dòng)終端并且詢(xún)問(wèn)下一步如何處理。本設(shè)計(jì)可以選擇向微信本人報(bào)警或者向指定好友報(bào)警,在wxpy庫(kù)的方法里,給自己發(fā)送消息和圖片用代碼如下:

在wxpy庫(kù)的方法里,先找到好友,再給指定好友發(fā)送消息和圖片,代碼如下:

在微信好友收到報(bào)警信息后,將和樹(shù)莓派進(jìn)行一次人機(jī)對(duì)話(huà),即回復(fù)y或者n,來(lái)決定是否啟動(dòng)蜂鳴器報(bào)警。wxpy庫(kù)中回復(fù)好友信息使用的方法如下:

另外,報(bào)警信息中包括當(dāng)前的時(shí)間信息,在這里利用時(shí)間戳得到當(dāng)前系統(tǒng)時(shí)間,再轉(zhuǎn)換為指定格式的日期,用到的模塊是time和datetime。代碼如下:

各硬件模塊連接后(如圖3),樹(shù)莓派與傳感器和攝像頭連接,系統(tǒng)連接路由器,通過(guò)掃描二維碼登錄微信網(wǎng)頁(yè)版。運(yùn)行python程序后,當(dāng)觸發(fā)紅外傳感器時(shí),樹(shù)莓派向移動(dòng)終端發(fā)送報(bào)警信息,包括當(dāng)前時(shí)間和攝像頭采集的照片,并且詢(xún)問(wèn)是否開(kāi)啟蜂鳴器,當(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ì)用戶(hù)和業(yè)主進(jìn)行警報(bào)信息智能化推送,而且本系統(tǒng)采用樹(shù)莓派技術(shù)成本低,無(wú)須開(kāi)發(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é)果