Zigbee无线技术介绍与开发点滴总结

在项目实践学习中记录的点滴笔记,整理成章,希望能给大家提供工作与学习思路。

往期文章:

1、无线通信项目开发 - NB-IOT、LoRa、433、GPRS、2.4G、PKE近场通信,基础理论与开发点滴总结

2、蓝牙无线技术(BLE)与开发点滴总结

3、Zigbee无线技术与开发点滴总结

4、WIFI无线技术与开发点滴总结

本章目录

一、zigbee技术特点

二、zigbee项目开发杂记

三、结构/协议框图


一、zigbee技术特点

1、zigbee是一种低功耗、低速率的无线个域网( PAN )技术;
2、zigbee等无线技术也是属于嵌入式产品;
3、zigbee是一种分布式网络;
4、技术缺陷:
    a、zigbee技术的推广力度不足;
    b、传输速率低;
    c、利用中继节点传输不稳定;
    d、处于信号边缘的节点(主机直传、节点直传方式混淆,造成不稳定);
    e、传输速率低、组网灵活;
    f、外加功放功耗十分大;
5、Zigbee与蓝牙的区别:
    a、射频单片机上除了射频部分外基本相同;
    b、软件上协议栈的类操作系统是:与蓝牙的一致(同时OSAL)
    c、协议栈的流程和组网方式都有很大的差异;
    d、开发环境上是基本类似的;
6、终端设备、协调器、路由的工程区别在哪?
    a、 无 论 是 协 调 器 还 是 路 由 器 或 是 终 端 设 备 , 其 启 动 过 程 至 网 络 初 始 步 骤 均 是 一样的 , 只是 不 同设 备 的 配 置文 件 在编 译时 有 所区 别 :
7、zigbee的一些重要参数:
    a、64bit IEEE地址;
    b、16bit短地址( 网络地址,网络通讯地址 )( 协调器分配给终端设备的地址?)
    c、profile->簇(cluster)->属性(attribute)
8、zigbee术语:
    a、端点,就是一个8位的字段,描述一个射频端所支持的不同应用(温度、湿度、透传各充当1个端点);一个物理信道最多支持240个虚拟链路;
    b、绑定操作(建立绑定表):IEEE地址、16位网络地址、端点号、CluserID(一个为输入、一个为输出,并且ID相同);
    c、 PAN ID: personal area network ID,就是网络ID;
    d、父节点:通常有路由器或协调器充当,可以进行点对点通讯;如果要与非父节点通讯,要经过路由转发才能通讯;
    e、节点:可以理解为一个容器,包含一组zigbee设备,分享一个无线信道,每个节点有且只有一个无线信道;
    f、信标:用于所有的设备的同步工作和同步睡眠,由协调器负责发送广播信标,使得路由和终端设备同步工作和睡眠;
    g、16位地址是加入网络时由 父节点随机分配的,用来鉴别身份设备和收发数据的地址;
    h、group ID(使用前必须是已建立组ID,设备需要加入该组):组ID用于组播数据时使用;广播是组播数据的一个特例;
    i、协议栈规范ID:用于标识特定网络,只有符合该协议规范的ID才有资格加入该网络:
        1)#define NETWORK_SPECIFIC  0
        2)#define HOME_CONTROLS    1
        3)#define ZIGBEEPRO_PROFILE 2
        4)#define GENERIC_STAR          3
        5)#define GENERIC_TREE           4
    j、FFD:全功能设备;
    k、协调器建立了网络后就成为不必要的节点,可以成为路由或者消失;
    l、网络地址分配算法(自动完成),实现分配的网络地址具有唯一性;
        1)分配的机制:父节点分配随机网络ID给新加入的子节点 -> 子节点发布设备声明(携带网络ID和IEEE ID,发布给该网络所有的节点) ->如果有冲突,则父节点会通知子节点重新修改网络地址->直到地址不冲突; 
9、拓扑结构的分类和对比:
    a、星状型网络(NWK_MODE_STAR):协调器<->节点
    b、树状型网络(NWK_MODE_TREE):父节点(路由或协调器)<->子节点(终端)、路由<->路由;
    c、网状型网络(NWK_MODE_MESH):实现网络路由,优点是减少消息的延时,,缺点是需要更多的储存空间;
10、数据包的传送机制(调用不用的API):
    a、单点传送;
    b、多点传送:
    c、广播传送:
11、关于协调器:
    a、协调器的地址规定是0x0000;
    b、一个网络只允许有一个协调器;
    c、协调器管理绑定表;
    d、协调器选定一个网络ID和通讯信道(头文件定义);
12、路由器和终端的地址都是由协调器分配的;
13、 关闭网络ID :NETWORK_SPECIFIC;
14、端点的绑定技术:绑定表的内容:消息结构和设备网络地址,存放在协调器中;
15、同一区域内可以存在不同的zigbee网络,主要信道和PAN ID不同即可;
16、终端会自动选择信号较好的设备(路由器、协调器)进行连接;
17、在 zigaee 协议中定义了一种特殊的操作,叫做绑定(binding)操作。它能够通过使用 ClusterID为不同节点上的独立端点建立一个逻辑上的连接。
18、MAC层提供信标帧;
19、多跳路由就是指作为数据中转或中继作用的路由;
20、zigbee角色(节点):
    a、协调器(coordinator):网关,
    b、路由器(router):中转作用,本身也是一个节点?
    c、终端节点(end device):传输数据给路由或者协调器,
    d、组网方式:
        1)最简单的通讯模型:一个协调器+一个路由器;
        2)组网类型: 星型网络、簇状网络 、网状网络:
21、zigbee缩略语:
    a、DNS:域名解释
    b、PAN:个域网;
    c、FFD:functional device FFD 全功能设备; 
    d、RFD:reduced functional device  RFD 简化功能设备;
    e、SAP:服务接入点;
 

二、zigbee项目开发杂记

*基于深圳安联德智能家居开发套件
1、实践项目背景:PC端、局域网、公网控制项目:
    a、公网控制:配置路由器(转发规则,添加新条目)->手机连接开发板服务器;
        1)数据的流转情况:协调器->PC端->通过路由转发到公网(开发板服务器端)->服务器端发送到手机端
        2)协调器的读写:读操作直接返回数据,写操作直接转发给节点即可;
        3)协调器、节点、路由的工程都放在一起的,配置不同的宏即可生成相应的固件,他们的底层源码区别不大,区别在于应用层代码的处理;
2、开发顺序应该是先在开发板上调试软件(熟悉整个系统最快的方式是仿真调试,一来观察程序流程,二来观察变量的数值),再制作硬件;
3、最终目的是对zigbee协议、工作流程有大体上、宏观上的掌握->然后再针对一些技术细节深究消化;
4、对一项技术付出越多的时间,做得越多,必然会精;这是一个必然存在的过程;
5、zigbee芯片选型较少,较权威的属TI射频芯片:CC2430    CC2530  CC2630,可搭配功率放大器,扩大信号范围:CC2591;
6、zigbee基于协议栈,一般会做以下开发修改::
    a、添加串口打印、按键动作;
    b、调试当终端或者路由没发现到网络时的动作  :  实验结果:终端或者协调器会不断去发现网络,直到发现到为止;
    c、调试路由转发数据的动作;
7、修改例程为自己的工程:一、修改工程文件名   二、修改C文件名   三、修改头文件名;
8、延时函数必须使用协议栈自带的,保证延时正确;
9、先用smartRF Flash programmer的Erase选项擦除芯片(先不要勾选Erase and program),擦除成功后就可以使用了,亲测,可行;
10、协调器与终端存在偶尔通讯失败,可以添加重发机制;
11、zigbee的加密算法:1)开启加密功能  2)定义key; 注意开启加密后,如若需要修改代码,需要整片擦除FLASH;
    a、加密可以在不同层增加:MAC层、网络层、应用层;
    b、加密采用AES-128bit方式; 
    c、加密后数据的吞吐量和数据载荷将会增加;
11、zigbee的状态的改变:
    a、标识设备正处在什么状态,并进入相对的处理程序;
        1)协调器:设备初始化状态->网络正形成状态->网络为启动状态;
        2)路由器:设备初始化状态->发现网络成功->加入网络->路由请求->ZDO状态改变(状态先为终端设备再为路由器)
        3)终端:同上过程(没有路由请求情况);
12、在实现组播通信时,需要将通信的端点加入到工作组中。
13、-D是编译语言;
14、zigbee不同设备类型需要选择不同配置的硬件;
15、关于PAN/ID:协调器的PAN/ID需要选定(一般为0x0000),路由和终端要设置为0xFFFF,代表运行时发现一个网络并加入,终端和路由在未分配短地址时默认与PAN/ID一致,分配后为协调器分配的短地址ID;
16、ZigBee的点播、组播、广播实验流程:
    a、定义宏定义以及点播、组播、广播结构体;
    b、给结构体赋值初始化;
    c、实现发送函数(三种设备分别执行不同流程);
    d、实现接受函数(三种设备分别执行不同流程);
17、路由器的加入和实验流程:
    a、在使用路由器之前需要确保终端与协调器能够正常通讯;
    b、路由器转发的基础是终端是通过路由器加入到网络的,路由器在工程上不用修改,自动执行路由功能;
    c、当网络搭建之后就维持不变,无论在过程中如何移动,除非网络连接异常,会触发自动网络修复程序,重新发现,重新入网;
    d、当协调器创建网络后,网络中的路由器完全可以接管整个网络,当协调器断电后重新上电,重新创建网络时会判断当前存在的网络,修改自己的PAN/ID,避免冲突;
18、其它常见应用:
    a、智能家居应用:网关+协调器、分布式节点(路由+终端组成);
    b、人体红外:
        1)红外处理芯片+红外探头;
        2)人体红外的调试需要细调;
        3)可调参数:感应距离、感应时间(灵敏度)、触发方式(重复触发、非重复触发)、感应视角(固定100°);
19、IAR工程配置事项:
    a、预编译选项:(不选用的时候在宏定义前加小x)
        ZTOOL_P1、MT_TASK、MT_SYS_FUNC、MT_ZDO_FUNC
    b、工程的重点:
        1)APP:应用层程序;
        2)ZDO:设备对象层程序,不需修改,但需要全部读懂;
        3)ZMain:程序入口;
        4)Tools:配置文件;
            (1)config.cfg: *定义晶振频率  *程序版本 *默认通道列表  *默认PAN/ID
            (2)其他 .cfg :定义不同的设备对象编译选项;
20、不同的工程配置,决定不同设备的角色;
    a、同一工程里需要实现终端、路由、协调器的功能,然后采用不同的工程配置下载到各个节点(相当于蓝牙的主从一体);
21、IAR操作注意:
    a、IAR的优化等级设置为高,故调试的时候是查看不了局部变量;
    b、生成HEX文件查看相关教程文件;
21、Zigbee协议栈常用缩略语:
    a、ZDO:建立,发起和加入一个zigbee网络;
    b、AF:设备描述数据结构体,数据的收发函数;
    c、APS:为设备对象和应用实体提供一系列的支持服务;
    d、NWK:为上层提供了管理服务和数据服务;
    e、ZMAC:网络层接口;
    f、KVP:键值对;
    g、MSG:报文;
    h、profile 协议栈规范;
22、Zigbee协议栈常用的API:
    a、数据发送:AF_DataRequest( );
    b、 注册端口描述符:afRegister(( endPointDexc_t *)&SerialApp_epDesc );
    c、网络启动函数:NLME_Network_Formation_Request( );
    d、加入/离开工作组:aps_FindGroup( )    aps_RemoveGroup( )   aps_AdGroup( ) ;
22、zigbee测试环境(调试):
    a、zigbee的开发调试手段:1)串口  2)抓包  3)IAR仿真;
    b、项目出现的问题以及解决:
        1)出现过复位脚由于布线不合理,导致受到影响,整个系统一直复位;解决是采用地线保护重要的线路;
        2)IAR,当编译出错:指定文件不存在等错误;   解决:project->clean,然后重新编译;
24、关联表、绑定表(储存在协调器中)、路由表(路径表,储存在父节点?);(实质就是记录的内存数据);任务查找协议栈中的具体化;
25、zigbee网络是指? 解决:由协调器负责创建,维护;
26、当网络状态发生改变?  解决:实质就是网络初始化完成标志;
27、簇的输出输入理解和应用; 解决:实质就是相对应数据流入或者流出的方向,分别对应两个设备的输出或输入;
28、路由器可以充当终端功能?  解决:是可以的,但在拖带多个终端时避免使用,会造成响应不及时;
29、一个简单的BLE应用: https://www.cnblogs.com/tan-v/p/4271579.html
31、zigbee工程文件的配置:
 

三、结构/协议框图

1、zigbee协议栈:
 
 
2、zigbee属于LAN网络:
 
 
 
3、zigbee传输网结构
 
4、zigbee协议服务原语概念:
 
 
5、zigbee组网逻辑:
 
 
 
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值