李杰,李志揚
?
基于微信公眾號的智能家居控制系統
李杰,李志揚
(華中師范大學 物理科學與技術學院,湖北 武漢 430079)
設計了一套基于微信公眾號的智能家居控制系統,該系統主要由硬件控制終端、家用電器、微信公眾號后臺和手機微信端組成。用戶關注微信公眾號并綁定控制終端之后,在微信公眾號的界面發送相應的指令,微信后臺收到指令后轉發給硬件控制終端,實現家用電器的控制并返回執行結果,最后在微信端顯示相應的結果。本系統的控制終端采用STM32作為底層硬件平臺,通過樂鑫ESP8266模塊與微信后臺進行通信,并發送命令,實現家用電器的控制。實驗表明,該系統設計簡單、開發周期短、成本低廉、操作便捷且易于拓展推廣。
智能家居;微信公眾號;STM32;服務器
智能家居是利用物聯網技術將家用的電子設備連接起來為人類服務[1-3]。它使用了網絡通信技術、智能云平臺控制、傳感器技術等技術手段實現電子設備的集中控制、遠程控制、安全檢查、實時監控等功能,從而使用戶的居住環境變得更加舒適、高效和便捷。但是由于缺乏統一的標準,各個廠商推出的智能家居產品各自獨立,采用各自的控制平臺,用戶不得不針對不同的廠家安裝不同的控制軟件,在一定程度上造成了管理上的混亂和使用上的問題[4]。
微信是一款日常生活中使用非常頻繁的手機APP,本文借助微信公眾平臺實現家電的控制,將智能家居功能鑲嵌到微信APP中,可以大幅提升使用的便捷性[5]。進一步推廣這種模式有利于各種智能家居產品的統一管理。
本文設計的基于微信公眾號的智能家居控制系統主要由控制終端、家用電器、微信公眾號后臺和手機微信組成。用戶只需要訂閱本文開發的服務號,并與自己的硬件控制終端進行綁定,然后在公眾號的界面發送相應的指令,便可實現對各種家電的控制。本節主要討論系統的硬件設計。
如圖1所示,本文設計的智能家居系統硬件控制終端采用STM32為主控模塊,通過ESP8266模塊實現網絡的WiFi連接。智能家居中涉及眾多的傳感器和執行器,本文僅選擇直流電動機、LED燈和溫濕度傳感器來進行控制和數據采集,以作示范。在圖1中,用ESP8266作為通信模塊,接收來自微信公眾號用戶的控制指令,STM32主控模塊再控制相應的微型直流電動機和LED燈,或發送溫濕度傳感器采集到的數據給微信公眾號的用戶。
本文采用的是樂鑫公司生產的ESP8266,它集成度高、功耗低且使用簡單。ESP8266模組支持三種模式,即AP模式、STA模式和AP+STA模式。AP模式中,它會創建一個服務器,供其他設備接入;STA模式中,它會作為客戶端建立TCP接入服務器;AP+STA模式中,它會同時使用AP模式和STA模式。本文使用了STA模式,機智云服務器可以監控ESP8266的狀態以及向其發送控制命令。其中,ESP8266連接網絡是通過APP軟件配置好無線路由器的名稱和密碼,再發送給ESP8266連接上無線網絡。

圖1 硬件系統的整體框架
本文采用的是包含測濕元件和測溫元件,集溫濕度于一體,含有已校準數字信號輸出的符合傳感器DHT11。該產品體積小、功耗低、可靠性極高和穩定性強,是一種4針單排引腳封裝,具有很高的性價比。采用單線制串行接口,十分方便與MCU連接。在本文中主要用于實時測量房間中的溫濕度,再通過單總線將其采集到的信號傳遞給STM32。
智能家居中為了實現窗簾的打開、關閉等操作,需要使用電機作為執行機構。本文將以L9110芯片驅動的微型直流電動機來作示例。
本文采用的LED燈由自帶P9813芯片進行驅動。P9813采用CMOS工藝的全彩點光源LED驅動芯片,能提供256級灰度調制輸出,可用于驅動彩色動畫、各種文字變換的圖案,它的性能穩定、數據傳輸穩定且抗干擾性強。由STM32向P9813芯片發送控制信號,P9813再將信號進行轉化R、G和B三種信號來控制燈的顏色。通過控制紅燈、綠燈和藍燈的占空比,變換出多種色彩。
本文設計的基于微信公眾平臺的智能家居控制系統的整體架構如圖2所示。用戶在微信公眾號的界面發送規定的指令,微信云平臺將收到的消息打包成xml文件轉發給業務服務器,業務服務器從xml文件解析出指令再轉發給機智云,機智云根據指令控制相應的硬件終端。

圖2 系統架構示意圖
本文的業務服務器在新浪云平臺上搭建,通過業務服務器實現微信端和硬件控制終端之間的通信。同時在服務器上搭建數據庫環境,創建數據庫,用來存儲微信端發送的指令和硬件控制終端傳回的家電設備狀態數據。云服務器的開發使用JAVA+MySQL組合,并在MyEclipse開發環境中編寫程序。云服務器中通信程序實現的功能主要包括與手機微信端通訊,以響應微信端發送的POST請求,將請求中的控制命令解析并寫入數據庫中;響應微信端發送的GET請求,查詢數據庫并將查詢的內容返回給手機微信端;與硬件控制終端通訊,將控制命令轉化成相應格式的數據并傳送給控制終端或者接受控制終端實時傳回的家電設備的狀態數據。
本系統中需要傳輸溫度、濕度、LED開關和電機轉速的數據。在MySQL中創建四張表,分別為temperature、humidity、switch和machinery。如果在微信端發送“開燈”,則更新switch表中第一行數據的時間戳,并將該行數據中的state的值修改為1;如果在微信端發送“關燈”,則更新switch表中第一行數據的時間戳,并將該行數據中的state的值修改為0;如果發送“溫濕度”,則從temperature和humidity表中分別查詢data的值合并在一起返回;如果發送“開啟電機”,則更新machinery表中數據的時間戳并更新數據中state的值,并向硬件端發送指令使得電機正向轉動。此外,還有一些定義了的指令,例如“紅燈”“綠燈”“關閉電機”等。如果發送的不是定義了的指令,則向微信返回“無此指令”。
在微信公眾平臺(https://mp.weixin.qq.com)上注冊一個服務號。為了自定義公眾號的新功能需要開啟服務器配置,微信公眾平臺在訪問后臺時,必須有外網地址并使用80端口。在開發環境搭建完成后,根據微信公眾平臺的如下要求進行開發:①服務器相關配置的填寫。在公眾號中選擇基本配置,并在服務器配置中修改配置,填寫新浪云的域名、Token、EncodingAESKey和消息加解密方式。②驗證返回消息是否有效。提交服務器配置時,微信服務器會發送Get請求到新浪云的域名,并傳遞signature、timestamp、nonce和echostr四個參數。如果返回的參數與echostr參數相同,則接入有效;否則,接入無效。
本文開發的基于微信公眾號的智能家居控制系統實物照片和運行界面如圖3所示。首先給開發板接通電源,并用手機給WiFi模塊配置SSID和密碼,使開發板接入網絡;然后通過在本文開發的公眾號界面發送一些指令來測試系統是否運行相應的功能;依次向微信公眾號發送“紅燈”“綠燈”“藍燈”“開綠燈”“溫濕度”和“電機開啟”,如圖3所示,公眾號自動回復“紅燈已開啟”“綠燈已開啟!”“藍燈已開啟!”“無此命令”“當前溫度為29,當前濕度為48”和“電機已啟動!”。與此同時,燈會隨著不同的命令開啟、關閉或者變換顏色,電機開啟或者關閉,獲取房間的溫濕度,表明系統工作正常。

本文設計了一款基于微信公眾平臺的智能家居控制系統。實驗表明該系統設計簡單、開發周期短、成本低廉、操作便捷且易于拓展推廣,有利于解決和改善眾多智能家居產品各自獨立、互不兼容的狀況。
本文開發的基于微信公眾號的智能家居控制系統,可以用微信查看房間的狀況和控制一些家電設備,也解決了用戶需要安裝多個APP的問題。但在體驗過程中,還存在很多不足,系統的智能性不夠強。近幾年的人工智能快速發展,可以考慮將人工智能中的一些算法引入,使得系統具有自動化管理家電設備的能力。
[1]溫江濤,張煜.物聯網智能家居平臺DIY[M].北京:科學出版社,2014.
[2]白家旺,雷騰躍,屈琦凱.淺談嵌入式系統對智能家居的影響[J].廣東科技,2015(10):59-60.
[3]王暉.物聯網智能家居的發展前景——物聯網時代智能家居的發展趨勢[J].智能建筑,2013(02):16-19.
[4]陳甫.微信小店服務端的JAVA實現[J].電腦知識與技術,2014(19):4442-4445.
[5]李立新,李艷文,蔡剛毅,等.基于物聯網技術的智能家居安防系統的研究與開發[J].控制工程,2015(05):1001-1005.
2095-6835(2019)07-0034-02
TP391
A
10.15913/j.cnki.kjycx.2019.07.034
〔編輯:張思楠〕