基于单片机与ZigBee的物联网网络设计与实现
扫描二维码
随时随地手机看文章
引言
关于物联网技术的应用,最初可追溯到 20 世纪 90 年代,从此以后,物联网被广泛应用,目前已经遍及智能交通、环境保护、政府工作、公共安全、平安家居、智能消防、工业监测、环境监测、老人护理、个人健康、花卉栽培、水系监测、食品溯源、敌情侦查和情报搜集等多个领域。
自 2009 年 8月温家宝总理提出“感知中国”以来,物联网被正式列为国家五大新兴战略性产业之一,目前国家已经把传感网明确列入《国家中长期科学技术发展规划 (2006—2020 年 )》和 2050 年国家产业路线图。全中国上上下下都在关注物联网,其受关注程度是其他各国不可比拟的。本文介绍了一种如何利用单片机学习板与 ZigBee 模块建立一个物联网网络的设计及调试方法。
1 ZigBee 技术简介
ZigBee 是一种新兴的短距离无线技术,可用于传感控制应用 (sensor and control)。此想法在 IEEE 802.15 工作组中提出后,于是便成立了 TG4 工作组并制定了 IEEE 802.15.4 规范。2001 年 8 月,ZigBee Alliance 成 立。2004 年,ZigBee V1.0诞生,它是 ZigBee 的第一个规范,但由于推出仓促,ZigBeeV1.0 存在一些错误。2006 年推出的 ZigBee 2006 就比较完善,2007 年底又推出 ZigBee PRO。
ZigBee 是基于 IEEE802.15.4 标准的低功耗个域网协议。根据这个协议规定,该技术是一种短距离、低功耗的无线通信技术。这一名称来源于蜜蜂的八字舞,由于蜜蜂 (bee) 是靠飞翔和“嗡嗡”(zig) 地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息的,也就是说,蜜蜂依靠这样的方式构成了群体中的通信网络。其特点是近距离、低复杂度、自组织、低功耗、低数据速率、低成本,主要适合用于自动控制和远程控制领域,可以嵌入各种设备。简而言之,ZigBee 就是一种便宜的、低功耗的近距离无线组网通讯技术。
2 ZM2410P0 ZigBee 模块介绍
目前,国内外生产 ZigBee 模块的厂家很多,文中采用的是 ZM2410P0 ZigBee 模块,该模块内嵌串口透明传输 ( 点对点和点对多点 ) 通讯协议,支持空中升级固件或配置远程模块信息。该模块将无线通讯产品的复杂射频电路集成在一块小小的板子上,并将无线通讯产品复杂的通讯协议内嵌到内置的 8051 单片机里,可让开发产品的过程最大程度地化繁为简,
缩短产品的开发周期。图 1 所示是该模块的外型图。
图1 ZM2410P0 ZigBee 模块
ZM2410P0 ZigBee 模块共有 26 个引脚,各引脚的功能定义如表 1 所列。
3 基于 DEMO 开发板的本地模块通讯参数配置
使用 ZM2410 评估套件 ZM-DEMO 配送 USB 通讯电缆来连接评估板和 PC 机方法如图 2 所示。其中电源开关拨到“VBUS”位置,打开配置软件,首次设置串口号为对应的串口,波特率为 115 200,数据位 8,停止位 1,无校验位。单击“打开串口”,然后选择“ZLG”选项卡并点击“获取信息”进入配置状态,此时可得到如图 3 所示的配置信息初始状态。
之后,在基本信息栏里分别按图 4 所示设置两个模块的各项信息,点击“更改配置”输入初始密码即可;接着,按同样的方法在串口信息栏设置串口波特率为 19 200,方便后续与单片机的通讯。这样就可轻松把两个 ZigBee 模块设置为点对点的通讯模式。
4 硬件通讯测试
分别把两个带有 ZigBee 模块的 ZM2410 评估套件 ZM-DEMO 用配送的 USB 通讯电缆连接到评估板和 PC 机,电源开关拨到“VBUS”位置。打开两个串口调试助手窗口,并分别按图 5 所示的方法设置好相关参数。再打开串口,在字符串输入框中输入要发送的字符,点击“发送”按钮。如果能在各自对应的窗口中接收到对方所发送的信息,则说明模块硬件信息配置正确,可以正常使用模块进行二次开发和使用。
5 ZigBee 终端节点硬件设计
图 6 所示是根据 ZM2410 模块的用户手册设计 ZigBee 终端典型系统的硬件电路,ZigBee 模块可通过串口与 MCU 连接实现数据传输,三个 LED 指示灯来用指示模块的发送、接收及错误报警信息。
图 5 通讯测试
6 ZigBee 终端节点的软件设计
根据 ZigBee 终端最小系统原理图设计 MCU 串口数据的发送原程序如下:
#include <REG52.H>
#include <stdio.h>
void delay(unsigned int i); // 函数声明
char code MESSAGE[]= " 深圳职业技术学院 ";
unsigned char a;
void main (void) {
SCON = 0x50; //REN=1允许串行接受状态,串口工作
模式 2
TMOD|= 0x20; // 定时器工作方式 2
PCON|= 0x80; // 波特率提高一倍
TH1= 0xFD; // 数据位 8、停止位 1、效验位无、
晶振 (11.0592)
TL1=0xFD;
TR1=1; // 开启定时器 1
ES=1; // 开串口中断
EA = 1; // 开总中断
while(1)
{a=0;
while(MESSAGE[a] != '\0')
{
SBUF = MESSAGE[a]; //SUBF 接受 / 发送缓冲器
while(!TI);
// 等特数据传送
TI = 0;
// 清除数据传送标志
a++;
// 下一个字符
}
delay(1000);
}
}
void delay(unsigned int i)
{
unsigned char j;
for(i; i > 0; i--)
for(j = 200; j > 0; j--) ;
}
该程序运行后,可使 C51 单片机通过串口不断地向外发送“深圳职业技术学院”字符。
7 ZigBee 物联网网络的建立
利用实验室现有单片机学习板并按图 6 所示的方法设计节点硬件电路,把每个节点按图 4 所示设置好 ZigBee 模块信息,这样就建立了一个点对点的物联网硬件网络,具体如图7 所示。如果把其中一个节点 n 的发送模式定义为“广播模式”,其它节点的目的网络地址都为节点 n 的本地网络地址,就可把点对点物联网硬件网络变成点对多点的物联网硬件网络,具体如图 8 所示。
8 ZigBee 物联网网络通讯调试
8.1 点对点网络的通讯调试
把前面程序编译后烧录到节点 n 的 MCU 中,然后接通电源,就可看到节点 n 的 ZigBee 模块的 25 脚数据接收指示灯“LEDR”在有规律地闪烁着,这说明节点 n 在不停地发送数据。这时,把另一个带有 ZigBee 模块的节点 n+1 用 USB 通讯电缆连接到评估板和 PC 机,也把电源开关拨到“VBUS”位置,并在 PC上打开一个串口调试工具窗口,就可看到这个 ZigBee模块的“LEDT”指示灯同样在有规律地闪烁着,从串口调试工具窗口也可看到模块终端接收到信息,具体如图 9 所示。图 9 ZigBee 接收终端8.2 点对多点网络的通讯调试
在节点 n+1 到节点 n+…中的各个 MCU 中烧录好前面所写程序,节点 n 按点对点网络试调时的设置即可,然后使各节点上电运行,就可从节点 n 的串口调试工具窗口看到模块终端接收到如图 9 所示的信息。
9 结 语
实践证明,通过对 ZigBee 模块的学习而不再需要复杂的高频电路基础,就可以通过现有的单片机学习板掌握一种全新的无线传输技术。如果把这一技术应用到单片机教学中,不仅可以增加学生对现有单片机系统的学习兴趣,而且可以开阔学生的知识面。