Day1 : zigbee简介+开发环境搭建

Day1 : zigbee简介+开发环境搭建

  • Zigbee 简介
    • Zigbee 无线传感网络的特点
    • ZigBee 无线传感网络的应用范围
    • ZigBee 协议体系结构
    • Zigbee 的信道 Channel
    • Zigbee 的网络号 PANID
    • Zigbee 的地址
    • ZigBee 的设备类型
    • Zigbee 协议与协议栈
    • zigbee 开发套件
  • Zigbee 开发环境搭建
    • IAR、SmartRF及Z-stack安装
    • 新建一个工程
    • 工程设置
    • 流水灯实验

Zigbee 简介

  • 什么是 Zigbee
    • 无线传感网络的无线通信技术可以采用zigbee,蓝牙,wifi和红外等。
    • Zigbee技术是一种 短距离低复杂度低功耗低成本低数据速率 的双向无线通信技术,是一组基于IEEE802.15.4无线标准研制开发的有组网,安全和应用软件方面的通信技术。
  • Zigbee 的产生
    • Zigbee2007协议(紫蜂协议) —— 蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来传递信息。

Zigbee 无线传感网络的特点

与其他无线通信协议相比,Zigbee 无线通信网络具有协议复杂度程度低资源要求少等特点,具体如下。

  1. 低功耗
    • 低功耗是 ZigBee 的一个显著特点。由于工作周期较短、收发信息功耗低且采用了睡眠的工作模式们可以确保2节5号电池支持长达6个月到2年的使用时间。由于不同的应用具有不同的功耗,因此具体的使用时间还受到具体应用场合的影响。
    • 同一块电池,ZigBee的待机时间更长。
  2. 低成本
    • 协议简单且所需的存储空间小,这极大地降低了 ZigBee 的成本。每块芯片价格仅 2~5美元,而且 ZigBee 协议是免专利费。
    • 实际开发中经常要考虑到的一个问题,就是低成本问题。至关重要的优点。
  3. 延迟短
        ZigBee 无线传感网络的通信延迟和从睡眠状态激活的延迟都非常短。设备搜索延迟为30ms,休眠延迟为15ms,活动设备信道接入延迟为15ms。这样,一方面节省了能量消耗,另一方方面更适用于对延迟敏感的场合。
  4. 数据传输速率低
    • ZigBee 无线传感网络的数据传输速率为10~250kbit/s,专注低传输应用,数据传输可靠性高;采用碰撞避免机制,
    • 数据吞吐量小。
  5. 网络容量大
        一个 ZigBee 设备可以与254个设备相连接,一个ZigBee网络可以容纳 65 536 个从设备和一个主设备,一个区域内可以同时存在100个 ZigBee 网络。网络有星状、树状和网状网络结构。在有节点加入和撤出时,网络具有自动修复功能。
  6. 有效范围小(短距离)
    • ZigBee 无线传感网络的有效覆盖范围在 10~200m,具体根据实际发射功率的大小和应用模式而定。
    • 功率只要开到足够大几公里也是没问题的。例如:亿百特的 Zigbee解决方案 E18-2G4Z27SI,27dBm,2.4G,2500m。
  7. 工作频段灵活
        ZigBee 无线传感网络的工作频段为2.4GHz(全球)、868MHz(欧洲)和 915MHz(美国),均为免执照频段。
  8. 兼容性好
        ZigBee 无线传感网络与现有的控制网络标准无缝集成;通过网络协调器(Coordinator)自动建立网络,采用CSMA-CA方式进行信道的存取;为了传递的可靠性,提供全握手协议。
  9. 安全性高
        ZigBee 提供了数据完整性检查和鉴权功能,加密算法采用 AES-128,同时各个应用可以灵活确定其安全属性。
  10. 协议套件紧凑而简单
    • ZigBee 具体实现的要求很低。Zigbee 套件需要8位微处理器,如80C51;全协议栈套件需要32KB的ROM;最小协议栈套件大约4KB的ROM。
    • 低复杂度,便于学习开发。

ZigBee 无线传感网络的应用范围

  • 智能家居 - 对家用电器的控制和家庭娱乐系统的管理。
  • 楼宇自动化 - 整合并集中管理照明,采暖,制冷和安全和采集周围环境。
  • 工业自动化 - 利用传感器采集工业生产过程中的数据并进行分析和处理,提高工业生产的安全性。
  • 医学领域 - 将借助于各种传感器和ZigBee网络,准确而且实时的检测每隔病人的血压,体温和心跳速度等信息。养老院……
  • 环境监测 - 水污染检测、空气质量检测、精细农业操作等
  • 安全防卫 - 目标跟踪与定位

ZigBee 协议体系结构

  • 我们在学习网络的时候了解到网络的软件架构是按照分层的思想设计的,每一层负责不同的功能,如典型的有OSI协议参考模型以及TCP/IP协议模型。
      低耦合高内聚
OSI 协议模型
应用层
表示层
会话层
传输层
网络层
数据链路层
物理层
TCP/IP 协议模型
应用层
传输层
网络层
网络接口层
  • ZigBee协议也是在OSI参考模型上,结合无线网络的特点,采用分层想想实现的。
ZigBee 协议模型 定义
应用层
应用支持子层 Zigbee 联盟
网络层
------- -------
介质访问层 IEEE802.15.4
物理层 规范定义的

Zigbee 的信道 Channel

  • 在2.4GHz频段,同有16个信道,信道通信速率为250kbit/s,,11~26
  • 在915MHz频段,同有10个信道,信道通信速率为40kbit/s,1~10
  • 在896MHz频段,同有1个信道,信道通信速率为20kbit/s,0
Mon 06 Mon 13 信道0 信道1~10 信道11~26 信道分布
  • Zigbee 无线传感器网络信道分布
  • 信道分布表格(新手不用看)
  • 2.4GHz频段日益受到重视。

Zigbee 的网络号 PANID

  • Zigbee协议使用一个16位的个域网络标识符(Personal Area Network ID, PADNID)来标识一个网络。
  • Z-Stack 允许用两种方式配置PANID。范围从 0x0000~0xFFFF
    • 当 ZDAPP_CONFIG_PAN_ID值不设置为0XFFFF时设备建立或加入网络的 PAN ID 由 ZDAPP_CONFIG_PAN_ID 指定;
    • 如果设置ZDAPP_CONFIG_PAN_ID 为0xFFFF,那么设备就将建立或加入一个“最优”的网络。
  • PANID的出现一般是在确定信道之后。
  • PANID 针对一个或多个应用的网络,用于区分不同的Zigbee网络,一般是Mesh或者Cluster Tree 两种拓扑结构之一。
  • 所有节点的PANID唯一,即一个网络只有一个PANID,它是由PAN协调器生成的,PANID是可选配置项用来控制Zigbee路由器和终端节点要加入那个网络。
  • 文件f8wConfig.cfg可以设置为0x0000~0x3FFF之间的一个值。协调器使用这个值,作为它要启动的网络的PANID。而对于路由器节点和终端节点来说,只要加入一个已经用这个参数配置了PANID的网络。如果要关闭这个功能,只要将这个参数设置为0xFFFF。

Zigbee 的地址

  • 在Zigbee无线传感网络中,节点有两个地址。
    • 一个是物理(IEEE或扩展)地址,每个CC2530单片机的IEEE在出厂时就已经定义好了(当然,在用户学习阶段可能通过编程软件 SmartRF Flash Programmer 修改设备的IEEE地址)。
      • 当一个Zigbee节点需要加入网络时,其物理地址必须不能与现有网络节点的物理地址有冲突,并且不为0XFFFF。
    • 另一个是网络地址(16位)。该地址是在设备加入网络时,按照一定的算法计算得到并分配给加入网络的设备。网络地址在某个网络中是唯一的, 16位短地址主要有两个功能:
      1. 在网路中标识不同的涉笔;
      2. 在网络数据传输时指定目的地址;

ZigBee 的设备类型

  • zigbee 标准将网络节点按照功能划分为协调器(Coordinatior),路由器(Router)和终端设备(EndDevice)。

  • 协调器:

    • 启动和配置网络,一个ZigBee网络只能有一个协调器。
    • 为每个设备分配一个唯一的网络地址。
    • 为整个网络选择一个唯一的16的 PAN ID(个人局域网标识符 ) ,通过这个ID,网络中的设备就可以通过网络地址来互相通信了。
    • 初始化,终止,转发网络中的消息,协调器可以与此网络中的所有路由节点或者终端节点通信。
  • 路由器(Router):

    • 保持间接寻址用的绑定表格,支持关联,同时还能设计信任中心和执行其他活动。(新手看不懂)
    • 允许设备加入网络,扩展网络覆盖的物理范围和数据包路由的功能。
    • 负责数据的转发功能,一个路由节点可以与若干个路由节点或终端节点通信。
  • 终端设备(End Device):

    • 主要负责无线网络数据的采集,一般数量比较多。

Zigbee 路由器是一种支持关联的设备,能够将消息转发到其他设备。 Zigbee网格或树型网络可以有多个Zigbee路由器。Zigbee星型网络不支持Zigbee路由器。

  Zigbee 终端设备可以执行它的相关功能,并使用Zigbee网络到达其他需要与其通信的设备,它的存储容量要求最小,其可以实现ZigBee低功耗设计。

  拿班级举个例子,PAN ID 就是班级号,每个设备的网络短地址就是班级里学生的学号,协调器就是班长。
 路由器可以允许其他设备加入班级,可以使班级变得更宽。小组长?
 终端设备经常挂一些传感器,可执行器。

 上述 3 种设备根据功能完整性可分为全功能设备(Full Funtional Device,FFD)和精简功能设备(Reduce Function Device,RFD)。其中FFD可作为协调器、路由器和终端设备,而RFD只能用于终端设备。一个FFD可以与多个RFD或多个其他FFD通信,而一个RFD只能与一个FFD通信。

Zigbee 协议与协议栈

  • 基于zigbee2007无线网络开发,需要对应的硬件和软件支持。在硬件方面,以TI公司推出的CC2530片上系统为代表;软件方面,与CC2530对应的是TI推出的 Z-Stack协议栈。
  • 协议栈是协议的具体实现

zigbee 开发套件

  • 806实验室中的黑色板。
      • TODO(tonghua):硬件介绍。

Zigbee 开发环境搭建

IAR、SmartRF及Z-stack安装

  • 略,国赛培训的时候已安装。

新建一个工程

  1. 新建.ewp、.eww文件,一个工作空间可以有多个工程文件。加入.c、.h、文件。
  2. empty project

工程设置

  1. Alt,F7参数配置。
    • 将“General Options” -> “Target” 选项中的“Device”,选择为TI公司的CC2530.
    • “Data model”选择“Large”,“Calling cinvention”选择“XDATA”
  2. Linker设置(配置输出.hex文件)
    • “Output”选项卡,在“Fromat”里选择“Allow C-SPY-specific extra outpue file”复选框
    • “Extra output”选项卡、
      • 选择“Generate extra output file”
      • 选择“Override default”
      • 将后缀改为.hex
      • “format”设置为"intel-extended"
      • i,i,Enter
  3. C/C++ Compiler配置
    • “Preprocessor”预编译
      • “include paths”
      • “Defined symbols”
      • “Ignore Standard include directories” 不勾选
      • $ TOOLKIT_DIR $ :IAR安装路径的8051文件夹下
      • $ PROJ_DIR $:包含文件的路径在工程文件中,也就是和eww文件和ewp文件同目录。
      • “…”表示返回上一级文件夹。
      • "\文件夹"表示进入文件夹。

流水灯实验

#include "ioCC2530.h"

#define LED1 (P1_1)	// D4
#define LED2 (P1_0)	// D3
#define LED3 (P1_4)	// D6
#define LED4 (P1_3)	// D5
#define LEDS 4

void delay(unsigned int ms);

void delay(unsigned int ms)
{
	// """
	// 延迟函数
	// 参数1 延迟时间(ms)
	// """
	unsigned int i;
	unsigned char j;
	for( i=0; i<ms; i++ )
	{
		for ( j=0; j<240; j++ )
		{
			asm("NOP");
			asm("NOP");
			asm("NOP");
		}
	}
}

void ledInit()
{
	// """
	// 初始化led
	// """
	// 默认为普通输入
	P1DIR |= (1<<0)|(1<<1)|(1<<3)|(1<<4);
	LED1 = LED2 = LED3 = LED4 = 0;
}

void main()
{
	unsigned char flow[4] = {(1<<1), (1<<0), (1<<4), (1<<3)};
	signed char i;
	ledInit();
	while(1)
	{
		for(i=0; i<LEDS; i++){
			P1 = flow[i];
			delay(1000);
		}
		
		for(i=i-1; i>=0; i--){
			P1 = flow[i];
			delay(1000);
		}
	}
}

你可能感兴趣的:(ZIGBEE技术)