鄭艷華++徐嘉順++朱耀臻



摘 要:現有的智能燈光控制系統主要有遙控器控制和手機App控制兩種方式,這些方式的用戶體驗較差。本設計的智能燈光控制系統利用廣泛普及的微信和智能手機,通過網絡和服務器來自主控制燈光。系統包括手機微信控制端,服務器和燈光控制端三部分。該智能燈光控制系統具有操作簡單、體驗愉悅、智能可靠等優點。
關鍵詞:微信;智能燈光控制;WiFi;服務器;安卓單片機
中圖分類號:TN911;TP273 文獻標識碼:A 文章編號:2095-1302(2016)12-0-03
0 引 言
目前,房間的燈大多通過實體按鈕開關來控制,且每個按鈕開關都可能分布在不同的位置。因此通過手動開關按鈕控制燈光的操作非常繁瑣,為用戶帶來諸多不便。隨著用戶體驗要求的提高,傳統的手動按鈕開關控制燈光將會被智能燈光控制取代[1-4]。現階段的智能燈光控制主要分為兩種,一種是通過遙控器控制,另一種是通過手機App控制。不同地方的遙控器不盡相同,App的燈光控制要求每個地方的用戶都下載一個手機控制App,而這無疑增添了用戶的麻煩[5,6]。
本設計通過廣泛使用的微信對燈光進行智能控制,實現在手機上的微信客戶端輸入相關指令就能控制燈的開關及調節燈光亮度的效果。
1 智能燈光控制系統的設計
該智能燈光控制系統主要由手機微信控制端、服務器和燈光控制端組成。系統控制流程如下所示:
(1)微信用戶在公眾號中輸入控制指令,指令通過微信服務器經URL進入自己搭建的服務器;
(2)服務器對指令進行解讀,合法指令將進入MySQL數據庫修改相應的記錄值;
(3)WiFi模塊連接WiFi熱點并建立TCP連接后發送HTTP請求到服務器,服務器訪問MySQL數據庫獲取相應的記錄值數據后返回給WiFi模塊;
(4)WiFi模塊通過串口通信將返回的數據發送給Arduino單片機,單片機對數據進行解析并以此控制燈光。
手機微信端、燈光控制端流程圖如圖1和圖2所示。
1.1 手機微信公眾號的開發
在開發模式下開發者能通過微信公眾號在自己搭建的服務器上使用自己的程序與用戶進行對話。首先需要在微信公眾平臺注冊賬號。在完成基本信息的填寫登記后可以選擇開通公眾號運營主體和類型,然后開通開發模式。要求開發者完成填寫服務器配置、驗證服務器地址的有效性和依據接口文檔實現業務邏輯3個步驟[6]。
在開發模式下,用戶在微信公眾號上發送的消息到達微信公眾號服務器后通過對接的URL傳到自己的服務器上,然后用自己的服務器處理消息,實現業務邏輯并達到設定的功能。如果開發者沒有服務器資源可以通過使用云平臺來搭建,也能非常簡單、快速的實現自己的服務器。
1.2 服務器的設計
服務器是在新浪云SAE平臺上搭建的,使用PHP嵌入式腳本語言。若要成為微信公眾號開發者并搭建服務器,首先需要在搭建的服務器上將微信服務器發送的GET請求攜帶的參數signature、timestamp、nonce、echostr進行簡單處理,且處理結果需滿足微信服務器的要求。搭建服務器的第二部分是在同一個應用下新建一個名為hotel.php的文件。該新建文件也是WiFi模塊與MySQL數據庫之間溝通的橋梁。WiFi模塊通過TCP連接到服務器上后,發送HTTP請求到此文件上,此文件便會判斷HTTP請求是否合理,如果HTTP請求合理就連接到MySQL數據庫,查找燈光表下的所有記錄值,并將記錄值輸出發送給WiFi模塊。
微信用戶在公眾號里編輯的指令經微信服務器封裝成XML格式數據包,通過URL發送到自己搭建的服務器上。服務器再從XML格式數據包中找出用戶發送的指令。用戶發送的消息封裝在某個參數里,我們將用戶消息提取出來并與預設的關鍵字比較。如果和預設關鍵字匹配就會執行連接進入MySQL數據庫中修改相應字段的記錄。
回復信息是對微信服務器發送消息的一次回復。信息的回復也要經過將信息封裝成XML格式這一過程。封裝后的消息經微信服務器處理后,就會將參數中的信息發送到用戶ID。
1.3 數據庫的設計
當微信公眾號中有指令輸入時,就要更新數據庫中的數據,即更改記錄中的值。當對MySQL數據庫使用完畢后需要用函數mysql_close()關閉連接。例如建立共享型MySQL數據庫,表名為“燈光C”,在燈光C表中有4個字段分別為ID、燈光、VALUE、TIME。每個字段下都有五個記錄,ID為1、2、3、4、5的記錄代表著五個不同的燈;字段VALUE下的記錄值代表著燈光不同的開關狀態;字段TIME代表燈最后狀態的改變時間,即字段VALUE下的記錄改變的時間。用戶發送的指令經服務器的預設關鍵字匹配后就進入燈光C表中修改VALUE和TIME的值,如圖3所示。
1.4 燈光控制端的設計
燈光控制端主要包括WiFi模塊和Arduino單片機以及各種類型的燈和連線。
1.4.1 WiFi模塊設置
要使WiFi模塊連上互聯網,首先使用USB轉TTL串口與esp8266連接,接好線后將USB轉TTL插入電腦的USB接口。然后運行串口調試工具sscom42,在串口選擇相應端口和波特率后,點擊“打開串口”。WiFi模塊的波特率默認為115 200,而Arduino單片機不支持太高的波特率,所以使用設置模塊波特率的AT指令修改模塊的波特率為9 600。語法為AT+CIOBAUD=9 600。
在字符串輸入框中輸入“AT+RST”重啟模塊,然后輸入“AT+CWMODE=1”設置模塊為station客戶端模式,接著輸入“AT+CWJAP=WiFiwork”,“544544544””連接到無線路由器。若響應為“OK”和“connect”,則說明成功連接上WiFi路由器。成功連接路由器后,WiFi模塊能記住一個已連接過的WiFi名稱與WiFi密碼,等下次重啟時發現該熱點就會自動連接。接著設置WiFi模塊為透傳模式,指令為“AT+CIPMODE=1”,透傳模式是將WiFi模塊接收到的數據原封不動的發送到Arduino單片機上去。接著輸入“AT+CIPSTART=‘TCP,1.13521003789.applinzi.com,80”指令建立TCP連接,與自己搭建的服務器建立起通訊連接。若響應為“CONNECT OK”則說明和服務器成功建立TCP連接。建立連接后再輸入“AT+CIPSEND”就能發送HTTP請求到服務器。
發送“AT+CIPSEND”指令返回 “OK” 后,就說明可以發送HTTP請求消息了。若成功發送HTTP請求后WiFi模塊就能夠接收來自服務器端的響應。通過串口通信將響應數據傳遞到Arduino單片機上,Arduino單片機就會在HTTP響應的數據中解析出控制各燈光開關狀態的字符。
1.4.2 Arduino單片機的設置
在Arduino編程中用analogWrite(pin, value)函數來控制燈光的狀態。pin代表數字管腳號,value代表PWM輸出的占空比,value值的范圍在0255之間,所對應的占空比為0%100%。因此通過改變value值的大小來調節燈光亮度。
Arduino與WiFi模塊之間通過軟串口通信,使用代碼“SoftwareSerial WiFi(8,9);”定義數字I/O接口8、9號腳分別為軟串口通信的RX(接收)和TX(發送)。工作時,Arduino首先與WiFi模塊使用串口通信,將相應的指令輸入到WiFi模塊中進行設置,使得WiFi模塊可以接入WiFi熱點進行聯網并發送HTTP請求。然后Arduino作為控制端,將WiFi模塊接收到的數據信息進行解析,從中找出控制相應燈光開關狀態的字符并對燈光進行控制。
2 測試結果
單片機接入電源等待約10 s,WiFi模塊會啟動并自動連接WiFi熱點,然后建立TCP連接,發送HTTP請求。這時就可以通過微信公眾號編輯并發送指令來控制燈光的狀態。在微信公眾號端輸入特定指令格式才能成功控制燈光,指令發送后會收到服務器的自動回復。輸入“燈光名稱+開/關”控制燈具的開和關;輸入“燈光名稱+數字(05)”調節燈光亮度。控制燈光亮滅和亮度調節的效果如圖4所示。微信輸入控制和系統自動回復如圖5所示。
亮度調節控制
由于網絡延遲和程序運行的原因,發送指令12 s后相應燈光的狀態才會改變。通過串口監視器可以觀察到,WiFi模塊每隔約1.3 s便能從服務器上循環獲取數據。
當按下實體開關按鈕時,燈光的狀態也會改變,即開關控制與微信控制形成雙開關控制。由于開關使用了中斷函數,而Arduino UNO r3 只有兩個引腳支持中斷函數的使用(D2和D3腳),其中一個引腳接燈光輸出,所以本設計中只使用一個開關對燈光調節進行控制示范。當然,不使用中斷函數也可以通過開關控制燈光,不過燈光響應控制時間會有延遲,延遲時間約為12 s。
3 結 語
文中利用微信設計了一種智能燈光控制系統。該系統由手機微信控制端、服務器端和燈光控制端三部分組成,實現了微信對燈光的智能控制,具有操作簡單、體驗愉悅、方便實用等優點。但在安全性、操作界面等方面有待加強和提升。
參 考 文 獻
[1]弓盼,王嘉梅,孫善通.基于ZigBee-DALI協議的智能照明系統設計[J].現代電子技術,2016,39(4):63-66.
[2]張曉彬,張.基于藍牙組網的燈光控制系統研究與設計[J].物聯網技術,2015,5(8):22-24.
[3]項新建.基于CAN總線的燈光控制系統[J].照明工程學報,2004,15(2):28-30.
[4]李春雨,孫憲坤,陳濤.智能家居的燈光實時監控系統設計[J].單片機與嵌入式系統應用,2015,15(9):77-79.
[5]鐘志勇,何威俊,馮煜博.微信公眾平臺應用開發實踐[M].北京:機械工業出版社,2013.
[6]楊塤,董燦,譚鋒.智慧教室燈光控制系統設計[J].物聯網技術,2014,4(10):47-49.
[7]王潤民,王健.基于ZigBee的道路照明智能控制系統的設計[J].物聯網技術,2014,4(12):56-58.
[8]聶佰玲,劉亞,李宇,等.基于微信控制的智能家居系統研究與設計[J].山西農經,2016(2):97-98.