蔡立英/編譯
自制家用安防系統(tǒng)
蔡立英/編譯
●用非常響亮的警報(bào)聲把入室者嚇跑。
促使我自制家庭安防系統(tǒng)的最后一根稻草是鄰居家中午闖入竊賊,連續(xù)數(shù)月,我和妻子都一直擔(dān)心西雅圖郊區(qū)的街坊鄰居遭受令人討厭的入室盜竊。我們突發(fā)奇想,想在家里安裝一套安防系統(tǒng),卻遇到傳統(tǒng)安防系統(tǒng)的月使用費(fèi)和安裝麻煩這些障礙。后來(lái),鄰居警醒我們說(shuō),竊賊剛剛闖入了他們家,離我們家只有幾米遠(yuǎn),而且是在青天白日。
第二天,我就開(kāi)始搜索自制安防系統(tǒng),多虧網(wǎng)絡(luò)和物聯(lián)網(wǎng)標(biāo)準(zhǔn)的進(jìn)步,市場(chǎng)上已經(jīng)有很多無(wú)線安防系統(tǒng),它們易于安裝、擴(kuò)展、連接到智能手機(jī)應(yīng)用程序上,而且比硬連線的產(chǎn)品在價(jià)格上更能承受。它們大多數(shù)裝有內(nèi)置電池和3G蜂窩無(wú)線電,所以即便電源或網(wǎng)絡(luò)路由器發(fā)生故障,它們?nèi)阅芄ぷ鳌?/p>
不過(guò),當(dāng)我費(fèi)勁地從支持論壇上查找若干可能管用的安防系統(tǒng)時(shí),我注意到一個(gè)共同的抱怨:它們的報(bào)警器很弱。例如,在Scout Alarm的網(wǎng)站上(一站式個(gè)性化的無(wú)線家庭安防系統(tǒng)),不高興客戶抱怨“報(bào)警器不夠響亮”的帖子就有156條,同時(shí)還有公司通過(guò)重新設(shè)計(jì)報(bào)警器解決這個(gè)問(wèn)題的承諾(至今并未兌現(xiàn))。令人驚訝的是,沒(méi)有一個(gè)自制安防系統(tǒng)發(fā)出足夠的噪聲來(lái)嚇跑可能的竊賊(或是包含連接一個(gè)外部報(bào)警器的終端)。顯然,它們的設(shè)計(jì)者并沒(méi)有想到要威懾入侵者。
我仍然還是決定訂購(gòu)一套Scout安防系統(tǒng),它以吸引人的價(jià)格提供了我需要的傳感器。我喜歡Scout安防系統(tǒng)是因?yàn)槠渲С諭FTTT(智能家居平臺(tái),物聯(lián)網(wǎng)通用的基于Web的服務(wù)),當(dāng)報(bào)警器關(guān)掉時(shí),系統(tǒng)可以讓床頭柜上的智能(Lifx)燈泡閃爍。我想到一個(gè)如我所愿放大警報(bào)聲的主意,應(yīng)該適用于任何一種安防系統(tǒng),而不管其是否支持IFTTT。我所需做的就是建立一個(gè)跟蹤報(bào)警器。
這個(gè)想法借鑒于攝影,攝影棚有時(shí)會(huì)使用附加的獨(dú)立閃光燈,當(dāng)其連接的光電探測(cè)器吸收到直接安裝在相機(jī)上的閃光燈的光時(shí),這個(gè)獨(dú)立閃光燈就會(huì)熄滅。我的小裝置也會(huì)類似地使用一個(gè)麥克風(fēng),收聽(tīng)Scout報(bào)警器的獨(dú)特聲信號(hào),然后在我的本地網(wǎng)絡(luò)上發(fā)送無(wú)線電信號(hào),控制與Scout報(bào)警器同步的聲音更響亮的報(bào)警器的開(kāi)關(guān)。
安裝Scout安防系統(tǒng)很容易,僅需不到一個(gè)小時(shí)就能用免費(fèi)的應(yīng)用程序配置好網(wǎng)絡(luò)集線器(129美元),并將其連到一對(duì)進(jìn)門的控制板(每個(gè)69美元)、若干個(gè)門或窗傳感器(每個(gè)29美元)和一些移動(dòng)探測(cè)器(每個(gè)49美元)。我把這個(gè)系統(tǒng)連到IFTTT,并設(shè)置了一個(gè)名為“啟動(dòng)按鈕”的應(yīng)用程序,讓妻子和我用手機(jī)就能使用或關(guān)閉該系統(tǒng)。
對(duì)于這個(gè)項(xiàng)目的收聽(tīng)者部分,我從SparkFun公司買了一個(gè)Arduino Uno(20美元)、一個(gè)用于Uno的ESP8266 Wi-Fi防護(hù)罩(15美元)和一個(gè)聲音探測(cè)傳感器板(11美元)。與更先進(jìn)的微控制器相比,Uno更小、更便宜,而且能用電池工作,不過(guò)其有限的內(nèi)存后來(lái)證明很成問(wèn)題。
通過(guò)購(gòu)買貝爾金智能(WeMo)開(kāi)關(guān)(39美元),使報(bào)警器方面的工作得到簡(jiǎn)化。貝爾金智能開(kāi)關(guān)能連到Wi-Fi,能為任何電器切換電源。在這個(gè)報(bào)警器中,是為110分貝的霍尼韋爾安定寶702報(bào)警器(23美元)提供9伏的電源。WeMo開(kāi)關(guān)還自帶免費(fèi)智能手機(jī)應(yīng)用程序,在我需要手動(dòng)按響或關(guān)停報(bào)警器時(shí),作為一個(gè)方便的備份。貝爾金公司并沒(méi)有記錄控制開(kāi)關(guān)的TCP命令,但是黑客已經(jīng)幫助推斷出這些命令,發(fā)布了Arduino草圖,能通過(guò)以太網(wǎng)打開(kāi)或關(guān)閉設(shè)備。
自制的家庭衛(wèi)士:把一個(gè)麥克風(fēng)連接到一個(gè)具有Wi-Fi功能的Arduino Uno微控制器,收聽(tīng)Scout警報(bào)聲,一個(gè)無(wú)線開(kāi)關(guān)會(huì)打開(kāi)報(bào)警器
我所需做的就是改編代碼使得Wi-Fi防護(hù)罩能工作,然后把它作為更大程序的功能模塊,監(jiān)測(cè)由麥克風(fēng)板接收的聲音的頻率、強(qiáng)度和持續(xù)時(shí)間。在幾個(gè)小時(shí)之內(nèi),我就建構(gòu)了聲信號(hào)探測(cè)算法。
為了校準(zhǔn)它,我把麥克風(fēng)就放在Scout集線器旁邊,然后觸發(fā)報(bào)警器??蛻魧?duì)Scout系統(tǒng)的評(píng)論是正確的,報(bào)警器的呼救聲確實(shí)很微弱,比手機(jī)鈴聲或是我的收音機(jī)的鬧鐘聲音還輕。聲音這么輕,我很難相信傳感器能區(qū)分報(bào)警器鈴聲和背景噪音。打開(kāi)集線器的蓋,我發(fā)現(xiàn)了問(wèn)題所在:壓電揚(yáng)聲器的安裝使聲音直接進(jìn)入設(shè)備的厚塑料層里。我鉆了一個(gè)1厘米多寬的小孔,讓揚(yáng)聲器接觸到空氣,音量馬上就翻倍了,雖然仍不足以威懾入侵者,但足以激活我的聲音信號(hào)探測(cè)器。
然后,我來(lái)解決2千字節(jié)的問(wèn)題:我的程序需要的內(nèi)存大于Uno所能提供的,主要是因?yàn)椋簽榱思せ頦eMo開(kāi)關(guān),需要收集和分發(fā)很長(zhǎng)的數(shù)據(jù)包。有經(jīng)驗(yàn)的程序員對(duì)我進(jìn)行了指點(diǎn),讓編譯器將數(shù)據(jù)存儲(chǔ)在容量更大的閃存(閃存本是用于存儲(chǔ)程序的),而不是用Uno的內(nèi)存。但是,這么做的慘重代價(jià)是犧牲了速度:當(dāng)Arduino工作時(shí),要用大約30秒時(shí)間來(lái)切換開(kāi)關(guān)。
通過(guò)不斷的嘗試和錯(cuò)誤后,我終于找到了一種方法:把關(guān)鍵數(shù)據(jù)包保存在內(nèi)存中,把所有其他數(shù)據(jù)儲(chǔ)存在閃存里,用備用內(nèi)存下載最后的程序。我把所有部件連起來(lái),下載了Scout應(yīng)用程序,然后按住“報(bào)警器”按鈕,報(bào)警器突然大聲響起來(lái),我自己都快嚇出一身冷汗。我確信鄰居們都聽(tīng)到警報(bào)聲了,這就是關(guān)鍵所在。]
[資料來(lái)源:IEEE Spectrum][責(zé)任編輯:岳峰