基于WiFi的照明控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
引 言
隨著網(wǎng)絡(luò)技術(shù)、軟件技術(shù)、控制技術(shù)的發(fā)展,智能化應(yīng)用技術(shù)得到了不斷進(jìn)步。智能照明就是一種典型的智能化應(yīng)用。隨著社會需求的不斷變化,傳統(tǒng)的照明控制方式由于需要使用者近距離操作照明設(shè)備開關(guān),給使用者帶來諸多不便,因此已無法滿足人們?nèi)找嬖鲩L的需求。人們更希望通過現(xiàn)在廣泛應(yīng)用的WiFi無線網(wǎng)絡(luò),利用隨身攜帶的手機(jī)、平板電腦等移動終端來對家用電燈等照明設(shè)備進(jìn)行開關(guān)操作。本文基于這項(xiàng)需求,設(shè)計(jì)了一款在 WiFi 環(huán)境下可使用智能手機(jī)等移動終端設(shè)備進(jìn)行開關(guān)燈操作的照明控制系統(tǒng)。
1 系統(tǒng)總體設(shè)計(jì)
本系統(tǒng)的設(shè)計(jì)主要包含WiFi 局域網(wǎng)接入節(jié)點(diǎn)、WiFi 燈光控制節(jié)點(diǎn)和移動終端軟件設(shè)計(jì)。其中 WiFi 通信部分由ESP8266 模塊實(shí)現(xiàn)。ESP8266 采用樂鑫智能互聯(lián)平臺提供的ESP8266 無線WiFi 模塊,擁有高性能無線 SOC,使無線平臺的開發(fā)設(shè)計(jì)變得實(shí)用、方便。ESP8266 為系統(tǒng)提供了一個完整且自成體系的WiFi 網(wǎng)絡(luò)解決方案,能夠獨(dú)立運(yùn)行、處理相關(guān)指令。作為控制系統(tǒng)的主要芯片,ESP8266 還具有透明傳輸功能,可通過無線網(wǎng)絡(luò)接收數(shù)據(jù),卻不修改數(shù)據(jù),直接傳送到下一端,使得接收方接到數(shù)據(jù)內(nèi)容和長度一致的數(shù)據(jù),在傳輸過程中保證了數(shù)據(jù)的準(zhǔn)確性 [1]。ESP8266 模塊可配置成Station( 客戶端)、AP( 接入節(jié)點(diǎn))、Station + AP 三種模式, 即ESP8266 模塊可作為一個設(shè)備(Client)連接區(qū)域網(wǎng)內(nèi)的路由,也可設(shè)置成一個路由(Sever),既作為局域網(wǎng)里的 Client 同時又是其他Client 的Sever。系統(tǒng)的總體工作過程如圖 1 所示。
(1) WiFi局域網(wǎng)接入節(jié)點(diǎn)。接入節(jié)點(diǎn)是控制信號進(jìn)行傳輸?shù)妮d體,接入節(jié)點(diǎn)使各系統(tǒng)之間建立穩(wěn)定、良好的信道。本文將一個ESP8266模塊設(shè)置為AP工作模式,作為局域網(wǎng)的接入節(jié)點(diǎn)。
(2) WiFi燈光控制節(jié)點(diǎn)。該節(jié)點(diǎn)主要由ESP8266模塊構(gòu)成。本文將每一個控制燈的ESP8266模塊設(shè)置為Station工作模式,用以接受用戶的目標(biāo)指令,并向所控?zé)魝鬏旈_、關(guān)控制信號。
(3) 移動終端軟件。基于 Eclipse軟件環(huán)境進(jìn)行Android 應(yīng)用軟件的開發(fā),該軟件在用戶使用過程中相當(dāng)于照明燈的遙控器。
2 WiFi接入節(jié)點(diǎn)的實(shí)現(xiàn)
通過串口調(diào)試助手等軟件工具向ESP8266 模塊發(fā)送AT指令,將模塊設(shè)置為 AP 工作模式。具體分為如下幾步:
(1) 發(fā)送命令 AT+RST使模塊重新啟動,等待模塊響應(yīng) OK后,再進(jìn)行下一步設(shè)置。
(2) 指令A(yù)T+CWMODE=<MODE>用 于 設(shè)置ESP8266模塊的工作模式,其中MODE=1表示Station模式; MODE=2 表示AP模式;MODE=3表示AP兼Station模式。此處,需要發(fā)送命令A(yù)T+CWMODE=2 將模塊設(shè)置為AP 模式。等待模塊響應(yīng)OK 之后,再發(fā)送命令A(yù)T+RST 使得模塊重啟后設(shè)置生效。等待模塊再次響 應(yīng)OK后,模塊的AP模式已經(jīng)開啟,然后進(jìn)行下一步設(shè)置。
(3) 指 令 AT+CWSAP=<SSID>,<PWD>,<CHL>,<ECN> 用于設(shè)置AP 模式下的參數(shù),其中SSID 為字符串參數(shù), 用于表示接入點(diǎn)的名稱;PWD 為字符串參數(shù),用于表示密碼, 密碼限制在 64 字節(jié)以內(nèi);CHL 表示通道號,ECN 的取值及功能見表 1 所列。
發(fā)送命令 AT+CWSAP= LampControl,123456,11,0,待模塊響應(yīng) OK 后,就可在手機(jī)、平板電腦或計(jì)算機(jī)中通過無線網(wǎng)卡連接到接入節(jié)點(diǎn),之后再進(jìn)行下一步設(shè)置。
(4) 指令 AT+ CIPMUX=MODE用于啟動連接,其中, MODE=0 為單路連接模式;MODE=1為多路連接模式。指令A(yù)T+CIPSERVER=MODE,PORT用于設(shè)置服務(wù)器,其中MODE=0為關(guān)閉服務(wù)器模式;MODE=1為開啟服務(wù)器模式, PORT為端口號,缺省值為 333。只有在開啟多連接模式時才能開啟服務(wù)器模式。
發(fā)送命令 AT+CIPMUX=1 ,待模塊響應(yīng) OK后再發(fā)送命令 AT+CIPSERVER=1,8080 ,待模塊再次響應(yīng) OK 后就可通過網(wǎng)絡(luò)調(diào)試助手在 TCP Client 模式下添加 IP: 192.168.4.1(模塊默認(rèn) IP),端口 8080。至此,WiFi 接入節(jié)點(diǎn)已設(shè)置成功。
6 WiFi燈控節(jié)點(diǎn)的實(shí)現(xiàn)
通過串口調(diào)試助手等軟件工具,向ESP8266 模塊發(fā)送AT 指令,將模塊設(shè)置為 Station工作模式。
(1) 發(fā)送命令 AT+RST使得模塊重新啟動,待模塊響應(yīng) OK之后,進(jìn)行下一步設(shè)置。
(2) 發(fā) 送 命令 AT+CWMODE=1, 將 模 塊設(shè) 置 為Station模式。待模塊響應(yīng) OK后,再發(fā)送命令 AT+RST 使得模塊重啟后設(shè)置生效。當(dāng)模塊再次響應(yīng) OK,則模塊的Station模式已經(jīng)開啟,可發(fā)送命令 AT+CWLAP查看當(dāng)前可用的網(wǎng)絡(luò)接入點(diǎn)。
(3) 指令 AT+CWJAP=<SSID>,<PWD> 用于加入網(wǎng)絡(luò),其中SSID為要加入的網(wǎng)絡(luò)名稱,PWD為密碼。
發(fā)送命令A(yù)T+CWJAP=LampControl , 123456 連接到網(wǎng)絡(luò)中。待模塊響應(yīng)OK后,發(fā)送命令A(yù)T+CIFSR 可查看本機(jī)的IP地址,若能查看到IP地址則表示本節(jié)點(diǎn)已經(jīng)正確和AP節(jié)點(diǎn)相連。
(4) 發(fā)送命令 AT+CIPMUX=1打開多路連接。
(5) 指令 AT+CIPSTART=<ID>,<TYPE>,<ADDR>,<PORT> 用于建立 TCP連接或注冊 UDP端口號,其中 ID 為 0~4的連接編號,TYPE為字符串參數(shù),設(shè)為 TCP時表示建立 TCP連接, 設(shè)為 UDP時表示建立UDP連接, ADDR為字符串參數(shù),表示遠(yuǎn)程服務(wù)器的IP 地址,PORT為遠(yuǎn)程服務(wù)器的端口號。
發(fā)送命令 AT+CIPSTART=0, TCP , 192.168.4.1 ,8080 建立燈控節(jié)點(diǎn)和接入節(jié)點(diǎn)之間的TCP 連接。待響應(yīng) OK后則表示連接成功。
(6) 指令 AT+CIPSEND=<ID>,<LENGTH> 用于向指定ID 發(fā)送指定長度的數(shù)據(jù)。模塊收到此命令后先換行返回> ,然后開始接收串口數(shù)據(jù),當(dāng)數(shù)據(jù)長度滿足LENGTH 時發(fā)送數(shù)據(jù),如果數(shù)據(jù)發(fā)送成功則返回 SEND OK 。
發(fā)送命令 AT+CIPSEND=0,8 并發(fā)送數(shù)據(jù) 12345678給接入節(jié)點(diǎn)。
4 Android移動終端軟件設(shè)計(jì)
使用Android SDK、JDK、ADT、Eclipse 等工具開發(fā)手機(jī)客戶端控制軟件[2]。手機(jī)客戶端控制軟件的界面設(shè)計(jì)主要使用ToggleButton 控件或 RadioButton 控件以方便用戶對燈進(jìn)行開關(guān)操作。為控件添加事件響應(yīng),當(dāng)用戶操作軟件時,將開、關(guān)燈的信息發(fā)送給WiFi 接入節(jié)點(diǎn) [3]。核心代碼如下:
Socket socket = new Socker("192.168.4.1",8080);
OutputStream os = socket.getOutputStream();
os.write("LampOn");
os.close(); socket.close();
5 系統(tǒng)測試
連通燈的控制電源,將燈控節(jié)點(diǎn)接入預(yù)定的WiFi 網(wǎng)絡(luò), 將手機(jī)也接入同一WiFi 網(wǎng)絡(luò),操作手機(jī)中的控制軟件,成功實(shí)現(xiàn)對燈的開、關(guān)操作。
6 結(jié) 語
本文設(shè)計(jì)了一種在 WiFi 環(huán)境下,可在裝有 Android 系統(tǒng)的移動終端上通過軟件操作,實(shí)現(xiàn)對燈的開關(guān)操作的無線照明控制系統(tǒng)。文中詳細(xì)介紹了系統(tǒng)設(shè)計(jì)思路、實(shí)現(xiàn)方法,并通過測試證明了系統(tǒng)的有效性。