何永玲++吳耀龍



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