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