基于 CC2530 的 ZigBee 物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì) - IOT
大家好,今天給大家介紹基于 CC2530 的 ZigBee 物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)
1.1設(shè)計(jì)背景
無(wú)線傳感器網(wǎng)絡(luò)是目前研究的熱門領(lǐng)域,它集成 了多門學(xué)科的知識(shí),應(yīng)用領(lǐng)域廣泛,因此深受國(guó)際社會(huì) 的關(guān)注。 鑒于傳感器網(wǎng)絡(luò)技術(shù)的研究及應(yīng)用價(jià) 值,許多部門、機(jī)構(gòu)、學(xué)校等對(duì)其開始了基礎(chǔ)理論和關(guān)鍵技術(shù)的研究,而通過無(wú)線方式對(duì)環(huán)境現(xiàn)場(chǎng)的數(shù)據(jù)進(jìn) 行實(shí)時(shí)采集、傳輸和后臺(tái)監(jiān)控是大量挑戰(zhàn)性的研究課 題之一。
無(wú)線數(shù)據(jù)采集是利用無(wú)線數(shù)據(jù)采集模塊或設(shè)備, 將工業(yè)現(xiàn)場(chǎng)的傳感器輸出的電壓、電流等物理量進(jìn)行 實(shí)時(shí)采集和處理。 傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)一般采用事先 布線以及人工的方式采集設(shè)備的各項(xiàng)數(shù)據(jù),而隨著生 產(chǎn)力技術(shù)的發(fā)展,工業(yè)生產(chǎn)中的生產(chǎn)設(shè)備分布越來(lái)越 分散,分布的地域也越來(lái)越廣,對(duì)處于高溫和高壓等惡 劣環(huán)境下的設(shè)備進(jìn)行現(xiàn)場(chǎng)數(shù)據(jù)采集和維護(hù)是比較困難 和危險(xiǎn)的,需要投入大量的人力成本和財(cái)力資源,這些 狀況在很大程度上制約著企業(yè)的發(fā)展和生產(chǎn)效益的提 高。 對(duì)于最新的無(wú)線傳感器網(wǎng)絡(luò)技術(shù) Zigbee 而言,它 采用了無(wú)線傳輸方式來(lái)構(gòu)建相應(yīng)的無(wú)線傳感器網(wǎng)絡(luò), 能夠較好地解決人工及有線方式存在的問題。
1.2設(shè)計(jì)要求
本次設(shè)計(jì)要求我們熟練使用Linux系統(tǒng),以及了解Zigbee協(xié)議,最終實(shí)現(xiàn)IAR軟件環(huán)境搭建、常用傳感器和外設(shè)的操作,節(jié)點(diǎn)的數(shù)據(jù)采集以及數(shù)據(jù)的無(wú)線收發(fā)。
2.1Zigbee協(xié)議
Zigbee是基于IEEE802.15.4標(biāo)準(zhǔn)的低功耗局域網(wǎng)協(xié)議。根據(jù)國(guó)際標(biāo)準(zhǔn)規(guī)定,Zigbee技術(shù)是一種短距離、低功耗的無(wú)線通信技術(shù)。這一名稱(又稱紫蜂協(xié)議)來(lái)源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飛翔和“嗡嗡”(zig)地抖動(dòng)翅膀的“舞蹈”來(lái)與同伴傳遞花粉所在方位信息,也就是說(shuō)蜜蜂依靠這樣的方式構(gòu)成了群體中的通信網(wǎng)絡(luò)。其特點(diǎn)是近距離、低復(fù)雜度、自組織、低功耗、低數(shù)據(jù)速率。主要適合用于自動(dòng)控制和遠(yuǎn)程控制領(lǐng)域,可以嵌入各種設(shè)備。簡(jiǎn)而言之,Zigbee就是一種便宜的,低功耗的近距離無(wú)線組網(wǎng)通訊技術(shù)。Zigbee是一種低速短距離傳輸?shù)臒o(wú)線網(wǎng)絡(luò)協(xié)議。Zigbee協(xié)議從下到上分別為物理層(PHY)、媒體訪問控制層(MAC)、傳輸層(TL)、網(wǎng)絡(luò)層(NWK)、應(yīng)用層(APL)等。其中物理層和媒體訪問控制層遵循IEEE 802.15.4標(biāo)準(zhǔn)的規(guī)定。
2.1.1Zigbee協(xié)議特點(diǎn)
(1)工作周期短、收發(fā)信息功耗較低,并且RFD(Reduced Function Device,簡(jiǎn)化功能器件)采用了休眠模式,不工作時(shí)都可以進(jìn)入睡眠模式。
(2)低成本。通過大幅簡(jiǎn)化協(xié)議(不到藍(lán)牙的1/10),降低了對(duì)通信控制器的要求,以8051的8位微控制器測(cè)算,全功能的主節(jié)點(diǎn)需要32KB代碼,子功能節(jié)點(diǎn)少至4 KB代碼。
(3)低速率、短延時(shí)。Zigbee的最大通信速率達(dá)到250 kb/s(工作在2.4GHz時(shí)),滿足低速率傳輸數(shù)據(jù)的應(yīng)用需求。Zigbee的響應(yīng)速度較快,一般從睡眠轉(zhuǎn)入工作狀態(tài)只需15ms,節(jié)點(diǎn)連接進(jìn)入網(wǎng)絡(luò)只需30ms,進(jìn)一步節(jié)省了電能。相比較,藍(lán)牙需3~10S、Wi-Fi需3S。
(4)近距離,高容量。傳輸范圍一般介于10~100 m,在增加RF發(fā)射功率后,亦可增加到1~3km。這指的是相鄰節(jié)點(diǎn)間的距離,若通過路由和節(jié)點(diǎn)間通信的接力,擴(kuò)展后達(dá)到幾百米甚至幾公里。Zigbee可采用星狀、片狀和網(wǎng)狀網(wǎng)絡(luò)結(jié)構(gòu)。由一個(gè)主節(jié)點(diǎn)管理若干子節(jié)點(diǎn),最多一個(gè)主節(jié)點(diǎn)可管理254個(gè)子節(jié)點(diǎn)。
(5)高可靠性和高安全性。Zigbee的媒體接入控制層(Medium Access Control,MAC)采用CSMA/CA的碰撞避免機(jī)制,同時(shí)為需要固定帶寬的通信業(yè)務(wù)預(yù)留了專用時(shí)隙,避免了發(fā)送數(shù)據(jù)時(shí)的競(jìng)爭(zhēng)和沖突。Zigbee還提供了3級(jí)安全模式,包括無(wú)安全設(shè)定、使用接人控制清單防止非法獲取數(shù)據(jù)以及采用高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES)的對(duì)稱密碼,以靈活確定其安全屬性。
(6)免執(zhí)照頻段。采用直接序列擴(kuò)頻在工業(yè)科學(xué)醫(yī)療(Industrial Scientific Medical,ISM)頻段,分別為2.4GHz(全球)、915MHz(美國(guó))和868MHz(歐洲)。
2.1.2Zigbee的網(wǎng)絡(luò)結(jié)構(gòu)
Zigbee網(wǎng)絡(luò)分為4層,從下向上分別為物理層、MAC層、網(wǎng)絡(luò)層、和應(yīng)用層。其中物理層和MAC層由IEEE802.15.4標(biāo)準(zhǔn)定義,合稱IEEE802.15.4通信層;網(wǎng)絡(luò)層和應(yīng)用層由Zigbee聯(lián)盟定義。如圖1所示。
2.2CC2530芯片介紹
CC2530 是用于2.4-GHz IEEE 802.15.4、Zigbee 和RF4CE 應(yīng)用的一個(gè)真正的片上系統(tǒng)(SoC)解決方案。它能夠以非常低的總的材料成本建立強(qiáng)大的網(wǎng)絡(luò)節(jié)點(diǎn)。芯片外觀如圖2所示。
CC2530 結(jié)合了領(lǐng)先的RF 收發(fā)器的優(yōu)良性能,業(yè)界標(biāo)準(zhǔn)的增強(qiáng)型8051 CPU,系統(tǒng)內(nèi)可編程閃存,8-KB RAM 和許多其它強(qiáng)大的功能。CC2530 有四種不同的閃存版本:CC2530F32/64/128/256,分別具有32/64/128/256KB 的閃存。CC2530 具有不同的運(yùn)行模式,使得它尤其適應(yīng)超低功耗要求的系統(tǒng)。運(yùn)行模式之間的轉(zhuǎn)換時(shí)間短進(jìn)一步確保了低能源消耗。其引腳分布如圖
Linux命令是對(duì)Linux系統(tǒng)進(jìn)行管理的命令。對(duì)于Linux系統(tǒng)來(lái)說(shuō),無(wú)論是中央處理器、內(nèi)存、磁盤驅(qū)動(dòng)器、鍵盤、鼠標(biāo),還是用戶等都是文件,Linux系統(tǒng)管理的命令是它正常運(yùn)行的核心,與之前的DOS命令類似。Linux命令在系統(tǒng)中有兩種類型:內(nèi)置Shell命令和Linux命令。其常見的指令如圖
基于CC2530的Zigbee物聯(lián)網(wǎng)系統(tǒng)的設(shè)計(jì)方案
2.4.1Zigbee 數(shù)據(jù)采集系統(tǒng)采集數(shù)據(jù)的原理
Zigbee 網(wǎng)絡(luò)通常由三個(gè)節(jié)點(diǎn)構(gòu)成:協(xié)調(diào)器(Coordinator) 節(jié)點(diǎn)、路由器 ( Router) 節(jié)點(diǎn)、傳 感 器 ( End Device)節(jié)點(diǎn)。 傳感器節(jié)點(diǎn)也稱為終端設(shè)備。
協(xié)調(diào)器用 來(lái)創(chuàng)建一個(gè) Zigbee 網(wǎng)絡(luò),并為最初加入網(wǎng)絡(luò)的節(jié)點(diǎn)分 配地址,每個(gè) Zigbee 網(wǎng)絡(luò)需要且只需要一個(gè)協(xié)調(diào)器; 路由器也稱為 Zigbee 的全功能節(jié)點(diǎn),可以轉(zhuǎn)發(fā)數(shù)據(jù), 起到路由的作用,也可以收發(fā)數(shù)據(jù),當(dāng)成一個(gè)數(shù)據(jù)節(jié)點(diǎn),還能保持網(wǎng)絡(luò),為后加入的節(jié)點(diǎn)分配地址;終端設(shè)備通常只周期性地發(fā)送數(shù)據(jù),不接收數(shù)據(jù)。
由于本系統(tǒng)是在實(shí)驗(yàn)室小范圍內(nèi)進(jìn)行的實(shí)驗(yàn),因此不設(shè) Zigbee 路由節(jié)點(diǎn)。 在實(shí)驗(yàn)中,Zigbee 的協(xié)調(diào)器節(jié)點(diǎn)和終端設(shè) 備節(jié)點(diǎn)形成星型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),并且在網(wǎng)絡(luò)中設(shè)置了 一個(gè)協(xié)調(diào)器節(jié)點(diǎn)和兩個(gè)終端設(shè)備節(jié)點(diǎn)。
協(xié)調(diào)器節(jié)點(diǎn)也 稱為匯聚節(jié)點(diǎn),將多個(gè)終端設(shè)備節(jié)點(diǎn)置于不同的位置, 它們會(huì)按照要求把采集到的數(shù)據(jù)傳給匯聚節(jié)點(diǎn),匯聚 節(jié)點(diǎn)先要對(duì)數(shù)據(jù)進(jìn)行處理,然后才把數(shù)據(jù)通過串口傳 給 PC 機(jī)。 文中主要介紹傳感器網(wǎng)絡(luò)采集數(shù)據(jù)的具體實(shí)現(xiàn),不討論上位機(jī)的用戶界面的設(shè)計(jì)。 系統(tǒng)原理示 意圖如圖所示。
2.4.2 傳感器節(jié)點(diǎn)硬件設(shè)計(jì)
Zigbee 傳感器節(jié)點(diǎn)的硬件設(shè)計(jì)與協(xié)調(diào)器節(jié)點(diǎn)的硬 件設(shè)計(jì)類似,由 CC2530 芯片、電壓轉(zhuǎn)換器件、電源電 路、收發(fā)器、路燈以及天線組成。 CC2530 處理器可采 集路燈的亮度數(shù)據(jù)(即電壓值),路燈也可以用來(lái)顯示 節(jié)點(diǎn)的網(wǎng)絡(luò)狀態(tài),如:節(jié)點(diǎn)是否加入網(wǎng)絡(luò)。 處理器把采 集到的數(shù)據(jù)信號(hào)經(jīng)模數(shù)轉(zhuǎn)換后由天線發(fā)送到協(xié)調(diào)器 端。 與協(xié)調(diào)器不同的是,在 Z-Stack 協(xié)議棧中,要將編 譯好的關(guān)于傳感器節(jié)點(diǎn)的代碼下載到終端設(shè)備中,終 端設(shè)備便可實(shí)現(xiàn)采集路燈數(shù)據(jù)并將數(shù)據(jù)發(fā)送給協(xié)調(diào)器 的功能。
2.4.3Zigbee 協(xié)調(diào)器節(jié)點(diǎn)建立網(wǎng)絡(luò)的過程
Zigbee 的網(wǎng)絡(luò)層(NWK) 能夠?yàn)閼?yīng)用層提供服務(wù) 接口,它也是 Zigbee 協(xié)議棧的核心層,NWK 層在概念 上由 NLME 網(wǎng)絡(luò)層管理實(shí)體和 NLDE 網(wǎng)絡(luò)層數(shù)據(jù)實(shí)體 這兩個(gè)服務(wù)實(shí)體構(gòu)成。
Zigbee 協(xié)調(diào)器的應(yīng)用層通過 NLME-NETWORKFORMATION. request 的請(qǐng)求原語(yǔ)向它的網(wǎng)絡(luò)層發(fā)出新 建一個(gè)網(wǎng)絡(luò)的請(qǐng)求,而應(yīng)用層相對(duì)應(yīng)的程序通過直接 調(diào)用
NLME_NetworkFormationRequest 函數(shù)來(lái)實(shí)現(xiàn)這一 操作過程,如果此函數(shù)判定這個(gè)設(shè)備不具有 Zigbee 協(xié) 調(diào)器的能力時(shí),就會(huì)發(fā)起 NLME-NETWORK-FORMA-TION. conform 原語(yǔ)來(lái)返回請(qǐng)求原語(yǔ)執(zhí)行的結(jié)果,它的狀態(tài)值為 INVALID_REQUEST;如果此函數(shù)判定這個(gè)設(shè)備具有 Zigbee 協(xié)調(diào)器的能力,接著它會(huì)繼續(xù)判斷網(wǎng) 絡(luò)中是否已經(jīng)有這個(gè)設(shè)備存在,若判斷有此設(shè)備存在, 就表明網(wǎng)絡(luò)在此之前已經(jīng)建好了,不需要重新建立網(wǎng) 絡(luò),若無(wú)此設(shè)備存在,此函數(shù)將通過 MLME-SCAN. request 原語(yǔ)來(lái)執(zhí)行檢測(cè)信道能量是否有效的操作,
具體操作過程由網(wǎng)絡(luò)層調(diào)用存在于 MAC 層中的 MLMESCAN. request 函數(shù)來(lái)實(shí)現(xiàn);MAC 層中的 MLME_ScanConfirm 函數(shù)會(huì)返回信道檢測(cè)的結(jié)果,網(wǎng)絡(luò)層管理實(shí)體 (NLME)將根據(jù)檢測(cè)的結(jié)果為新建的網(wǎng)絡(luò)選擇一個(gè)合 適的信號(hào)傳輸信道并給該信道分配一個(gè)名為 PANId 的網(wǎng)絡(luò)號(hào),否則 MLME_ScanConfirm 函數(shù)會(huì)向應(yīng)用層返 回 STARTUP-FAILURE 建網(wǎng)失敗的信息。 若成功建立 網(wǎng)絡(luò)并且選定了合適的 PANId 網(wǎng)絡(luò)號(hào),網(wǎng)絡(luò)層就會(huì)通 過 MLME - SET. request 原 語(yǔ) 將 PANId 號(hào) 寫 入 到 macPANId 的屬性中,macPANId 位于 MAC 層中。
若要 運(yùn)行新建立的網(wǎng)絡(luò),則需要網(wǎng)絡(luò)層向 MAC 層發(fā)送請(qǐng) 求,具體由 MLME -START. request 請(qǐng)求原語(yǔ)來(lái)實(shí)現(xiàn)。 通常建立網(wǎng)絡(luò)成功會(huì)有建網(wǎng)成功的提示信息,否則會(huì) 有建網(wǎng)失敗的提示信息。
2.4.4系統(tǒng)的軟件設(shè)計(jì)
本系統(tǒng)采用星型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),網(wǎng)絡(luò)中設(shè)置了一 個(gè)協(xié)調(diào)器節(jié)點(diǎn)和兩個(gè)終端設(shè)備節(jié)點(diǎn)。 終端設(shè)備節(jié)點(diǎn)之 間不能通信,只能與協(xié)調(diào)器節(jié)點(diǎn)通信。 協(xié)調(diào)器節(jié)點(diǎn)要 能接收到終端設(shè)備節(jié)點(diǎn)采集的數(shù)據(jù),就得存儲(chǔ)由終端 設(shè)備節(jié)點(diǎn)發(fā)來(lái)的其在加入網(wǎng)絡(luò)后所分配到的網(wǎng)絡(luò)地址 信息,之后協(xié)調(diào)器端才能成功接收終端設(shè)備節(jié)點(diǎn)的數(shù) 據(jù)并控制該節(jié)點(diǎn)。 協(xié)調(diào)器建立網(wǎng)絡(luò)成功后,終端設(shè)備 節(jié)點(diǎn)會(huì)尋找并加入網(wǎng)絡(luò),當(dāng)加入網(wǎng)絡(luò)成功后,網(wǎng)絡(luò)狀態(tài) 改變事件反饋中的定時(shí)器被觸發(fā),使得傳感器節(jié)點(diǎn)定 時(shí)采集數(shù)據(jù),并發(fā)送到協(xié)調(diào)器端,協(xié)調(diào)器再通過串口把數(shù)據(jù)傳給 PC 機(jī)。系統(tǒng)的軟件流程圖如圖 所示。
基于CC2530的zigbee物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)方案實(shí)施
CC2530單元模塊功能及電路設(shè)計(jì)
(1) CPU 和內(nèi)存
(2) 時(shí)鐘和電源管理
(3) 外設(shè)
(4) 無(wú)線設(shè)備
CC2530 具有一個(gè)IEEE 802.15.4 兼容無(wú)線收發(fā)器。RF 內(nèi)核控制模擬無(wú)線模塊。另外,它提供了MCU 和無(wú)線設(shè)備之間的一個(gè)接口,這使得可以發(fā)出命令,讀取狀態(tài),自動(dòng)操作和確定無(wú)線設(shè)備事件的順序。無(wú)線設(shè)備還包括一個(gè)數(shù)據(jù)包過濾和地址識(shí)別模塊。
CC2530的各個(gè)引腳與外部連接電路如上圖所示,根據(jù)其引腳的功能接入不同的傳感器采集數(shù)據(jù)。
3.2 基于CC2530的zigbee物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)整體電路圖
將設(shè)計(jì)中所用到的各種傳感器,如LED,電位器等與CC2530的相應(yīng)的引腳相連接起來(lái),實(shí)現(xiàn)數(shù)據(jù)的采集。外圍電路如圖所示。
將設(shè)計(jì)中所用到的各種傳感器,如LED,電位器等與CC2530的相應(yīng)的引腳相連接起來(lái),實(shí)現(xiàn)數(shù)據(jù)的采集。
3.3 元器件清單
本次設(shè)計(jì)主要用到CC2530模塊以及相關(guān)的傳感器,通過傳感器采集相關(guān)的數(shù)據(jù),傳輸?shù)紺C2530模塊,進(jìn)行后續(xù)處理。所用到的元器件主要如下:
元器件 |
數(shù)量(個(gè)) |
CC2530模塊 |
2 |
氣體傳感器 |
2 |
繼電器 |
2 |
溫度傳感器 |
2 |
熱紅外 |
2 |
脫機(jī)下載器 |
1 |
天線 |
2 |
基于CC2530的zigbee物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)的硬件制作與調(diào)試
下位機(jī)電路的連接與調(diào)試
1.下位機(jī)一共有2塊實(shí)驗(yàn)版(1個(gè)協(xié)調(diào)器1個(gè)終端節(jié)點(diǎn))。終端節(jié)點(diǎn):
用IAR打開\實(shí)訓(xùn)資料\實(shí)訓(xùn)項(xiàng)目最終版\下位機(jī)\節(jié)點(diǎn)一\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\GenericApp\CC2530DB\GenericApp
2.協(xié)調(diào)器:用IAR打開\實(shí)訓(xùn)資料\實(shí)訓(xùn)項(xiàng)目最終版\下位機(jī)\節(jié)點(diǎn)二\ZStack-CC2530-2.5.1a\Projects\zstack\Samples\GenericApp\CC2530DB\GenericApp
協(xié)調(diào)器要插串口將數(shù)據(jù)傳輸?shù)街鳈C(jī)上,線終端節(jié)點(diǎn)的傳感器與cc253的連接和跳冒如下圖。當(dāng)三個(gè)板子的黃色LED亮?xí)r,表明組網(wǎng)成功。
4.2 上位機(jī)電路的連接與調(diào)試
1.導(dǎo)入工程, 導(dǎo)入需要的jar,建立需要的數(shù)據(jù)庫(kù);將上位機(jī)文件目錄下的工程文件按照正確的導(dǎo)入方式導(dǎo)入到MyEclipse;實(shí)訓(xùn)項(xiàng)目最終版\上位機(jī)\SerialportClientMN;將上位機(jī)文件目錄下的包文件下的jar包導(dǎo)入到前面導(dǎo)入的工程中。把上位機(jī)文件目錄下的數(shù)據(jù)庫(kù)文件夾下的data文件用sqlserver打開,然后點(diǎn)擊執(zhí)行,就會(huì)在sqlserver里面建立對(duì)應(yīng)的數(shù)據(jù)庫(kù)以及表;把上位文件目錄下的win32下的dll文件(此文件是串口通信)放到工程根目錄下,如果電腦是64位就用win64文件下的。
2.程序使用。運(yùn)行程序?qū)?huì)出現(xiàn)登錄界面,如果沒有賬戶就點(diǎn)擊注冊(cè),注冊(cè)成功后再進(jìn)行登錄;登錄成功會(huì)將會(huì)進(jìn)入到主控制和操作界面,然后可以先設(shè)置自己需要的默認(rèn)串口以及波特率, 自動(dòng)刷新的時(shí)間,動(dòng)態(tài)圖的刷新時(shí)間;串口和波特率的設(shè)置將會(huì)在下次登錄生效。(設(shè)置不是必須的)在操作界面,首先選擇串口以及波特率然后打開串口。可以打開和關(guān)閉自動(dòng)刷新,以及服務(wù)器。也可以點(diǎn)擊變化圖選擇需要查看對(duì)應(yīng)的溫度,氣體, 光強(qiáng)的變化情況(此圖沒有做數(shù)據(jù)處理, 當(dāng)數(shù)據(jù)兩大的時(shí)候圖將變得相當(dāng)?shù)拿芗蝗绻枰榭串?dāng)前的采集到的數(shù)據(jù),可以點(diǎn)擊菜單下的查看歷史記錄。在歷史記錄界面下,可以刪除(支持批量刪除)和修改選擇的數(shù)據(jù);查詢功能不可用。
4.3 基于CC2530的zigbee物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)的實(shí)現(xiàn)
下位機(jī)與協(xié)調(diào)器電路連接調(diào)試成功后,將處理后的數(shù)據(jù)通過串口傳遞到上位機(jī)通過界面顯示傳輸?shù)臄?shù)據(jù)。運(yùn)行后的界面如下圖所示。
- 贊