彭銀橋 戴錦波



摘要 針對傳統照明系統中的燈光控制存在不方便、靈活性差、不易集中管理的問題,設計了一種基于STM32微控制器和ZigBee無線通信技術的智能燈光控制系統。詳細分析了STM32主控制器、ZigBee協調器節點與ZigBee終端節點及其它們之間通信的工作流程,設計了相應的軟件,實現了室內LED燈光的開關控制和亮度調節。
【關鍵詞】STM32 ZigBee CC2530 LED燈光控制
1 引言
隨著經濟的不斷發展及生活水平的提高,人們希望提升自己的生活品質。在人們的居住環境中,照明系統是其中一個必不可少的部分。進入二十一世紀以來,LED燈憑借著“節能、環保、壽命長”的優勢,漸漸取代了傳統的白熾燈。雖然在傳統的照明系統中,LED燈成為了主流的照明光源,但依舊沒法掩蓋傳統照明系統“管理不便、控制單一、靈活性差”的缺點。傳統照明系統通常采取單獨的或若干個開關對電路進行通斷操作來開啟或關閉LED燈,操作極不方便,而且也不能對LED燈的亮度進行調節,缺乏靈活性。隨著計算機技術、通信技術、網絡技術不斷發展,智能燈光控制系統應運而生。智能燈光控制系統能夠根據不同的用戶需求、環境條件等采取不同的照明方案,甚至能夠根據當前環境自動調整照明參數。同傳統照明系統相比,智能燈光控制系統與無線通信技術相結合,能夠對眾多的LED燈進行統一管理,適用于不同的場景,提高了靈活性。由此可見,新型的智能燈光控制系統能夠進一步提升人們的生活品質,而且其將成為未來的主流照明系統。
2 系統總體架構與硬件設計
無線LED燈光控制必需用到無線傳輸技術,如ZigBee、WIFI、藍牙、CAN、RS485等,其中ZigBee是基于IEEE802.15.4協議開發的新一代無線通信技術,具有穩定性強、組網能力強大、網絡拓撲結構靈活、功耗低、成本低等優點,因此采用ZigBee無線通信技術作為系統的無線傳輸技術。基于STM32的無線LED燈光控制系統的總體架構如圖1所示。利用多個ZigBee終端節點組成ZigBee網絡,每個ZigBee終端節點通過LED驅動器和繼電器電路與LED燈相連,通過LED驅動器和繼電器電路的配合對LED燈進行開啟、關閉、亮度調節操作;ZigBee終端節點將LED燈的狀態信息數據,經由ZigBee協調器傳輸到STM32主控制器,主控制器對接收到的數據進行分析,然后在LCD屏上顯示。另一方面,主控制器經由ZigBee協調器節點將數據發送到ZigBee終端節點,終端節點對接收到的數據進行分析,然后對LED燈采取對應的操作,如開啟、關閉、增加亮度、降低亮度等操作。
STM32F103RCT6芯片具有功耗低、功能強、價格低等特點,因此選用STM32F103RCT6芯片作為主控制器。CC2530系列芯片支持IEEE802.15.4/ZigBee協議,通常結合半開源協議棧Zstack 2007使用,其成為功能強大的針對ZigBee應用的片上系統解決方案;002530芯片采用8051增強型內核,其性能強、功耗低,因而選用CC2530F256芯片作為ZigBee應用開發。
系統硬件主要分為主控制器和ZigBee節點硬件兩部分。主控制器硬件主要包括中央處理器、電源電路、復位電路、仿真調試接口電路、LCD屏顯示電路、按鍵和LED電路;ZigBee節點硬件主要包括CC2530核心板和功能底板兩大部分,功能底板部分包含了電源電路、仿真調試接口電路、按鍵和LED狀態燈電路。ZigBee終端節點通過外圍電路的LED驅動器和繼電器電路與LED燈具相連。
3 系統軟件設計
STM32系列芯片軟件開發采用KeilMDK-ARM,ZigBee節點軟件開發采用TI公司的Z-Stack協議棧,以及IAR EmbeddedWorkbench IDE。該系統軟件設計分為STM32主控制器、ZigBee協調器節點和ZigBee終端節點軟件設計,以及STM32主控制器與ZigBee協調器節點的串口通信和ZigBee協調器節點與ZigBee終端節點的ZigBee無線協議通信軟件設計,設計方案如圖2所示。
3.1 主控制器軟件設計
STM32主控制器主要負責LCD屏菜單顯示、按鍵的響應與ZigBee協調器節點的串口通信等。主控制器程序流程如圖3所示。圖中,LED設備列表菜單用于顯示位于ZigBee網絡中的所有LED設備,可進行LED設備的搜索和選中某個LED設備;LED設備控制菜單用于對具體某個LED設備的控制操作,當在上一級的LED設備列表菜單中選中了某個LED設備后,便進入此菜單。在此菜單中顯示LED設備的狀態信息,如網絡地址、開關狀態和亮度狀態,并且可進行“開/關…‘增加亮度…降低亮度”控制操作。
3.2 主控制器與ZigBee協調器節點的串口通信
采用STM32主控制器的串口2與ZigBee協調器節點之間進行數據傳輸。
3.2.1 主控制器發送數據
設計結構體Packet來封裝主控制器發送的數據,Packet類型的定義如下:
typedef struct Packet{
uint8_t sop;
uint8_t objAddr_L;
uint8_t objAddr_H;
uint8_t objCmd;
uint8_t dataLen;
);
在結構體Packet中,sop是數據幀頭,用于接收方識別;objAddr L是ZigBee節點的16位網絡地址的低8位;objAddr_H是ZigBee節點的16位網絡地址的高8位;objCmd是控制命令碼,有用于控制LED燈的開/關、增加亮度和降低亮度,以及獲取ZigBee終端節點的網絡地址的命令碼等,其命令碼分別用OxOl-Ox06表示,daralen是objAddr_H、objAddr_L和objCmd三者所占的字節數。
STM32主控制器以Packet類型數據為單位向ZigBee協調器節點發送數據,每次發送一個Packet類型的數據包。為了方便數據的封裝和發送,設計了InPacked和SendPacket函數來封裝和發送Packet類型數據,二者定義如下:
Packet* InPacked(uint16_t *nodeAddr,uint8_t *cmd):
函數的形參nodeAddr為ZigBee節點16位網絡地址變量的內存地址,cmd則是命令碼變量的內存地址。此函數可以目標節點的地址和控制碼封裝在Packet類型的數據中,然后返回一個指向這個Packet類型數據的指針。
void SendPacket(Packet *packetToSend):
函數的形參是一個Packet類型的指針,調用該函數時只需傳入Packet數據包的地址,便可以通過串口發送給ZigBee協調器節點。
3.2.2 主控制器接收數據
STM32主控制器通過串口接收來自ZigBee協調器節點的數據,二者之間的數據收發遵循一定的格式:數據幀頭+數據幀長+數據+數據幀結束標志。
主控制器接收的數據有兩種:一種是接收的數據是ZigBee節點的16位網絡地址,另一種是包含LED燈的狀態信息的數據,兩者定義的數據幀頭、數據幀長和數據幀結束標志都不同,數據幀格式定義見表1。
主控制器使用串口接收中斷的方式接收數據,串口接收中斷服務程序流程如圖4所示。串口中斷服務程序中,根據不同的狀態分階段接收若干個數據幀,直到完整地接收所有數據。當串口接收到數據時,會根據當前狀態執行不同的操作。從最初的未準備接收數據時的空閑狀態狀態開始,根據接收的數據幀頭不同,狀態可能變成接收LED燈狀態信息數據幀長的狀態或接收ZigBee節點網絡地址數據幀長的狀態;然后根據當前狀態接收代表數據幀長的字節數據,狀態轉變成接收LED燈狀態信息數據的狀態或接收ZigBee節點網絡地址數據的狀態用于接收數目等于數據幀長的若干字節數據,直至接收完畢,最后將狀態轉變為未準備接收數據時的空閑狀態,以便等待下一次的數據幀。
3.3 ZigBee節點的軟件設計
ZigBee節點的軟件設計分為協調器節點軟件設計和終端節點軟件設計。設計使用了Z-Stack協議棧,它是通信協議和用戶之間的一個接口。ZigBee協議棧將物理層、MAC層、網絡層、應用支持子層和應用層的各層協議封裝在一起,提供API函數給用戶進行無線數據的收發。Z-Stack協議棧里運行著一個名為OSAL的小型任務調度程序,通過任務輪詢的方式執行各種任務,用戶只需向協議棧中添加任務即可。
協調器節點的主要任務是負責管理終端節點的網絡加入、與STM32串口通信以及向終端節點發送數據,協調器節點程序流程如圖5所示。
終端節點的作用是接收來自協調器節點的數據,對數據進行分析,執行LED控制操作或者發送LED燈狀態信息到協調器節點。終端節點程序流程如圖6所示。
4 結語
基于STM32F103RCT6微控制器、CC2530F256芯片和ZigBee無線通信技術設計了LED智能燈光控制系統。詳細分析了STM32主控制器與ZigBee協調器節點之間串口通信和ZigBee協調器節點與ZigBee終端節點的ZigBee無線協議通信及其工作流程,設計了用于STM32主控制器發送數據的數據結構、封裝和發送功能函數,以及主控制器接收數據的數據幀格式。在實際測試中,系統運行良好,很好地實現了室內LED燈光的開關控制和亮度調節。
參考文獻
[1]龔兆崗,論LED照明燈具的散熱[J].現代顯示,2012,19 (09):113-116.
[2]申浚,基于ZigBee的室內智能照明系統設計[J].數字技術與應用,2012, 30 (09):149-150.
[3]吳曼,謝紅福,王曉梅.ZigBee無線通訊技術在物聯網系統中的應用研究[J].工業控制計算機,2011,24 (08): 59-60,69.
[4]王旭升.基于ZigBee的智能建筑燈光控制系統設計[J].機電工程技術,2011,41 (12):22-25,
[5]徐健,楊珊珊.基于CC2530的ZigBee協調器節點設計[J].物聯網技術,2012,2 (05):55-57.
[6]黃太波,趙華偉,潘金秋,聶培堯,楊澤軍.ZigBee協議棧的安全體系綜述[J].山東科學,2012,29 (02): 59-66.