如何实现ZigBee休眠与唤醒
- 格式:ppt
- 大小:963.00 KB
- 文档页数:18
CC2530有3种睡眠模式,pm2模式比较省功耗而且可以被定时唤醒;pm3模式最省电但是只能被外部中断唤醒1、sensordemo的sensor在入网以后,为什么灯在不断地闪?其实,闪一次就是睡眠了一次:亮的时候睡过来,灭的时候睡下去。
具体代码在halSleep函数里。
要做的,就是读懂这个机制是怎么运作的。
2、为什么闪的频率那么高?zstack的睡眠机制就是在操作系统没事干的时候才睡眠,频率高说明应用程序让操作系统不断做事。
你想让它长时间睡眠,那要做的就是不要不断地给操作系统事情做,找到分配系统任务的地方。
要设置低功耗模式,先确认:1.f8wConfig.cfg文件中DRFD_RCVC_ALWAYS_ON定义为FALSE2.Options->C/C++Compiler->Defined symbols中添加预编译“POWER_SAVING”;重要函数void halSleep( uint16 osal_timeout )1.首先将osal_timeout转成以320US为单位2.获取下一次MAC定时器到期时间3. halPwrMgtMode = (timeout == 0) ? HAL_SLEEP_DEEP :HAL_SLEEP_TIMER;//为PM2,PM3模式。
没有任务要执行就进入PM3深度睡眠,否则进入PM2睡眠,可以定时器唤醒。
4.唤醒OSAL机制的ZigBee低功耗管理(CC2530)涉及文件OSAL_PwrMgr.h OSAL电源管理的API头文件OSAL_PwrMgr.C OSAL电源管理的API C文件hal_sleep.c 底层的电源管理文件电源管理结构体typedef struct{uint16 pwrmgr_task_state; //任务状态uint16 pwrmgr_next_timeout; //下一次超时uint16 accumulated_sleep_time; //睡眠时间uint8 pwrmgr_device; //电源管理设备属性,有PWRMGR_ALWAYS_ON和PWRMGR_BATTERY两种} pwrmgr_attribute_t;#define PWRMGR_ALWAYS_ON 0#define PWRMGR_BATTERY 1选择PWRMGR_ALWAYS_ON的话将不会进入睡眠模式,选择PWRMGR_BATTERY将允许HAL管理CPU进入SLEEP LITE或者SLEEP DEEP状态。
基于ZigBee的休眠唤醒策略随着无线电技术的不断发展,无线通信逐步融入到生活中的各个方面,针对功耗来源,对于无线传感器网络节点SoC,可以设计如下的工作状态:正常模式、浅休眠模式、深度休眠模式。
本文结合ZigBee技术特点,提出一种休眠节能策略,使无线设备在不执行任何操作的情况下进入极低功耗的状态,提高能源的利用率。
1 ZigBee技术ZigBee是基于IEEE 802.15.4的一种短距离、低功耗的无线通信技术。
其网络可容纳大量节点,点对点的最大传输距离为75 m,在传输范围内节点间可以互相通信,支持多种自组织网络拓扑结构。
与传统的无线通信技术相比,ZigBee具有以下特点。
省电:两节五号电池工作时间可达2年;可靠:采用CSMA/CA避免数据冲突;高容量:网络最多可容纳65 000个节点;低成本;低速率:传输速率为250 Kb/s;高安全性:支持AES-128加密。
因此ZigBee多应用于有成本和功耗要求,且传输速率较低,数据量较少的场合。
2 系统规划如图1所示,系统由嵌入式控制器、照明控制节点、开关节点和路由节点组成。
嵌入式控制器集中监视和控制照明系统的状态,用户可以通过嵌入式控制器查看系统中所有照明设备的状态,并能通过触摸屏对其进行控制。
开关节点作为次级控制单元,可发送开关信号到照明节点,控制其开关状态。
然而照明节点是系统中的执行设备,接收控制命令和执行相应的动作。
每个开关节点可与多个照明节点绑定。
2.1 网络拓扑ZigBee网络中,一般存在三种功能设备:网络协调器(具有建立网络和数据转发功能)、路由器(具有数据转发功能)和终端设备(不具有数据转发功能)。
本系统采用图1所示的网状拓扑结构。
它是一种可靠性高,网络容量大的网络结构。
网络中放置若干个特殊的路由器,专门负责进行数据转发。
一般情况下,网络中仅有协调器和路由器处于活跃状态,终端设备进入休眠模式。
2.2 节点配置根据系统各节点的功能要求,嵌入式控制器能够对网络进行集中控制,被配置成协调器,作为网络的建立者;路由节点作为特殊的节点,仅作为数据汇聚点进行数据转发,不执行其他操作;而开关节点仅在手动开关操作后被唤醒,在网络中活跃的时间较短,不需进行数据转发,被配置为终端设备。
zigbee实现方案Zigbee 实现方案Zigbee,是一种采用无线通信技术的低功耗、近距离无线通信标准,它基于IEEE 802.15.4协议,被广泛应用于智能家居、工业自动化以及远程监控等领域。
在本文中,将介绍Zigbee的原理和实现方案。
一、Zigbee的基本原理Zigbee采用了类似于Mesh网络拓扑结构的方式进行通信,它由一个协调器(Coordinator)和多个终端设备(End Device)组成,形成了一个网络网状结构。
协调器作为网络的核心,负责管理和分配网络资源,而终端设备则负责传输数据。
此外,Zigbee还采用了CSMA/CA (Carrier Sense Multiple Access/Collision Avoidance)技术,以确保网络传输的可靠性和稳定性。
二、Zigbee的实现方案1. Zigbee网络的组网方式a. 点对点(P2P)方式:适用于只有两个设备需要进行通信的场景,通信简单、稳定,但无法实现多设备之间的联网和互通。
b. 网络网状结构:适用于多个设备之间需要相互通信的场景,可以动态建立和拓展网络,具有较强的稳定性和可靠性。
2. Zigbee设备类型a. 协调器(Coordinator):负责管理整个网络,通常由主控设备承担。
b. 路由器(Router):提供数据转发功能,可实现多设备之间的通信。
c. 终端设备(End Device):主要用于数据采集、传感和环境监控等功能。
3. Zigbee安全机制a. 身份验证:协调器对每个加入网络的设备进行身份验证,防止未经授权的设备进入网络。
b. 数据加密:利用AES(Advanced Encryption Standard)算法对通信数据进行加密,确保数据传输的安全性。
c. 密钥管理:定期更换密钥、更新密钥,防止密钥泄露或被破解。
4. Zigbee应用场景a. 智能家居:通过建立Zigbee网络,实现家居设备之间的联网和互通,提高生活便利性和居住舒适度。
专利名称:上位机实现节点休眠唤醒自动控制方法及系统专利类型:发明专利
发明人:赵一鸣,周向阳,伍小平,李鑫奎,范志宏
申请号:CN201610005217.0
申请日:20160105
公开号:CN105491651A
公开日:
20160413
专利内容由知识产权出版社提供
摘要:本发明提供了一种上位机实现节点休眠唤醒自动控制方法及系统,本发明针对目前建筑施工无线监测中各节点功耗过高的问题,由对数据完整性和正确性的判断,使各节点在完成各自功能的前提下进入休眠状态,在数据有误的情况下保持在唤醒状态,实现上位机控制各节点自动进行休眠和唤醒,在确保数据完整性和正确性的同时,大大降低各节点的工作功耗,尤其适用于长时间的建筑施工无线低频率监测工作。
申请人:上海建工集团股份有限公司,上海工业自动化仪表研究院
地址:200120 上海市浦东新区福山路33号
国籍:CN
更多信息请下载全文后查看。
[ZigBee]10、ZigBee之睡眠定时器0、概述 睡眠定时器⽤于设置系统进⼊和退出低功耗睡眠模式之间的周期。
睡眠定时器还⽤于当进⼊低功耗睡眠模式时,维持定时器2 的定时。
睡眠定时器的主要功能如下:● 24 位的定时器正计数器,运⾏在32kHz 的时钟频率● 24 位的⽐较器,具有中断和DMA 触发功能● 24 位捕获1、概述 睡眠定时器是⼀个24 位的定时器,运⾏在⼀个32kHz 的时钟频率(可以是RCOSC 或XOSC)上。
定时器在复位之后⽴即启动,如果没有中断就继续运⾏。
定时器的当前值可以从SFR 寄存器ST2:ST1:ST0 中读取。
2、定时器⽐较 ⼀次定时器⽐较发⽣在定时器的值等于24位⽐较器的值,寄存器ST2:ST1:ST0可以⽤来设置⽐较器的值。
当STLOAD.LDRDY=1写⼊ST0发起加载新的⽐较值。
当STLOAD.LDRDY=0软件不能开始⼀个新的加载,直到它为1。
Reading ST0 captures(捕获) the current value of the 24-bit counter. Thus, the ST0 register must be read before ST1 and ST2 to capture a correct Sleep Timer count value. When a timer compare occurs the interrupt flag STIF is asserted. The current timer value is updated each time a positive clock edge on the 32 kHz clock is detected by the system clock. Thus, when returning from PM1/2/3 (where the system clock is shut down) the Sleep Timer value in ST2:ST1:ST0 is not up-to-date if a positive edgeon the 32 kHz clock has not been detected yet. To ensure an updated value is read, wait for a positive transition on the 32 kHz clock by polling(轮询) the SLEEPSTA.CLK32K bit, before reading the Sleep Timer value. The interrupt enable bit for the ST interrupt is IEN0.STIE, and the interrupt flag is IRCON.STIF. 当运⾏在除了PM3之外的所有供电模式,睡眠定时器才会运⾏。
zigbee协调器和终端对话实验遇到的问题与解决办法1、组网后,怎样获取新加入的Endpoint的地址?答:现在有一个最常见的场景,我有一个100个节点的网络同时发送数据给协调器,我很想知道那个地址对应那个节点。
其实楼上的就想知道那个,以前老板也经常问我这个问题。
即使知道了某个节点的IEEE地址还是不知道是某个节点,除非你事先知道那个节点的地址。
你不可能一个一个节点上电在轮询获得地址吧?如果那样的话,我还不如直接加下NV_RESTORE之后断电一个一个标。
终端在给协调器发送的数据包中就包含自己的地址信息就可以了,这样协调器即不用浪费自己的RAM空间来保存所有节点的地址信息,也不用花时间来查询了。
因为MAC地址是唯一的,所以可以用MAC地址。
还记得毛子在太空用铅笔的典故么?这里有个笨办法,在批量烧写CC2530的时候,就把它的IEEE地址读出来,然后贴在标签上。
A:请问zigbee怎么通过mac地址获得网络中挂在路由下的节点的短地址,用APSME_LookupNwkAddr得到短地址时,只能查找协调器儿子节点,对孙子节点不可访问,afStatus_t ZDP_NwkAddrReq(byte*IEEEAddress,byte ReqType,byte StartIndex,byte SecurityEnable)根据已知网络地址查询远程设备物理地址,作为一个广播信息发送给网络中的所有设备:这个函数也是知道IEEE地址,对短地址进行寻找,这个不存在上面所说的限制,但是这个短地址放在那里呢,我怎么获得这个短地址呢?B:请使用函数:afStatus_t ZDP_NwkAddrReq(uint8*IEEEAddress,byte ReqType,byte StartIndex,byte SecurityEnable)2、问题:请问调用这个函数获得的地址放在那里呢?答:会有callback函数上来的,对应的处理事件是#define NWK_addr_rsp(NWK_addr_req|ZDO_RESPONSE_BIT)void ZDApp_ProcessMsgCBs(zdoIncomingMsg_t*inMsg)的switch case下面做添加就可以,然后去处理获得的地址3、问题:ZigBee网络中协调器分配网络地址在哪?如何查看设备的网络地址?答:协调器的短地址是0x0000,当设备加入成功后,会产生一个ZDO_STATE_CHANGE_EVT事件,这个事件就是设备加入网络成功后,并在网络中的身份确定后产生的一个事件,我们可以在这里处理,一些初始化,比如可以发送终端的短地址,IEEE地址等,这里协调器接收到以后,可以提取出终端的短地址,其实在终端给协调器发送的每个数据包中,都含有其自身的短地址,如结构体当中的afAddrType_t srcAddr;协调器在接收到短地址后,就可以知道自己下面管辖的终端节点,或者路由节点有哪些了?协调器提取到的短地址可以存放到一个非易失性的存储器中。