国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于STM32的無線LED燈光控制系統(tǒng)設(shè)計

2018-02-23 12:47彭銀橋戴錦波
電子技術(shù)與軟件工程 2018年6期

彭銀橋 戴錦波

摘要 針對傳統(tǒng)照明系統(tǒng)中的燈光控制存在不方便、靈活性差、不易集中管理的問題,設(shè)計了一種基于STM32微控制器和ZigBee無線通信技術(shù)的智能燈光控制系統(tǒng)。詳細分析了STM32主控制器、ZigBee協(xié)調(diào)器節(jié)點與ZigBee終端節(jié)點及其它們之間通信的工作流程,設(shè)計了相應(yīng)的軟件,實現(xiàn)了室內(nèi)LED燈光的開關(guān)控制和亮度調(diào)節(jié)。

【關(guān)鍵詞】STM32 ZigBee CC2530 LED燈光控制

1 引言

隨著經(jīng)濟的不斷發(fā)展及生活水平的提高,人們希望提升自己的生活品質(zhì)。在人們的居住環(huán)境中,照明系統(tǒng)是其中一個必不可少的部分。進入二十一世紀以來,LED燈憑借著“節(jié)能、環(huán)保、壽命長”的優(yōu)勢,漸漸取代了傳統(tǒng)的白熾燈。雖然在傳統(tǒng)的照明系統(tǒng)中,LED燈成為了主流的照明光源,但依舊沒法掩蓋傳統(tǒng)照明系統(tǒng)“管理不便、控制單一、靈活性差”的缺點。傳統(tǒng)照明系統(tǒng)通常采取單獨的或若干個開關(guān)對電路進行通斷操作來開啟或關(guān)閉LED燈,操作極不方便,而且也不能對LED燈的亮度進行調(diào)節(jié),缺乏靈活性。隨著計算機技術(shù)、通信技術(shù)、網(wǎng)絡(luò)技術(shù)不斷發(fā)展,智能燈光控制系統(tǒng)應(yīng)運而生。智能燈光控制系統(tǒng)能夠根據(jù)不同的用戶需求、環(huán)境條件等采取不同的照明方案,甚至能夠根據(jù)當(dāng)前環(huán)境自動調(diào)整照明參數(shù)。同傳統(tǒng)照明系統(tǒng)相比,智能燈光控制系統(tǒng)與無線通信技術(shù)相結(jié)合,能夠?qū)Ρ姸嗟腖ED燈進行統(tǒng)一管理,適用于不同的場景,提高了靈活性。由此可見,新型的智能燈光控制系統(tǒng)能夠進一步提升人們的生活品質(zhì),而且其將成為未來的主流照明系統(tǒng)。

2 系統(tǒng)總體架構(gòu)與硬件設(shè)計

無線LED燈光控制必需用到無線傳輸技術(shù),如ZigBee、WIFI、藍牙、CAN、RS485等,其中ZigBee是基于IEEE802.15.4協(xié)議開發(fā)的新一代無線通信技術(shù),具有穩(wěn)定性強、組網(wǎng)能力強大、網(wǎng)絡(luò)拓撲結(jié)構(gòu)靈活、功耗低、成本低等優(yōu)點,因此采用ZigBee無線通信技術(shù)作為系統(tǒng)的無線傳輸技術(shù)?;赟TM32的無線LED燈光控制系統(tǒng)的總體架構(gòu)如圖1所示。利用多個ZigBee終端節(jié)點組成ZigBee網(wǎng)絡(luò),每個ZigBee終端節(jié)點通過LED驅(qū)動器和繼電器電路與LED燈相連,通過LED驅(qū)動器和繼電器電路的配合對LED燈進行開啟、關(guān)閉、亮度調(diào)節(jié)操作;ZigBee終端節(jié)點將LED燈的狀態(tài)信息數(shù)據(jù),經(jīng)由ZigBee協(xié)調(diào)器傳輸?shù)絊TM32主控制器,主控制器對接收到的數(shù)據(jù)進行分析,然后在LCD屏上顯示。另一方面,主控制器經(jīng)由ZigBee協(xié)調(diào)器節(jié)點將數(shù)據(jù)發(fā)送到ZigBee終端節(jié)點,終端節(jié)點對接收到的數(shù)據(jù)進行分析,然后對LED燈采取對應(yīng)的操作,如開啟、關(guān)閉、增加亮度、降低亮度等操作。

STM32F103RCT6芯片具有功耗低、功能強、價格低等特點,因此選用STM32F103RCT6芯片作為主控制器。CC2530系列芯片支持IEEE802.15.4/ZigBee協(xié)議,通常結(jié)合半開源協(xié)議棧Zstack 2007使用,其成為功能強大的針對ZigBee應(yīng)用的片上系統(tǒng)解決方案;002530芯片采用8051增強型內(nèi)核,其性能強、功耗低,因而選用CC2530F256芯片作為ZigBee應(yīng)用開發(fā)。

系統(tǒng)硬件主要分為主控制器和ZigBee節(jié)點硬件兩部分。主控制器硬件主要包括中央處理器、電源電路、復(fù)位電路、仿真調(diào)試接口電路、LCD屏顯示電路、按鍵和LED電路;ZigBee節(jié)點硬件主要包括CC2530核心板和功能底板兩大部分,功能底板部分包含了電源電路、仿真調(diào)試接口電路、按鍵和LED狀態(tài)燈電路。ZigBee終端節(jié)點通過外圍電路的LED驅(qū)動器和繼電器電路與LED燈具相連。

3 系統(tǒng)軟件設(shè)計

STM32系列芯片軟件開發(fā)采用KeilMDK-ARM,ZigBee節(jié)點軟件開發(fā)采用TI公司的Z-Stack協(xié)議棧,以及IAR EmbeddedWorkbench IDE。該系統(tǒng)軟件設(shè)計分為STM32主控制器、ZigBee協(xié)調(diào)器節(jié)點和ZigBee終端節(jié)點軟件設(shè)計,以及STM32主控制器與ZigBee協(xié)調(diào)器節(jié)點的串口通信和ZigBee協(xié)調(diào)器節(jié)點與ZigBee終端節(jié)點的ZigBee無線協(xié)議通信軟件設(shè)計,設(shè)計方案如圖2所示。

3.1 主控制器軟件設(shè)計

STM32主控制器主要負責(zé)LCD屏菜單顯示、按鍵的響應(yīng)與ZigBee協(xié)調(diào)器節(jié)點的串口通信等。主控制器程序流程如圖3所示。圖中,LED設(shè)備列表菜單用于顯示位于ZigBee網(wǎng)絡(luò)中的所有LED設(shè)備,可進行LED設(shè)備的搜索和選中某個LED設(shè)備;LED設(shè)備控制菜單用于對具體某個LED設(shè)備的控制操作,當(dāng)在上一級的LED設(shè)備列表菜單中選中了某個LED設(shè)備后,便進入此菜單。在此菜單中顯示LED設(shè)備的狀態(tài)信息,如網(wǎng)絡(luò)地址、開關(guān)狀態(tài)和亮度狀態(tài),并且可進行“開/關(guān)…‘增加亮度…降低亮度”控制操作。

3.2 主控制器與ZigBee協(xié)調(diào)器節(jié)點的串口通信

采用STM32主控制器的串口2與ZigBee協(xié)調(diào)器節(jié)點之間進行數(shù)據(jù)傳輸。

3.2.1 主控制器發(fā)送數(shù)據(jù)

設(shè)計結(jié)構(gòu)體Packet來封裝主控制器發(fā)送的數(shù)據(jù),Packet類型的定義如下:

typedef struct Packet{

uint8_t sop;

uint8_t objAddr_L;

uint8_t objAddr_H;

uint8_t objCmd;

uint8_t dataLen;

);

在結(jié)構(gòu)體Packet中,sop是數(shù)據(jù)幀頭,用于接收方識別;objAddr L是ZigBee節(jié)點的16位網(wǎng)絡(luò)地址的低8位;objAddr_H是ZigBee節(jié)點的16位網(wǎng)絡(luò)地址的高8位;objCmd是控制命令碼,有用于控制LED燈的開/關(guān)、增加亮度和降低亮度,以及獲取ZigBee終端節(jié)點的網(wǎng)絡(luò)地址的命令碼等,其命令碼分別用OxOl-Ox06表示,daralen是objAddr_H、objAddr_L和objCmd三者所占的字節(jié)數(shù)。

STM32主控制器以Packet類型數(shù)據(jù)為單位向ZigBee協(xié)調(diào)器節(jié)點發(fā)送數(shù)據(jù),每次發(fā)送一個Packet類型的數(shù)據(jù)包。為了方便數(shù)據(jù)的封裝和發(fā)送,設(shè)計了InPacked和SendPacket函數(shù)來封裝和發(fā)送Packet類型數(shù)據(jù),二者定義如下:

Packet* InPacked(uint16_t *nodeAddr,uint8_t *cmd):

函數(shù)的形參nodeAddr為ZigBee節(jié)點16位網(wǎng)絡(luò)地址變量的內(nèi)存地址,cmd則是命令碼變量的內(nèi)存地址。此函數(shù)可以目標節(jié)點的地址和控制碼封裝在Packet類型的數(shù)據(jù)中,然后返回一個指向這個Packet類型數(shù)據(jù)的指針。

void SendPacket(Packet *packetToSend):

函數(shù)的形參是一個Packet類型的指針,調(diào)用該函數(shù)時只需傳入Packet數(shù)據(jù)包的地址,便可以通過串口發(fā)送給ZigBee協(xié)調(diào)器節(jié)點。

3.2.2 主控制器接收數(shù)據(jù)

STM32主控制器通過串口接收來自ZigBee協(xié)調(diào)器節(jié)點的數(shù)據(jù),二者之間的數(shù)據(jù)收發(fā)遵循一定的格式:數(shù)據(jù)幀頭+數(shù)據(jù)幀長+數(shù)據(jù)+數(shù)據(jù)幀結(jié)束標志。

主控制器接收的數(shù)據(jù)有兩種:一種是接收的數(shù)據(jù)是ZigBee節(jié)點的16位網(wǎng)絡(luò)地址,另一種是包含LED燈的狀態(tài)信息的數(shù)據(jù),兩者定義的數(shù)據(jù)幀頭、數(shù)據(jù)幀長和數(shù)據(jù)幀結(jié)束標志都不同,數(shù)據(jù)幀格式定義見表1。

主控制器使用串口接收中斷的方式接收數(shù)據(jù),串口接收中斷服務(wù)程序流程如圖4所示。串口中斷服務(wù)程序中,根據(jù)不同的狀態(tài)分階段接收若干個數(shù)據(jù)幀,直到完整地接收所有數(shù)據(jù)。當(dāng)串口接收到數(shù)據(jù)時,會根據(jù)當(dāng)前狀態(tài)執(zhí)行不同的操作。從最初的未準備接收數(shù)據(jù)時的空閑狀態(tài)狀態(tài)開始,根據(jù)接收的數(shù)據(jù)幀頭不同,狀態(tài)可能變成接收LED燈狀態(tài)信息數(shù)據(jù)幀長的狀態(tài)或接收ZigBee節(jié)點網(wǎng)絡(luò)地址數(shù)據(jù)幀長的狀態(tài);然后根據(jù)當(dāng)前狀態(tài)接收代表數(shù)據(jù)幀長的字節(jié)數(shù)據(jù),狀態(tài)轉(zhuǎn)變成接收LED燈狀態(tài)信息數(shù)據(jù)的狀態(tài)或接收ZigBee節(jié)點網(wǎng)絡(luò)地址數(shù)據(jù)的狀態(tài)用于接收數(shù)目等于數(shù)據(jù)幀長的若干字節(jié)數(shù)據(jù),直至接收完畢,最后將狀態(tài)轉(zhuǎn)變?yōu)槲礈蕚浣邮諗?shù)據(jù)時的空閑狀態(tài),以便等待下一次的數(shù)據(jù)幀。

3.3 ZigBee節(jié)點的軟件設(shè)計

ZigBee節(jié)點的軟件設(shè)計分為協(xié)調(diào)器節(jié)點軟件設(shè)計和終端節(jié)點軟件設(shè)計。設(shè)計使用了Z-Stack協(xié)議棧,它是通信協(xié)議和用戶之間的一個接口。ZigBee協(xié)議棧將物理層、MAC層、網(wǎng)絡(luò)層、應(yīng)用支持子層和應(yīng)用層的各層協(xié)議封裝在一起,提供API函數(shù)給用戶進行無線數(shù)據(jù)的收發(fā)。Z-Stack協(xié)議棧里運行著一個名為OSAL的小型任務(wù)調(diào)度程序,通過任務(wù)輪詢的方式執(zhí)行各種任務(wù),用戶只需向協(xié)議棧中添加任務(wù)即可。

協(xié)調(diào)器節(jié)點的主要任務(wù)是負責(zé)管理終端節(jié)點的網(wǎng)絡(luò)加入、與STM32串口通信以及向終端節(jié)點發(fā)送數(shù)據(jù),協(xié)調(diào)器節(jié)點程序流程如圖5所示。

終端節(jié)點的作用是接收來自協(xié)調(diào)器節(jié)點的數(shù)據(jù),對數(shù)據(jù)進行分析,執(zhí)行LED控制操作或者發(fā)送LED燈狀態(tài)信息到協(xié)調(diào)器節(jié)點。終端節(jié)點程序流程如圖6所示。

4 結(jié)語

基于STM32F103RCT6微控制器、CC2530F256芯片和ZigBee無線通信技術(shù)設(shè)計了LED智能燈光控制系統(tǒng)。詳細分析了STM32主控制器與ZigBee協(xié)調(diào)器節(jié)點之間串口通信和ZigBee協(xié)調(diào)器節(jié)點與ZigBee終端節(jié)點的ZigBee無線協(xié)議通信及其工作流程,設(shè)計了用于STM32主控制器發(fā)送數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)、封裝和發(fā)送功能函數(shù),以及主控制器接收數(shù)據(jù)的數(shù)據(jù)幀格式。在實際測試中,系統(tǒng)運行良好,很好地實現(xiàn)了室內(nèi)LED燈光的開關(guān)控制和亮度調(diào)節(jié)。

參考文獻

[1]龔兆崗,論LED照明燈具的散熱[J].現(xiàn)代顯示,2012,19 (09):113-116.

[2]申浚,基于ZigBee的室內(nèi)智能照明系統(tǒng)設(shè)計[J].數(shù)字技術(shù)與應(yīng)用,2012, 30 (09):149-150.

[3]吳曼,謝紅福,王曉梅.ZigBee無線通訊技術(shù)在物聯(lián)網(wǎng)系統(tǒng)中的應(yīng)用研究[J].工業(yè)控制計算機,2011,24 (08): 59-60,69.

[4]王旭升.基于ZigBee的智能建筑燈光控制系統(tǒng)設(shè)計[J].機電工程技術(shù),2011,41 (12):22-25,

[5]徐健,楊珊珊.基于CC2530的ZigBee協(xié)調(diào)器節(jié)點設(shè)計[J].物聯(lián)網(wǎng)技術(shù),2012,2 (05):55-57.

[6]黃太波,趙華偉,潘金秋,聶培堯,楊澤軍.ZigBee協(xié)議棧的安全體系綜述[J].山東科學(xué),2012,29 (02): 59-66.

桓仁| 安宁市| 宁河县| 清水河县| 东乡| 晋宁县| 长岭县| 昌宁县| 肃南| 安达市| 大英县| 天津市| 晋州市| 隆尧县| 北宁市| 德兴市| 高州市| 永兴县| 莱芜市| 安阳县| 安丘市| 郑州市| 大丰市| 辽阳市| 青铜峡市| 永寿县| 安阳市| 天祝| 辰溪县| 历史| 通山县| 酉阳| 樟树市| 宁河县| 祁阳县| 威宁| 苍梧县| 鲁甸县| 榆中县| 台北市| 临澧县|