王耀青 解聰
摘 要: 為了實(shí)現(xiàn)對于空調(diào)的遠(yuǎn)程控制,設(shè)計(jì)一種基于Android的空調(diào)遠(yuǎn)程控制系統(tǒng)。系統(tǒng)利用CC2530作為主控制器,結(jié)合紅外學(xué)習(xí)技術(shù)、WiFi無線通信技術(shù),擴(kuò)展了對空調(diào)的控制方式。采用ZigBee終端模塊實(shí)現(xiàn)對紅外數(shù)據(jù)的采集、存儲,同時(shí)通過Android客戶端發(fā)送控制命令驅(qū)動(dòng)ZigBee終端實(shí)現(xiàn)對于空調(diào)的遠(yuǎn)程實(shí)時(shí)控制?;贏ndroid平臺和異步socket技術(shù)設(shè)計(jì)出一款與云服務(wù)器進(jìn)行通信的APP應(yīng)用程序。測試結(jié)果表明,該系統(tǒng)通過APP應(yīng)用程序?qū)崿F(xiàn)了對空調(diào)的遠(yuǎn)程實(shí)時(shí)控制和溫度的采集。該方案經(jīng)濟(jì)合理,易于實(shí)現(xiàn),可以應(yīng)用在其他的家電領(lǐng)域。
關(guān)鍵詞: 遠(yuǎn)程控制; Android; 紅外數(shù)據(jù)處理; 云服務(wù)器; 數(shù)據(jù)采集; socket技術(shù)
中圖分類號: TN929.5?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2018)22?0030?04
Abstract: An air conditioning remote control system based on Android is designed to realize remote control of air conditioner. In the system, the control mode of air conditioner is extended by taking the CC2530 as the main controller, and combining with the infrared learning technology and WiFi wireless communication technology. The ZigBee terminal module is used in the system to realize acquisition and storage of infrared data. The control commands are sent by the Android client to drive the Zigbee terminal, so as to realize real?time remote control of air conditioner. An APP application program communicating with the cloud server is designed based on the Android platform and asynchronous socket technology. The test results show that the system can realize real?time remote control and temperature acquisition of air conditioner by using the APP application program. The scheme is economic, reasonable, easy to be implemented, and can be applied in other home appliances.
Keywords: remote control; Android; infrared data processing; cloud server; data acquisition; socket technology
近年來,隨著物聯(lián)網(wǎng)的發(fā)展,家用電器的網(wǎng)絡(luò)遠(yuǎn)程智能化控制技術(shù)的不斷深入,以Internet為核心的控制方式正在逐步融入傳統(tǒng)的控制方式。相對于傳統(tǒng)的紅外控制方式,遠(yuǎn)程控制方式可以遠(yuǎn)距離對家用設(shè)備實(shí)施控制,而不受物理距離的限制。本文提出一種基于Android手機(jī)并通過云平臺連接家居網(wǎng)關(guān)的方式,實(shí)現(xiàn)了對于空調(diào)的遠(yuǎn)程實(shí)時(shí)控制。本系統(tǒng)結(jié)合傳統(tǒng)的遙控器控制方式,可以方便地實(shí)現(xiàn)近距離與遠(yuǎn)程對空調(diào)的實(shí)時(shí)控制。
整個(gè)系統(tǒng)由4個(gè)部分組成:Android客戶端模塊、云服務(wù)器模塊、WiFi?ZigBee網(wǎng)關(guān)模塊和ZigBee模塊[1]。總體框架圖如圖1所示。
Android客戶端模塊作為控制終端,負(fù)責(zé)發(fā)送指令至云服務(wù)器模塊以及接收系統(tǒng)反饋的網(wǎng)絡(luò)數(shù)據(jù),并作為終端顯示在屏幕上。云服務(wù)器模塊作為Android客戶端與WiFi?ZigBee網(wǎng)關(guān)模塊之間的橋梁,負(fù)責(zé)對接收到的數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)。WiFi?ZigBee網(wǎng)關(guān)模塊接收云服務(wù)器模塊的數(shù)據(jù),并對數(shù)據(jù)進(jìn)行解析和處理后,將其發(fā)送給ZigBee模塊。ZigBee模塊作為執(zhí)行機(jī)構(gòu),負(fù)責(zé)采集溫度數(shù)據(jù)和紅外編碼數(shù)據(jù),以及發(fā)送紅外信號,實(shí)現(xiàn)對控制的實(shí)時(shí)控制。
系統(tǒng)的硬件部分主要由兩個(gè)部分組成,分別是WiFi?ZigBee網(wǎng)關(guān)模塊和ZigBee終端模塊。兩個(gè)模塊共同作用完成數(shù)據(jù)的傳輸和對空調(diào)的控制。
2.1 WiFi?ZigBee網(wǎng)關(guān)模塊
WiFi?ZigBee模塊由WiFi模塊和ZigBee協(xié)調(diào)器模塊兩個(gè)部分組成,兩者之間通過串口進(jìn)行連接,實(shí)現(xiàn)Internet網(wǎng)絡(luò)和ZigBee網(wǎng)絡(luò)兩種不同網(wǎng)絡(luò)之間的通信。
1) WiFi模塊采用RT5350作為主控芯片,通過在RT5350芯片內(nèi)刷入openwrt固件并進(jìn)行相應(yīng)的配置,連接到家庭的無線局域網(wǎng)中,實(shí)現(xiàn)網(wǎng)關(guān)與外部網(wǎng)絡(luò)的互聯(lián)。WiFi模塊實(shí)現(xiàn)與云服務(wù)器和ZigBee協(xié)調(diào)器模塊的通信,實(shí)現(xiàn)數(shù)據(jù)的上傳和下載以及數(shù)據(jù)的實(shí)時(shí)傳輸。
2) ZigBee協(xié)調(diào)器模塊采用CC2530芯片作為主控芯片,ZigBee協(xié)調(diào)器模塊上電自動(dòng)組建網(wǎng)絡(luò),當(dāng)有新的ZigBee終端設(shè)備加入進(jìn)來時(shí),完成與ZigBee終端設(shè)備的連接通信,同時(shí)通過串口完成與WiFi模塊數(shù)據(jù)的交互。
2.2 ZigBee終端模塊
ZigBee終端模塊采用CC2530芯片作為主控制器,結(jié)合溫濕度傳感器、紅外接收模塊、紅外發(fā)送模塊,實(shí)現(xiàn)溫濕度數(shù)據(jù)和紅外數(shù)據(jù)的采集和發(fā)送。
1) 溫濕度傳感器模塊采用DHT11模塊,內(nèi)含1個(gè)電阻式感濕元件和1個(gè)NTC測溫元件,能夠精確地檢測環(huán)境實(shí)時(shí)溫濕度。
2) ZigBee模塊使用HX1838作為紅外接收模塊采集紅外數(shù)據(jù)。通過紅外學(xué)習(xí)的方式對空調(diào)遙控器信號進(jìn)行學(xué)習(xí),通過檢測HX1838模塊數(shù)據(jù)引腳的高低電平的時(shí)間,完成信號的采集和編碼,并將采集的數(shù)據(jù)保存在本地內(nèi)存中[2]。
3) 紅外發(fā)送模塊通過內(nèi)部定時(shí)器產(chǎn)生38 kHz的紅外載波信號,將接收到的紅外數(shù)據(jù)進(jìn)行適當(dāng)?shù)奶幚砗螅虞d到38 kHz的載波上,通過紅外發(fā)射管發(fā)射出去,從而實(shí)現(xiàn)對空調(diào)的控制。
3.1 軟件系統(tǒng)總體框架
本系統(tǒng)通過Android客戶端發(fā)出控制命令,云服務(wù)器接收到控制命令后轉(zhuǎn)發(fā)給與云服務(wù)器相連的網(wǎng)關(guān),網(wǎng)關(guān)的WiFi模塊經(jīng)過WAN口接收控制命令,然后對接收到的控制命令進(jìn)行處理和解析,將處理的結(jié)果發(fā)送給網(wǎng)關(guān)的協(xié)調(diào)器模塊[3]。協(xié)調(diào)器模塊以中轉(zhuǎn)站的身份將接收到的命令發(fā)送給ZigBee控制終端,ZigBee終端響應(yīng)控制命令執(zhí)行相應(yīng)的控制操作,最終實(shí)現(xiàn)Android智能手機(jī)對空調(diào)的遠(yuǎn)程控制。
系統(tǒng)軟件設(shè)計(jì)主要分為ZigBee協(xié)調(diào)器模塊、ZigBee終端節(jié)點(diǎn)模塊、WiFi模塊設(shè)計(jì)以及Android客戶端模塊四個(gè)部分。ZigBee終端節(jié)點(diǎn)模塊實(shí)現(xiàn)對于空調(diào)的直接控制,ZigBee協(xié)調(diào)器模塊和WiFi模塊共同作用實(shí)現(xiàn)Internet網(wǎng)和ZigBee網(wǎng)絡(luò)兩種不同網(wǎng)絡(luò)之間的通信,Android客戶端模塊完成命令的發(fā)送和網(wǎng)絡(luò)數(shù)據(jù)的接收及顯示。
3.2 ZigBee終端節(jié)點(diǎn)模塊設(shè)計(jì)
ZigBee終端節(jié)點(diǎn)是整個(gè)系統(tǒng)的控制設(shè)備終端,通過在節(jié)點(diǎn)上配備了相應(yīng)的傳感器模塊或控制模塊,對環(huán)境進(jìn)行實(shí)時(shí)監(jiān)視和對電器設(shè)備實(shí)時(shí)控制[4]。系統(tǒng)利用Android手機(jī)發(fā)送的命令控制空調(diào)。空調(diào)的控制分為兩個(gè)模式,分別是學(xué)習(xí)模式和發(fā)射模式。首先在ZigBee終端之中使用紅外學(xué)習(xí)模式將空調(diào)的狀態(tài)數(shù)據(jù)全部學(xué)習(xí)完成[5],并將學(xué)習(xí)到的數(shù)據(jù)存儲到ZigBee終端的內(nèi)存中,之后自動(dòng)進(jìn)入紅外的發(fā)送模式,通過Android發(fā)送紅外發(fā)射指令控制空調(diào)。利用ZigBee自組網(wǎng)的特點(diǎn),實(shí)現(xiàn)ZigBee終端與協(xié)調(diào)器的組網(wǎng)連接[6]。ZigBee終端不斷檢測WiFi?ZigBee網(wǎng)關(guān)與ZigBee終端之間的數(shù)據(jù),當(dāng)ZigBee終端檢測到從網(wǎng)關(guān)發(fā)送的命令時(shí),就啟動(dòng)ZigBee終端上相應(yīng)的控制命令,通過判斷網(wǎng)關(guān)發(fā)送的控制命令,解析出命令是紅外控制命令還是溫度控制命令。當(dāng)終端檢測到溫度控制命令時(shí),就將DHT11檢測到的溫濕度數(shù)據(jù)通過網(wǎng)關(guān)發(fā)送給云服務(wù)器,并最終發(fā)送到Android客戶端之中。當(dāng)終端檢測到紅外控制命令時(shí),就啟動(dòng)紅外發(fā)送模塊發(fā)送出紅外信號,實(shí)現(xiàn)對空調(diào)的實(shí)時(shí)控制。終端節(jié)點(diǎn)控制圖如圖2所示。
3.2.1 紅外數(shù)據(jù)的采集
不同生產(chǎn)廠家空調(diào)的協(xié)議差別很大,編碼方式多種多樣。為解決不同的協(xié)議差別,本文采用紅外學(xué)習(xí)的方法采集空調(diào)紅外數(shù)據(jù),利用設(shè)定的周期對數(shù)字信號進(jìn)行采集,進(jìn)行數(shù)據(jù)壓縮后保存到本地的內(nèi)存中。數(shù)字I/O采集一般有兩種方案:一是利用外部中斷直接捕獲數(shù)字信號變換,可以根據(jù)信號特性設(shè)置為上升沿或下降沿中斷;二是直接用GPIO端口定時(shí)讀入。經(jīng)對比試驗(yàn),方案2代碼占用資源更少,且采樣時(shí)間可以預(yù)測,也完全滿足要求[7]。而中斷1中需要多個(gè)中斷服務(wù)程序,且在協(xié)議棧之中,由于系統(tǒng)執(zhí)行輪詢的操作系統(tǒng),對于高頻率的中斷反應(yīng)不及時(shí),導(dǎo)致采樣結(jié)果不精確。
3.2.2 溫度數(shù)據(jù)的采集
系統(tǒng)采用DHT11模塊采集室內(nèi)的溫濕度數(shù)據(jù),當(dāng)接收到溫濕度命令時(shí),開啟溫濕度采集過程,并將采集的結(jié)果通過終端節(jié)點(diǎn)上報(bào)給網(wǎng)關(guān)。
3.3 ZigBee協(xié)調(diào)器模塊設(shè)計(jì)
ZigBee主控制器負(fù)責(zé)網(wǎng)絡(luò)的建立、維護(hù)和數(shù)據(jù)的中轉(zhuǎn),主要任務(wù)是為各個(gè)終端設(shè)備分配地址,建立和維護(hù)網(wǎng)絡(luò),完成和各個(gè)傳感器節(jié)點(diǎn)間的信息交換和通信[8],通過串口通信完成與openwrt系統(tǒng)的數(shù)據(jù)交換。ZigBee協(xié)調(diào)器不停地檢測串口,當(dāng)接收到來自WiFi模塊的數(shù)據(jù)時(shí),及時(shí)采集串口中的數(shù)據(jù),并通過ZigBee事件機(jī)制,設(shè)置這個(gè)任務(wù)產(chǎn)生了哪類事件,當(dāng)系統(tǒng)再次輪詢時(shí),查詢事件標(biāo)志位,調(diào)用相應(yīng)的事件處理函數(shù),將數(shù)據(jù)發(fā)送到ZigBee終端節(jié)點(diǎn)。同時(shí)ZigBee終端模塊通過響應(yīng)控制命令,將采集到的數(shù)據(jù)通過網(wǎng)關(guān)最終將結(jié)果上報(bào)到云服務(wù)器。
3.4 WiFi模塊設(shè)計(jì)
網(wǎng)關(guān)實(shí)現(xiàn)WiFi模塊與ZigBee終端和外部云服務(wù)器的通信,是ZigBee網(wǎng)絡(luò)和Internet網(wǎng)絡(luò)之間通信的橋梁[9]。在網(wǎng)關(guān)內(nèi)部使用串口協(xié)議進(jìn)行兩種不同網(wǎng)絡(luò)之間的通信。WiFi模塊通過建立socket套接字與云服務(wù)器進(jìn)行通信,并不斷地監(jiān)聽是否有云服務(wù)器遠(yuǎn)程調(diào)用,并將監(jiān)聽的結(jié)果寫入到串口中,供協(xié)調(diào)器模塊讀取。同時(shí)不斷地檢測是否有ZigBee數(shù)據(jù)幀寫入到串口中,并將從串口中讀取到的數(shù)據(jù)通過tcp協(xié)議發(fā)送至云服務(wù)器。WiFi模塊軟件流程圖如圖3所示。
RT5350模塊與ZigBee協(xié)調(diào)器的協(xié)議轉(zhuǎn)換是利用串口實(shí)現(xiàn)的,在WiFi模塊中將串口初始化為與協(xié)調(diào)器模塊相同的串口數(shù)據(jù)格式,依次設(shè)置串口控制器波特率,數(shù)據(jù)位、停止位、奇偶檢驗(yàn)位,同時(shí)設(shè)置讀取串口的最大時(shí)間,防止串口堵塞。當(dāng)串口存在數(shù)據(jù)時(shí),協(xié)調(diào)器和RT5350模塊根據(jù)需要分別讀取串口數(shù)據(jù)。
3.5 Android客戶端模塊設(shè)計(jì)
Android客戶端是整個(gè)遠(yuǎn)程控制的移動(dòng)終端,通過對Android應(yīng)用程序的操作完成整個(gè)控制過程。Android應(yīng)用程序APP與云服務(wù)器通過云服務(wù)器分配的唯一accesskey進(jìn)行登錄連接,保證整個(gè)過程的安全性。APP應(yīng)用程序與云服務(wù)器連接成功后,將命令發(fā)送給云服務(wù)器,云服務(wù)器響應(yīng)命令完成命令的轉(zhuǎn)發(fā),完成整個(gè)系統(tǒng)的遠(yuǎn)程控制。
本系統(tǒng)的網(wǎng)絡(luò)通信模塊基于TCP/IP協(xié)議的socket通信機(jī)制,實(shí)現(xiàn)Android客戶端與云服務(wù)器的連接。當(dāng)連接到云服務(wù)器之后,開啟新線程,在子線程內(nèi)創(chuàng)建socket輸入輸出流,發(fā)送網(wǎng)絡(luò)數(shù)據(jù)和接收網(wǎng)絡(luò)數(shù)據(jù)。當(dāng)接收到網(wǎng)絡(luò)數(shù)據(jù)時(shí),通過handle[10]機(jī)制將接收到的數(shù)據(jù)發(fā)送給主線程并在主頁面上顯示出來。在主線程之中設(shè)置事件監(jiān)聽器,當(dāng)按鈕被按下時(shí),觸發(fā)子線程的命令發(fā)送函數(shù),將按鈕對應(yīng)的控制命令發(fā)送給云服務(wù)器,通過監(jiān)聽云服務(wù)器返回值,確定命令是否發(fā)送成功。
本文使用Herk云作為整個(gè)系統(tǒng)的云服務(wù)器模塊對數(shù)據(jù)進(jìn)行控制,根據(jù)命令將獲取到的數(shù)據(jù)發(fā)送給Android客戶端和網(wǎng)關(guān)。并且由于此云服務(wù)器特點(diǎn)的單一性,每一個(gè)連接到此云服務(wù)器的設(shè)備都會(huì)分配一個(gè)唯一的標(biāo)志符(csrftoken),只有用戶終端的標(biāo)識符與設(shè)備終端的標(biāo)識符匹配,才能連接到被控設(shè)備,并且與之進(jìn)行通信,極大地保證了整個(gè)系統(tǒng)的安全性。云服務(wù)器與設(shè)備終端和用戶終端采用HTTP協(xié)議進(jìn)行通信,用戶終端和設(shè)備終端分別使用注冊到云服務(wù)器獲取的用戶密鑰userAccessKey和設(shè)備密鑰deviceAccessKey進(jìn)行登錄,取得云端的訪問權(quán)限。Android客戶端和設(shè)備終端可以將數(shù)據(jù)及時(shí)地傳送給云服務(wù)器,同時(shí)也可以將云平臺下發(fā)的數(shù)據(jù)發(fā)送給設(shè)備終端和用戶終端,實(shí)現(xiàn)對數(shù)據(jù)的轉(zhuǎn)發(fā),最終實(shí)現(xiàn)Android客戶端、云端以及網(wǎng)關(guān)之間的通信。
系統(tǒng)功能的測試是檢驗(yàn)整個(gè)系統(tǒng)是否能夠達(dá)到正確控制的必要步驟,在實(shí)驗(yàn)中,分別測試溫度數(shù)據(jù)的采集和空調(diào)的實(shí)時(shí)控制。先使用APP發(fā)送控制命令,檢測當(dāng)前環(huán)境下的實(shí)際溫度值,將檢測到的溫度值進(jìn)行上傳,最終上報(bào)到Android客戶端,并通過客戶端程序?qū)囟戎碉@示出來。檢測到的溫度值以及空調(diào)調(diào)節(jié)的溫度值如圖4所示。
其次,在手機(jī)中通過按鈕發(fā)送控制命令,控制空調(diào)的開關(guān)狀態(tài)和溫度調(diào)節(jié)。通過紅外接收模塊,ZigBee終端通過串口收到的控制空調(diào)開機(jī)的一組紅外編碼為:{ 175 170 23 62 23 19 23 61 23 61 23 19 22 19 23 62 22 20 22 19 22…}。對這組紅外編碼經(jīng)過處理并存儲后,通過Android手機(jī)發(fā)送的控制命令驅(qū)動(dòng)紅外發(fā)送模塊控制空調(diào)。經(jīng)過測試,該系統(tǒng)能夠精確地實(shí)現(xiàn)對空調(diào)的控制。
本文系統(tǒng)充分利用ZigBee終端的I/O資源與自組網(wǎng)功能,實(shí)現(xiàn)了空調(diào)紅外數(shù)據(jù)的學(xué)習(xí)和存儲,同時(shí)將ZigBee終端與WiFi?ZigBee網(wǎng)關(guān)結(jié)合起來,實(shí)現(xiàn)了ZigBee模塊的入網(wǎng)功能,增強(qiáng)了與外部的聯(lián)系。同時(shí)在系統(tǒng)之中引入云平臺,將云平臺與Android手機(jī)以及空調(diào)相結(jié)合,實(shí)現(xiàn)了對傳統(tǒng)空調(diào)控制方式的改造。在增加用戶體驗(yàn)舒適度的同時(shí),擴(kuò)展了智能家居的智能化程度,更有利于今后智能家居的進(jìn)一步擴(kuò)展。
參考文獻(xiàn)
[1] 張紫謙,衷衛(wèi)聲,梁凱.基于Android終端的物聯(lián)網(wǎng)家居環(huán)境監(jiān)測系統(tǒng)設(shè)計(jì)[J].測控技術(shù),2016,35(2):108?111.
ZHANG Ziqian, ZHONG Weisheng, LIANG Kai. Design of the Internet of Things home environment monitoring system based on Android terminal [J]. Measurement & control technology, 2016, 35(2): 108?111.
[2] 陳雙葉,咸耀山,丁迎來,等.基于WiFi控制的具有自學(xué)習(xí)能力的紅外遙控裝置[J].信息通信技術(shù),2016,10(3):70?75.
CHEN Shuangye, XIAN Yaoshan, DING Yinglai, et al. Infrared remote control device with self?learning ability based on WiFi control [J]. Information and communications technologies, 2016, 10(3):70?75.
[3] 周平,呂勇,易愷迪,等.基于PC的智能家電無線紅外遙控系統(tǒng)[J].現(xiàn)代計(jì)算機(jī),2015(1):36?41.
ZHOU Ping, L? Yong, YI Kaidi, et al. Wireless infrared control system of intelligent appliances based on PC [J]. Modern computer, 2015(1): 36?41.
[4] 李宇,王衛(wèi)星,陳潤澤.基于ZigBee的物聯(lián)網(wǎng)智能家居系統(tǒng)[J].電子測試,2016(5):71?75.
LI Yu, WANG Weixing, CHEN Runze. The design of Internet of Things smart home system based on ZigBee [J]. Electronic test, 2016(5): 71?75.
[5] 任峰,屈璟,崔志誠.一種帶紅外遙控功能的智能插座的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦知識與技術(shù),2016,12(32):180.