基于WiFi和移動(dòng)終端的智能照明控制系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引 言
獨(dú)立的照明控制已經(jīng)發(fā)展成熟,但很多時(shí)候使用者無法準(zhǔn)確根據(jù)情況設(shè)置控制參數(shù)。如果照明系統(tǒng)的使用環(huán)境情況多變,僅僅靠非專業(yè)的使用者來調(diào)節(jié)控制,則無法達(dá)到最佳的使用效果。而且任何控制都要在現(xiàn)場進(jìn)行,非常不方便。在物聯(lián)網(wǎng)環(huán)境下,使用者可以利用遠(yuǎn)程移動(dòng)和通信設(shè)備通過互聯(lián)網(wǎng)對室內(nèi)照明設(shè)施進(jìn)行監(jiān)控和控制,通過傳感器及微處理控制系統(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)開發(fā)思路,將燈光的操控不局限于本地,設(shè)計(jì)了一個(gè)單片機(jī)控制系統(tǒng)、Web 服務(wù)器、Android 客戶端三位一體的智能照明控制系統(tǒng)。采用C 語言和Java 語言分別編寫單片機(jī)應(yīng)用程序、App 程序和服務(wù)器端程序,通過安卓移動(dòng)設(shè)備達(dá)到遠(yuǎn)程控制室內(nèi)LED 燈的開關(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 鏈接后,通過HTTP 協(xié)議來完成單片機(jī)和服務(wù)器的信息交互。安卓客戶端也通過HTTP 協(xié)議和服務(wù)器進(jìn)行信息交互,通過服務(wù)器將安卓客戶端的請求間接轉(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)路由器通過家庭寬帶連接上Internet,并在云端發(fā)布服務(wù)器程序后,手機(jī)客戶端可以直接通過本機(jī)的GPRS 網(wǎng)絡(luò)訪問單片機(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ī)通過串口 WiFi 接收到了服務(wù)器的響應(yīng)信息后, 通過內(nèi)置DMA 轉(zhuǎn)存到內(nèi)存當(dāng)中,CPU 再將內(nèi)存中的數(shù)據(jù)取出并解析為對應(yīng)的控制指令和數(shù)據(jù)信息,將手機(jī)傳遞過來的數(shù)據(jù)和單片機(jī)讀取到的本地實(shí)時(shí)時(shí)間數(shù)據(jù)都顯示到OLED 屏上,單片機(jī)通過判斷動(dòng)作指令來決定是否開燈關(guān)燈以及調(diào)光。當(dāng)檢測到有開啟智能模式的指令后,則啟動(dòng)光照傳感器,讀取當(dāng)前的照度信息,根據(jù)照度信息控制PWM 調(diào)光驅(qū)動(dòng)輸出當(dāng)前所需要的室內(nèi)燈光亮度。紅外檢測電路則通過一個(gè)S8050 三極管構(gòu)成放大電路將紅外模塊的輸出信號進(jìn)行放大后輸出到繼電器模塊,通過繼電器模塊的吸合與斷開來控制當(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 所示。
bit0/bit2:燈 1/2的開或關(guān), 0代表關(guān), 1代表開;
bit1/bit3:燈1/2 的調(diào)光值,范圍為09,對應(yīng)單片機(jī)的PWM值為該數(shù)值比例系數(shù);
bit4-bit7/bit8-bit11:表示燈光開啟 /關(guān)閉的時(shí)間(小時(shí):分鐘);
bit12/bit13:表示智能模式 /定時(shí)模式的開或關(guān), 0代表關(guān), 1 代表開。
2.1 單片機(jī)程序設(shè)計(jì)
單片機(jī)先初始化各模塊,然后以 500 ms 間隔發(fā)送HTTP 請求,將服務(wù)器響應(yīng)的數(shù)據(jù)經(jīng)WiFi 串口接收,再通過DMA 轉(zhuǎn)存到內(nèi)存中。單片機(jī)通過讀取對應(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ù) 程 序用來接收 Android 客戶端的 HTTP 請求,ProviderServlet 服務(wù)程序用來接收單片機(jī)的 HTTP 請求。服務(wù)器響應(yīng)過程 圖如圖 5 所示。首先當(dāng)單片機(jī)和 Android 客戶端與服務(wù)器建 立 TCP 連接后,會(huì)發(fā)送 HTTP 請求到服務(wù)器,二者請求的 URL 地址以及參數(shù)都不一樣。服務(wù)器一直處于等待狀態(tài),當(dāng) ControlServlet 接收到來自 Android 客戶端的 GET 請求后,服 務(wù)器會(huì)通過 ControlServlet 來讀取 GET 參數(shù),然后將參數(shù) 存放到 ServletContext 域中,當(dāng)單片機(jī)同樣發(fā)出 GET 請求到 ProviderServlet 后,服務(wù)器則會(huì)將 ServletContext 域中的數(shù)據(jù) 作為響應(yīng)參數(shù)發(fā)回給單片機(jī)。
2.3 Android 程序設(shè)計(jì)
本文設(shè)計(jì)的 Android 客戶端主要采用 Activity 組件。通 過自定義協(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)畫界面,同時(shí)會(huì)對用戶的控制界面進(jìn)行布局加載,加載完成后就會(huì)出現(xiàn)各種控件,并且為控件都設(shè)置了監(jiān)聽事件,當(dāng)用戶點(diǎn)擊了相應(yīng)的控件后,便會(huì)觸發(fā)一次事件,在該事件中,將會(huì)完成對控制指令的封裝,封裝完成后作為URL 參數(shù)以GET 的方式發(fā)送HTTP 請求給服務(wù)器。
3 系統(tǒng)測試
根據(jù) App 的設(shè)置,可以在 OLED 屏幕上同步看到設(shè)置的 信息數(shù)據(jù),說明安卓 App 已經(jīng)成功控制了照明系統(tǒng)。這里設(shè) 置了開啟的時(shí)間為 15:37,關(guān)閉的時(shí)間為 16:22,等待觀察,系 統(tǒng)確實(shí)在設(shè)定時(shí)間將 LED 燈開啟與關(guān)閉,其實(shí)物圖與界面圖 如圖 7 所示。開啟智能模式后,模型里 LED 的燈光亮度會(huì)隨 著當(dāng)前室外的燈光變化而變化,當(dāng)室外燈光較亮?xí)r,室內(nèi)燈光 的亮度則會(huì)階梯降低,節(jié)約電能,其實(shí)物演示圖如圖 8 所示。
結(jié) 語
本文完成了一個(gè)可遠(yuǎn)程遙控室內(nèi)燈光智能動(dòng)作的控制系統(tǒng),包括完整的硬件和軟件系統(tǒng)。硬件系統(tǒng)是基于一個(gè)一房一廳的燈光控制模型,有兩套單片機(jī)客戶控制終端;軟件系統(tǒng)則實(shí)現(xiàn)了各類數(shù)據(jù)通信和控制功能,主要包括:
(1) 單片機(jī)主控端的控制軟件 ;
(2) 服務(wù)器端的控制軟件;
(3) Android手機(jī)應(yīng)用軟件等。
通過實(shí)物演示和檢測,該作品完成了初設(shè)的各項(xiàng)功能指標(biāo),使用方便,為生活提供了便利,改善了環(huán)境質(zhì)量,有待進(jìn)一步研發(fā)和推廣。