肖奇軍,伍世豪,鄭杰東,李澤鋒
(肇慶學(xué)院電子與電氣工程學(xué)院,廣東肇慶 526061)
隨著社會(huì)生活節(jié)奏不斷加快,傳統(tǒng)家居已經(jīng)不能滿足人們的快速生活需求,在傳統(tǒng)家居基礎(chǔ)上建立起來的智能家居得到迅速發(fā)展。在智能家居系統(tǒng)中,人們通過智能終端控制電器使得生活更加便利,選擇性關(guān)閉多余的電器使得系統(tǒng)更加節(jié)能,通過傳感器感知家庭狀態(tài)使得家居安全性更高[1]。智能家居是將近程傳感、遠(yuǎn)程控制、信息網(wǎng)絡(luò)化的結(jié)合,將會(huì)引來標(biāo)準(zhǔn)化、功能多樣化的浪潮。智能家居的市場(chǎng)前景十分廣闊,將成為未來中國的主流行業(yè)之一。
為實(shí)現(xiàn)對(duì)家居的遠(yuǎn)程控制,讓家居控制不再局限于單一的空間,可以通過遠(yuǎn)程指令實(shí)現(xiàn)更遙遠(yuǎn)的距離控制。并且在運(yùn)行相關(guān)指令后,終端也會(huì)反饋家里的信息狀況給用戶,以保證能夠讓用戶了解家居的運(yùn)行情況和環(huán)境。
應(yīng)用物聯(lián)網(wǎng)技術(shù)實(shí)現(xiàn)對(duì)家居的遠(yuǎn)程控制[2],系統(tǒng)結(jié)構(gòu)如圖1 所示,MCU 控制器主要是由WiFi 模塊ESP8266 組成,外部接3.3 V 電源;溫濕度傳感器和MCU 控制器通過單總線連接,實(shí)現(xiàn)對(duì)環(huán)境溫濕度的采集;光敏傳感器和MCU 連接,實(shí)現(xiàn)對(duì)光照度的采集;RGB 彩燈與MCU 控制器的PWM控制器連接,以實(shí)現(xiàn)對(duì)彩燈顏色的控制;繼電器與MCU 的I/O 口連接,以實(shí)現(xiàn)對(duì)家用電器、電機(jī)等的控制。上電時(shí),ESP8266 自動(dòng)搜索并連接設(shè)置好路由器,此時(shí),MCU 已經(jīng)具備了上網(wǎng)的功能,當(dāng)手機(jī)接入到路由器的局域網(wǎng)后,手機(jī)也已經(jīng)具有訪問智能家居系統(tǒng)控制界面的能力,用戶只需要進(jìn)入到微信公眾號(hào),輸入需要進(jìn)行控制的家居系統(tǒng)編號(hào),公眾號(hào)的后臺(tái)就會(huì)根據(jù)輸入關(guān)鍵詞進(jìn)行回復(fù),將對(duì)應(yīng)的家居控制網(wǎng)頁信息發(fā)送給用戶。在同一個(gè)局域網(wǎng)的范圍內(nèi)即可在微信公眾號(hào)界面輸入特定的信息加以匹配,即可進(jìn)入網(wǎng)頁控制器以對(duì)智能家居系統(tǒng)進(jìn)行控制。用戶可通過網(wǎng)頁控制器界面直接控制繼電器和排風(fēng)扇,實(shí)現(xiàn)對(duì)溫濕度的控制,通過調(diào)節(jié)燈色的滑塊實(shí)現(xiàn)對(duì)光照的控制;并具有溫濕度數(shù)據(jù)、繼電器和排風(fēng)扇開關(guān)狀態(tài)和光敏數(shù)據(jù)顯示等功能。
圖1 系統(tǒng)結(jié)構(gòu)圖
在該系統(tǒng)中,在確定家居沒有過載的情況下,微信用戶將指令發(fā)送至云服務(wù)器,并且云服務(wù)器對(duì)指令數(shù)據(jù)打包后發(fā)送給MCU控制器的終端聯(lián)網(wǎng)模塊,并且根據(jù)MCU控制器中自定義的通信協(xié)議,MCU控制器會(huì)觸發(fā)相應(yīng)的控制動(dòng)作。動(dòng)作執(zhí)行完畢后,各個(gè)傳感器將家居的狀況發(fā)送至MCU 控制器,再通過終端聯(lián)網(wǎng)模塊將家居信息包發(fā)送至云服務(wù)器,最后家居信息傳遞到微信用戶端上。
ESP8266 模塊為安信可的WiFi 通信模塊,支持STA、AP、STA+AP 3種工作模式,內(nèi)置32位MCU,擁有高達(dá)32 Mb容量的flash,只要搭建簡單的外圍電路,就能有比原來更強(qiáng)的阻抗匹配,更穩(wěn)定的輸出信號(hào)和更高的抗干擾能力,同時(shí)增強(qiáng)版的IO端口也更多,功能更強(qiáng)大。
利用繼電器的開關(guān)特性對(duì)智能家居系統(tǒng)進(jìn)行功能的擴(kuò)展,工作原理如圖2所示。繼電器與GPIO16連接,當(dāng)GPIO16輸入為高電平時(shí),Q3 導(dǎo)通,Q2 截止,D4 燈滅,繼電器不觸發(fā)。當(dāng)輸入為低電平時(shí),Q3截止,Q2導(dǎo)通,D4燈亮,繼電器觸發(fā)。
圖2 繼電器電路原理圖
DHT11將溫濕度信息的采集過程集成到一個(gè)傳感器上,采用單總線控制,直接輸出數(shù)字信號(hào),這大大減小了應(yīng)用電路的復(fù)雜程度和體積[3]。其實(shí)際應(yīng)用電路簡單,通過將DHT11 溫濕度傳感器與通信模塊的結(jié)合,可以增加智能控制系統(tǒng)檢測(cè)當(dāng)前環(huán)境溫濕度的功能。電路原理如圖3所示,與單片機(jī)的GPIO5相連接進(jìn)行數(shù)據(jù)交換。
圖3 溫濕度傳感器電路原理圖
RGB 彩燈可通過3 個(gè)PWM 調(diào)制輸出的電流大小,改變3種顏色燈的亮度,從而最終改變光線的顏色[4]。調(diào)節(jié)RGB彩燈R、G、B的色彩亮度可以實(shí)現(xiàn)點(diǎn)亮出不同的顏色。電路如圖4所示,可以通過控制GPIO12、GPIO13 和GPIO15 的PWM 輸出波形的占空比來控制彩燈顏色變化。
圖4 彩燈控制電路圖
當(dāng)有光照的時(shí)候,光敏電阻的阻值會(huì)變小。如圖5 所示,在不接光敏電阻的情況下,ADC 采集到最大的電壓約是1.06 V。當(dāng)接上光敏電阻,光照越強(qiáng),ADC采集的電壓越低。通過電壓的變化獲得光照的大小。
圖5 光敏電路原理圖
ESP8266 首先處理從機(jī)的響應(yīng),輸出起始信號(hào),拉低總線的時(shí)間是19 ms,總線改為輸入;等待30 μs 后,查詢總線是否被傳感器拉低,線被傳感器拉低(高)后,不斷地查詢總線是否被傳感器拉高(低);接著處理數(shù)據(jù),接收傳感器返回的5 個(gè)字節(jié)數(shù)據(jù),每個(gè)COM 讀取1 個(gè)字節(jié),計(jì)算校驗(yàn)和,如果校驗(yàn)和正確,保存數(shù)據(jù)在變量wendu和shidu里。最后進(jìn)行數(shù)據(jù)讀寫,讀取1個(gè)字節(jié),即8位數(shù)據(jù),讀到數(shù)據(jù)位里的低電平,直到低電平結(jié)束退出循環(huán),延時(shí)35 μs后,再讀總線電平,如果是高電平,表示數(shù)據(jù)位為1,否則數(shù)據(jù)位為0,等待高電平結(jié)束,進(jìn)入下一位讀取。
利用FRC1 軟件實(shí)現(xiàn)ESP8266 系統(tǒng)的PWM(脈寬調(diào)制)功能,此程序可以同時(shí)產(chǎn)生多個(gè)不同頻率和頻寬比的PWM輸出信號(hào),可用來控制不同的設(shè)備,通過設(shè)置各個(gè)輸出通道的頻寬比后,系統(tǒng)調(diào)用函數(shù)來計(jì)算定時(shí)周期。系統(tǒng)會(huì)保護(hù)當(dāng)前正在運(yùn)行的各通道的數(shù)據(jù),并消除計(jì)算完成的標(biāo)記,未來的PWM周期能夠使用保存的參數(shù)。在脈沖寬度調(diào)制周期中斷后使用一個(gè)新參數(shù),并在計(jì)算完成后設(shè)置一個(gè)標(biāo)志位。確保在實(shí)現(xiàn)頻寬比緩慢規(guī)律性變化(如RGB 彩燈控制)的過程中,保證了色彩的平滑過渡。
DNS(域名系統(tǒng))能夠使用戶更方便地訪問互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的IP地址[5]。因此在DNS中,用戶可直接通過解析主機(jī)名直接得到相對(duì)應(yīng)的IP地址,以方便下一步操作。
使用函數(shù)通過傳入域名或者主機(jī)名來獲取IP 地址,函數(shù)調(diào)用失敗則返回空值,修改STA 連接的AP和密碼,在掃描函數(shù)里修改要連接的WiFi名稱和密碼,修改為真實(shí)存在的WiFi名稱,WiFi 連接上之后,開始調(diào)用函數(shù)進(jìn)行域名解析,檢測(cè)是否連接到WiFi,連接上后調(diào)用函數(shù)解析域名,若解析到IP,則輸出解析到IP。
HTTP 是為分布式超媒體信息系統(tǒng)而設(shè)計(jì)的一種網(wǎng)絡(luò)協(xié)議,主要用于名字服務(wù)器和分布式對(duì)象管理。其能夠傳送任意類型數(shù)據(jù)對(duì)象,以滿足WWW 服務(wù)器與客戶之間多媒體通信的需要,從而成為Internet 中發(fā)布多媒體信息的主要協(xié)議[6]。HTTP 請(qǐng)求就是客戶端對(duì)服務(wù)器端發(fā)起的請(qǐng)求,為服務(wù)器提供了一些額外信息,比如客戶端希望接收什么類型的數(shù)據(jù)[7],請(qǐng)求頭的格式包含請(qǐng)求方法、請(qǐng)求URL、HTTP 協(xié)議及版本報(bào)文頭和報(bào)文體等部分。
首先對(duì)串口進(jìn)行初始化,將WiFi 的工作模式設(shè)置為STA模式,進(jìn)行STA 連接。利用while 把掃描到的AP 信息輸出,并且設(shè)置需要連接的WiFi的名稱密碼(需要是真實(shí)存在的AP信息),以網(wǎng)頁默認(rèn)80的端口啟動(dòng)TCP服務(wù)器,同時(shí)創(chuàng)建TCP服務(wù)器連接,從而得到所連接WiFi的IP,進(jìn)行服務(wù)器的信息響應(yīng)。通過傳感器收集到的溫濕度,和adc值一起通過主機(jī)進(jìn)行信息傳輸,利用函數(shù)把生成的JSON數(shù)據(jù)進(jìn)行解析。最后根據(jù)需要配置彩燈,設(shè)置各個(gè)家居的開關(guān)。
WebService 技術(shù)具有封裝性強(qiáng)、配置簡單、對(duì)開發(fā)語言無要求、跨開發(fā)平臺(tái)及跨防火墻通信等優(yōu)點(diǎn)[8]。WebService主要通過XML語言來進(jìn)行信息傳輸,在網(wǎng)絡(luò)的信息交換和表示中,XML 會(huì)以描述結(jié)構(gòu)數(shù)據(jù)的格式,實(shí)現(xiàn)精確聲明內(nèi)容,以及跨越多種平臺(tái)完成數(shù)據(jù)交互。
基于微信公眾號(hào)的公眾號(hào)界面如圖6 所示,網(wǎng)頁控制界面如圖7所示。網(wǎng)頁控制界面設(shè)計(jì)如下。
圖6 微信公眾界面圖
圖7 網(wǎng)頁控制界面
(1)設(shè)置4 個(gè)按鍵(控制繼電器與電機(jī))
當(dāng)4 個(gè)按鍵被啟動(dòng)時(shí),會(huì)同時(shí)調(diào)用同一個(gè)參數(shù)不一樣的javascript 函 數(shù)SetEsp8266 (),當(dāng)javascript 函 數(shù) 被 調(diào) 用時(shí)SetEsp8266()就會(huì)生成一個(gè)請(qǐng)求連接,然后使用POST 方法發(fā)送出去,主機(jī)接受到后會(huì)根據(jù)不同的參數(shù)去控制繼電器開關(guān),電機(jī)開關(guān)。
(2)設(shè)置紅綠藍(lán)3 個(gè)滑動(dòng)塊(控制RGB彩燈)
當(dāng)3 個(gè)滑動(dòng)塊分別向左或向右移動(dòng)的時(shí)候,會(huì)同時(shí)調(diào)用SetRed()、SetGreen()和SetBlue()3個(gè)函數(shù),通過這3個(gè)函數(shù)就會(huì)得到滑塊移動(dòng)的數(shù)值,并且把得到的數(shù)值顯示在滑動(dòng)塊的右邊,表示滑塊當(dāng)前處在的位置。同時(shí)會(huì)把得到的紅、綠、藍(lán)3個(gè)顏色的數(shù)值通過函數(shù)packAndSend()與請(qǐng)求溫度值一起發(fā)送到設(shè)備上。
(3)溫濕度和光敏ADC的顯示
設(shè)置一個(gè)定時(shí)器,每500 ms 向主機(jī)發(fā)送一次請(qǐng)求,目的是更新信息。為了存儲(chǔ)信息,創(chuàng)建一個(gè)http request 變量,并把得到的信息通過JSON格式去解析出溫度濕度為ADC值,將其顯示在最下行。
針對(duì)傳統(tǒng)家居控制的不便,研制出一套智能家居系統(tǒng)。該系統(tǒng)將微信公眾號(hào)運(yùn)用到智能家居系統(tǒng)當(dāng)中,用戶可通過微信與智能家居進(jìn)行交互,在使用過程中,利用網(wǎng)絡(luò)和傳感器以及控制電路對(duì)家居設(shè)備進(jìn)行狀態(tài)的采集以及遠(yuǎn)程控制,并且實(shí)時(shí)反饋給用戶。該系統(tǒng)簡潔方便,還可進(jìn)行多功能擴(kuò)展,具有一定的實(shí)際應(yīng)用價(jià)值。