中南大学刘伟荣物联网-《无线传感器网络》实验报告_第1页
中南大学刘伟荣物联网-《无线传感器网络》实验报告_第2页
中南大学刘伟荣物联网-《无线传感器网络》实验报告_第3页
中南大学刘伟荣物联网-《无线传感器网络》实验报告_第4页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中南大学信息科学与工程学院物联网无线传感器网络实验报告班级:物联网学号:姓名:指导老师:刘伟荣.实验时间:2014 年 4月 11日目录实验一 基础实验 (LED 实验 ) .- 1 -1.1实验目的 .- 1 -1.2实验设备及工具 .- 2 -1.3实验原理 .- 2 -1.4实验步骤及结果 .- 5 -实验二 射频实验 .- 6 -2.1实验目的 .- 6 -2.2实验内容 .- 6 -2.3实验设备及工具 .- 6 -2.4实验原理 .- 7 -2.5实验步骤 .- 8 -2.6实验数据分析及结论 .- 9 -实验三 Zstack 组网实验 .- 10-3.1实验目的 .- 10-3.

2、2实验内容 .- 10-3.3预备知识 .- 11-3.4实验设备及工具 .- 11-3.5实验原理 .- 11-3.6实验步骤 .- 16-3.7实验数据分析及结论 .- 17-实验四 综合实验 (传感器网络 ).- 17-4.1智能网关程序设计 .- 18-4.2Android用户控制程序设计 .- 19-4.3Zigbee节点控制程序设计 .- 29-4.4平台控制操作 .- 33-实验一 基础实验 (LED 实验 )1.1 实验目的'.1. 通过 I/O 控制小灯闪烁的过程。2. 在 ZX2530A 型 CC2530 节点板上运行自己的程序。1.2 实验设备及工具1. 硬件:

3、ZX2530A 型底板及 CC2530 节点板一块, USB 接口仿真器,PC 机2. 软件: PC 机操作系统 WinXP,IAR 集成开发环境。1.3 实验原理通过 CC2530 的 I/O引脚,输出高低电平来控制LED 的亮与灭。本实验选择 P2_0 I/O引脚,将 P2_0 置成高电平即点亮LED。如图为 LED 小灯驱动电路, DS1 为 LED 小灯, P2_0 引脚使用 CC2430/1 的内置电源驱动 LED 小灯。CC2530的 I/O 控制口一共有 21 个,分成 3 组,分别是 P0、P1和 P2;由上面的对照表可以看出 LED1 所对应的 I/O 口为 P1_0,LED

4、2所对应的 I/O 口为 P1_2。下面我们来看一下本次实验所用到的控制寄存器中每一位的取值所对应的意义:P1DIR(P1 方向寄存器, P0DIR 同理):P1SEL(P1 功能选择寄存器, P0SEL 同理):'.寄存器的设置:将控制寄存器的某一位置1 :例: P1DIR |= 0X02 ;解释:”|= “表示按位或运算,0X02 为十六进制数,转换成二进制数为 0000 0010 ,若 P1DIR 原来的值为 0011 0000 ,或运算后 P1DIR的值为 0011 0010。根据上面给出的取值表可知,按位与运算后P1_1 的方向改为输出,其他I/O口方向保持不变。将控制寄存器

5、某一位清0 :例: P1DIR &= 0X02;解释:”&=“表示按位与运算,”“运算符表示取反, 0X02 为 00000010, 即0X02 为 1111 1101 。若 P1DIR 原来的值为 0011 0010 ,与运算后 P1DIR 的值为 0011 0000。程序源码/ 引入头文件#include <ioCC2530.h>/引入 CC2530 所对应的头文件(包含各 SFR 的定义)'./ 定义 LED 引脚#define led1P1_0/定义 LED1 为 P1_0 口控制#define led2P1_2/定义 LED2 为 P1_1 口控制

6、void Delay(unsigned char n)unsigned char i;unsigned int j;for(i = 0; i < n; i+)for(j = 1; j<10000; j+);void main(void)P1SEL = 0x00;/ 设置 P1 为普通 I/O 口P1DIR |= 0x05;/ 设置 P1.0 P1.2 为输出led1 = 1;/ 初始化, 2 个 led 灯全熄led2 = 1;while(1)/ 开始循环led1 = 0; /led1闪烁Delay(10);led1 = 1;Delay(10);led2 = 0; /led2闪烁&

7、#39;.Delay(10);led2 = 1;Delay(10);1.4 实验步骤及结果1.4.1正确连接下载线和ZX2530A 型 CC2530 节点板,打开 ZX2530A 型 CC2530 节点板电源。1.4.2在文件夹“基础实验 2 LED ”下打开工程 led,编译工程,并下载到CC2530 节点板。1.4.3观察 LED 的闪烁情况。1.4.4修改延时函数,可以改变LED 小灯的闪烁间隔时间。1.4.5重新编译,并下载程序到CC2530 节点板,观察LED 的闪烁情况。'.实验二 射频实验2.1 实验目的1. 在 ZX2530A 型 CC2530 节点板上运行相应实验程序

8、。2. 熟悉通过射频通信的基本方法。3. 练习使用状态机实现收发功能。2.2 实验内容接收节点上电后进行初始化,然后通过指令ISRXON 开启射频接收器,等待接收数据,直到正确接收到数据为止,通过串口打印输出。发送节点上电后和接收节点进行相同的初始化,然后将要发送的数据输出到 TXFIFO 中,再调用指令ISTXONCCA通过射频前端发送数据。2.3 实验设备及工具1.硬件: ZX2530A 型 CC2530 节点板2 块、 USB 接口的仿真器,'.PC 机 Pentium100以上。2. 软件: PC 机操作系统 WinXP、IAR 集成开发环境、串口监控程序。2.4 实验原理发送

9、节点通过串口接收用户的输入数据然后通过射频模块发送到指定的接收节点,接收节点通过射频模块收到数据后, 通过串口发送到 pc 在串口调试助手中显示出来。如果发送节点发送的数据目的地址与接收节点的地址不匹配,接收节点将接收不到数据。以下为发送节点程序流程图:以下为接收节点流程图'.2.5 实验步骤2.5.1打开光盘“无线射频实验 2. 点对点通信”双击 p2p.eww 打开本实验工程文件。2.5.2打开 main.c文件下面对一些定义进行介绍RF_CHANNEL此宏定义了无线射频通信时使用的信道,在多个小组同时进行实验是建议每组选择不同时信道。但同一组实验中两个节点需要保证在同一信道,才能

10、正确通信。PAN_ID 个域网 ID标示,用来表示不同在网络,在同一实验中,接收和发送节点需要配置为相同的值,否则两个节点将不能正常通信。SEND_ADDR发送节点的地址'.RECV_ADDR接收节点的地址NODE_TYPE节点类型: 0 接收节点, 1:发送节点,在进行实验时一个节点定义为发送节点用来发送数据,一个定义为接收节点用来接收数据。2.5.3修改 NODE_TYPE的值为 0 ,并编译下载到节点板。此节以下称为接收节点。2.5.4修改 NODE_TYPE的值为 1 ,并编译下载到另外一个节点板。此节点板以下称为发送节点。2.5.5将接收节点的串口与pc的串口相连,并在pc端

11、打开串口调试助手,配置波特率为115200。2.5.6先将接收节点上电,然后将发送节点上电。2.5.7从串口调试助手观察接收节点收到的数据。2.5.8修改发送数据的内容,然后编译并下载程序到发送节点,然后从串口调试助手观察收到的数据。2.5.9修改接收节点的地址,然后重新编译并下载程序到接收节点,然后从发送节点发送数据观察接收节点能否正确接收数据。2.6 实验数据分析及结论发送节点将数据发送出去后,接收节点接收到数据,并通过串口调试助手打印输出。发送数据的最大长度为125 (加上发送的数据长度和校验,实际发送的数据长度为128 字节)。'.实验三 Zstack 组网实验3.1 实验目的

12、1. 理解 zigbee 协议及相关知识。2. 在 ZX2530A 型 CC2530 节点板上实现自组织的组3. 在 ZStack 协议栈中实现单播通信。3.2 实验内容先启动协调器节点,协调器节点上电后进行组网操作,再启动路由节点和终端节点,路由节点和终端节点上电后进行入网操作,成功入网后周期的将自己的短地址,父节点的短地址,自己的节点ID封装成数据包发送给协调器节点,协调器节点接收到数据包后通过串口传给 PC,从 PC 上的串口监控程序查看组网情况。发送数据格式为 (16 进制 ):FF源节点 (16bit)父节点 (16bit)节点编号 ID(8bit)'.例如 FF 4B 00

13、 00 00 01,表示 01 号节点的网络地址为004B ,发送数据到父节点,其网络地址为00 00( 协调器 ) 。3.3 预备知识3.3.1了解 CC2530 应用程序的框架结构。3.3.2了解并安装 zstack协议栈。3.3.3了解 ZigBee协议进行组网的过程。3.4 实验设备及工具1. 硬件: DZ2530 型 CC2530 节点板、 USB接口的仿真器, PC 机 Pentium100 以上。2. 软件: PC 机操作系统 WinXP、IAR 集成开发环境、 ZTOOL程序。3.5 实验原理程序执行的流程图如图 5-4 所示,在进行一系列的初始化操作后程序就进入事件轮询 状态

14、。对于终端节点,若没有事件发生且定义了编译选项POWER_SAVING,则节点进入休眠状态。协调器是 Zigbee 三种设备中最重要的一种。它负责网络的建立,包括信道选择,确定唯一的 PAN 地址并把信息向网络中广播,为加入网络的路由器和终端设备分配地址,维护路由表等。 Z-Stack 中打开编译选项 ZDO_COORDINATOR,也就是在 IAR 开发环境中选择协调器,然后编译出的文件就能启动协调器。具体工作流程是:操作系统初始化函数osal_start_system调用 DAppInit初始化函数,ZDAppInit调用 ZDOInitDevice函数, ZDOInitDevice调用Z

15、DApp_NetworkInit函数,在此函数中设置ZDO_NETWORK_INIT事件,'.在 ZDApp_event_loop 任务中对其进行处理。由 第 一 步 先 调用 ZDO_StartDevice 启动网络中的设备,再调用NLME_NetworkFormationRequest 函数进行组网,这一部分涉及网络层细节,无法看到源代码,在库中处理。ZDO_NetworkFormationConfirmCB 和 nwk_Status函数有申请结果的处理。如果成功则ZDO_NetworkFormationConfirmCB 先执行,不成功则 nwk_Status先执行。接着,在ZD

16、O_NetworkFormationConfirmCB 函数中会设置ZDO_NETWORK_START事件。由于第三步, ZDApp_event_loop 任务中会处理 ZDO_NETWORK_START事件,调用 ZDApp_NetworkStartEvt 函数,此函数会返回申请的结果。如果不成功能量阈值会按ENERGY_SCAN_INCREMENT增加,并将 App_event_loop 任务中的事件 ID 置为 ZDO_NETWORK_INIT然后跳回第二步执行;如果成功则设置 ZDO_STATE_CHANGE_EVT事件让 ZDApp_event_loop 任务处理。对 于 终端 或

17、路由 节 点 ,调 用 ZDO_StartDevice后 将调 用 函 数 NLME_NetworkDiscoveryRequest进行信道扫描启动发现网络的过程,这一部分涉及网络层 细节,无法看到源代码,在库中处理, NLME_NetworkDiscoveryRequest 函 数 执 行 的 结 果将 会 返 回 到 函 数 ZDO_NetworkDiscoveryConfirmCB 中,该函数将会返回选择的网络,并设置事件 ZDO_NWK_DISC_CNF,在'.ZDApp_ProcessOSALMsg 中 对 该 事 件 进行 处理 , 调 用NLME_JoinRequest加

18、入指定的网络,若加入失败,则重新初始化网络,若加入成功则调用ZDApp_ProcessNetworkJoin函数设置ZDO_STATE_CHANGE_,EVT在 对 该 事 件 的 处 理 过 程中 将 调 用ZDO_UpdateNwkStatus函数,此函数会向用户自定义任务发送事件 ZDO_STATE_CHANGE。本实验在 Zstack的事例代码simpleApp修改而来。首先介绍任务初始化的概念,由于自定义任务需要确定对应的端点和簇等信息,并且将这些信息在AF 层中注册,所以每个任务都要初始化然后才会进入OSAL 系统循环。在Z-Stack流程图中,上层的初始化集中在 OSAL 初始化

19、( osal_init_system)函数中。包括了存储空间、定时器、电源管理和各任务初始化。其中用户任务初始化的流程如下:'.任务 ID (taskID )的分配是 OSAL 要求的,为后续调用事件函数、定时器函数提供了参数。网络状态在启动的时候需要指定,之后才能触发ZDO_STATE_CHANGE事件,确定设备的类型。目的地址分配包括寻址方式,端点号和地址的指定,本实验中数据的发送使用单播方式。之后设置应用对象的属性,这是非常关键的。由于涉及很多参数,Z-Stack专门设计了SimpleDescriptionFormat_t这一结构来方便设置,其中的成员如下:EndPoint ,该

20、节点应用的端点,值在1-240之间,用来接收数据。AppProfId ,该域是确定这个端点支持的应用profile标识符,从 Zigbee联盟获取具体的标识符。AppNumInClusters,指示这个端点所支持的输入簇的数目。'.pAppInClusterList,指向输入簇标识符列表的指针。AppNumOutClusters,指示这个端点所支持的输出簇的数目。pAppOutClusterList,指向输出簇标识符列表的指针。本实验profile标识符采用默认设置,输入输出簇设置为相同 MY_PROFILE_ID, 设 置完成后,调用 afRegister 函数将应用信息在 AF 层

21、中注册,使设备知晓该应用的存在,初始化完毕。一旦初始化完成,在进入OSAL 轮询后 zb_HandleOsalEvent一有事件被触发,就会得到及时的处理。事件号是一个以宏定义描述的数字。系统事件( SYS_EVENT_MSG)是强制的,其中包括了几个子事件的处理。 ZDO_CB_MSG事件是处理 ZDO 的响应, KEY_CHANGE事件处理按键(针对 TI 官方的开发板) , AF_DATA_CONFIRM_CMD则是作为发送一个数据包 后的确认, AF_INCOMING_MSG_CMD是接收到一个数据包会产生的事件,协调器在收到该事件后调用函数p2p_test_MessageMSGCB,

22、将接收到的数据通过HalUARTWrite 向串口 打印输出。 ZDO_STATE_CHANGE和网络状态的改变相关在此事件中若为终端或路由节点 则发送用户自定义的数据帧: FF 源节点短地址 (16bit ,调用 NLME_GetShortAddr() 获得 ) 、父节点短地址 (16bit ,调用 NLME_GetCoordShortAddr() 、节点编号 ID(8bit ,为长地址的最低字节,调用NLME_GetExtAddr() 获得,在启动节点前应先用 RFProgrammer 将非 0XFFFFFFFFFFFFFFFF 的长地址写到CC2530 芯片存放长地址的寄存器中) ,协调

23、器不做任何处理,只是等待数据的'.到来。终端和路由节点在用户自定义的事件 MY_REPORT_EVT中 发送数据并启动定时器来触发下一次的MY_REPORT_EVT事件, 实现周期性的发送数据(发送数据的周期由宏定义 REPORT_DELAY确定) 。3.6 实验步骤及结果3.6.1打开工程文件夹协议栈实验2.多点自组网ProjectszstackSamplesSimpleAppCC2530DB 下 的 工 程 文 件SimpleApp.eww。3.6.2选择工程编译,生成协调器代码,并下载到 ZX2530A 开发板。此节点为协调器节点。3.6.3选择工程编译,生成终端节点代码,并下载

24、到ZX2530 开发板。此节点为终端节点。3.6.4选择工程编译,生成路由器节点代码,并下载到ZX2530 开发板,此节点为路由器节点。3.6.5用串口线将协调器节点与pc连接起来,在pc端打开ZTOOL程序。 (ZTOOL 程序在 zstack安装后自动安装 )3.6.6开启 ZX2530A 型 CC2530 节点板电源。3.6.7在 ZTOOL程序中观察组网结果。'.3.7 实验数据分析及结论由接收数据的DebugString可以看出图中有两个节点加入了网了,其中一个节点的DEVID 是 21,网络地址: 4f07 ,父节点地址是 0 即协调器。另外一个节点的DEVID 是 11

25、,网络地址: A6F7,父节点地址是 4f07即上一节点。实验四 综合实验 (传感器网络 )3G 智能物联网综合系统工作框架如下:'.4.1 智能网关程序设计智能网关程序是连接android系统与 zigbee无线网络的桥梁,运行在 android系统服务层,智能网关程序同过3G、Wifi或以太网与 Android用户控制程序相连,然后将用户控制程序发过来的指令通过串口发给zigbee网络协调器, Zigbee 网络协调器解析相应的指令然后发给各个传感器节点实现控制。智能网关程序流程如下'.4.2 Android用户控制程序设计4.2.1 Android用户控制程序框架用户控制

26、程序运行于android系统应用层,采用JAVA 开发。用户控制程序通过接收用户的输入操作,生成相应的控制指令然后通过 3G、wifi或以太网发送到智能网关系统。同时,用户控制程序还接收智能网关程序发送过来的告警指令,并生成相应的告警信息,产生告警。Android用户控制程序框架如下:'.下面以 Zigbee网络拓扑结构生成模块,和温度传感器控制模块为例介绍其实现,其它模块类同可参考源代码。当用户第一次打开程序,或是从菜单中选择搜索的时候,Zigbee网络TOP 图生成模块首 先检 查网络 连接 ,当 网络正 常连 接到Zigbee 智能网关后,首先发送获取协调器节点信息指令,获取到协

27、调器节点信息。之后将协调器节点通过绘图子程序在屏幕上把协调器显示出来。相关实现代码在ZbThread.java,下面进行初步讲解具体见源码。获取协调器节点信息byte ninfo = mProx.syncRequestSYS_APP_MSG( 2, new byte(byte) (0>>8), (byte) 0, /addr0x00, 0x01, / cmd0x00,0x01, 0x00,0x02, 0x00,0x05, 0x00,0x14, 0x00,0x15 );当syncRequestSYS_APP_MSG返回后,如果ninfo!=null,则ninfo中保存获取到的协调器信

28、息,否则获取协调器信息失败,'.zigbee网络搜索结束。获取到协调器信息后通过以下代码Top.DrawTop(mTree);Message msg = Message.obtain();msg.what = MSG_NEW_NETWORK;msg.arg1 = 1;mMainHandler.sendMessage(msg);生成协调器节点并通知主线程在屏幕上显示出来。当找到协调器后,程序通过查找与协调器直接连接的相关节点,然后递归搜索,最终搜索完整个网络并绘制出Zigbee网络的 TOP结构。具体实现代码如下private void buildNetWork(Node pa, int

29、 cli)for (int i=0; i<cli.length; i+) /* get child i info*/try Thread.currentThread().sleep(500); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace();byte ninfo = mProx.syncRequestSYS_APP_MSG( 2, new byte '.(byte) (clii>>8), (byte) clii, /addr0x00, 0x01,

30、/ cmd0x00,0x01, 0x00,0x02, 0x00,0x05, 0x00,0x14, 0x00,0x15 );if (ninfo=null | ninfo.length<29) Log.d(TAG, "* get node "+clii+" info fail."); continue;int tmp, off=0;tmp = Tool.builduInt(ninfooff, ninfooff+1); / addr if (tmp != clii) Log.d(TAG, "net add is not equl.")

31、;continue;off += 2;tmp = Tool.builduInt(ninfooff, ninfooff+1); /cmd if (tmp != 0x8001) Log.d(TAG, "response cmd not euql.");continue;off += 2;if (ninfooff != 0) /read statusLog.d(TAG, "read status is not 0");continue;'.off += 1;Node nd = new Node(clii, Node.ZB_NODE_TYPE_ENDDE

32、VICE); int childs = ;while (off < ninfo.length) tmp = Tool.builduInt(ninfooff, ninfooff+1);off += 2;switch (tmp) case 0x0001: / hard vernd.mHardVer = Tool.builduInt(ninfooff, ninfooff+1); off += 2;break;case 0x0002:nd.mSoftVer = Tool.builduInt(ninfooff, ninfooff+1);off += 2;break;case 0x0005:nd.m

33、DevType = ninfooff;off += 1;break;case 0x0014:for (int j=0; j<8; j+) nd.mIEEEAddrj = ninfooff+j;'.off += 8;break;case 0x0015:int assocCnt = ninfooff;off += 1;break;case 0x0014:for (int j=0; j<8; j+) nd.mIEEEAddrj = ninfooff+j;off += 8;break;case 0x0015:int assocCnt = ninfooff;off += 1;if (assocCnt != 0) nd.mNodeType = Node.ZB_NODE_TYPE_ROUTER; int nli = new intassocCnt; for (int j=0; j<assocCnt; j+) nlij = Tool.builduInt(ninfooff, ninfooff+1); off += 2;'.childs = nli;break;pa._ch

温馨提示

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

评论

0/150

提交评论