鎖萌,蔡武德,趙昆霞,馮瑞寶,王天碩
(云南師范大學,云南昆明,650500)
由于無線通信技術的快速興起,WiFi通信技術逐步成熟并得到了廣泛關注。同時與WiFi領域相關的研究也逐漸增多[1]。因此,利用WiFi技術來控制燈光的系統設計有了強硬的技術支持和認可。關于利用WiFi技術來控制燈光的系統設計將基于微控制器STC89C52和ESP8266WiFi通信模塊來實現。
系統框圖如圖1所示,包括電源電路、STC89C52單片機、復位時鐘電路、ESP8266WiFi通信模塊、智能手機和LED燈。該系統設計的核心部分是STC89C52微控制器,主要的控制芯片為ESP8266WiFi通信模塊。其中,對LED燈亮度的控制主要通過PWM控制的原理來實現。

圖1 系統框圖
在系統工作之前需要給系統上電,同時ESP8266WiFi通信模塊需要系統提供3.3V的電壓才能正常工作,因此需要供給3.3V的穩壓電路,單片機P1.7腳所連接的LED燈D1是WiFi模塊初始化的指示燈,在給系統上電后,打開自鎖開關SW1,WiFi模塊開始初始化,D1點亮,當D1熄滅時就說明WiFi模塊的初始化工作已經完成。S1為電路中的按鍵,在WiFi模塊初始化完成之后,按下按鍵S1,LED燈D2將被點亮,長按按鍵S1會使得D2的亮度發生變化,可以通過按鍵來實現對LED燈的亮度操控。系統采用的是8550PNP型三極管。在電路中將三極管與LED燈相連接,在低電平的時候LED燈點亮,當低電平維持的時間越長,LED燈亮度就越高,低電平維持的時間越短,LED燈亮度就會越低,維持時間的長短可以通過定時器來實現。系統設計原理圖如圖2所示。

圖2 系統設計原理圖
該設計系統以微控制器STC89C52為核心,將ESP82 66WiFi通信模塊與單片機建立起串口通信,ESP8266WiFi模塊與手機APP相連接,作為一個數據的收發站,將其接收的無線信號轉換成串口信號傳遞給微控制器STC89C52,微控制器再對LED燈的亮度以及亮滅進行控制,從而實現手機APP對LED的無線操控。
2.1.1 LED燈亮滅控制原理
LED燈連接在STC89C52單片機的P3口上,LED燈與8550PNP型三極管連接,LED燈的亮滅通過將相應程序導入單片機來進行控制,在低電平的時候LED燈亮,高電平的時候LED燈滅。
2.1.2 LED燈亮度控制原理
LED燈的亮度與通過其兩端的電流強度成正比。PWM調光正是利用了這一原理。PWM信號源是PWM調光時所需的,驅動器根據高低電平的不同來打開或者關閉場效應管的柵極,并反復切換LED驅動器,當開關頻率高于100Hz時,人眼就看不到LED的關閉,對導通與關斷時間進行平均,僅看到由占空比決定的亮度,占空比越小,開關管斷開的時間越長,因此平均電流會越小,人眼會觀察到LED燈的燈光變暗了[2]。由此,為了實現對LED燈的亮度控制,只需要給單片機提供寬度不同的數字脈沖即可。
2.2.1 ESP8266WiFi模塊介紹
系統所使用的WiFi模塊為ESP8266WiFi通信模塊[3]。該芯片體積小、價格較低且性能穩定,相比其他芯片性價比更高。ESP8266WiFi通信模塊在與STC89C52微控制器通信時使用串行通信的方式進行連接,將數據通過WiFi傳輸給上位機是利用ESP8266WiFi通信模塊將傳統的串口設備進行串口配置來實現的。
2.2.2 ESP8266WiFi模塊電路工作原理
圖3為ESP8266WiFi通信模塊的電路設計圖。給ESP8266WiFi通信模塊提供一個3.3V的電壓,使其能夠正常工作。給WiFi模塊的CH_PD引腳一個3.3V的電壓。微控制器STC89C52的TXD腳與WiFi模塊的URXD引腳連接,GND引腳接地。

圖3 ESP8266WiFi模塊電路設計圖
軟件設計需要先對ESP8266WiFi模塊進行初始化,對WiFi模塊的調試使用串口調試助手來完成。在配置ESP8266WiFi通信模塊時將模塊設置為工作在透傳模式[4]。具體步驟為:
(1)將芯片的串口比特率設置為9600Hz:發送指令AT+UART=9600, 8, 1, 0, 0;
(2)將WiFi芯片的模式設置為AP模式:發送指令AT+CWMODE=2;
(3)重新啟動WiFi模塊以使應用程序模式更改有效:發送指令AT+RST;
(4)設置WiFi模塊的名字和密碼,把WiFi的名稱設置為“SuoMeng_01”,WiFi密碼設置為“12345”:發送指令AT+CWSAP=" SuoMeng_01",“12345”, 5,3;
(5)設置為允許多連接,ESP8266WiFi模塊最多允許5個客戶端連接,其根據連接的先后順序給每個客戶端相應地分配ID為0~4:發送指令AT+CIPMUX=1;
(6)建立服務器:發送指令AT+CIPSERVER=1。
3.2.1 LED燈亮滅控制的程序設計
STC89C52單片機與ESP8266WiFi通信模塊之間以串口通信的方式建立連接,程序設計過程需要滿足串口通信的協議要求,因此在設計中將ESP8266WiFi通信模塊的串口比特率設置為9600Hz。程序設計包括對單片機I/O口進行初始化,然后初始化ESP8266WiFi通信模塊,給連接WiFi模塊初始化指示燈和連接LED燈的單片機引腳賦值,系統調用相關子函數執行后續程序,接著判斷WiFi模塊是否接收了指令,若接收成功,單片機將接收WiFi模塊發送過來的指令并作出判斷,從而控制燈的亮滅;若WiFi模塊沒有接收指令,則返回上一步再重新進行判斷。相關程序流程圖如圖4所示。

圖4 單片機控制LED燈亮滅的程序流程圖
3.2.2 LED燈亮度調節程序設計
本設計對LED燈的亮度操控主要通過控制高電平和低電平維持的時間來實現。程序設計用定時器T0服務函數來實現,通過程序編寫來控制LED燈的燈光亮滅持續時間從而實現亮度調節。首先設置定時器,接著判斷WiFi模塊是否接收了指令,若接收成功,單片機將接收WiFi模塊發送過來的指令并作出判斷,從而控制燈的亮度;若WiFi模塊沒有接收指令,則返回上一步再重新進行判斷。相關程序流程圖如圖5所示。

圖5 STC89C52控制LED燈亮度的程序流程圖
本設計中控制LED燈亮滅以及亮度的手機APP為“TCP連接”,APP的控制按鈕可自行設置,本設計設置了三個控制按鈕,第一個按鈕為LED燈開關控制按鈕,在按鈕編輯器窗口進行相關設置,在“狀態OFF”下的按鈕文本設置為“LED燈關”,消息處設置為“A3”,在“狀態ON”下的按鈕文本設置為“LED燈開”,消息處設置為“A1”。第二個按鈕為增強LED燈亮度的按鈕,在按鈕編輯窗口進行設置時將“狀態OFF”和“狀態ON”下的按鈕文本都設置為“亮度加”,消息處都設置為“T1”。第三個按鈕為減弱LED燈亮度的按鈕,在按鈕編輯窗口進行設置時將“狀態OFF”和“狀態ON”下的按鈕文本都設置為“亮度減”,消息處都設置為“T3”。
給設計成品通電,通電后打開電源開關,可以看到黃色LED燈亮,表示正在初始化ESP8266WiFi模塊,黃色LED燈滅說明對WiFi模塊的初始化已經完成。將手機連接到名稱為“SuoMeng_01”的WiFi信號,輸入設置的WiFi密碼,打開控制LED燈的手機APP,連接到地址為“192.168.4.1”,端口號為2000的主機,APP界面顯示連接成功即可對LED燈進行操控。圖6、7為實物測試圖。

圖6 初始化ESP8266WiFi模塊

圖7 手機APP對LED燈的操控
設計完成了對LED燈的亮滅控制和亮度調節的目標,從設計過程來看,整個設計主要包括軟件系統設計部分和硬件設計部分。通過本次設計,我收獲了許多有用的知識和技能,與此同時,整個系統的設計讓我真實的體會到書本知識和實際應用的不同。在設計完成的過程中也遇到了很多問題和挑戰,這些問題十分值得我進行深入的研究和探討,爭取能夠早日解決。