ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:29.94KB ,
资源ID:27883517      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/27883517.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(zigbee技术之点对点通信.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

zigbee技术之点对点通信.docx

1、zigbee技术之点对点通信zigbee技术之点对点通信2013国培企业顶岗培训广州风标电子 zigbee研究 任务1 Zigbee无线组网和点对点通信 一、任务:数据传输基本功能:两个Zigbee节点进行点对点通信,Zigbee节点1发送“Hello”字符串,发送成功,节点上发光二极管闪烁;Zigbee 节点2接收数据后,对接收数据进行判断,如果接收正确,则发光二级闪烁。 二、基础知识 Zigbee是物联网技术中应用最广泛的技术,相比WiFi、BlueTooth、GPS等技术。Zigbee具有传输距离短、低速率、低成本、低功耗等特点。 1.短距离无线网络 短距离无线网络主要分为两类: , 无

2、线局域网(WLAN,Wireless Local Area Network) , 无线个域网(WPAN,Wireless Personal Area Network) 无线局域网是有线局域网的扩展。一个无线局域网设备可以很容易地接入有线局域网。 无线个域网是为了在POS(Personal Operating Space)范围内提供一种高效节能的一种通信方法,其中POS是指以无线设备为中心的半径10米内的球形区域。 无线个域网按照传输速率不同,分为三种: HR-WPAN、MR-WPAN、LR-WPAN 分别对应三种协议为: WPAN 通信协议 WPAN 通信协议 WPAN 通信协议 HR-WPA

3、N 802.15.3 MR-WPAN BlueTooth LR-WPAN 802.15.4 2.Zigbee与IEEE802.15.4 在设计网络的软件架构时,一般采用的思想是,不同层负责不同的功能,数据只能在相邻层之间流动。例如,以太网分层模型是OSI七层参考模型: 应用层 处理网络应用程序 表示层 数据表示 会话层 主机间通信 传输层 端到端连接 网络层 网络寻址和路由 数据链路层 介质访问控制 物理层 比特数据传输 Zigbee协议也是在OSI参考模型基础上,结合无线网络特点,使用分层思想实现。如图: 1 2013国培企业顶岗培训广州风标电子 zigbee研究 Zigbee协议分层模型

4、Zigbee事由Zigbee联盟指定的面向低速无线个人区域网络(LR-WPAN)的双向无线通信技术指标,其物理层和数据链路层使用IEEE802.15.4标准,网络层和应用层由Zigbee联盟定义。 采用分层思想有很多优点。例如,当网络协议的一部分发生改变时,可以很容易第对于此相关的几个层进行修改,其它层无需改变。 3.Zigbee特点 三、控制程序 1.协调器程序 /* Coordinator.c是协调器端的应用程序,如果接收到终端节点的应用程序向本 设备发送“Hello”消息,则让LED2闪烁。 */ /* * INCLUDES 包含文件 */ #include OSAL.h #includ

5、e AF.h #include ZDApp.h #include ZDObject.h #include ZDProfile.h #include Common.h #include DebugTrace.h #if !defined( WIN32 ) #include OnBoard.h #endif /* HAL */ 2 2013国培企业顶岗培训广州风标电子 zigbee研究 #include hal_led.h /* * GLOBAL VARIABLES 全局变量 */ / 应用程序使用到的簇ID,相当于子功能列表 const cId_t MyFirstApp_ClusterListM

6、yFirstApp_MAX_CLUSTERS = MyFirstApp_CLUSTERID ; / 应用程序简单描述符 const SimpleDescriptionFormat_t MyFirstApp_SimpleDesc = MyFirstApp_ENDPOINT, / int Endpoint;端点 MyFirstApp_PROFID, / uint16 AppProfId2; MyFirstApp_DEVICEID, / uint16 AppDeviceId2;设备ID MyFirstApp_DEVICE_VERSION, / int AppDevVer:4;设备版本号 MyFirs

7、tApp_FLAGS, / int AppFlags:4;设备标记 MyFirstApp_MAX_CLUSTERS, / byte AppNumInClusters;输入簇个数 (cId_t *)MyFirstApp_ClusterList, / byte *pAppInClusterList;输入簇列表 0, / byte AppNumInClusters;输出簇个数 (cId_t *)NULL / byte *pAppInClusterList;输出簇列表 ; / 在这里定义端点/接口描述符变量,在MyFirstApp_Init()函数里面进行初始化。 endPointDesc_t MyF

8、irstApp_epDesc; /* * LOCAL VARIABLES 本地变量 */ byte MyFirstApp_TaskID; / 任务ID用于处理任务和事件,在系统调用MyFirstApp_Init()时进行初始化 /* * LOCAL FUNCTIONS 本地函数声明 */ static void MyFirstApp_MessageMSGCB( afIncomingMSGPacket_t *pckt ); /* * 函数 MyFirstApp_Init * 说明 初始化任务,在系统初始化的过程中调用,所有的与应用有关的 * 初始化都在这里进行(如硬件初始化,设置,数据表的初始化

9、, * 上电通知等. ). 3 2013国培企业顶岗培训广州风标电子 zigbee研究 * 参数 task_id - OSAL分配的ID,在应用程序中,应该使用这个ID来发送 * 消息和设置定时器. * 返回 无 */ void MyFirstApp_Init( uint8 task_id ) MyFirstApp_TaskID = task_id; / 设备的硬件初始化可以在这里进行,也可以在main()(Zmain.c)里面进行. / 如果该硬件是与应用有关的,最后在这里进行初始化. / 如果与设备的其它方面相关,可以在main()里面进行. / 设置端点描述符. MyFirstApp_e

10、pDesc.endPoint = MyFirstApp_ENDPOINT; MyFirstApp_epDesc.task_id = &MyFirstApp_TaskID; MyFirstApp_epDesc.simpleDesc = (SimpleDescriptionFormat_t *)&MyFirstApp_SimpleDesc; MyFirstApp_epDesc.latencyReq = noLatencyReqs; / 通过AF注册端点描述符 afRegister( &MyFirstApp_epDesc ); /* * 函数 MyFirstApp_ProcessEvent * 说明

11、 任务事件处理函数,用于处理传递给本任务的所有事件,包括定时器, * 消息和其它用户定义的事件。 * 参数 task_id - OSAL分配的任务ID. * events - 要处理的事件,每一位都代表一个事件,可以同时包含多个事件 * 返回 无 */ uint16 MyFirstApp_ProcessEvent( uint8 task_id, uint16 events ) afIncomingMSGPacket_t *MSGpkt; if ( events & SYS_EVENT_MSG ) MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receiv

12、e( MyFirstApp_TaskID ); while ( MSGpkt ) switch ( MSGpkt-hdr.event ) case AF_INCOMING_MSG_CMD: / 收到数据包消息 MyFirstApp_MessageMSGCB( MSGpkt ); break; default: 4 2013国培企业顶岗培训广州风标电子 zigbee研究 break; / 释放内存 osal_msg_deallocate( (uint8 *)MSGpkt ); / Next MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( M

13、yFirstApp_TaskID ); / 返回未处理的事件 return (events SYS_EVENT_MSG); / 丢弃未定义事件 return 0; /* * 函数 MyFirstApp_MessageMSGCB * 说明 消息处理回调函数,用于处理所的接收到的数据,有可能是从另一 * 个设备发送过来的指令,可以根据簇ID来判断需要执行的子功能。 * 参数 pkt - 消息数据包 * 返回 无 */ static void MyFirstApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ) unsigned char buffer5; sw

14、itch ( pkt-clusterId ) case MyFirstApp_CLUSTERID: osal_memcpy(buffer, pkt-cmd.Data, 5); if(buffer0=H & buffer1=e & buffer2=l & buffer3=l & buffer4=o) / 接收到正确消息,让LED1闪烁一次 HalLedBlink ( HAL_LED_1, 1, 50, 500 ); else / 接收到错误消息,让LED2不停闪烁 HalLedBlink ( HAL_LED_2, 0, 50, 500 ); break; 5 2013国培企业顶岗培训广州风标电子

15、 zigbee研究 /* */ 2.终端节点程序 /* EndDevice.c是终端设备端的应用程序,主要功能是向协调器发送“Hello”消息。 */ /* * INCLUDES 包含文件 */ #include OSAL.h #include AF.h #include ZDApp.h #include ZDObject.h #include ZDProfile.h #include Common.h #include DebugTrace.h #if !defined( WIN32 ) #include OnBoard.h #endif /* HAL */ #include hal_led

16、.h /* * GLOBAL VARIABLES 全局变量 */ / 应用程序使用到的簇ID,相当于子功能列表 const cId_t MyFirstApp_ClusterListMyFirstApp_MAX_CLUSTERS = MyFirstApp_CLUSTERID ; / 应用程序简单描述符 const SimpleDescriptionFormat_t MyFirstApp_SimpleDesc = MyFirstApp_ENDPOINT, / int Endpoint;端点 MyFirstApp_PROFID, / uint16 AppProfId2; MyFirstApp_DEV

17、ICEID, / uint16 AppDeviceId2;设备ID 6 2013国培企业顶岗培训广州风标电子 zigbee研究 MyFirstApp_DEVICE_VERSION, / int AppDevVer:4;设备版本号 MyFirstApp_FLAGS, / int AppFlags:4;设备标记 0, / byte AppNumInClusters;输入簇个数 (cId_t *)NULL, / byte *pAppInClusterList;输入簇列表 MyFirstApp_MAX_CLUSTERS, / byte AppNumInClusters;输出簇个数 (cId_t *)M

18、yFirstApp_ClusterList / byte *pAppInClusterList;输出簇列表 ; / 在这里定义端点/接口描述符变量,在MyFirstApp_Init()函数里面进行初始化。 endPointDesc_t MyFirstApp_epDesc; /* * LOCAL VARIABLES 本地变量 */ byte MyFirstApp_TaskID; / 任务ID用于处理任务和事件,在系统调用MyFirstApp_Init()时进行初始化 devStates_t MyFirstApp_NwkState; / 保存设备当前的网络状态 byte MyFirstApp_Tr

19、ansID; / 唯一的消息ID(计数器) afAddrType_t MyFirstApp_DstAddr; / 保存目标地址 /* * LOCAL FUNCTIONS 本地函数声明 */ static void MyFirstApp_SendTheMessage( void ); /* * 函数 MyFirstApp_Init * 说明 初始化任务,在系统初始化的过程中调用,所有的与应用有关的 * 初始化都在这里进行(如硬件初始化,设置,数据表的初始化, * 上电通知等. ). * 参数 task_id - OSAL分配的ID,在应用程序中,应该使用这个ID来发送 * 消息和设置定时器. *

20、 返回 无 */ void MyFirstApp_Init( uint8 task_id ) MyFirstApp_TaskID = task_id; MyFirstApp_NwkState = DEV_INIT; MyFirstApp_TransID = 0; 7 2013国培企业顶岗培训广州风标电子 zigbee研究 / 设备的硬件初始化可以在这里进行,也可以在main()(Zmain.c)里面进行. / 如果该硬件是与应用有关的,最后在这里进行初始化. / 如果与设备的其它方面相关,可以在main()里面进行. MyFirstApp_DstAddr.addrMode = (afAddrM

21、ode_t)Addr16Bit; MyFirstApp_DstAddr.endPoint = MyFirstApp_ENDPOINT; MyFirstApp_DstAddr.addr.shortAddr = 0; / 设置端点描述符. MyFirstApp_epDesc.endPoint = MyFirstApp_ENDPOINT; MyFirstApp_epDesc.task_id = &MyFirstApp_TaskID; MyFirstApp_epDesc.simpleDesc = (SimpleDescriptionFormat_t *)&MyFirstApp_SimpleDesc;

22、MyFirstApp_epDesc.latencyReq = noLatencyReqs; / 通过AF注册端点描述符 afRegister( &MyFirstApp_epDesc ); /* * 函数 MyFirstApp_ProcessEvent * 说明 任务事件处理函数,用于处理传递给本任务的所有事件,包括定时器, * 消息和其它用户定义的事件。 * 参数 task_id - OSAL分配的任务ID. * events - 要处理的事件,每一位都代表一个事件,可以同时包含多个事件 * 返回 无 */ uint16 MyFirstApp_ProcessEvent( uint8 task_

23、id, uint16 events ) afIncomingMSGPacket_t *MSGpkt; if ( events & SYS_EVENT_MSG ) MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( MyFirstApp_TaskID ); while ( MSGpkt ) switch ( MSGpkt-hdr.event ) case ZDO_STATE_CHANGE: / ZDO状态改变消息 MyFirstApp_NwkState = (devStates_t)(MSGpkt-hdr.status); if ( MyFir

24、stApp_NwkState = DEV_END_DEVICE ) / 开始定时发送数据 osal_start_timerEx( MyFirstApp_TaskID, MyFirstApp_SEND_MSG_EVT, MyFirstApp_SEND_MSG_TIMEOUT ); break; 8 2013国培企业顶岗培训广州风标电子 zigbee研究 default: break; / 释放内存 osal_msg_deallocate( (uint8 *)MSGpkt ); / Next MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( M

25、yFirstApp_TaskID ); / 返回未处理的事件 return (events SYS_EVENT_MSG); / 发送数据定时器事件 / (第一次的定时器事件是在上面的ZDO_STATE_CHANGE事件中设置的). if ( events & MyFirstApp_SEND_MSG_EVT ) / 发送消息给另一个设备 MyFirstApp_SendTheMessage(); / 设置定时器,用于再次发送 osal_start_timerEx( MyFirstApp_TaskID, MyFirstApp_SEND_MSG_EVT, MyFirstApp_SEND_MSG_TIMEOUT ); / 返回未处理的事件 return (events MyFirstApp_SEND_MSG_EVT); / 丢弃未定义事件 return 0; /* * 函数 MyFirstApp_SendTheMessage * 说明 发送消息. * 参数 无 * 返回 无 */ static void MyFirstApp_SendTheMessage( void ) char theMessageData = Hello; 9 2013国培企业顶岗培训广州风标电子 zigbee研究 if ( AF_DataRequest( &MyFirstApp_DstAddr, /目标地址

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1