ZigBee无线传感器网络拓朴结构获取实验
更新时间:2024-04-16 16:09:01 阅读量: 综合文库 文档下载
实验报告
( 201/ 201 学年 第 学期)?
???
实验名称 ZigBee无线传感器网络获取网络拓扑结构实验
实验时间 指导单位 指导教师
2015年11月-2015年12月
计算机学院 李洋
学生姓名 张智超 学院(系) 计算机学院
班级学号 B14040923 专 业
软件工程
实 验 报 告
实验名称 ZigBee无线传感器网络获取网络指导教师 李洋 拓扑结构实验 实验类型 自行设计(科研型) 一、 实验目的和要求 1.实验目的 了解网络地址的分配方法,掌握获取节点地址的方法,掌握无线传感器网络的拓扑结构。 实验学时 16 实验时间 2015.11-2015.12 2.实验内容 (一)设计指标: 1、 编写程序建立无线传感器网络; 2、 编写程序将自身的网络地址以及父节点网络地址发送给协调器; 3、 编写程序实现串口控制命令; 4、 编写程序将各个节点的网络地址以及父节点的网络地址显示在PC机上; (二)实验要求: 1、 设计不同拓扑结构的无线传感器网络; 2、 设计串口回调函数实现串口对网络控制; 3、 设计网络地址获取程序; 4、 设计各个节点的数据处理函数; 5、 设计协调节点与上位机的串口通信程序; 二、实验环境(实验设备) 硬件:PC机,CC2530传感器,IAR开发环境 1
三、实验架构和原理及实验步骤: 1.实验原理 (1)ZigBee按照网络节点功能划分可分为终端节点(ep)、路由器节点(rp)和协调器节点(cp)3种。其中,协调器(coordinator)是整个网络的核心,主要作用是启动网络,其方法是选择一个相对空闲的信道,形成一个PANID。协助建立网络中的安全层及处理应用层的绑定。当整个网络启动和配置完成之后,它的功能退化成一个协调器。路由器(router)主要功能是提供接力作用,能扩展信号的传输范围,因此一般情况下他应该一直处于活动状态,不应休眠。终端节点(end-device)加入已建立的网络即可,终端节点不具有网络维护功能。 (2)ZigBee无线传感器网络组网过程包括两个步骤:主节点举起网络和子节点申请加入网络。采用的是分布式分配机制:协调器在建立网络之后使用0x0000作为自己的网络地址。在路由器和终端加入网络以后,设备会自动给他分配16位的网络地址。 (3)获取拓扑结构的大致思路为: 终端节点和路由节点获取自身网络地址和父节点网络地址写一个数组保存网络地址将地址发送给协调器协调器将信息发送到串口,进行拓扑结构分析 2
(4)可能用到的函数 uint16 NLME_GetShortAddr(void) 该函数返回该节点的网络地址 byte *NLME_GetExtAddr(void) 获取设备自身IEEE地址 uint16 NLME_GetCoordShortAddr( void ) 获取父设备网络地址 void NLME_GetCoordExtAddr( byte * buf) 获取父设备IEEE地址 3.实验步骤: (1) 修改PAN_id。 网络编号,用于区分不同的ZigBee网络。在文件f8wConfig.cfg中找到 -DZDAPP_CONFIG_PAN_ID=0xFFFF,将0xFFFF修改为本组编号0x2008。 (2)获取当前节点代码的网络地址以及其父节点的网络地址的代码 static void Broadcast_SendBackMessage( ) { unsigned char *theMessageData,s[200]; uint16 mod=0; uint16 i=0,n=0; uint16 FaAdd,a; if(Broadcast_NwkState==DEV_END_DEVICE) { unsigned char s1[10],s2[10];//存储当前节点以及父节点的地址 FaAdd=NLME_GetCoordShortAddr();//获取十进制的父节点地址 a=NLME_GetShortAddr();//十进制的当前节点地址 strcpy(s,\while(a)//将当前节点地址转化为字符串 3
{ } s1[i]='\\0'; n=strlen(s1); if(n<=3) { } i=0; if(!FaAdd)//将父节点地址转化为字符串 { } { mod=FaAdd; if(mod<=9) *(s2+i)=mod+'0'; *(s2+i)=mod+55; else i++; strcpy(s2,\i=4; char t; t=s1[i]; s1[i]=s1[n-1-i]; s1[n-1-i]=t; strcat(s1,\for(i=0;i } } FaAdd/=16; s2[i]='\\0'; n=strlen(s2); if(n<=3) { } strcat(s,\strcat(s,s2); char t; t=s2[i]; s2[i]=s2[n-1-i]; s2[n-1-i]=t; strcat(s2,\for(i=0;i { } strcat(s1,\for(i=0;i } } } strcat(s,s2); strcat(s,\theMessageData=s; afAddrType_t my_DstAddr; my_DstAddr.addrMode = (afAddrMode_t)Addr16Bit; my_DstAddr.endPoint = BROADCAST_ENDPOINT; my_DstAddr.addr.shortAddr = 0X0000; if ( AF_DataRequest( &my_DstAddr, &Broadcast_epDesc, { } else { } // Error occurred in request to send. // Successfully requested to be sent. HalLedBlink(HAL_LED_2, 4, 50, 100); BROADCAST_BACK_CLUSTERID, (byte)osal_strlen( theMessageData ), theMessageData, &Broadcast_TransID, AF_DISCV_ROUTE, AF_DEFAULT_RADIUS ) == afStatus_SUCCESS ) (3)无线数据发送函数 static void Broadcast_SendTheMessage( void ) { uint8 *theMessageData = \ afAddrType_t my_DstAddr; my_DstAddr.addrMode = (afAddrMode_t)AddrBroadcast; my_DstAddr.endPoint = BROADCAST_ENDPOINT; my_DstAddr.addr.shortAddr = 0XFFFF; 7 if ( AF_DataRequest( &my_DstAddr, &Broadcast_epDesc, BROADCAST_CLUSTERID, (byte)osal_strlen( theMessageData ), theMessageData, &Broadcast_TransID, AF_DISCV_ROUTE, afStatus_SUCCESS ) { // Successfully requested to be sent. HalLedBlink(HAL_LED_1, 4, 50, 1000/4);//成功发送数据后红灯闪烁 } else { // Error occurred in request to send. } } static void Broadcast_MessageMSGCB( afIncomingMSGPacket_t *pkt )//将数据发送到串口 { switch ( pkt->clusterId ) { case BROADCAST_CLUSTERID: if(osal_memcmp(pkt->cmd.Data, { } break; HalUARTWrite(0, pkt->cmd.Data, pkt->cmd.DataLength); HalUARTWrite(0, \//HalLedBlink(HAL_LED_2, 4, 50, 1000/4); Broadcast_SendBackMessage(); \Send!\AF_DEFAULT_RADIUS ) == osal_strlen(\ case BROADCAST_BACK_CLUSTERID: 8 break; } } (4)烧写代码 本实验共用到了一个协调器,两个路由节点和两个终端节点。 (5)获取拓扑结构 a.将协调器与电脑连接好以后打开开关,打开串口助手。设置波特率为9600,打开串口COM4。待蓝灯长亮且红灯间歇性闪烁时,打开两个终端节点,绿灯长亮且黄灯闪烁表示收发数据正常;再打开两个路由节点,绿灯长亮且黄灯闪烁表示收发数据正常。根据串口助手上显示的协调器返回来的地址数据画出拓扑结构。 b.将打开各节点的顺序改为:先打开协调器,待其稳定发送数据后先打开一个路由节点,绿灯长亮且黄灯闪烁后,再打开一个路由节点,稳定后再打开两个终端节点。根据串口助手显示地址数据得出拓扑结构。 9 四、实验结果 1、第一个拓扑结构 返回的地址数据如下: 拓扑结构图如下: Router:49AF Father:0000 EndDevice:BB40 Father:0000 Router:F5E2 Father:0000 Coordinator: 0000 EndDevice:5F73 Father:0000 10 2、第二个拓扑结构 返回的地址数据如下: 拓扑结构图如下: Coordinator: 0000 Router:9DAA Father:0000 Router:6F70 Father:0000 EndDevice:3403 Father:6F70 EndDevice:9EC7 Father:6F70 11 五、实验小结(包括问题和解决方法、心得体会、意见与建议等) 烧写CC2530节点所用到的代码是C语言,所以编写起来并不是很困难,但是调试确实非常头疼的一件事,语法错误通过编译可以直接找到错误所在的行,但是逻辑错误却只能是烧写好以后从串口助手接收到的数据或者从各节点的亮灯情况进行推测。虽然可以先在VC6.0中写好代码,调试好以后直接复制粘贴到broadcast.c中,但是IAR的c语言库与VC6.0的C语言库略有不同,而恰恰我们用了不少VC6.0里面的库函数,比如itoa()、atoi()、strrev()等。所以直接复制粘贴到broadcast中后让我们比较透头疼。好在经历了一遍一遍的烧写后查错的九九八十一难后终于把代码调试好了,也得到的正确的结果。虽然提交的代码我并不满意,语句冗长不够精简,但实验成功后的喜悦感却是其他任何东西都比不了的。感谢这次实验让我感受到了另一种形式的C语言,另一种形式的编程语言的应用,也让我了解了无线传感器的工作原理,原来它跟我们距离并不遥远,相反的,我们所学的完全可以与无线传感器方面进行对接,为我们以后的学习提供了一种方向。 六、指导教师评语 成 绩 批阅人 日 期 12
正在阅读:
养花记作文600字07-15
信息检索考题汇总03-11
数字电子技术题库及答案05-09
基于核心素养的小学数学课堂教学优化初探04-09
明朝清朝各科殿试金榜(进士)名录07703-08
基于plc的自动送料小车05-27
二年级上册《品德与生活》教学设计07-05
考研英语翻译词义理解引申训练题14例07-21
《电工技术基础》第七章试题03-30
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 拓朴
- 传感器
- 获取
- 无线
- 结构
- 实验
- ZigBee
- 网络
- 虚拟股激励制度
- 沪科版线段垂直平分线的性质说课稿
- 新增船员项目培训场地、设施、设备标准和教学人员要求
- 有一种女孩表面上性格很好,很好接触,对人都很礼貌,可就是让人
- 工程结构 - -单向板肋梁楼盖设计例题
- 电力系统实验报告
- 发挥骨干教师的作用 争创优质学校
- 浅谈公路技术状况检测与调查
- 第二章重大危险源、有害因素的辨识、分析和控制(答案)
- 建筑退让道路红线距离规定
- 八年级物理上册第三章声测试题(1)
- 危险品运输三氯乙烯事故应急预案 - 图文
- 重庆事业单位考试—综合基础知识真题易错题分类汇编(题库)
- 电大法学专业毕业论文
- 郑州大学远程教育电气刚才及其自动化专业电路8章在线测试
- 谨防投融资诈骗陷阱
- 材料科学基础(武汉理工大学,张联盟版)课后习题及答案
- ISO13485:2016不合格品控制程序
- 75分 新形势下党的基层组织建设的主要任务
- 国际金融复习范围及答案半开卷