基于單片機(jī)與ZigBee的物聯(lián)網(wǎng)網(wǎng)絡(luò)設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
關(guān)于物聯(lián)網(wǎng)技術(shù)的應(yīng)用,最初可追溯到 20 世紀(jì) 90 年代,從此以后,物聯(lián)網(wǎng)被廣泛應(yīng)用,目前已經(jīng)遍及智能交通、環(huán)境保護(hù)、政府工作、公共安全、平安家居、智能消防、工業(yè)監(jiān)測(cè)、環(huán)境監(jiān)測(cè)、老人護(hù)理、個(gè)人健康、花卉栽培、水系監(jiān)測(cè)、食品溯源、敵情偵查和情報(bào)搜集等多個(gè)領(lǐng)域。
自 2009 年 8月溫家寶總理提出“感知中國(guó)”以來(lái),物聯(lián)網(wǎng)被正式列為國(guó)家五大新興戰(zhàn)略性產(chǎn)業(yè)之一,目前國(guó)家已經(jīng)把傳感網(wǎng)明確列入《國(guó)家中長(zhǎng)期科學(xué)技術(shù)發(fā)展規(guī)劃 (2006—2020 年 )》和 2050 年國(guó)家產(chǎn)業(yè)路線圖。全中國(guó)上上下下都在關(guān)注物聯(lián)網(wǎng),其受關(guān)注程度是其他各國(guó)不可比擬的。本文介紹了一種如何利用單片機(jī)學(xué)習(xí)板與 ZigBee 模塊建立一個(gè)物聯(lián)網(wǎng)網(wǎng)絡(luò)的設(shè)計(jì)及調(diào)試方法。
1 ZigBee 技術(shù)簡(jiǎn)介
ZigBee 是一種新興的短距離無(wú)線技術(shù),可用于傳感控制應(yīng)用 (sensor and control)。此想法在 IEEE 802.15 工作組中提出后,于是便成立了 TG4 工作組并制定了 IEEE 802.15.4 規(guī)范。2001 年 8 月,ZigBee Alliance 成 立。2004 年,ZigBee V1.0誕生,它是 ZigBee 的第一個(gè)規(guī)范,但由于推出倉(cāng)促,ZigBeeV1.0 存在一些錯(cuò)誤。2006 年推出的 ZigBee 2006 就比較完善,2007 年底又推出 ZigBee PRO。
ZigBee 是基于 IEEE802.15.4 標(biāo)準(zhǔn)的低功耗個(gè)域網(wǎng)協(xié)議。根據(jù)這個(gè)協(xié)議規(guī)定,該技術(shù)是一種短距離、低功耗的無(wú)線通信技術(shù)。這一名稱來(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ù)。
2 ZM2410P0 ZigBee 模塊介紹
目前,國(guó)內(nèi)外生產(chǎn) ZigBee 模塊的廠家很多,文中采用的是 ZM2410P0 ZigBee 模塊,該模塊內(nèi)嵌串口透明傳輸 ( 點(diǎn)對(duì)點(diǎn)和點(diǎn)對(duì)多點(diǎn) ) 通訊協(xié)議,支持空中升級(jí)固件或配置遠(yuǎn)程模塊信息。該模塊將無(wú)線通訊產(chǎn)品的復(fù)雜射頻電路集成在一塊小小的板子上,并將無(wú)線通訊產(chǎn)品復(fù)雜的通訊協(xié)議內(nèi)嵌到內(nèi)置的 8051 單片機(jī)里,可讓開(kāi)發(fā)產(chǎn)品的過(guò)程最大程度地化繁為簡(jiǎn),
縮短產(chǎn)品的開(kāi)發(fā)周期。圖 1 所示是該模塊的外型圖。
圖1 ZM2410P0 ZigBee 模塊
ZM2410P0 ZigBee 模塊共有 26 個(gè)引腳,各引腳的功能定義如表 1 所列。
3 基于 DEMO 開(kāi)發(fā)板的本地模塊通訊參數(shù)配置
使用 ZM2410 評(píng)估套件 ZM-DEMO 配送 USB 通訊電纜來(lái)連接評(píng)估板和 PC 機(jī)方法如圖 2 所示。其中電源開(kāi)關(guān)撥到“VBUS”位置,打開(kāi)配置軟件,首次設(shè)置串口號(hào)為對(duì)應(yīng)的串口,波特率為 115 200,數(shù)據(jù)位 8,停止位 1,無(wú)校驗(yàn)位。單擊“打開(kāi)串口”,然后選擇“ZLG”選項(xiàng)卡并點(diǎn)擊“獲取信息”進(jìn)入配置狀態(tài),此時(shí)可得到如圖 3 所示的配置信息初始狀態(tài)。
之后,在基本信息欄里分別按圖 4 所示設(shè)置兩個(gè)模塊的各項(xiàng)信息,點(diǎn)擊“更改配置”輸入初始密碼即可;接著,按同樣的方法在串口信息欄設(shè)置串口波特率為 19 200,方便后續(xù)與單片機(jī)的通訊。這樣就可輕松把兩個(gè) ZigBee 模塊設(shè)置為點(diǎn)對(duì)點(diǎn)的通訊模式。
4 硬件通訊測(cè)試
分別把兩個(gè)帶有 ZigBee 模塊的 ZM2410 評(píng)估套件 ZM-DEMO 用配送的 USB 通訊電纜連接到評(píng)估板和 PC 機(jī),電源開(kāi)關(guān)撥到“VBUS”位置。打開(kāi)兩個(gè)串口調(diào)試助手窗口,并分別按圖 5 所示的方法設(shè)置好相關(guān)參數(shù)。再打開(kāi)串口,在字符串輸入框中輸入要發(fā)送的字符,點(diǎn)擊“發(fā)送”按鈕。如果能在各自對(duì)應(yīng)的窗口中接收到對(duì)方所發(fā)送的信息,則說(shuō)明模塊硬件信息配置正確,可以正常使用模塊進(jìn)行二次開(kāi)發(fā)和使用。
5 ZigBee 終端節(jié)點(diǎn)硬件設(shè)計(jì)
圖 6 所示是根據(jù) ZM2410 模塊的用戶手冊(cè)設(shè)計(jì) ZigBee 終端典型系統(tǒng)的硬件電路,ZigBee 模塊可通過(guò)串口與 MCU 連接實(shí)現(xiàn)數(shù)據(jù)傳輸,三個(gè) LED 指示燈來(lái)用指示模塊的發(fā)送、接收及錯(cuò)誤報(bào)警信息。
圖 5 通訊測(cè)試
6 ZigBee 終端節(jié)點(diǎn)的軟件設(shè)計(jì)
根據(jù) ZigBee 終端最小系統(tǒng)原理圖設(shè)計(jì) MCU 串口數(shù)據(jù)的發(fā)送原程序如下:
#include <REG52.H>
#include <stdio.h>
void delay(unsigned int i); // 函數(shù)聲明
char code MESSAGE[]= " 深圳職業(yè)技術(shù)學(xué)院 ";
unsigned char a;
void main (void) {
SCON = 0x50; //REN=1允許串行接受狀態(tài),串口工作
模式 2
TMOD|= 0x20; // 定時(shí)器工作方式 2
PCON|= 0x80; // 波特率提高一倍
TH1= 0xFD; // 數(shù)據(jù)位 8、停止位 1、效驗(yàn)位無(wú)、
晶振 (11.0592)
TL1=0xFD;
TR1=1; // 開(kāi)啟定時(shí)器 1
ES=1; // 開(kāi)串口中斷
EA = 1; // 開(kāi)總中斷
while(1)
{a=0;
while(MESSAGE[a] != '\0')
{
SBUF = MESSAGE[a]; //SUBF 接受 / 發(fā)送緩沖器
while(!TI);
// 等特?cái)?shù)據(jù)傳送
TI = 0;
// 清除數(shù)據(jù)傳送標(biāo)志
a++;
// 下一個(gè)字符
}
delay(1000);
}
}
void delay(unsigned int i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--) ;
}
該程序運(yùn)行后,可使 C51 單片機(jī)通過(guò)串口不斷地向外發(fā)送“深圳職業(yè)技術(shù)學(xué)院”字符。
7 ZigBee 物聯(lián)網(wǎng)網(wǎng)絡(luò)的建立
利用實(shí)驗(yàn)室現(xiàn)有單片機(jī)學(xué)習(xí)板并按圖 6 所示的方法設(shè)計(jì)節(jié)點(diǎn)硬件電路,把每個(gè)節(jié)點(diǎn)按圖 4 所示設(shè)置好 ZigBee 模塊信息,這樣就建立了一個(gè)點(diǎn)對(duì)點(diǎn)的物聯(lián)網(wǎng)硬件網(wǎng)絡(luò),具體如圖7 所示。如果把其中一個(gè)節(jié)點(diǎn) n 的發(fā)送模式定義為“廣播模式”,其它節(jié)點(diǎn)的目的網(wǎng)絡(luò)地址都為節(jié)點(diǎn) n 的本地網(wǎng)絡(luò)地址,就可把點(diǎn)對(duì)點(diǎn)物聯(lián)網(wǎng)硬件網(wǎng)絡(luò)變成點(diǎn)對(duì)多點(diǎn)的物聯(lián)網(wǎng)硬件網(wǎng)絡(luò),具體如圖 8 所示。
8 ZigBee 物聯(lián)網(wǎng)網(wǎng)絡(luò)通訊調(diào)試
8.1 點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)的通訊調(diào)試
把前面程序編譯后燒錄到節(jié)點(diǎn) n 的 MCU 中,然后接通電源,就可看到節(jié)點(diǎn) n 的 ZigBee 模塊的 25 腳數(shù)據(jù)接收指示燈“LEDR”在有規(guī)律地閃爍著,這說(shuō)明節(jié)點(diǎn) n 在不停地發(fā)送數(shù)據(jù)。這時(shí),把另一個(gè)帶有 ZigBee 模塊的節(jié)點(diǎn) n+1 用 USB 通訊電纜連接到評(píng)估板和 PC 機(jī),也把電源開(kāi)關(guān)撥到“VBUS”位置,并在 PC上打開(kāi)一個(gè)串口調(diào)試工具窗口,就可看到這個(gè) ZigBee模塊的“LEDT”指示燈同樣在有規(guī)律地閃爍著,從串口調(diào)試工具窗口也可看到模塊終端接收到信息,具體如圖 9 所示。圖 9 ZigBee 接收終端8.2 點(diǎn)對(duì)多點(diǎn)網(wǎng)絡(luò)的通訊調(diào)試
在節(jié)點(diǎn) n+1 到節(jié)點(diǎn) n+…中的各個(gè) MCU 中燒錄好前面所寫(xiě)程序,節(jié)點(diǎn) n 按點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)試調(diào)時(shí)的設(shè)置即可,然后使各節(jié)點(diǎn)上電運(yùn)行,就可從節(jié)點(diǎn) n 的串口調(diào)試工具窗口看到模塊終端接收到如圖 9 所示的信息。
9 結(jié) 語(yǔ)
實(shí)踐證明,通過(guò)對(duì) ZigBee 模塊的學(xué)習(xí)而不再需要復(fù)雜的高頻電路基礎(chǔ),就可以通過(guò)現(xiàn)有的單片機(jī)學(xué)習(xí)板掌握一種全新的無(wú)線傳輸技術(shù)。如果把這一技術(shù)應(yīng)用到單片機(jī)教學(xué)中,不僅可以增加學(xué)生對(duì)現(xiàn)有單片機(jī)系統(tǒng)的學(xué)習(xí)興趣,而且可以開(kāi)闊學(xué)生的知識(shí)面。
20210915_61417e6300b73__基于單片機(jī)與ZigBee的物聯(lián)網(wǎng)網(wǎng)絡(luò)設(shè)計(jì)與實(shí)現(xiàn)