zigbee学习总结

上传人:ai****ue 文档编号:51375876 上传时间:2022-01-25 格式:DOCX 页数:15 大小:17.04KB
收藏 版权申诉 举报 下载
zigbee学习总结_第1页
第1页 / 共15页
zigbee学习总结_第2页
第2页 / 共15页
zigbee学习总结_第3页
第3页 / 共15页
资源描述:

《zigbee学习总结》由会员分享,可在线阅读,更多相关《zigbee学习总结(15页珍藏版)》请在装配图网上搜索。

1、zigbee学习总结篇一:Zigbee协议栈学习总结 典型的智能家居网络总体结构图 智能家居系统模块整体框图ZigBee是一种标准,该标准定义了短距离、低速率传输速 率无线通讯所需要的一系列通信协议。基于ZigBee的无线网络所使用的工作频段为 868MHz、915MHz和2.4GHz,最大 数据传输速率为250Kbps oZigBee无线网络共分为5层:物理层(PHY),介质访问 控制层(MAC ),网络层(NWK ),应用程序支持子层(APS), 应用层(APL)。总体而言,ZigBee技术有如下特点:高可靠性,低成本, 低功耗,高安全性,低数据速率Zigbee网络中的设备主要分为三种:1

2、,协调器,协调器节点负责发起并维护一个无线网络, 识别网络中的设备加入网络,一个ZigBee网络只允许有一个ZigBee协调器;2,路由器,路由器节点支撑网络链路结构,完成数据包 的转发;。ZigBee网格或树 型网络可以有多个 ZigBee路由 器。ZigBee星型网络不支持 ZigBee路由器。3,终端节点,负责数据采集和可执行的网络动作。从功能上,zigbee节点应由微控制器模块、存储器、无线收发模块、电源模块和其它外设功能模块组成。ZigBee/IEEE802.15.4定义了两种类型的设备:它们是全功能设备( FFD, Full Function Device )和精减功能设备(RFD

3、, Reduced Function Device)。FFD可以当作一个网络协调器或者一个普通的传感 器节点,它可以和任何其他的设备通讯,传递由RFD发来的数据到其他设备,即充当了路由的功能。 而RFD只能是传感 器节点,它只能和 FFD进行通讯,经过 FFD可以将自己测 得数据传送生去。在ZigBee网络中大多是这两种设备,网络中结点数理论上最多可达 65, 536个,可以组成三种类型网 络:星型、网状型和树型。星状网络由一个 PAN协调器和多个终端设备组成,只存 在PAN协调器与终端的通讯,终端设备间的通讯都需通过 PAN协调器的转发。树状网络由一个协调器和一个或多个星状结构连接而 成,设

4、备除了能与自己的父节点或子节点进行点对点直接通 讯外,其他只能通过树状路由完成消息传输。网状网络是树状网络基础上实现的,与树状网络不同的 是,它允许网络中所有具有路由功能的节点直接互连,由路 由器中的路由表实现消息的网状路由。星型,如果用星型网络的话,在房间内的节点是否能够穿 墙,与房间外的协调器进行正常通信。RFD的应用非常简单,容易实现,就好像一个电灯的开关或者一个红外线传感器,由于RFD不需要发送大量的数据,并且一次只能同一个 FFD连接通信,因此,RFD仅需要使用 较小的资源和存储空间,这样,就可以非常容易地组建一个 低成本和低功耗的无线通信网络Zigbee2007协议栈主要应用领域有

5、:家庭自动化,商业 楼宇自动化,自动读表系统。IEEE802.15.4 ( Zigbee ) 工作在 ISM ( industrial , Scientific,medical即工业,科学,医疗)频段,定义了两个 频段,2.4GHz 频段和 896/915MHz 频段。在 IEEE802.15.4 中共规定了 27个信道:在2.4GHz频段,共有 16个信道,信道同学速率为 250Kbps;在915MHz频段,共有10个信道,信道通信速率为40Kbps 在896MHz频段,共有1个信道,信道通信速率为20Kbps 协议栈的工作原理,这个东西将是我们以后接触得最多的东西,从学习到项目开发,你不得

6、不和他打交道。由于我们 的学习平台是基于 TI公司的,所以讲述的当然也是TI的Z-STACK。ZigBee协议栈已经实现了 ZigBee协议,用户可以使用协 议栈提供的API进行应用程序的开发,在开发过程中完全不必关心ZigBee协议的具体实现细节, 要关心的问题是:应用层的数据是使用哪些函数通过什么方式把数据发送由去或者把数据接收过来的。所以最重要的是我们要学会使用ZigBee协议栈。举个例子,用户实现一个简单的无线数据通信时的一般 步骤:1、组网:调用协议栈的组网函数、加入网络函数,实现 网络的建立与节点的加入。2、发送:发送节点调用协议栈的无线数据发送函数,实 现无线数据发送。3、接收:

7、接收节点调用协议栈的无线数据接收函数,实 现无线数据接收。Zigbee设备工作流程:Zigbee协议栈采用任务轮训的方式工作,他会查找发生 的事件然后调用相应的事件执行函数。如果没有事件登记要 发生,那么就进入睡眠模式网络启动流程图篇二:ZigBee学习电子笔记第二讲1. cc2530 通用 I/O 口有 21 个:P0/P1/口个 8 个;P2 口 5 个,其中,P1_。、P_1有20mA的驱动能力,其余只有4mA2. IO 口配置相关的寄存器(3个)PxSEL: P0SEL、P1SEL、P2SEL,每个寄存器是 1byte, 分别用来设定3个口的工作模式。IO的两种工作模式:1 .普通IO

8、 模式:点灯、监测按键输入2.片上外设模式:作为串口或者其他非普通IO 口PxDIR:P0DIR/P1DIR/P2DIR,每个寄存器占一个字节,用来设定IO 口作为输入还是输由PxINP:P0INP/P1INP/P2INP :输入情况下,注意P2INP寄存器后3位的用法(见下图): 输由示例(以P0_0为例):1)设置 P0_0为普通IO 口工作模式,非片上外设: P0SEL=0xFE2)让P0_0作为输由用,非输入监测用:P0DIR=0x013)输由(如 P0_0=0 或 P0_0=1 等)。输入示例(让P1_2作为输入):1)设置 P1_2为普通IO 口工作模式,非片上外设:P1SEL=0

9、xfd2)让P1_2作为输入检测用,非输由用P1DIR=0xfd3)选择上拉、下拉或三态中的一种输入(因为上电的时 候寄存器默认为0,所以IO 口都默认工作在普通IO 口输入、 上下拉模式)4)检测用:If (P1_2= =0 or 1)()Else()总结:由此可见,当芯片上电初始化后,3组IO 口默认工作在普通IO 口下的输入监测、上拉输入模式。自己编程示例:篇三:zigbee学习心得实例分析网易新闻微博邮箱相册阅读有道摄影爱拍优惠券 云笔记 闪电邮 手机邮 印像派 网易识字更多博客手机博客博客搬家博客VIP服务LiveWriter写博 word写博邮件写博短信写博群博客 博客油菜地 博客

10、话题 博客热点 博客圈子 找朋 友发现小组风格网易真人搭配社区iStyle网易真人搭配社区iStyle网易真人搭配社区iStyle玩摄影,玩LOFTER玩胶片,玩LOFTER玩绘画,玩LOFTER创建博客登录加关注显示下一条|关闭温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博 |关闭豪醒的博客不只是一个人的旅程导航首页日志相册博友关于我日志zigbee学习心得2协议栈任务Fork - VFork 一张图说明区别zigbee学习心得一一实例分析(温湿度采集及控制)2012-08-05 16:58:58| 分类:zigbee | 标签:cc2430

11、 zigbe e 温湿度cc2430|字号大中小 订阅就像这样,先添加于温湿度传感器相关的.c和.h文件,还有串口相关的,c和.h也就是写好可以给另外的文件调用的函 数了。我这里面只用到了 voidwenshi_receive; 一个函数,然后将 函数和其中所用到的两个变量 TH,RH ,分别代表温度和湿度 设为全局变量。先打开SimpleSensor.c这个小工程,用官方程序调试的时 候可以看生,也就是不断地发数据到协调器,自然就要找到 与发数据相关的函数:那其实发送之前要先与协调器绑定吧,好比打电话也要 先拨通电话吧。找到与绑定相关的函数:void zb_BindConfirmif )my

12、AppState = APP_BOUND;/Start reporting sensor valuesmyApp_StartReporting;) else(/ Continue to discover a collectorosal_start_timerEx;)直接点,若绑定成功,就会返回一个ZB_SUCCESS的状态,此时方会调用 myApp_StartReporting;函数,否则就继续 搜索节点。对于 myApp_StartReporting;:void myApp_StartReporting (osal_start_timerEx;osal_start_timerEx;HalLe

13、dSet;)直观地从函数看上去也就相当于添加一个周期性的任务;从上一篇文章讲过这个 TaskID的问题,也就添加一个任 务嘛,回到整个工程的主函数,看看怎么回事,这里面就不 详细地列由来了,有需要的读者可以一探究竟。过程是这样的:主函数:ZSEG intmain/*系统初始化*/osal_init_system;osallnitTasks; /* 任务初始化 */SAPI_Init; /*用户自定义任务函数,他的任务ID为taskID*/ ?/* 其中的一个等式 */s api_TaskID = task_id;也就是说可以通过 osal_start_timerEx添加一个周期性的任 务,其周

14、期为XXXPeriod ,比如片内温度采集: myTempReportPeriod ,电压测量 myBatteryCheckPeriod ,那 XXXEVT ,也就相当于一个任务Task里面一个独立的事件Event 了。那么我们也可以这么添加自己的事件:再看看XXXEVT 和XXXPeriod 的定义:/ Application osal event identifiers/ Bit mask of events#define MY_START_EVT 0x0001#define MY_REPORT_TEMP_EVT 0x0002#define MY_REPORT_BATT_EVT 0x000

15、4#define MY_FIND_COLLECTOR_EVT 0x0008自己跟着做:#define MY_REPORT_WENDU_EVT0x0010#define MY_REPORT_SHIDU_EVT0x0020这里说一下为什么要这么做因为等下调用任务处理函数zb_HandleOsalEvent;的时候判断语句是这种形式的:if按位与,所以.顺便说一下,我最初做这个东西看漏了这条语句,传输过程会突然断开连接,这个bug搞了我十多天。周期时间:(对照范例)static uint16 myStartRetryDelay =10000;/ millisecondsstatic uint16 m

16、yTempReportPeriod = 5000;/ milliseconds添加:static uint16 myWENDUReportPeriod =6000;/millisecondsstatic uint16 mySHIDUReportPeriod =7000;/milliseconds这样子(这里的周期是毫秒级的, 比如5000代表的就是5 秒传一次MCU的温度)再回到刚才的 myApp_StartReporting添加:osal_start_timerEx;osal_start_timerEx;这样就添加好了自己读取温湿度信息的任务了,然后具体怎么实现这两个任务:接下来:而Sens

17、or.c里面有一个 Handle函数用于处理时间的:见介绍和实体:1a*fn zb_HandleOsalEvent *brief The zb_HandleOsalEventfunction is called by the operating* system when a task event is set *param event - Bitmask containingthe events that have been set*returnnone*/void zb_HandleOsalEventuint8 pData2;/用于存放数据和分类信息的ifzb_StartRequest;)

18、if这不就是从上面介绍的osal_start_timerEx;函数set的事件么? !(/ Read and report temperature valuepData0 =TEMP_REPORT;类型存放在pData0里面pData1 = myApp_ReadTemperature;读由来的温度值存到 pData1 , myApp_ReadTemperature; 是读取温度值的函数zb_SendDataRequest;发送由去osal_start_timerEx;再设这样一个时间,无限循环)这里再说一下发送的过程,首先从刚才osal_start_timerEx;设一个发送温度值的系统事件,

19、在一个myTempReportPeriod的周期之后,通过zb_HandleOsalEvent的调用,再通过if的条件判断执行温度值发送的事件pData0用于告诉协调器是温度报告,pData1用于告诉协调器节点报告由来的温度值 是多少,再通过 zb_SendDataRequest函数发送由去,而发送 的形式是通过0xFFFE ,绑定的形式发送字长为 2个unsigned char类型,发送完毕后再继续调用osal_start_timerEx添力口一个相同的温度采集系统事件,不断地重复这个过程。if 道理和上面一样/ Read battery value/ If battery level lo

20、w, report battery value pData0 = BATTERY_REPORT;pData1 = myApp_ReadBattery;zb_SendDataRequest;osal_start_timerEx;if/ Find and bind to a collector devicezb_BindDeviceNULL );)先添加自己刚设的事件:if(/ Read and report temperature valuepData0 =WENDU_REPORT;/相当于添加一个可以让协调器识别你发过去的是什么的标签receive;调用wenshi.c里面的全局函数 receive; wenshi.c是我自己写的一个CpData1 = TH;代表温度zb_SendDataRequest;osal_start_timerEx;回调)这样子额,pData0 = WENDU_REPORT;,既然说这个是要让协 调器识别的,那么协调器里面也要有相同的参数。#define TEMP_REPORT 0x01#define BATTERYREPORT 0x02#define WENDU_REPORT 0x04#define SHIDU_REPORT 0x08再分析回原来的事件处理部分:都有调用 zb_SendDataRequest;函数

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!