汪 紅,王芳芳,占 桑
(中南民族大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,武漢 430074)
隨著計(jì)算機(jī)技術(shù)、信息技術(shù)、控制技術(shù)的發(fā)展,以及人們物質(zhì)生活水平的不斷提高,傳統(tǒng)的住宅已經(jīng)不能滿足人們的需求,智能家居便應(yīng)運(yùn)而生.智能家居傳感器網(wǎng)絡(luò)能把所有物品通過射頻識別等信息傳感設(shè)備與3G互聯(lián)網(wǎng)連接起來,實(shí)現(xiàn)智能化識別和管理.本文設(shè)計(jì)的動態(tài)智能家居安防系統(tǒng)除了能實(shí)現(xiàn)傳統(tǒng)的家居系統(tǒng)傳感器數(shù)據(jù)采集、分析及安防報(bào)警、手機(jī)短信遠(yuǎn)程控制家用電器開關(guān)的功能之外,通過加入小車這個(gè)移動智能網(wǎng)關(guān),可以實(shí)時(shí)獲取家里的信息.通過短信以及Internet與智能家居網(wǎng)關(guān)進(jìn)行通信,實(shí)現(xiàn)對智能家居系統(tǒng)的遠(yuǎn)程控制.
當(dāng)前嵌入式設(shè)計(jì)發(fā)展迅速,在包含大量數(shù)據(jù)處理模塊(比如智能視頻監(jiān)控、先進(jìn)的工業(yè)控制等應(yīng)用)的場景中,對高性能、低功耗、靈活性高的處理器的要求很高,現(xiàn)有的微處理器缺乏足夠的信號處理能力,而Zynq-7000是一款高性能和低功耗的處理器平臺[1],具有ARM+FPGA的體系結(jié)構(gòu),能夠提供靈活和可擴(kuò)展的解決方案.
傳統(tǒng)的智能家居系統(tǒng)主控CPU一般采取ARM+Zigbee的解決方案[2],我們設(shè)計(jì)的系統(tǒng)創(chuàng)新性地使用Zedboard FPGA(現(xiàn)場可編程邏輯門陣列)作為主控CPU,Zigbee模塊采用CC2530 Soc解決方案[3],GPRS模塊采用sim300模塊,使用AT指令與用戶手機(jī)進(jìn)行交互,與Internet的交互通過BOA,CGI實(shí)現(xiàn).FPGA實(shí)現(xiàn)PWM信號產(chǎn)生邏輯控制電機(jī).
如圖1所示,主控模塊完成的功能主要包括與Zigbee協(xié)調(diào)器,GSM/GPRS,Internet的互聯(lián),攝像頭視頻采集與電機(jī)驅(qū)動小車控制.該模塊包含兩個(gè)進(jìn)程,進(jìn)程一負(fù)責(zé)取Zigbee網(wǎng)絡(luò)數(shù)據(jù),并且將處理后的數(shù)據(jù)分發(fā)給GSM/GPRS模塊,以及Internet WebServer模塊.
圖1 系統(tǒng)硬件結(jié)構(gòu)框架 Fig.1 Framework map of hardware system
進(jìn)程一又包括3個(gè)獨(dú)立的線程,分別與各個(gè)模塊進(jìn)行交互.流程如下:
pthread_t tid[3]; //創(chuàng)建線程號
pthread_attr_t attr[3]; //為線程分配空間
pthread_attr_init(&attr[0]);
pthread_attr_setscope(&attr[0], PTHREAD_SCOPE_SYSTEM);
…… //線程空間初始化
pthread_create(&tid[0],&attr[0],thread_serial_ttyPS1,NULL);//創(chuàng)建線程1:用于ZedBoard獲取ZigBee網(wǎng)絡(luò)數(shù)據(jù)
pthread_create(&tid[1],&attr[1],thread_serial_uartlite_debug,NULL);//創(chuàng)建線程2:用于ZedBoard向GSM發(fā)送數(shù)據(jù)包
pthread_create(&tid[2],&attr[2],thread_serial_ttyPS1toWeb,NULL);//創(chuàng)建線程3:用于ZedBoard向Internet發(fā)送數(shù)據(jù)包
pthread_join(tid[0],NULL);
…… //在主函數(shù)中加入線程
pthread_rwlock_destroy(&GPacketBuf_rwmutex); //釋放線程
進(jìn)程二是CGI模塊,由WebServer調(diào)用,其功能包括解析數(shù)據(jù)包,并將ZigBee信息以網(wǎng)頁的形式呈現(xiàn)給用戶.流程如下:第一步,創(chuàng)建數(shù)據(jù)包格式;第二步,運(yùn)用HTML語言將從Zigbee自組網(wǎng)搜集的溫度傳感器、電池供電電壓、火災(zāi)警告、防盜報(bào)警、風(fēng)扇、電燈開關(guān)狀況[4]通過網(wǎng)頁告知用戶,用戶可以通過在遠(yuǎn)端登陸Internet查看家居狀況的完整信息.數(shù)據(jù)包的具體格式將會在后面的ZigBee模塊處給出.
在ZigBee網(wǎng)絡(luò)中有3種設(shè)備:(1)協(xié)調(diào)器.負(fù)責(zé)啟動整個(gè)網(wǎng)絡(luò),它也是網(wǎng)絡(luò)的第一個(gè)設(shè)備.(2)路由器.其主要功能是:允許其他設(shè)備加入網(wǎng)絡(luò),并協(xié)助自身同時(shí)作為終端設(shè)備的通訊.(3)終端設(shè)備.沒有維持網(wǎng)絡(luò)結(jié)構(gòu)的責(zé)任,它可以處于睡眠狀態(tài)或者被喚醒[5].
在我們的設(shè)計(jì)中,存在兩類節(jié)點(diǎn),一類是協(xié)調(diào)器節(jié)點(diǎn),具備路由功能.另一類是終端設(shè)備節(jié)點(diǎn),負(fù)責(zé)采集家居信息.終端節(jié)點(diǎn)的信息匯集到協(xié)調(diào)器節(jié)點(diǎn),然后由協(xié)調(diào)器節(jié)點(diǎn)交給主控制器,對Zigbee網(wǎng)絡(luò)的數(shù)據(jù)進(jìn)行統(tǒng)一處理.
ZedBoard主控與Zigebee協(xié)調(diào)器通信數(shù)據(jù)包格式[6]如下:
StartByte->1B (代表數(shù)據(jù)包起始字節(jié) 0x47)
PropertyId->1B (代表屬性ID)
NodeId->1B (代表Zigbee終端設(shè)備節(jié)點(diǎn)ID)
PacketLength->2B (代表整個(gè)包的長度)
PrivateData->XB (代表屬性ID對應(yīng)的負(fù)載內(nèi)容 X = PacketLength -6 )
EndByte->1B (代表數(shù)據(jù)包結(jié)束字節(jié)0x48)
該數(shù)據(jù)包的統(tǒng)一格式不僅用于ZigBee協(xié)調(diào)器節(jié)點(diǎn)與ZedBoard的通信,也適用于ZedBoard FPGA開發(fā)板向GSM模塊之間串口通信發(fā)送的數(shù)據(jù)包以及ZedBoard向Internet CGI模塊傳送的數(shù)據(jù)包,即這三個(gè)數(shù)據(jù)包相統(tǒng)一.各子模塊通過判斷串口接收數(shù)據(jù)的起始位和結(jié)束位打包接收數(shù)據(jù).然后接收模塊再根據(jù)數(shù)據(jù)包協(xié)議對接收到的消息進(jìn)行解析.GSM模塊會通過解析判斷是否有警告情況出現(xiàn),進(jìn)而向用戶發(fā)短信以警告,Internet模塊則將各個(gè)傳感器收集到的數(shù)據(jù)以文本形式顯示在網(wǎng)頁上.
該模塊由L298N雙H橋直流電機(jī)驅(qū)動模塊實(shí)現(xiàn),驅(qū)動部分端子供電范圍Vs為+5~+30V,驅(qū)動部分峰值電流為2A,原理圖如圖2所示,圖中IN1,IN2,IN3,IN4為控制信號,當(dāng)IN1為0,IN2為1時(shí),電機(jī)a正轉(zhuǎn),IN1為1,IN2為0時(shí),電機(jī)a反轉(zhuǎn).當(dāng)IN1,IN2同時(shí)為0或同時(shí)為1時(shí),電機(jī)停止轉(zhuǎn)動.PWM-a,PWM-b為使能端,接FPGA PWM輸出信號.L298N-a,L298N-b為電機(jī)a輸出端.電機(jī)b原理同上.
圖2 直流電機(jī)驅(qū)動原理圖Fig.2 Principle map of DC motor's driver
該直流電機(jī)驅(qū)動主要用于驅(qū)動智能小車[1],以實(shí)現(xiàn)小車在房間移動,并用攝像頭來采集房間實(shí)時(shí)信息,并及時(shí)通過互聯(lián)網(wǎng)返回給用戶;另外,智能小車上也帶有一個(gè)ZigBee模塊,裝有熱釋電人體紅外傳感器以檢測房間內(nèi)是否有陌生人出入,可燃?xì)怏w傳感器以檢測廚房是否出現(xiàn)可燃?xì)怏w泄露,煙霧傳感器以檢測是否有火災(zāi)發(fā)生.
在GPRS模塊中,我們采用Simcom提供的SIM300開發(fā)模塊,主要是利用8051單片機(jī)來實(shí)現(xiàn)數(shù)據(jù)解析,以判斷是否有警告消息出現(xiàn),進(jìn)而向用戶發(fā)送警告短信,向用戶發(fā)送短信是通過單片機(jī)串口向SIM300串口傳送一連串的AT指令[7]來實(shí)現(xiàn)的.
在發(fā)送AT指令的過程中,通過實(shí)驗(yàn)發(fā)現(xiàn),發(fā)送AT指令的頻率太高會導(dǎo)致SIM300反應(yīng)不過來而導(dǎo)致操作失敗,發(fā)送頻率太低則會使信息的實(shí)時(shí)性缺失,用戶不能及時(shí)了解到警告信息并通過發(fā)送短息加以控制,GPRS作為一個(gè)媒介實(shí)現(xiàn)用戶與智能家居系統(tǒng)的互通.同理,Internet 端也作為一個(gè)中間介質(zhì)以實(shí)現(xiàn)用戶對智能小車的控制.實(shí)現(xiàn)動態(tài)瀏覽的目標(biāo).具體通信的流程圖如圖3所示.
圖3 系統(tǒng)各模塊間信息傳輸流程圖Fig.3 Transmission of Information between each modules of the System flow chart
在Zynq芯片的配置上,如圖4所示,主控制器ARM Cortex-A9芯片基本保持了digilent原廠提供的配置,如圖4左邊兩列所示,串口UART0在出廠時(shí)已經(jīng)配置好,用于啟動操作系統(tǒng);我們在使用時(shí),把UART1也開辟出來,供FPGA與ZigBee協(xié)調(diào)器模塊串口通信時(shí)使用;另外為了將超過警報(bào)閾值的數(shù)據(jù)轉(zhuǎn)發(fā)到GSM模塊,需要在可編程邏輯(Programmable Logic,PL)單元開辟一個(gè)串口axi_uartlite_0,該串口是用FPGA提供的AXI總線接口擴(kuò)展的,充分利用了FPGA在I/O方面可以充分自定義的優(yōu)點(diǎn),硬件上彌補(bǔ)了Zynq上ARM芯片串口不夠用的缺陷.相關(guān)的地址映射如圖5所示.
圖4 ARM及FPGA的相關(guān)配置Fig.4 Associated configuration on ARM and FPGA
圖5 相關(guān)地址映射Fig.5 Associated Address Map
先用串口調(diào)試工具軟件測試智能安防報(bào)警模塊[7]短信收發(fā)功能.圖6所示的是短信讀取功能.讀短信時(shí)輸入AT+CMGR=5 再按enter鍵,選擇“手動發(fā)送”,其功能讀取指定“5”里的內(nèi)容,返回短信報(bào)文.
圖6 GSM短信讀取功能測試Fig.6 GSM SMS read function test
圖7所示的是短信發(fā)送功能.先輸入AT+CMGF=1 再按enter后選擇“手動發(fā)送”,表示用英文方式發(fā)送,回復(fù)OK.然后輸入AT+CMGS=“13632389015”按Enter鍵點(diǎn)“手動發(fā)送”,功能:向輸入的號碼發(fā)送短信,回復(fù)>,收到>后才可輸入發(fā)送內(nèi)容abc,再點(diǎn)手動發(fā)送.最后用十六進(jìn)制方式發(fā)送1A短信結(jié)束符,等待返回,如果收到:+CMGS:11,表示發(fā)送成功.然后編寫程序,固化芯片.SIM300在實(shí)際數(shù)據(jù)收發(fā)時(shí),必須要有足夠的等待時(shí)間,否則工作時(shí)會有丟失短消息的現(xiàn)象.
圖7 GSM短信發(fā)送功能測試Fig.7 GSM SMS send function test
(1)采用嵌入式高性能處理器ZedBoard 作為主控CPU,利用Linux軟件平臺實(shí)現(xiàn)復(fù)雜的應(yīng)用邏輯:例如定義通信協(xié)議、對信息進(jìn)行收集和分發(fā)、定義Uart IP 核,不僅提高了開發(fā)周期,易于后期擴(kuò)展,而且系統(tǒng)整體功能也比較穩(wěn)定.
(2)串口通信方面,實(shí)驗(yàn)發(fā)現(xiàn):在高波特率下會出現(xiàn)丟包現(xiàn)象比較嚴(yán)重,低波特率下會導(dǎo)致信息反
饋不及時(shí),致使系統(tǒng)的實(shí)時(shí)性降低.最后通過測試統(tǒng)一將波特率設(shè)定為9600.
(3)通過引入智能小車,能夠?qū)⒁苿有≤嚥杉囊曨l信息及時(shí)傳送至互聯(lián)網(wǎng).下一步將分析串口數(shù)據(jù)速率對彩信傳輸有效性之間的關(guān)系,研究優(yōu)化彩信發(fā)送策略,力求在實(shí)現(xiàn)互聯(lián)網(wǎng)實(shí)時(shí)監(jiān)控[8]的基礎(chǔ)上,能夠在短信發(fā)送報(bào)警信號的同時(shí),GPRS模塊能及時(shí)將圖片以彩信形式反饋給用戶.
參 考 文 獻(xiàn)
[1] 陸佳華,江 舟,馬 岷.嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2012:12-14, 272-287.
[2] 馮承金.基于Zigbee和ARM9的智能家居系統(tǒng)的研究與設(shè)計(jì)[D].武漢:武漢理工大學(xué),2010:5-8.
[3] 吳文忠,李萬磊.基于ARM和ZigBee的智能家居系統(tǒng)[J].計(jì)算機(jī)工程與設(shè)計(jì),2011(06):1987-1990.
[4] 袁 源,王紫婷,劉洋帆.基于FPGA和ZigBee技術(shù)的智能家居系統(tǒng)[J].信息通信,2011(06):42-43.
[5] 高守?zé)?吳燦陽.Zigbee技術(shù)實(shí)踐教程[M].北京:北京航空航天大學(xué)出版社,2009:19-24.
[6] Antorweep Chakravorty, Tomasz Wlodarczyk, Chunming Rong. Privacy Preserving Data Analytics for Smart Homes [J]. IEEE Security and Privacy Workshops,2013:23-27.
[7] 楊 堤.基于物聯(lián)網(wǎng)的智能家居控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].電子世界,2012(11):16-17.
[8] Jesus Roberto Millan-Almaraz.FPGA-based wireless smart sensor for real-time photosynthesis monitoring[J]. Computers and Electronics in Agriculture,2013,95(1):58-61.