先说点zigbee的基础知识
Zigbee:全新无线网络数据通信技术
Zigbee技术是随着工业自动化对于无线通信和数据传输的需求而产生的,Zigbee网络省电、可靠、成本低、容量大、安全,可广泛应用于各种自动控制领域。
Zigbee的由来:
在蓝牙技术的使用过程中,人们发现蓝牙技术尽管有许多优点,但仍存在许多缺陷。对工业,家庭自动化控制和遥测遥控领域而言,蓝牙技术显得太复杂,功耗大,距离近,组网规模太小等,......而工业自动化对无线通信的需求越来越强烈。正因此,经过人们长期努力,Zigbee协议在2003年中通过后,于2004正式问世了。
Zigbee是什么:
Zigbee是一个由可多到65000个无线数传模块组成的一个无线数传网络平台,十分类似现有的移动通信的CDMA网或GSM网,每一个Zigbee网络数传模块类似移动网络的一个,在
整个网络范围内,它们之间可以进行相互通信;每个网络节点间的距离可以从标准的75米,到扩展后的几百米,甚至几公里;另外整个Zigbee网络还可以与现有的其它的各种网络连接。例如,你可以通过互联网在北京监控云南某地的一个Zigbee控制网络。
不同的是,Zigbee网络主要是为自动化控制数据传输而建立,而移动通信网主要是为语音通信而建立;每个移动价值一般都在百万元人民币以上,而每个Zigbee""却不到1000元人民币;每个Zigbee 网络节点不仅本身可以与监控对对象,例如传感器连接直接进行数据采集和监控,它还可以自动中转别的网络节点传过来的数据资料; 除此之外,每一个Zigbee网络节点(FFD)还可在自己信号覆盖的范围内,和多个不承担网络信息中转任务的孤立的子节点(RFD)无线连接。
每个Zigbee网络节点(FFD和RFD)可以可支持多到31个的传感器和受控设备,每一个传感器和受控设备终可以有8种不同的接口方式。可以采集和传输数字量和模拟量。
Zigbee技术的应用领域:
Zigbee技术的目标就是针对工业,家庭自动化,遥测遥控,汽车自动化、农业自动化和医
疗护理等,例如灯光自动化控制,传感器的无线数据采集和监控,油田,电力,矿山和物流管理等应用领域。另外它还可以对局部区域内移动目标例如城市中的车辆进行定位。(成都西谷曙光数字技术公司的专利技术)。
通常,符合如下条件之一的应用,就可以考虑采用Zigbee技术做无线传输:
1. 需要数据采集或监控的网点多;
2. 要求传输的数据量不大,而要求设备成本低;
3. 要求数据传输可性高,安全性高;
4. 设备体积很小,不便放置较大的充电电池或者电源模块;
5. 电池供电;
6. 地形复杂,监测点多,需要较大的网络覆盖;
7. 现有移动网络的覆盖盲区;
8. 使用现存移动网络进行低数据量传输的遥测遥控系统。
9. 使用GPS效果差,或成本太高的局部区域移动目标的定位应用。
Zigbee 技术的特点:
省电:两节五号电池支持长达6白蚁怎么消灭才干净个月到2年左右的使用时间可靠:采用了碰撞避免机制,同时为需要固定带宽的通信业务预留了专用时隙,避免了发送数据时的竞争和冲突;节点模块之间具有自动动态组网的功能,信息在整个Zigbee网络中通过自动路由的方式进行传输,从而保证了信息传输的可靠性、时延短:针对时延敏感的应用做了优化,通信时延和从休眠状态激活的时延都非常短。
网络容量大:可支持达65000个节点。
安全:ZigBee提供了数据完整性检查和鉴权功能,加密算法采用通用的AES-128。
高保密性:描写水的词语64位出厂编号和支持AES-128加密
Zigbeedota2 steam的发展前景:
Zigbee技术和RFID 技术在2004年就被列为当今世界发展最快,市场前景最广阔的十大最新技术中的两个。关于这方面的报道,你只需在百度,或GOOGLE搜索栏中键入"Zigbee",你就会看到大量的有关报道。总之,今后若干年,都将是Zigbee技术飞速发展的时期。
step by step create a new z-stackl project
根据ti提供的资料,我们可以复制一个工程作为模板,然后,改名这样就生成了一个新的工程。
如果要用到串口收发数据的话,就选用SerialApp做模板,如果不需要使用到串口的话,就是用GenericApp做模板。
在这里,我选择复制GenericApp做模板。
第一步:复制GenericApp文件夹修改文件名为HawsnAppCoor。
第二步:再打开source文件夹,修改三个应用源文件的文件名。分别改成HawsnAppCoor.
c HawsnAppCoor.h OSAL_HawsnAppCoor.c分别是应用C文件,头文件,和操作系统接口文件。然后用记事本打开,把GenericApp全部替换成HawsnAppCoor。
第三步:打开2430DB文件夹,修改工程名修改三个后缀为ewd,ewp,eww的文件名。然后用记事本打开,把GenericApp全部替换成HawsnAppCoor。
然后,再双击HawsnAppCoor.eww,重新编译一下就成功建立了一个新的工程模板
【转】TI Z-stack协议栈开发环境和工作流程
By KuangJunBin
系统软件设计是在硬件设计的基础上进行的,良好的软件设计是实现系统功能的重要环节,也是提高系统性能的关键所在。节点设计基于通用性及便于开发的考虑,移植了TI公司的Z-Stack协议栈,其主要特点就是其兼容性,完全支持IEEE 802. 15. 4/ZigBee的CC2430片上系统解决方案。Z-Stack还支持丰富的新特性,如无线下载,可通过ZigBee网状网络(Mesh Network)下载节点更新。
图 ZigBee节点开发环境
TI的Z-Stack装载在一个基于IAR开发环境的工程里。强大的IAR Embedded Workbench除了提供编译下载功能外,还可以结合编程器进行单步跟踪调试和监测片上寄存器、Flash数据等。Z-Stack根据IEEE 802. 15.4和ZigBee标准分为以下几层:API(Application Programming Interface),HAL(Hardware Abstract Layer),MAC(Media Access Co
ntrol), NWK(Zigbee Network Layer),OSAL(Operating System Abstract System),Security,Service,ZDO抽屉滑轨(Zigbee Device Objects)。使用IAR打开工程文件SampleApp.eww后,即可查看到整个协议栈从HAL层到APP层的文件夹分布。该协议栈可以实现复杂的网络链接,在协调器节点中实现对路由表和绑定表的非易失性存储,因此网络具有一定的记忆功能。
Z-Stack采用操作系统的思想来构建,采用事件轮循机制,当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。如果同时有几个事件发生,判断优先级,逐次处理事件。这种软件构架可以极大地降级系统的功耗。
整个Z-stack的主要工作流程,大致分为系统启动,驱动初始化,OSAL初始化和启动,进入任务轮循几个阶段,下面将逐一详细分析。
图Z-Stack系统运行流程图
Figure . The Flow Chart of Z-Stack
⏹ 系统初始化
系统上电后,通过执行ZMain文件夹中ZMain.c的ZSEG int main( )函数实现硬件的初始化,其中包括关总中断osal_int_disable( INTS_ALL )、初始化板上硬件设置HAL_BOARD_INIT( )、初始化I/O口InitBoard( OB_COLD )、初始化HAL层驱动HalDriverInit( )、初始化非易失性存储器sal_nv_init( NULL )可爱的qq名字、初始化MAC层ZMacInit( )、分配64位地址zmain_ext_addr( )、初始化操作系统osal_init_system( )等。
硬件初始化需要根据HAL文件夹中的hal_board_cfg.h文件配置寄存器8051的寄存器。TI官方发布Z-stack的配置针对的是TI官方的开发板CC2430DB、CC2430EMK等,如采用其他开发板,则需根据原理图设计改变hal_board_cfg.h文件配置,例如本方案制作的实验板与TI官方的I/O口配置略有不同,其中状态指示LED2的需要重新设置LED2控制引脚口、通用I/O口方向和控制函数定义等。
当顺利完成上述初始化时,执行osal_start_system( )函数开始运行OSAL系统。该任务调度函数按照优先级检测各个任务是否就绪。如果存在就绪的任务则调用tasksArr[ ]中相对应的任务处理函数去处理该事件,直到执行完所有就绪的任务。如果任务列表中没有就绪的任务,则可以使处理器进入睡眠状态实现低功耗。程序流程如图3-13所示。osal_start_system( )一旦执行,则不再返回Main( )函数。
OSAL任务调度流程图
江歌被杀案Figure . The Flow Chart of OSAL Scheduler
⏹ OSAL任务
OSAL是协议栈的核心,Z-stack的任何一个子系统都作为OSAL的一个任务,因此在开发应用层的时候,必须通过创建OSAL任务来运行应用程序。通过osalInitTasks( )函数创建OSAL任务,其中TaskID为每个任务的唯一标识号。任何OSAL任务必须分为两步:一是进行任务初始化;二是处理任务事件。任务初始化主要步骤如下:
(1) 初始化应用服务变量。
const pTaskEventHandlerFn tasksArr[ ]数组定义系统提供的应用服务和用户服务变量,如MAC层服务macEventLoop、用户服务SampleApp_ProcessEvent等
(2) 分配任务ID和分配堆栈内存
void osalInitTasks( void )主要功能是通过调用osal_mem_alloc( )函数给各个任务分配内存空间,和给各个已定义任务指定唯一的标识号。
(3) 在AF层注册应用对象
通过填入endPointDesc_t数据格式的EndPoint变量,调用 afRegister( )在AF层注册EndPoint应用对象。
通过在AF层注册应用对象的信息,告知系统afAddrType_t地址类型数据包的路由端点,例如用于发送周期信息的SampleApp_Periodic_DstAddr和发送LED闪烁指令的SampleApp_Flash_DstAddr。
(4)注册相应的OSAL或则HAL系统服务
在协议栈中,Z-stack提供键盘响应和串动响应两种系统服务,但是任何Z-Stask任务均不自行注册系统服务,两者均需要由用户应用程序注册。值得注意的是,有且仅有一个OSAL Task可以注册服务。例如注册键盘活动响应可调用RegisterForKeys( )函数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论