陸金虎,王益祥
(南京理工大學(xué) 機(jī)械工程學(xué)院,南京 210094)
基于微信公眾平臺(tái)的智能家庭監(jiān)控系統(tǒng)設(shè)計(jì)*
陸金虎,王益祥
(南京理工大學(xué) 機(jī)械工程學(xué)院,南京 210094)
對(duì)目前的智能家庭監(jiān)控系統(tǒng)進(jìn)行了研究,提出了一種基于微信公眾平臺(tái)的智能家庭監(jiān)控系統(tǒng)。整個(gè)監(jiān)控系統(tǒng)的底端是數(shù)據(jù)采集端,采用帶有Linux操作系統(tǒng)的Tiny6410開發(fā)板,核心控制器為S3C6410芯片。將mjpg-streamer視頻服務(wù)器移植到Linux系統(tǒng)上,可提供視頻流以便遠(yuǎn)程觀看;同時(shí)在開發(fā)板上集成相應(yīng)的傳感器,可以采集室內(nèi)的環(huán)境數(shù)據(jù)。數(shù)據(jù)采集端可以將采集的數(shù)據(jù)以網(wǎng)絡(luò)的形式傳遞給中間層云服務(wù)器,進(jìn)而傳遞給微信用戶;反之用戶可以發(fā)送控制查詢指令給底層數(shù)據(jù)采集端。
微信;S3C6410;數(shù)據(jù)采集;監(jiān)控;Linux
隨著社會(huì)科技的迅速發(fā)展,人們生活水平的提高,對(duì)生活質(zhì)量更加重視,故智能家居概念一提出來,就引起了社會(huì)的廣泛關(guān)注。目前,智能家居的設(shè)計(jì)思路大多是設(shè)計(jì)一個(gè)可以連接網(wǎng)絡(luò)的底層硬件控制設(shè)備,并開發(fā)與之相對(duì)應(yīng)的手機(jī)APP或者手持終端作為用戶查看和控制的載體,但這樣設(shè)計(jì)的缺點(diǎn)是手機(jī)APP或者手持終端的開發(fā)周期較長(zhǎng)、成本較高[1]。針對(duì)此缺點(diǎn),本文設(shè)計(jì)一種基于微信平臺(tái)、以太網(wǎng)和移動(dòng)網(wǎng)絡(luò)通信技術(shù)、騰訊云服務(wù)器的家庭安防監(jiān)控系統(tǒng),該系統(tǒng)可以實(shí)現(xiàn)對(duì)家庭的室內(nèi)環(huán)境數(shù)據(jù),如溫濕度、煙霧和危險(xiǎn)氣體,以及常用家居電器開關(guān)的控制。
基于微信的家庭安防監(jiān)控系統(tǒng)共分為三個(gè)部分:底層的數(shù)據(jù)采集和控制系統(tǒng)、微信公眾平臺(tái)和騰訊云服務(wù)器上搭建的服務(wù)系統(tǒng),以及微信手機(jī)端在內(nèi)的軟件系統(tǒng)。系統(tǒng)的總體功能如圖1所示。數(shù)據(jù)采集和控制系統(tǒng)部分與騰訊云服務(wù)器之間通過HTTP網(wǎng)絡(luò)傳輸?shù)姆绞竭M(jìn)行數(shù)據(jù)傳輸,云服務(wù)器再借助微信公眾平臺(tái)接口與微信手機(jī)端進(jìn)行信息交互。
圖1 系統(tǒng)總體功能圖
系統(tǒng)的硬件選用的是以三星公司生產(chǎn)的S3C6410為核心處理器的Tiny6410開發(fā)板,其設(shè)計(jì)基于ARM1176JZF-S核,內(nèi)部集成了強(qiáng)大的多媒體處理單元,具有256 MB NAND Flash以及外界的SD卡座。該開發(fā)板具有100M標(biāo)準(zhǔn)網(wǎng)絡(luò)接口、標(biāo)準(zhǔn)DB95線串口、Mini USB2.0接口、USB HOST接口、4路TTL串口以及I2C-EEPROM、蜂鳴器等。圖2為系統(tǒng)硬件的總體框圖。
圖2 硬件系統(tǒng)總體框圖
2.1 傳感器的選擇與電路設(shè)計(jì)
2.1.1 溫濕度傳感器
圖3 DHT11傳感器工作原理圖
本設(shè)計(jì)采用DHT11溫濕度傳感器,因?yàn)镈HT11具備可以同時(shí)采集溫度和濕度數(shù)據(jù)的功能,且采集的數(shù)據(jù)是一次性以40位數(shù)據(jù)格式的方式全部傳給單片機(jī),與單片機(jī)的通信方式為單總線,其不具有很高的數(shù)據(jù)傳輸準(zhǔn)確度等優(yōu)勢(shì)[2]。DHT11模塊共有4個(gè)引腳,引腳1為供電引腳,引腳2為數(shù)據(jù)傳輸引腳,引腳3置空,引腳4為接地引腳。DHT11模塊與MCU之間的連接方式如圖3所示。
DHT11溫濕度傳感器由S3C6410主控芯片控制,DHT11在正常情況下處于低功耗模式,當(dāng)MCU向傳感器發(fā)送一個(gè)開始信號(hào)的標(biāo)志時(shí),DHT11會(huì)從低功耗模式轉(zhuǎn)換到高功耗模式。
MCU發(fā)送開始型號(hào)完畢后,會(huì)接收來自DHT11返回的響應(yīng)信號(hào),同時(shí),DHT11緊接著向MCU一次性發(fā)送40位的數(shù)據(jù),數(shù)據(jù)格式為:
8位濕度整數(shù)數(shù)據(jù)+8位濕度小數(shù)數(shù)據(jù)+8位溫度整數(shù)數(shù)據(jù)+8位溫度小數(shù)數(shù)據(jù)+8位校驗(yàn)
發(fā)送的順序是高位在前低位在后,至此完成一次信號(hào)采集,用戶可以根據(jù)數(shù)據(jù)格式選讀其中的信息數(shù)據(jù)。
2.1.2 煙霧傳感器
MQ-2煙霧傳感器選用的氣敏材料為二氧化錫(SnO2),在潔凈的空氣中,它的電導(dǎo)率較低,但是,當(dāng)空氣中存在可燃?xì)怏w時(shí),其電導(dǎo)率會(huì)增加,而且電導(dǎo)率的大小與空氣中可燃?xì)怏w濃度成正相關(guān)關(guān)系。
MQ-2煙霧傳感器對(duì)煙霧有很高的靈敏度,可用于對(duì)多種危險(xiǎn)氣體進(jìn)行檢測(cè),如液化氣、丙烷、氫氣等[3]?;谏鲜隹紤],本設(shè)計(jì)采用MQ-2煙霧傳感器。如圖4所示,MQ-2煙霧傳感器模塊共有4個(gè)引腳,引腳1為供電引腳,引腳2為TTL高低電平輸出端,引腳3為模擬電壓輸出端,引腳4位為接地引腳。
QM-N10的4引腳輸出直流信號(hào),直流信號(hào)隨著煙霧濃度變化,其值被加載到比較器U1A的2引腳,同Rp組成比較器的閾值電壓。當(dāng)煙霧濃度較高時(shí),輸出電壓高于閾值電壓,比較器輸出低電平(0V),LED燈報(bào)警;當(dāng)濃度降低正常返回時(shí),傳感器的輸出電壓低于閾值電壓,比較器輸出高電平(Vcc),LED燈熄滅。調(diào)整Rp,可以調(diào)節(jié)比較器的閾值電壓,以此調(diào)整靈敏度。引入R1構(gòu)成傳感器的加熱電路,保護(hù)加熱絲免受冷力的影響。
圖4 煙霧傳感器工作原理圖
2.2 USB攝像頭的電路設(shè)計(jì)
USB攝像頭采用的是中星微的ZC301P攝像頭,屬于一種CMOS攝像頭,具有超強(qiáng)的感光效果。使用中星微301P攝像頭時(shí),需要在底層的Linux系統(tǒng)中移植USB攝像頭驅(qū)動(dòng),即在底層開發(fā)板上的USB接口中插入U(xiǎn)SB攝像頭,在USB驅(qū)動(dòng)的支持下,攝像頭方可實(shí)現(xiàn)實(shí)時(shí)使用視頻數(shù)據(jù)。圖5為USB接口原理圖。
圖5 USB接口原理圖
3.1 現(xiàn)場(chǎng)MCU數(shù)據(jù)采集端軟件設(shè)計(jì)
現(xiàn)場(chǎng)MCU數(shù)據(jù)采集端實(shí)時(shí)采集室內(nèi)環(huán)境數(shù)據(jù),并將采集的數(shù)據(jù)通過以太網(wǎng)模塊以HTTP網(wǎng)絡(luò)通信的方式發(fā)送至云服務(wù)器端,同時(shí)在數(shù)據(jù)采集端將采集的數(shù)據(jù)與系統(tǒng)內(nèi)預(yù)先設(shè)定的上限值和下限值相比較,決定數(shù)據(jù)采集系統(tǒng)是否鈴聲報(bào)警,以及在云服務(wù)器端判斷接收的數(shù)據(jù)是否在安全值范圍內(nèi)決定是否向用戶發(fā)送微信報(bào)警信息。圖6為MCU控制器主程序流程圖。
圖6 MCU數(shù)據(jù)采集端主程序流程圖
3.2 服務(wù)器端軟件設(shè)計(jì)
本次設(shè)計(jì)的服務(wù)器端選用開放的騰訊云服務(wù)器,功能是完成MCU控制端發(fā)來的傳感器數(shù)據(jù),以及實(shí)現(xiàn)MCU控制端與微信用戶的信息傳遞。
在進(jìn)行服務(wù)器端軟件設(shè)計(jì)之前需要在服務(wù)器端的數(shù)據(jù)庫(kù)中創(chuàng)建一張表,用于存儲(chǔ)傳感器數(shù)據(jù),如表1所列。
本次設(shè)計(jì)服務(wù)器的應(yīng)用程序含有4個(gè)功能模塊:微信公眾平臺(tái)服務(wù)器的驗(yàn)證模塊、微信數(shù)據(jù)包解析模塊、指令處理模塊和數(shù)據(jù)存儲(chǔ)處理模塊。
表1 數(shù)據(jù)庫(kù)表
實(shí)現(xiàn)微信公眾平臺(tái)與云服務(wù)器(云服務(wù)器上的Web應(yīng)用)信息交互的前提是確保云服務(wù)器上的應(yīng)用程序與微信公眾平臺(tái)的接口相連,確定對(duì)云服務(wù)器(云服務(wù)器上的Web應(yīng)用)的請(qǐng)求來自微信公眾平臺(tái),故此需要微信公眾平臺(tái)服務(wù)器的驗(yàn)證模塊[4]。請(qǐng)求驗(yàn)證流程如下:
① 獲取HTTP GET請(qǐng)求中的4個(gè)參數(shù):signature、timestamp、nonce和echostr;
② 將token、timestamp和nonce3個(gè)參數(shù)按字典排序,其中token由有開發(fā)者指定,不會(huì)從GET請(qǐng)求中獲?。?/p>
③ 將排序后的3個(gè)參數(shù)按順序拼接成一個(gè)字符串,并對(duì)該字符串以sha1方式進(jìn)行加密;
④ 將signature參數(shù)與加密后的字符串相比較,如果相等則證明該請(qǐng)求源自微信服務(wù)器,同時(shí)微信服務(wù)器原樣返回參數(shù)echostr。
如果微信公眾平臺(tái)驗(yàn)證模塊驗(yàn)證成功,云服務(wù)器就可以與微信公眾平臺(tái)進(jìn)行信息交互,交互的信息數(shù)據(jù)格式是XML形式的,所以要對(duì)信息數(shù)據(jù)包進(jìn)行解析,故云服務(wù)器的應(yīng)用程序模塊應(yīng)包含數(shù)據(jù)解析模塊。微信公眾平臺(tái)的開發(fā)采用JAVA語言,JAVA解析XML數(shù)據(jù)選用的工具是Dom4j和Xstream。
指令處理模塊顧名思義是處理微信用戶發(fā)來的查詢控制指令。指令處理模塊的程序開發(fā)分主要分為以下兩個(gè)部分:
① 確定請(qǐng)求是否來自微信,如果是,則獲取請(qǐng)求中的用戶查詢控制指令參數(shù);若否,則退出程序;
② 連接云服務(wù)器的數(shù)據(jù)庫(kù),根據(jù)不同的用戶查詢控制指令,從數(shù)據(jù)庫(kù)中獲取相應(yīng)的傳感器的數(shù)值返回給用戶。
用戶在微信端輸入濕度、溫度、濃度或者查詢指令后,云服務(wù)器會(huì)根據(jù)用戶的指令在數(shù)據(jù)庫(kù)的表中查詢數(shù)據(jù)值,最后依據(jù)微信發(fā)送的查詢指令,將查得的數(shù)據(jù)值與數(shù)據(jù)保存的時(shí)間一起發(fā)給微信用戶。
數(shù)據(jù)存儲(chǔ)處理模塊用于將MCU控制端采集的傳感器數(shù)據(jù)實(shí)時(shí)保存下來,并且在保存的過程中,可以實(shí)時(shí)檢查數(shù)據(jù)是否在標(biāo)定的范圍內(nèi),如果不在,則向微信用戶發(fā)送報(bào)警信息。數(shù)據(jù)存儲(chǔ)處理模塊的程序開發(fā)流程如下:
① 確定請(qǐng)求是否來自微信,如果是,則獲取請(qǐng)求中的參數(shù)(傳感器采集的數(shù)據(jù));否則,則退出程序;
② 連接云服務(wù)器的數(shù)據(jù)庫(kù),將獲取的參數(shù)存儲(chǔ)到數(shù)據(jù)中;
③ 判定獲取的傳感器數(shù)據(jù)是否超出限值,如果超出限值,則向微信用戶發(fā)送報(bào)警信息。
進(jìn)行系統(tǒng)測(cè)試前,首先關(guān)注微信公眾賬號(hào),關(guān)注成功后,公眾賬號(hào)會(huì)返回微信用戶關(guān)注成功消息,圖7為微信公眾賬號(hào)關(guān)注歡迎消息和功能界面。
圖7 微信公眾賬號(hào)關(guān)注成功界面
微信用戶手機(jī)客戶端是家庭安防遠(yuǎn)程監(jiān)控端,通過發(fā)送相關(guān)查詢指令(溫度、濕度、煙霧等)或者點(diǎn)擊菜單中的查詢按鈕,可以實(shí)時(shí)查詢家庭室內(nèi)環(huán)境數(shù)據(jù),實(shí)現(xiàn)微信和MCU數(shù)據(jù)采集端的互動(dòng)。
在測(cè)試的時(shí)候,同時(shí)用打火機(jī)對(duì)溫度傳感器進(jìn)行加熱,以及當(dāng)溫度達(dá)到極限值時(shí),MCU數(shù)據(jù)采集端會(huì)發(fā)出聲音報(bào)警,同時(shí),微信用戶手機(jī)端也會(huì)受到溫度過高報(bào)警信息;用戶點(diǎn)擊視頻菜單按鈕,可以查詢攝像頭采集的數(shù)據(jù)。
[1] 智之屋. 智能家居設(shè)計(jì)方案[J]. 數(shù)字社區(qū)&智能家居, 2006(27):67-72.
[2] 倪天龍. 單總線傳感器DHT11在溫濕度測(cè)控中的應(yīng)用[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2010, 10(6):60-62.
[3] 蘇文靜, 文小玲, 朱琥. 可燃?xì)怏w報(bào)警器的設(shè)計(jì)[J]. 電工電氣, 2009(5):8-11.
[4] 柳峰. 微信公眾平臺(tái)應(yīng)用開發(fā)[M]. 北京:機(jī)械工業(yè)出版社, 2014.
陸金虎(碩士研究生)、王益祥(副教授),主要研究方向?yàn)榍度胧杰浖c硬件。
Intelligent Home Monitoring System Based on WeChat Public Platform
Lu Jinhu,Wang Yixiang
(School of Mechanical Engineering,Nanjing University of Science and Technology,Nanjing 210094,China)
In the paper, a kind of intelligent home monitoring system based on WeChat public platform is proposed.The bottom of the entire monitoring system is the data acquisition side,which uses the Tiny6410 development board with Linux operating system,the core controller is S3C6410 chip.The mjpg-streamer video server is transplanted to the Linux system,it can provide video stream for the remote access.At the same time,the corresponding sensor is integrated on the development board,which can collect the indoor environmental data.At the end of the data collection,the collected data can be transmitted to the cloud server through the network,and then is transmitted to the WeChat user.And the user also can send the control instructions to the underlying data collection side.
WeChat;S3C6410;data acquisition;monitor;Linux
國(guó)家級(jí)-國(guó)家自然科學(xué)基金資助項(xiàng)目(61074006)。
TP319
A
?迪娜
2017-04-20)