賈月輝,孫林娟,劉 佳
(1.天津中德應(yīng)用技術(shù)大學(xué),天津 300350;2.天津大學(xué)仁愛(ài)學(xué)院,天津 301636)
隨著經(jīng)濟(jì)和社會(huì)的發(fā)展,人們的生活水平日益提高,智能家居系統(tǒng)逐漸走進(jìn)了普通家庭。智能家居系統(tǒng)的出現(xiàn)很大程度上提升了家庭人居環(huán)境的安全性、方便性及宜居性[1-2],但傳統(tǒng)智能家居系統(tǒng)存在成本貴、控制平臺(tái)不統(tǒng)一、操作和監(jiān)控系統(tǒng)復(fù)雜、不符合人們的使用習(xí)慣等問(wèn)題,為了解決目前智能家居行業(yè)存在的問(wèn)題,基于社交應(yīng)用的智能家居控制系統(tǒng)應(yīng)運(yùn)而生。不論是國(guó)外的Facebook,Twitter,還是國(guó)內(nèi)的微信、微博,都在積極地推進(jìn)這方面技術(shù)的發(fā)展。
微信是當(dāng)前應(yīng)用最為廣泛的社交應(yīng)用程序之一,基于微信的應(yīng)用開(kāi)發(fā)也是最近幾年互聯(lián)網(wǎng)新的熱點(diǎn)。微信利用自身在社交網(wǎng)絡(luò)的優(yōu)勢(shì)趁機(jī)在微信公眾平臺(tái)的基礎(chǔ)上推出了微信硬件平臺(tái),將微信作為智能硬件的入口,讓第三方硬件廠商的設(shè)備接入微信平臺(tái)。由于微信具有平臺(tái)技術(shù)成熟、用戶群體龐大、用戶平臺(tái)開(kāi)放等優(yōu)點(diǎn),對(duì)于智能家居而言,微信無(wú)疑成了一個(gè)時(shí)尚便利的終端應(yīng)用。
本文設(shè)計(jì)并實(shí)現(xiàn)了一種基于微信公眾平臺(tái)、開(kāi)源硬件、開(kāi)放云平臺(tái)和Internet網(wǎng)絡(luò)的智能家居控制系統(tǒng),可實(shí)現(xiàn)對(duì)室內(nèi)環(huán)境的采集檢測(cè)、安防報(bào)警以及遠(yuǎn)程家電控制等功能。該設(shè)計(jì)成本低廉,同時(shí)由于系統(tǒng)的開(kāi)源性,用戶可以對(duì)該系統(tǒng)進(jìn)行定制設(shè)計(jì),增加了系統(tǒng)應(yīng)用的靈活性。
本系統(tǒng)以微信公眾平臺(tái)為控制入口,以路由器為連接中介,以云服務(wù)器為信息處理中心,實(shí)現(xiàn)了一種基于微信的智能家居控制系統(tǒng)。系統(tǒng)整體由3部分構(gòu)成,如圖1所示。
數(shù)據(jù)采集及執(zhí)行機(jī)構(gòu)控制部分由Arduino主控、各類傳感器以及執(zhí)行元件構(gòu)成,主要負(fù)責(zé)獲取家居環(huán)境參數(shù)(溫度、濕度等)、火災(zāi)預(yù)警、非法侵入監(jiān)測(cè)、窗簾控制、家電控制等,屬于智能家居系統(tǒng)的感知層。
網(wǎng)絡(luò)數(shù)據(jù)傳輸部分是聯(lián)通感知層和應(yīng)用程序的橋梁,由W5100 Ethernet擴(kuò)展模塊、路由器及Internet構(gòu)成,主要負(fù)責(zé)將感知層采集到的數(shù)據(jù)信息上傳到云服務(wù)器并存貯在數(shù)據(jù)庫(kù)中,以便微信公眾號(hào)用戶隨時(shí)查看;同時(shí)還要能將微信用戶的指令下傳到感知層執(zhí)行,屬于智能家居系統(tǒng)網(wǎng)絡(luò)層。
應(yīng)用端直接與用戶相連,由云服務(wù)器、數(shù)據(jù)庫(kù)和微信公眾平臺(tái)構(gòu)成,主要負(fù)責(zé)接收來(lái)自網(wǎng)絡(luò)層的數(shù)據(jù)信息并存儲(chǔ)在相應(yīng)的數(shù)據(jù)庫(kù)中,同時(shí)根據(jù)用戶發(fā)出的請(qǐng)求,將數(shù)據(jù)庫(kù)中的信息反饋給用戶,以及根據(jù)用戶的指令要求,發(fā)送到感知層處理器執(zhí)行,屬于智能家居系統(tǒng)應(yīng)用層。
圖1 智能家居系統(tǒng)方案
本系統(tǒng)硬件系統(tǒng)主要由感知設(shè)備、網(wǎng)絡(luò)設(shè)備和服務(wù)端設(shè)備構(gòu)成。
感知設(shè)備主控為Arduino UNO R3,是目前使用最廣泛的Arduino。它基于ATmega328的單片機(jī)板,Arduino UNO R3共有14個(gè)數(shù)字I/O端口(其中6個(gè)可以做PWM輸出),6個(gè)模擬端口,一個(gè)16 MHz晶體振蕩器,一個(gè)USB接口,一個(gè)DC電源插座,一個(gè)ICSP和一個(gè)復(fù)位按鈕。溫濕度的采集采用含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器DHT11,數(shù)據(jù)輸出端口接在Arduino串口輸入端。煙霧傳感器采用MQ-2,該傳感器對(duì)液化氣、天然氣等可燃性氣體以及煙霧靈敏度較高,其輸出接口接Arduino模擬輸入口。其他感知層設(shè)備還有熱釋電紅外探測(cè)儀、報(bào)警器、繼電器等,為簡(jiǎn)化硬件設(shè)計(jì),降低成本,傳感器、執(zhí)行元件與主控采用有線連接,連接電路如圖2所示。窗簾控制電機(jī)采用5 V直流電機(jī),由Arduino控制電機(jī)正反轉(zhuǎn),由于Arduino的I/O口不足以驅(qū)動(dòng)電機(jī)運(yùn)行,故需要設(shè)計(jì)驅(qū)動(dòng)電路,如圖3所示。
圖2 傳感器、執(zhí)行元件與主控連接圖
網(wǎng)絡(luò)傳輸設(shè)備由Arduino Ethernet擴(kuò)展板和路由器構(gòu)成,Arduino Ethernet擴(kuò)展板直接堆疊到Arduino主控板,再通過(guò)網(wǎng)線直接連到路由器即可。
Arduino Ethernet擴(kuò)展板通過(guò)SPI總線連接一個(gè)Wiznet以太網(wǎng)控制器(本設(shè)計(jì)擴(kuò)展板采用的是W5100)到Arduino主控板,SPI總線連接的Arduino引腳為數(shù)字端口10,11,12,和13。
在智能家居系統(tǒng)中,服務(wù)端設(shè)備一般采用租用的網(wǎng)絡(luò)云服務(wù)器。本系統(tǒng)采用的云服務(wù)器為新浪云SAE平臺(tái)。
本系統(tǒng)軟件設(shè)計(jì)由3部分構(gòu)成:主控端程序設(shè)計(jì)(主控端程序設(shè)計(jì)涉及傳感器的數(shù)據(jù)采集、執(zhí)行機(jī)構(gòu)的控制、數(shù)據(jù)通信等,這里重點(diǎn)講解通信程序的設(shè)計(jì))、服務(wù)器平臺(tái)的搭建以及微信公眾平臺(tái)的搭建。
Arduino與服務(wù)器的連接通過(guò)HTTP協(xié)議,作為HTTP客戶端的Arduino用get的方式訪問(wèn)服務(wù)器并上傳數(shù)據(jù)表單,服務(wù)器返回用戶指令,Arduino根據(jù)獲得的用戶指令對(duì)執(zhí)行機(jī)構(gòu)進(jìn)行控制。
圖3 直流電機(jī)驅(qū)動(dòng)電路
Arduino與應(yīng)用層的數(shù)據(jù)傳輸利用擴(kuò)展板的W5100,在使用網(wǎng)絡(luò)功能時(shí)需要包含該庫(kù)頭文件Ethernet類,由于Arduino是通過(guò)SPI總線連接W5100實(shí)現(xiàn)網(wǎng)絡(luò)功能的,所以也需要包含SPI頭文件。設(shè)計(jì)步驟為:首先實(shí)例化一個(gè)對(duì)象;然后配置物理地址和板卡的IP地址;連接成功,把傳感器的數(shù)據(jù)添加在get的后邊發(fā)送。
為實(shí)現(xiàn)微信公眾平臺(tái)與系統(tǒng)服務(wù)器的消息交換,需要給微信公眾平臺(tái)服務(wù)器提供系統(tǒng)服務(wù)器的URL和Tocken值,并根據(jù)微信公眾平臺(tái)驗(yàn)證規(guī)則證明URL和Tocken值有效。因此,需要在服務(wù)器Web應(yīng)用程序中設(shè)計(jì)微信公眾平臺(tái)服務(wù)器驗(yàn)證模塊。URL是系統(tǒng)服務(wù)器應(yīng)用提供的一個(gè)網(wǎng)址,微信公眾平臺(tái)服務(wù)器可以訪問(wèn)到這個(gè)網(wǎng)址,這樣微信公眾平臺(tái)服務(wù)器和系統(tǒng)服務(wù)器才可以通信。除了給微信公眾平臺(tái)提供了一個(gè)URL外,還需要一個(gè)標(biāo)記Tocken,在認(rèn)證的時(shí)候使用,URL和Tocken代表唯一的微信公眾平臺(tái)賬號(hào)。微信公眾平臺(tái)服務(wù)器與云服務(wù)器傳遞的消息被封裝成XML數(shù)據(jù)包格式,因此,在需要數(shù)據(jù)包解析模塊對(duì)XML數(shù)據(jù)包進(jìn)行解析從而提取相應(yīng)信息[3]。
新浪云SAE服務(wù)器需要和微信公眾平臺(tái)以及Arduino主控板進(jìn)行信息交互,因此需要開(kāi)發(fā)對(duì)應(yīng)的服務(wù)器代碼去完成相應(yīng)的功能,在開(kāi)發(fā)過(guò)程中,均采用PHP語(yǔ)言進(jìn)行編寫(xiě)。
用戶通過(guò)微信給控制器發(fā)送指令,控制指令在經(jīng)過(guò)數(shù)據(jù)包解析模塊處理后,需要再經(jīng)過(guò)指令請(qǐng)求處理模塊才能傳送到主控。用戶發(fā)送的控制指令被存儲(chǔ)在SAE服務(wù)器的MySQL數(shù)據(jù)庫(kù)中,主控上傳到服務(wù)器的傳感器數(shù)據(jù)也保存在服務(wù)器數(shù)據(jù)庫(kù)中,因此需要分別設(shè)計(jì)指令存儲(chǔ)和數(shù)據(jù)存儲(chǔ)的兩個(gè)數(shù)據(jù)庫(kù)文件[4]。
本文采用開(kāi)源Arduino、新浪云虛擬服務(wù)器以及微信公眾號(hào)平臺(tái),構(gòu)建了可遠(yuǎn)程監(jiān)控的智能系統(tǒng),實(shí)現(xiàn)對(duì)家庭環(huán)境的監(jiān)控及其電器設(shè)備的控制。系統(tǒng)采用成熟的硬件平臺(tái),不僅穩(wěn)定性高,成本低,且易于部署推廣。