何永玲++吳耀龍
摘 要:為解決現(xiàn)有系統(tǒng)無(wú)法遠(yuǎn)程控制和根據(jù)現(xiàn)場(chǎng)情況自動(dòng)調(diào)節(jié)燈光亮度等問(wèn)題,文中設(shè)計(jì)了一個(gè)單片機(jī)控制系統(tǒng)、Web服務(wù)器、Android客戶端三位一體的智能照明控制系統(tǒng)。系統(tǒng)以STM32F103單片機(jī)為核心,利用Android手機(jī)和Web服務(wù)器進(jìn)行遠(yuǎn)程控制,可隨時(shí)隨地通過(guò)手機(jī)App對(duì)室內(nèi)或樓宇的燈光進(jìn)行遠(yuǎn)程操控,實(shí)現(xiàn)定時(shí)開(kāi)關(guān)燈、無(wú)極調(diào)光、紅外感應(yīng)控制、智能節(jié)能調(diào)光、多節(jié)點(diǎn)自由控制等功能,非常適合移動(dòng)終端的遠(yuǎn)程控制和自動(dòng)調(diào)節(jié)燈光的場(chǎng)合。
關(guān)鍵詞:智能照明;WiFi;Android;STM32;Web服務(wù)器
中圖分類(lèi)號(hào):TP393;TN926 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2095-1302(2016)12-0-03
0 引 言
獨(dú)立的照明控制已經(jīng)發(fā)展成熟,但很多時(shí)候使用者無(wú)法準(zhǔn)確根據(jù)情況設(shè)置控制參數(shù)。如果照明系統(tǒng)的使用環(huán)境情況多變,僅僅靠非專(zhuān)業(yè)的使用者來(lái)調(diào)節(jié)控制,則無(wú)法達(dá)到最佳的使用效果。而且任何控制都要在現(xiàn)場(chǎng)進(jìn)行,非常不方便。在物聯(lián)網(wǎng)環(huán)境下,使用者可以利用遠(yuǎn)程移動(dòng)和通信設(shè)備通過(guò)互聯(lián)網(wǎng)對(duì)室內(nèi)照明設(shè)施進(jìn)行監(jiān)控和控制,通過(guò)傳感器及微處理控制系統(tǒng),使物聯(lián)網(wǎng)的照明系統(tǒng)能夠“感知”環(huán)境,并根據(jù)外界情況的變化做出相應(yīng)調(diào)整,為用戶提供方便高效的服務(wù)。
本文以設(shè)計(jì)智能照明系統(tǒng)為目標(biāo),結(jié)合時(shí)下最流行的物聯(lián)網(wǎng)開(kāi)發(fā)思路,將燈光的操控不局限于本地,設(shè)計(jì)了一個(gè)單片機(jī)控制系統(tǒng)、Web服務(wù)器、Android客戶端三位一體的智能照明控制系統(tǒng)。采用C語(yǔ)言和Java語(yǔ)言分別編寫(xiě)單片機(jī)應(yīng)用程序、App程序和服務(wù)器端程序,通過(guò)安卓移動(dòng)設(shè)備達(dá)到遠(yuǎn)程控制室內(nèi)LED燈的開(kāi)關(guān)、亮度以及智能調(diào)光等目的。
1 系統(tǒng)設(shè)計(jì)
1.1 系統(tǒng)架構(gòu)設(shè)計(jì)
該系統(tǒng)是一個(gè)可遠(yuǎn)程遙控室內(nèi)燈光智能動(dòng)作的控制系統(tǒng),主要包含了控制系統(tǒng)和通信系統(tǒng)兩大部分。通信系統(tǒng)采用WiFi模塊與服務(wù)器建立TCP鏈接后,通過(guò)HTTP協(xié)議來(lái)完成單片機(jī)和服務(wù)器的信息交互。安卓客戶端也通過(guò)HTTP協(xié)議和服務(wù)器進(jìn)行信息交互,通過(guò)服務(wù)器將安卓客戶端的請(qǐng)求間接轉(zhuǎn)向單片機(jī),單片機(jī)再將獲得的數(shù)據(jù)解析后生成相應(yīng)的指令進(jìn)行動(dòng)作。
路由器建立一個(gè)WiFi熱點(diǎn),單片機(jī)端的WiFi模塊以STATION模式接入該熱點(diǎn),Tomcat服務(wù)器搭在本機(jī)電腦也接入該熱點(diǎn)。為了保證通信安全,網(wǎng)絡(luò)采用WPA2加密方式。當(dāng)路由器通過(guò)家庭寬帶連接上Internet,并在云端發(fā)布服務(wù)器程序后,手機(jī)客戶端可以直接通過(guò)本機(jī)的GPRS網(wǎng)絡(luò)訪問(wèn)單片機(jī)客戶端,不需要連接局域網(wǎng)的WiFi熱點(diǎn)。本系統(tǒng)的設(shè)計(jì)總架構(gòu)圖如圖1所示。
圖 1 室內(nèi)LED智能照明系統(tǒng)總體架構(gòu)圖
1.2 系統(tǒng)總體設(shè)計(jì)
系統(tǒng)以ARM單片機(jī)STM32F103ZET6作為本系統(tǒng)的主控芯片,單片機(jī)通過(guò)串口WiFi接收到了服務(wù)器的響應(yīng)信息后,通過(guò)內(nèi)置DMA轉(zhuǎn)存到內(nèi)存當(dāng)中,CPU再將內(nèi)存中的數(shù)據(jù)取出并解析為對(duì)應(yīng)的控制指令和數(shù)據(jù)信息,將手機(jī)傳遞過(guò)來(lái)的數(shù)據(jù)和單片機(jī)讀取到的本地實(shí)時(shí)時(shí)間數(shù)據(jù)都顯示到OLED屏上,單片機(jī)通過(guò)判斷動(dòng)作指令來(lái)決定是否開(kāi)燈關(guān)燈以及調(diào)光。當(dāng)檢測(cè)到有開(kāi)啟智能模式的指令后,則啟動(dòng)光照傳感器,讀取當(dāng)前的照度信息,根據(jù)照度信息控制PWM調(diào)光驅(qū)動(dòng)輸出當(dāng)前所需要的室內(nèi)燈光亮度。紅外檢測(cè)電路則通過(guò)一個(gè)S8050三極管構(gòu)成放大電路將紅外模塊的輸出信號(hào)進(jìn)行放大后輸出到繼電器模塊,通過(guò)繼電器模塊的吸合與斷開(kāi)來(lái)控制當(dāng)前燈光的亮滅。本系統(tǒng)由STM32單片機(jī)模塊、DS1302實(shí)時(shí)時(shí)鐘模塊、OLED12864液晶顯示模塊、BH1750FVI數(shù)字光照傳感器模塊、HC-SR501人體紅外模塊、PWM調(diào)光驅(qū)動(dòng)模塊和ESP8266WIFI模塊組成。系統(tǒng)總設(shè)計(jì)框圖如圖2所示。
2 系統(tǒng)軟件設(shè)計(jì)
本系統(tǒng)軟件方面的設(shè)計(jì)主要為單片機(jī)主控端的程序設(shè)計(jì)、服務(wù)器端的程序設(shè)計(jì)和Android手機(jī)應(yīng)用程序設(shè)計(jì)。為了使單片機(jī)、服務(wù)器、Android客戶端的數(shù)據(jù)通信一致,采用自定義通信的協(xié)議,該數(shù)據(jù)幀一共由14位數(shù)字字符組成,其通信格式如圖3所示。
(1)bit0/bit2:燈1/2的開(kāi)或關(guān),‘0代表關(guān),‘1代表開(kāi);
(2)bit1/bit3:燈1/2的調(diào)光值,范圍為‘0‘9,對(duì)應(yīng)單片機(jī)的PWM值為該數(shù)值×比例系數(shù);
(3)bit4-bit7/bit8-bit11:表示燈光開(kāi)啟/關(guān)閉的時(shí)間(小時(shí):分鐘);
(4)bit12/bit13:表示智能模式/定時(shí)模式的開(kāi)或關(guān),‘0代表關(guān),‘1代表開(kāi)。
2.1 單片機(jī)程序設(shè)計(jì)
單片機(jī)先初始化各模塊,然后以500 ms間隔發(fā)送HTTP請(qǐng)求,將服務(wù)器響應(yīng)的數(shù)據(jù)經(jīng)WiFi串口接收,再通過(guò)DMA轉(zhuǎn)存到內(nèi)存中。單片機(jī)通過(guò)讀取對(duì)應(yīng)位置的內(nèi)存數(shù)據(jù)即可解析到相應(yīng)模塊的控制指令,進(jìn)入不同的設(shè)置狀態(tài)。單片機(jī)主程序流程如圖4所示。
2.2 服務(wù)器程序設(shè)計(jì)
本設(shè)計(jì)的服務(wù)器程序中主要包括了兩個(gè)Servlet,分別為ControlServlet和ProviderServlet。ControlServlet服務(wù)程序用來(lái)接收Android客戶端的HTTP請(qǐng)求,ProviderServlet服務(wù)程序用來(lái)接收單片機(jī)的HTTP請(qǐng)求。服務(wù)器響應(yīng)過(guò)程圖如圖5所示。首先當(dāng)單片機(jī)和Android客戶端與服務(wù)器建立TCP連接后,會(huì)發(fā)送HTTP請(qǐng)求到服務(wù)器,二者請(qǐng)求的URL地址以及參數(shù)都不一樣。服務(wù)器一直處于等待狀態(tài),當(dāng)ControlServlet接收到來(lái)自Android客戶端的GET請(qǐng)求后,服務(wù)器會(huì)通過(guò)ControlServlet來(lái)讀取GET參數(shù),然后將參數(shù)存放到ServletContext域中,當(dāng)單片機(jī)同樣發(fā)出GET請(qǐng)求到ProviderServlet后,服務(wù)器則會(huì)將ServletContext域中的數(shù)據(jù)作為響應(yīng)參數(shù)發(fā)回給單片機(jī)。
2.3 Android程序設(shè)計(jì)
本文設(shè)計(jì)的Android客戶端主要采用Activity組件。通過(guò)自定義協(xié)議將用戶設(shè)置的參數(shù)信息封裝成字符串?dāng)?shù)據(jù),最終將其拼接在URL地址后,形式如:192.168.1.100:8080/demo/Control Provider?controlMessage=“11111111111111”,具體程序流程如圖6所示。
啟動(dòng)了App后,會(huì)進(jìn)入動(dòng)畫(huà)界面,同時(shí)會(huì)對(duì)用戶的控制界面進(jìn)行布局加載,加載完成后就會(huì)出現(xiàn)各種控件,并且為控件都設(shè)置了監(jiān)聽(tīng)事件,當(dāng)用戶點(diǎn)擊了相應(yīng)的控件后,便會(huì)觸發(fā)一次事件,在該事件中,將會(huì)完成對(duì)控制指令的封裝,封裝完成后作為URL參數(shù)以GET的方式發(fā)送HTTP請(qǐng)求給服務(wù)器。
3 系統(tǒng)測(cè)試
根據(jù)App的設(shè)置,可以在OLED屏幕上同步看到設(shè)置的信息數(shù)據(jù),說(shuō)明安卓App已經(jīng)成功控制了照明系統(tǒng)。這里設(shè)置了開(kāi)啟的時(shí)間為15:37,關(guān)閉的時(shí)間為16:22,等待觀察,系統(tǒng)確實(shí)在設(shè)定時(shí)間將LED燈開(kāi)啟與關(guān)閉,其實(shí)物圖與界面圖如圖7所示。開(kāi)啟智能模式后,模型里L(fēng)ED的燈光亮度會(huì)隨著當(dāng)前室外的燈光變化而變化,當(dāng)室外燈光較亮?xí)r,室內(nèi)燈光的亮度則會(huì)階梯降低,節(jié)約電能,其實(shí)物演示圖如圖8所示。
4 結(jié) 語(yǔ)
本文完成了一個(gè)可遠(yuǎn)程遙控室內(nèi)燈光智能動(dòng)作的控制系統(tǒng),包括完整的硬件和軟件系統(tǒng)。硬件系統(tǒng)是基于一個(gè)一房一廳的燈光控制模型,有兩套單片機(jī)客戶控制終端;軟件系統(tǒng)則實(shí)現(xiàn)了各類(lèi)數(shù)據(jù)通信和控制功能,主要包括:
(1)單片機(jī)主控端的控制軟件;
(2)服務(wù)器端的控制軟件;
(3)Android手機(jī)應(yīng)用軟件等。
通過(guò)實(shí)物演示和檢測(cè),該作品完成了初設(shè)的各項(xiàng)功能指標(biāo),使用方便,為生活提供了便利,改善了環(huán)境質(zhì)量,有待進(jìn)一步研發(fā)和推廣。
參考文獻(xiàn)
[1]云飛揚(yáng).物聯(lián)網(wǎng)思維下的智能照明[J].世界照明時(shí)報(bào),2015,12.
[2]劉火良,楊森.STM32庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南[M].北京:機(jī)械工業(yè)出版社,2013.
[3]朱順蘭,王雪萍.光照強(qiáng)度傳感器及其變送電路設(shè)計(jì)與實(shí)現(xiàn)[J].中國(guó)電子商務(wù),2009(12):93.
[4]黃明強(qiáng).DS1302在單片機(jī)系統(tǒng)中的應(yīng)用[J].保定學(xué)院學(xué)報(bào),2004,17(2):30-33.
[5]徐利謀,黃長(zhǎng)遠(yuǎn).基于GPRS和ZigBee的城市路燈監(jiān)控系統(tǒng)研究與實(shí)現(xiàn)[J].物聯(lián)網(wǎng)技術(shù),2016,6(6):34-35.
[6]任黎明,孫玲玲.基于Linux的無(wú)線視頻監(jiān)控系統(tǒng)[J].物聯(lián)網(wǎng)技術(shù),2015,5(2):24-25.
[7]劉世偉,邱玉泉,韓均雷.基于STM32微控制器的無(wú)線智能家居監(jiān)控系統(tǒng)[J].物聯(lián)網(wǎng)技術(shù),2016,6(3):15-16.
[8]汪月鵬.基于Android平臺(tái)上BLE的智能家居控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].物聯(lián)網(wǎng)技術(shù),2016,6(3):81-82.