夏亮
五邑大學 廣東 江門 529020
全球氣候變暖,夏季越發炎熱,隨著城市化的加快和中國人生活水平的持續提高,人們從追求溫飽到追求生活品質[1],空調成為避暑的不二之選。特別是對于多汗人群,只要一離開空調就汗流浹背,而一直開著空調可以把室內控制在一個恒定的溫度,讓人感覺更舒適。傳統的空調控制通過遙控器短距離控制,當超出有效距離即無法控制,且只有手動開啟空調才能維持室內溫度。恰逢智能家居興起,聯網遠程控制成為人們大力追捧的方向,傳統的家居物聯網需要自行搭建服務器,無疑開發難度大、花費成本高。面對這些不足,本文采用易開發維護的Arduino,同時利用家中現有的網絡環境輔以模塊化的傳感器及WIFI模塊,將數據儲存在開放的云平臺上,使用者可以隨時隨地控制空調及監測室內環境信息,且無須手動開啟空調維持舒適溫度,從而有效地降低成本、節約資源。
本遠程空調控制系統的主要功能是能夠根據室內外溫度變化遠程智能控制空調,若用戶開啟溫控模式,空調會智能控制室內溫度維持恒定。整個系統分為控制端、云端及用戶端三部分。控制端由ArduinoUNO為主控,搭配DHT11實現對環境溫濕度的捕獲[2];HC-SR501檢測環境是否有人,若環境有人且室溫超過預設閥值則自動開啟空調;VS1838B和3mm紅外發射管遙控空調;ESP8266聯網建立與路由器的通信,并通過MQTT協議將數據上傳至云平臺以供用戶實時查看并控制。云端使用巴法云在用戶端和控制端之間建立通信,并儲存數據以供用戶端調用查詢。用戶端則基于微信小程序實現交互功能,具備遙控,查詢等實用功能。該系統適合居家使用以及需要溫控的場景。系統框圖如圖1所示。

圖1 系統框圖
主控模塊使用以Atmega328p為處理器,串口芯片為CH340的創客Arduino主板,主板所有的IO口用2.54排針引出,無須再添拓展板。其編程語言類似C/C++,具有模塊化、跨平臺、簡單、清晰、開放性等優勢,利于后期維護以及模塊化設計,近年來廣受電子愛好者的追捧[3]。
2.2.1 溫度采集模塊采用DHT11數字溫濕度傳感器。量程濕度為5%到95%RH,溫度-20℃到+60℃,此溫濕度量程可適用于多場景。傳感器含有溫濕度復合傳感器,輸出已校準數字信號。它采用專用數字模塊采集技術和溫濕度傳感技術來保證測溫準確,具有較高的可靠性和穩定性。它包括一個電阻式濕敏元件和一個NTC熱敏元件,且搭配一個高性能8位單片機。因而具有快響應、強抗干擾能力、高性價比等優勢[4]。
2.2.2 人體傳感模塊采用HC-SR501被動紅外探測器。HCSR501有3個輸出引腳分別是輸出,VCC和接地,它內包含穩壓器,因此可以通過4.5-20V的任何DC電壓(通常使用5V)供電。當工作時自動感應,有無人進入感應范圍所得出的電平不一致,可通過電位變化區分,若有人則高電平,反之則低電平。它的低功耗,低成本,耐用可靠,具有寬廣的鏡頭范圍,易于連接并且在電子愛好者中非常受歡迎。
2.2.3 紅外遙控模塊采用VS1838B和3mm紅外發射管組合。VS1838B內含高速高靈敏度PIN發光二極管和低功耗、高增益前置放大IC,同時采用環氧樹脂封裝外加外屏蔽抗干擾設計,在紅外遙控模塊中充當接收器使用,可在2.7-5.5V下工作,具有低功耗、寬工作電壓,強抗干擾能力等優勢,適用于控制多種家電產品。其電路如圖2所示

圖2 VS1838B電路圖
傳輸模塊采用ESP8266物聯網Wi-Fi芯片。它可以獨立作為一個核心控制板控制傳感器,或作為一個傳感器實現Wi-Fi功能,當它在自己搭載應用并作為系統唯一的核心控制板時,能夠直接啟動于外界閃存,內置的高速緩沖儲存器有效降低了系統的內存需求,提高了系統的性能。當他作為傳感器實現Wi-Fi功能時,可以搭配任意核心控制板,連接簡單可靠性高,只要從SPI/SDIO接口或AHB中央處理器橋接口連接即可[5]。ESP8266的高集成度決定了其僅需要少量的外部電路,極大地減少了占用的PCB空間,可使得整體系統的空間利用率提高。在本系統中ESP8266作為傳感器實現Wi-Fi功能,建立控制端與云端的通信。
云端采用巴法云物聯網平臺,它支持TCP創客云、MQTT設備云、圖儲存等多模式的數據交互,可多種環境下兼容使用。官方提供詳細支持文檔,有利于開發者短時間內部署應用,將萬物互聯的概念快速融入產品中。用戶只需在官網注冊賬號即可進入平臺部署項目,部署流程如圖3所示。創建完成之后保存主題名、端口、私鑰,以便程序設計時按照接入文檔調用。

圖3 部署流程
Arduino核心控制板通電后,Arduino、各個傳感器以及Wi-Fi模塊初始化,經串口傳輸AT指令給ESP8266物聯網芯片,通過檢測返回值保障ESP8266與巴法云服務器的正常通信,并根據巴法云平臺提供的API和各類參數(包括網址、密匙、端口、設備ID等),將其按照接入文檔所示格式封裝成鏈接請求包,對室內溫度進行采集、上傳及接受云端發出指令,控制相應的感應器進行工作。溫濕度數據采集后儲存在變量temperature和humidity中,然后通過MQTT協議以字符串形式上傳采集數據至云端;人體傳感數據通過傳感器檢測,若有人則輸出高電平,然后通過MQTT協議上傳數據,云端接收到高電平即通過微信通知用戶有人在室內;紅外遙控模塊只需要通過ESP8266Wi-Fi模塊將MQTT協議的Connetct(連接云端)控制報文連接至巴法云平臺,再利用Subscribe(訂閱主題)控制報文接收微信交互端對云端發布的指令,當微信交互端Publish(發布)控制報文給云端時,ESP8266從云端接收到數據并傳輸給Arduino,經過Arduino對數據的指令判斷并分離指令中的參數id,然后再將參數傳送給紅外模塊,再由紅外模塊根據讀取參數的不同執行對應的預設空調控制指令[6-7]。
微信交互端采用的是微信小程序,微信小程序采用Javascript,Wxss,Wxml作為前端框架,它不限制打開設備或多終端使用,一端多用,免去了開發者在面對不同客戶端的開發困難。僅需要在微信公眾平臺(https://mp.weixin.qq.com/)[5]注冊成為用戶后,開啟開發者模式,在開發者管理設置中添加Request合法域名https://api.bemfa.com(巴法云數據調用地址1)、https://bemfa.com(巴法云數據調用地址)[8]、https://www.tianqiapi.com(天氣API調用地址),以供小程序獲取當前所在地的天氣及溫度,同時提供近七天的天氣預報和穿衣建議。
設計好后,將編寫好的控制端代碼燒錄進Arduino中,小程序代碼上傳至微信公眾平臺,并將控制端安裝放置在距掛壁式空調3米處避免直吹,在微信小程序中按下空調開關按鈕空調隨即被開啟,按下空調開關按鈕隨即被關閉,此時走出房間再走進來,讓紅外模塊感應到人的存在,空調隨即開啟,經過多次測試溫度測量值與實際誤差在±0.5℃;濕度值誤差在3%-5%RH之間;紅外遙控模塊隨按隨開,但偶爾會有網絡延遲,總體誤差小,測量值較為準確,可靠性高。
本文研究的遠程空調控制系統設計,利用ESP-8266Wi-Fi物聯網模塊、巴法云物聯網平臺和Arduino與多項傳感器結合實現智能物聯網功能。采集室內溫濕度、人體感應、通過算法智能控制室內溫度恒定、紅外控制空調,以達到不在家仍能了解家中情況,根據室內外溫度智能開啟空調,控制室內溫度恒定等功能,以達到有效的合理利用空調,提高居家舒適度,滿足用戶的需求。該系統通過適配可使用其他具備紅外通信的傳統家用電器,以實現在傳統家用電器基礎上云接入智慧物聯,從而具備了一定的普適性。