物联网实验指导书 - 图文

更新时间:2024-04-25 09:45:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

物 联 网 实 验 指 导 书

四川理工学院通信教研室

2014年11月

目 录

前言 .................................................... 1 实验一 走马灯IAR工程建立实验 ............................ 5 实验二 串口通信实验 .................................... 14 实验三 点对点通信实验 .................................. 18 实验四 Mesh自动组网实验 ............................... 21 附录 ................................................... 25 实验一代码 ............................................. 25 实验二代码 ............................................. 26 实验三代码 ............................................. 28 实验四代码 ............................................. 29

四川理工学院 自动化与电子信息学院 通信教研室

前言

1、ZigBee基础创新套件概述

无线传感器网络技术被评为是未来四大高科技产业之一,可以预见无线传感器网络将会是继互联网之后一个巨大的新兴产业,同时由于无线传感网络的广泛应用,必然会对传统行业起到巨大的拉动作用。

无线传感器网络技术,主要是针对短距离、低功耗、低速的数据传输。数据节点之间的数据传输强调网络特性。数据节点之间通过特有无线传输芯片进行连接和转发形成大范围的覆盖容纳大量的节点。传感器节点之间的网络能够自由和智能的组成,网络具有自组织的特征,即网络的节点可以智能的形成网络连接,连接根据不同的需要采用不同的拓扑结构。网络具有自维护特征,即当某些节点发生问题的时候,不影响网络的其它传感器节点的数据传输。正是因为有了如此高级灵活的网络特征,传感器网络设备的安装和维护非常简便,可以在不增加单个节点成本同时进行大规模的布设。

无线传感器网络技术在节能、环境监测、工业控制等领域拥有非常巨大的潜力。目前无线传感器网络技术尚属一个新兴技术,正在高速发展,学习和掌握新技术发展方向和技术理念是现代化高等教育的核心理念。

“ZigBee基础创新套件”产品正是针对这一新技术的发展需要,使这种新技术能够得到快速的推广,让高校师生能够学习和了解这项潜力巨大的新技术。“ZigBee基础创新套件”是由多个传感器节点组成的无线传感器网络。该套件综合了传感器技术、嵌入式计算技术、现代网络及无线通信技术、分布式信息处理技术等多种技术领域,用户可以根据所需的应用在该套件上进行自由开发。

2、ZigBee基础创新套件的组成

CITE 创新型无线节点(CITE-N01 ) 4个 物联网创新型超声波传感器(CITE-S063) 1个 物联网创新型红外传感器( CITE-S073) 1个 物联网便携型加速度传感器(CITE-S082) 1个 物联网便携型温湿度传感器(CITE-S121 ) 1个 电源 6个 天线 8根

CC Debugger 1套(调试器,带 MINI USB接口的USB线,10PIN排线) 物联网实验软件 一套

第 1 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

2.1CITE创新型无线节点( CITE-N01)

■ ■ ■ ■ ■

支持 IEEE 802.15.4 标准以及 ZigBee、 ZigBee PRO 和 ZigBee RF4CE 标准 2.4G ISM 工作频率

传输速度 250Kbps, 最大输出功率 10dBm,接收灵敏度-97dBm MCU: 增强型 8051MCU, 256KFlash 低功耗:主动模式 RX, 24mA

主动模式 TX 在 1dBm, 29mA 供电模式 1 ( 4us 唤醒), 0.2mA 供电模式 2(睡眠定时器运行), 1uA 供电模式 3(外部中断), 0.4uA 宽电源电压范围( 2V-3.6V) 液晶屏显示:便于观察实验现象

自带 3 种传感器: 光照传感器, 3 轴加速度传感器,温度传感器 3个彩灯, 5 个按键:便于实现多种输入输出组合

锂电池和 DC5V 两种供电方式可选, 锂电池充电时间一般需要 4~5 个小时,可以使用 200 个小时,在使用锂电池的情况下,如果长时间不使用,请关闭电源开关

■ ■ ■ ■

2.2物联网创新型超声波传感器( CITE-S063)

第 2 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

物联网创新型超声波传感器(CITE-S063)由 CC2530 无线模块和超声波传感器底板组成。传感器底板上采用的是两个超声波探头, MCU 部分采用 Silicon Laboratories 公司的C8051F206。

超声波传感器底板输出 0~2000mm 测量距离,并将测量距离发送给 CC2530 无线模块。传感器底板上有一个彩色灯,通过编程可以显示各种不同颜色,随着测量距离的不同变换不同的颜色。传感器底板与 CC2530 无线模块间通过串口通信,电平转换为 RS232。

2.3物联网创新型红外传感器( CITE-S073)

物联网创新型红外传感器( CITE-S073)由 CC2530 无线模块和红外传感器底板组成。传感器底板上件采用的是红外传感器, MCU 部分采用 Silicon Laboratories 公司的C8051F206。

红外传感器底板输出 0 或 1 开关量,并将开关量发送给 CC2530 无线模块。传感器底板上有一个彩色灯,通过编程可以显示各种不同颜色,红色表示红外传感器没有检测到物体,绿色表示红外传感器检测到物体。传感器底板与 CC2530 无线模块间通过串口通信,电平转换为RS232。

2.4物联网便携型加速度传感器(CITE-S082)

物联网便携型加速度传感器(CITE-S082) 是由 CC2530 无线模块和 KIONIX 公司的3轴加速度传感器 KXTF9-1062 组成。 CC2530 可以通过 I2C 总线读取加速度

第 3 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

传感器中 3 轴加速度的值。使用时用 2 节 1.5V 干电池供电。

2.5物联网便携型温湿度传感器(CITE-S121)

物联网便携型温湿度传感器(CITE-S121 ) 是由 CC2530 无线模块和 SENSIRION公司的温湿度传感器 STH11 组成。 CC2530 可以读取传感器采集的温湿度值。使用时用 2节1.5V干电池供电。

3、系统连接

注意事项:在无线通信过程中,相同信道之间会产生信号干扰,由于所有实验箱在出厂时默认的都是同一信道的演示实验程序。所以在做实验时,为了防止实验箱之间信号的互相干扰,保证实验效果,请同一个实验箱用同一个频率同一个信道,不同实验箱用用不同的频率与不同的信道。

打开产品实验箱后,里面包含了搭建系统所需要的所有器件和配件。连接步骤为: 1. 将所有模块上的天线连接好;

2. 将 CITE 创新型无线节点( CITE-N01 )、 CITE-S073 物联网创新型红外传感器和CITE-S063 物联网创新型超声波传感器的电源接口与电源进行连接; 3. 将 CITE-S082 物联网便携型加速度传感器和 CITE-S121 物联网便携型温湿度传感器分别装入两节 1.5V 的干电池; 4. 在计算机上安装 CITE-N01 模块的串口驱动;

5. 将贴有红色圆标签的 CITE 创新型无线节点( CITE-N01 ) 的 MINI USB 端口与计算机的 USB 串口用提供的 A-MINI USB 线进行连接,打开电源开关;依次打开剩下模块的电源开关; 6. 运行计算机上的 CITE-LAB 软件。

第 4 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

实验一 走马灯IAR工程建立实验

1 、实验目的

了解 IAR 集成开发环境。

学习安装 SmartRF Flash Programmer 软件下载程序。 2、实验设备

硬件: PC 机(一台) ZigBee 基础创新套件(一套)

软件: IAR Embedded Workbench 开发工具、SmartRF Flash Programmer 软件、CITE-LAB 软件 3、 实验预习要求

仔细阅读 IAR 相关文档,熟悉本节实验步骤。

IAR Embedded Workbench(以下简称为 IAR) 嵌入式系统应用程序的开发工具,支持汇编、 C 和 C++语言。它提供完整的集成开发环境,包括工程管理器、编辑器、编译链接工具和 C-SPY 调试器。 IAR Systems 以其高度优化的编译器而闻名。每个 C/C++编译器不仅包含一般全局性的优化,也包含针对特定芯片的低级优化,以充分利用所选芯片的所有特性,确保较小的代码尺寸。能够支持由不同的芯片制造商生产,且种类繁多的 8 位、 16位或 32 位芯片。 4.实验内容 (1)安装 IAR。 (2)启动 IAR。

(3)新建一个 IAR 工作区。 (4)打开一个 IAR 工作区。 (5)安装调试器驱动。

(6)连接计算机、 CC Debugger 与物联网创新型红外传感器(CITE-S073)。 (7)设置项目参数。 (8)编译、下载程序。

(9)安装 SmartRF Flash Programmer 软件,这个软件主要用于无线网络实验、传感 器实验中的实验 3 以及综合实验的程序下载。 (10)使用 SmartRF Flash Programmer 软件下载程序。 5、实验连接逻辑图

第 5 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

6.实验步骤

安装IAR。点击光盘中的图标

,出现如图所示的对话框。

选择第二项“Install IAR Embedded Workbench”并点击,出现解压界面如图所示:

等待出现安装界面如图所示。

点击“Next”,出现对话框如图所示。

第 6 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

点击“Accept”,出现图对话框如图所示。

输入姓名和公司名称(任意输入),双击并填写到软件相应的位置并完成激活。

,生成License number 与Licese key,

第 7 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

点击“Browse”选择“Licence Key”,点击“Next”,出现对话框如图所示。

点击“Next”,出现对话框如图所示。

选择“Full”,点击“Next”,出现对话框如图所示。

点击“Next”,出现对话框如图所示。

第 8 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

点击“Next”,出现开始安装话框如图所示。

等待安装结束后会弹出对话框如图所示。点击“Finish”,安装完成。

启动IAR。

安装结束后,在开始菜单中选择“IAR Embedded WorkBench”,即可打开IAR开发环境。IAR安装目录如图所示。

当打开IAR开发环境时,如果已经建好了工作区,会出现如图所示的窗口,可以选择窗口里需要打开的工作区。如果要新建或打开一个工作区则点击“Cancel”。

第 9 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

打开一个IAR工作区。要打开光盘中“物联网实验”文件夹中的“实验1”中的CITE-T-ZA-Led。工作区打开方法为:点击File→Open→ Workspace,如图所示。

选择并打开名称为CITE-T-ZA-Led的工作区,如图所示。

打开的工作区如图所示。

第 10 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

(5)安装调试器驱动。

将CC Debugger通过A-MINI USB线与计算机的USB口连接,计算机会弹出“找到新的硬件向导”,选择“从列表或指定位置安装(高级)”,点击“下一步”,如图所示。

点击“浏览”按钮,选择驱动所在路径,驱动文件在IAR程序的安装目录下,具体位置为C:\\Program Files\\IAR Systems\\Embedded Workbench 5.3\\8051\\drivers\\Texas Instruments,如图所示,点击“下一步”。

等待驱动安装完成,点击“完成”按钮,完成调试器驱动安装,如图所示。

第 11 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

点击 CITE-T-ZA-Led-Debug工程文件,点击 Project→Options,如图所示。

选择“Linker”选项,设置“Output”和“Config”选项卡,如图所示。

第 12 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

选择“Debugger”选项,设置“Setup”选项卡,如图设置

取一个物联网创新型红外传感器(CITE-S073),连接CC Debugger、物联网创新型红外传感器(CITE-S073)和计算机,连接电源,连接好后,打开电源开关。

(8)编译、下载程序。

选择CITE-ZA-Led.c 文件,点击Project→Rebuild All,编译程序并生成目标文件。编译情况会在界面下方的“Messages”显示出来,如果编译时出现错误或警告,请根据提示进行修改,直至没有错误。再点击Project→Debug将程序下载到物联网创新型红外传感器(CITE-S073)中,连接方法如图所示;点击

运行程序,可以观察到物联网

创新型红外传感器(CITE-S073)上D2~D5的4个灯轮流闪烁。 实验小结

通过本小结的学习,学会定时器查询方式的使用和I/O 端口的使用,并学会如何控制D2~D5灯轮流闪烁。此实验是学习单片机的入门实验,通过学习,对单片机有个基本了解,便于今后更复杂单片机程序的开发。 思考题

(1)如何改变走马灯闪烁的时间间隔? (2)如何改变4个灯闪烁的次序?

第 13 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

实验二 串口通信实验

1.实验目的

学习使用CC2530单片机中断方式实现串口通信。 学习如何设置串口的波特率。 掌握如何使用串口收发数据。 2.实验设备 硬件:PC机(一台) ZigBee 基础创新套件(一套)

软件:IAR Embedded Workbench开发工具 CITE-LAB软件 3.实验内容

系统初始化时,以查询的方式向串口发送默认的出厂信息,接下来,串口等待接收数据, 串口接收以中断方式接收串口输入的数据,接收到串口上的数据后将数据发还给串口,此时 可以在CITE-LAB软件上观察到串口输入的数据。 4.实验连接逻辑图

5.实验步骤

(1)首先安装CITE 创新型无线节点(CITE-N01)的串口驱动,双击开始安装驱动直至完成;

(2)取一个CITE创新型无线节点(CITE-N01),连接电源,连接好后,打开电源开关,出现一个开机界面如图所示;

第 14 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

(3)右键单击“我的电脑”,选择“属性”弹出如图所示对话框;

(4)点击“硬件”,选择“设备管理器”,将“端口”选项展开,可以找到CITE创新型无线节点(CITE-N01)与计算机相连接的端口,例如为COM3,

(5)启动IAR,打开工作区文件CITE-T-ZA-Uart.eww; (6)点击Project→Rebuild All,编译程序并生成可执行文件;

(7)连接CC Debugger、CITE创新型无线节点(CITE-N01)和计算机,如图所示。连接好后,打开电源开关。点击Project→Debug将程序下载到CITE创新型无线节点(CITE-N01)中; (8)点击

运行程序,点击

按钮,退出调试环境。(关闭CITE创新型无线节点

(CITE-N01)的电源,拔下CC Debugger,将CC Debugger一端的A-MINI USB线拔下,插入CITE创新型无线节点(CITE-N01)上的MiniUSB端口);

(9)使用CITE-LAB软件观察实验现象,CITE创新型无线节点(CITE-N01)上电或复位

第 15 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

时,在串口上会显示一串出厂信息,往串口发送数据,可以发现发送的数据被回传; (10)使用CITE-LAB软件观察程序运行情况的过程为: 在PC 机上双击 CITE-LAB软件中的

图标(如未安装CITE-LAB软件,

,点击“进入实验”,选择“基础双击“CITE-LAB软件文件夹”中的安装图标进行安装)实验”中的“串口通信实验”,如图所示:

②点击串口配置按钮

,打开如图所示的端口配置界面,在串口中选择COM3,设置波特

率为115200,点击“确定”按钮

点击“打开选定串口并开始实验”按钮

,开始实验,点击

选择字符显示方式,

打开CITE创新型无线节点(CITE-N01)的电源或按下复位按键,在“接收数据显示区”窗口中可以观察到出厂信息,如图所示。双击状态栏下方的已发送/已接收的字节,可以将已发送/已接收的字节清为0;

在“发送数据输入区”输入需要发送的数据,点击

第 16 页 共 33 页

按钮发送数据,此时可以

四川理工学院 自动化与电子信息学院 通信教研室

在“接收数据显示区”观察到刚才发送到数据。点击按钮清除数据,点击按

钮选择发送数据输入区/接收数据显示区为16进制显示方式,如图A5- 9所示;

6.实验小结

通过本小结的学习,学会使用单片机的串口功能,进行收发数据,并学会如何设置串口的波特率,如何发送默认的配置信息。 7.思考题

(1)如何改变串口通信的波特率? (2)如何修改发送的默认信息?

第 17 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

实验三 点对点通信实验

1.实验目的

通过点对点通信实验,建立无线通信概念。

了解IEEE 802.15.4无线通信标准,熟悉PHY、MAC、RSSI等概念。 2.实验设备 硬件:PC机(一台) ZigBee 基础创新套件(一套)

软件:IAR Embedded Workbench开发工具 CITE-LAB软件 3.实验内容

CITE创新型无线节点(CITE-N01)B每隔500ms向CITE创新型无线节点(CITE-N01)A发送一包数据,所以只有模块A能接收到模块B的信息,这样就构成一个点对点的形式。模块A接收到模块B的数据后,将数据通过串口转发至PC,在CITE-LAB软件上显示其内容。读取CC2530寄存器RSSI的值并在液晶屏上显示。实验连接逻辑图如下:

4.实验步骤

(1)启动IAR,打开工作区文件CITE-T-ZA- PeerToPeer-Cen.eww; (2)打开RF.c文件,将宏定义#define PANID 0x2011中的数值部分修改为实验箱相应的PANID编号,点击保存,点击Project→Rebuild All,编译程序并生成可执行文件;

(3)取一个CITE创新型无线节点(CITE-N01)作为模块A,连接CC Debugger、CITE创新型无线节点(CITE-N01)和计算机,连接电源,连接好后,打开电源开关,连接方法请参照基础实验五。点击Project→Debug将程序下载到

第 18 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

CITE创新型无线节点(CITE-N01)中,点击上的电源开关并拔掉CC Debugger;

然后退出调试状态,关闭模块A

(4)同样的方法打开工作区文件CITE-T-ZA- PeerToPeer-End.eww,将宏定义#define PANID 0x2011 中的数值部分修改为与步骤(2)中相同的值,点击保存,点击Project→Rebuild All,编译程序并生成可执行文件。取一个CITE创新型无线节点(CITE-N01)作为模块B,按照步骤(3)的方法下载程序,关闭模块B上的电源开关并拔掉CC Debugger,将CC Debugger一端的A-MINI USB线拔下,插入CITE创新型无线节点(CITE-N01)A上的MiniUSB端口;

(5)在PC 机上双击 CITE-LAB软件中的

图标,点击“进

,开始

入实验”,选择“无线射频实验”中的“点对点通信实验”,按照基础实验五的方法设置相应的串口、波特率,点击“打开选定串口并开始实验”按钮实验,点击

选择字符显示方式;

(6)分别打开CITE创新型无线节点(CITE-N01)模块A和CITE创新型无线节点(CITE-N01)模块B上的电源开关;

(7)CITE创新型无线节点(CITE-N01)模块B每隔500ms向CITE创新型无线节点(CITE-N01)模块A发送一组数据,此时在CITE创新型无线节点(CITE-N01)模块A端的CITE-LAB软件上观察到每隔500ms接收到一组数据“Hello World!”,同时模块A在发送数据时LED1的蓝灯闪烁,模块B在接收数据时LED1的绿灯闪烁,液晶屏上显示接收信号RSSI的值。CITE-LAB软件上显示结果如图所

5.实验小结

通过本小结的学习,认识到在点对点无线通信过程中,要使数据能够正确接收,首先应保证通信双方的信道一致;其次,因为在实验中采用了地址过滤,地址过滤中包含PANID和短地址信息,所以发送方的PANID和目的地址要和接收方的PANID和源地址相同。当然这两个条件只是正确接收数据的必要条件,需要满足的其它条件请参考CC2530使用手册的相关章节。 6.思考题

第 19 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

(1)如何改变发送字符的内容?

(2)本实验中,所有实验箱发送方的目的地址都相同,我们使用PANID过滤来屏蔽其它实验箱的数据,使接收方只接收此实验箱发送方的数据,如果所有实验箱的PANID都相同,如何使用发送方的目的地址过滤来屏蔽其它实验箱的数据?

第 20 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

实验四 Mesh自动组网实验

1.实验目的

学习如何建立 Mesh 网络拓扑结构。 学习 ZigBee 网络 Mesh 网络拓扑的使用。 2.实验设备

硬件: PC 机(一台) ZigBee 基础创新套件(一套)

软件: IAR Embedded Workbench 开发工具 SmartRF Flash Programmer 软件 CITE-LAB 软件 3.实验内容

Mesh网络即”无线网格网络”,它是“多跳(multi-hop)”网络,是由ad hoc网络发展而来,是解决“最后一公里”问题的关键技术之一。在向下一代网络演进的过程中,无线是一个不可缺的技术。无线mesh可以与其它网络协同通信。是一个动态的可以不断扩展的网络架构,任意的两个设备均可以保持无线互联。

(1)建立 Mesh 网络拓扑结构的网络

首先协调器上电后按照指定的信道和 PAN_ID 建立无线网络;然后各个模块作为路由器加入这个无线网络,这样一个 Mesh 网络拓扑结构的网络就建立起来了。

(2)无线数据传输

路由器每隔 1 秒向协调器发送地址信息和网络信息,协调器接收到路由器的信息后, 将这些信息解析后传送给 PC, PC 上的软件根据这些信息显示当前网络的拓扑结构图。

(3) ZigBee Mesh 网络拓扑结构如下图所示:

实验连接逻辑图

第 21 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

4.实验步骤

(1)修改 f8wConfig.cfg (路径为:\\无线网络实验\\Projects\\zstack\\Tools\\CC2530DB)文件中的信道和 PANID;

(2)启动 IAR,打开协调器工作区文件 MeshCenter.eww;

工程路径:\\无线网络实验\\Projects\\zstack\\CITE-T-ZA-Mesh\\CITE-Mesh-Center\\CC2530DB\\MeshCenter.eww;

(3)点击Project→Rebuild All,编译程序并生成可执行文件 MeshCenter.hex; 可执行文件路径:\\无线网络实验Projects\\zstack\\CITE-T-ZA-Mesh\\CITE-Mesh-Center\\CC2530DB\\CoordinatorEB-Pro\\ Exe\\MeshCenter.hex;

(4)启动 IAR,打开路由器工作区文件 MeshEnd.eww;

工程路径:\\无线网络实验\\Projects\\zstack\\CITE-T-ZA-Mesh\\CITE-Mesh-End\\ CC2530DB\\MeshEnd.eww;

(5)点击 Project→Rebuild All,编译程序并生成可执行文件 MeshEnd.hex; 可执行文件路径: \\无线网络实验\\Projects\\zstack\\CITE-T-ZA-Mesh\\CITE-Mesh-End\\ CC2530DB\\RouterEB-Pro\\Exe\\ MeshEnd.hex;

(6)启动SmartRF Flash Programmer 软件(如为安装SmartRF Flash Programmer 软件,双击

,分别将可执行文件 软件,弹出如图所示的安装界面)

MeshCenter.hex 和 MeshEnd.hex下载到协调器和 7 个路由器中,并关闭电源。

模块与下载可执行文件的对应关系如下表所示: 模块 下载可执行文件的名称 协调器(1 个 CITE 创新型无线节点(CITE-N01)) MeshCenter.hex 路由器(剩下 7 个模块) MeshEnd.hex 使用 SmartRF Flash Programmer 软件下载MeshCenter.hex程序步骤如下: 将计算机、CC Debugger与物联网CITE-N01协调器连接。打开SmartRF Flash Programmer,如下界面设置。打开协调器电源后,会显示与计算机相连接的CC Debugger信息,如图:

第 22 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

在 Flash 选项中选择协调器需要下载的Hex文件,可执行文件路径:\\无线网络实验Projects\\zstack\\CITE-T-ZA-Mesh\\CITE-Mesh-Center\\CC2530DB\\CoordinatorEB-Pro\\ Exe\\MeshCenter.hex;界面如下。点击“

”进行下载。

用同样的方法,将MeshEnd.hex下载到剩下的7个模块中;可执行文件路径: \\无线网络实验\\Projects\\zstack\\CITE-T-ZA-Mesh\\CITE-Mesh-End\\CC2530DB\\RouterEB-Pro\\Exe\\ MeshEnd.hex;

(7) 将协调器和计算机通过 A-MINI USB 线连接起来,打开协调器的电源开关,可以看到协调器模块上彩灯 LED1 的红灯亮,建网成功后变蓝色,并在液晶屏上显示 PANID 号,表示协调器已建立起一个 Mesh 网络,接收到数据时 LED3 的绿灯闪烁;

依次打开 7 个路由器的电源开关,如果是 CITE 创新型无线节点(8)( CITE-N01 ),则在刚上电时路由器设备上彩灯 LED1 的红灯亮,液晶屏的下边显示 OFF 和 Router,表示当前的网络状态(加入或未加入)和设备类型;加入网络成功后变蓝色,并在液晶屏上显示自己的短地址,液晶屏的下边显示 ON 和 Router,表示路由器节点已经加入网络,发送数据时 LED3 的蓝灯闪烁;

(9) 在 PC 机上双击 CITE-LAB 软件中的图标,点击

“进入

实验”,选择“无线网络实验”中的“自动组网实验(Mesh)”, 选择协调器与计算机连接的MINI USB 端口,例如,为COM3,设置端口波特率为115200bps,点击确定按钮,点击开始按钮,从界面上可以看到当前网络的拓扑结构如图

第 23 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

所示;

(10)将拓扑图上某个父亲路由器断电后, 例如将短地址为 0x3C0F 的路由器断电,可以观察到只有该路由器消失, 其它路由器通过 Mesh 网络的自愈建网功能可以通过其它路由器重新建网,如图所示

7、实验小结

本实验通过上位机软件描绘了一个 Mesh 网络拓扑,通过这个拓扑,形象生动的体现了Mesh 网络中设备与设备、设备与协调器之间的关系。通过对某个设备断电或上电体现了Mesh 网络自组网、 自维护的网络特性。

8、思考题 1、Mesh 网络拓扑结构中,把其中一个设备断电再上电,观察节点是否会重新加入网络。为什么?

2、把两个实验箱f8wConfig.cfg文件中的信道和 PANID修改成同样的值,会出现什么现象?

第 24 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

附录

实验一代码

////////////////////////////////////////////////////////////////////////// //名称:Delay500() //功能:500ms 定时 //入口参数:无 //出口参数:无

////////////////////////////////////////////////////////////////////////// void Delay500(void) {

uchar i;

T1CTL |= 0x02; //启动模模式计数 for(i=0;i<2;i++) {

while (!(T1STAT & 0x01)); //查询定时器 1 定时时间 250ms 是否到达 T1STAT &= ~0x01; //清定时器 1 中断标志位 }

T1CTL &= ~0x02; //停止模模式计数 }

/////////////////////////////////////////////////////////////////////////////// //名称:main() //功能:主函数 //入口参数:无 //出口参数:无

/////////////////////////////////////////////////////////////////////////////// void main(void) {

System_Init(); //系统初始化 while(1) {

LED2 = ON; //D2 亮 LED3 = OFF; //D3 灭 LED4 = OFF; //D4 灭 LED5 = OFF; //D5 灭 Delay500(); //延时 500ms LED2 = OFF; //D2 灭

LED3 = ON; //D3 亮 LED4 = OFF;

第 25 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

//D4 灭

LED5 = OFF; //D5 灭 Delay500(); //延时 500ms LED2 = OFF; //D2 灭

LED3 = OFF; //D3 灭

LED4 = ON; //D4 亮 LED5 = OFF; //D5 灭 Delay500(); //延时 500ms LED2 = OFF; //D2 灭

LED3 = OFF; //D3 灭

LED4 = OFF; //D4 灭

LED5 = ON; //LED5 亮 Delay500(); //延时 500ms

} }

实验二代码

/////////////////////////////////////////////////////////////////////////////// //名称:Initial_uart() //功能:初始化串口 //入口参数:无 //出口参数:无

/////////////////////////////////////////////////////////////////////////////// void Initial_uart(void) {

PERCFG = 0x00; //串口 0 在默认位置

P0SEL |= 0x0C; //P0.2,P0.3 设置为外设功能 U0CSR |= 0x80; //模式选择 U0GCR |= 11; //baud_e

U0BAUD |= 216; //波特率设为 115200 U0CSR |= 0x40; //允许接收

IEN0 = 0x84; //总中断允许,串口 0 接收中断允许 }

/////////////////////////////////////////////////////////////////////////////// //名称:UART0_RX_ISR()

//功能:串口 0 接收中断处理函数 //入口参数:无

第 26 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

//出口参数:无

/////////////////////////////////////////////////////////////////////////////// #pragma vector = URX0_VECTOR __interrupt void UART0_RX_ISR(void) {

URX0IF = 0; //清接收标志位

* pWrite++ = U0DBUF;

//将接收到数据保存到接收 buffer,并将写指针加 1 if(IsRxBufWriteEnd)

//如果写指针到达 buffer 的结尾处 {

pWrite = Buffer;

//将写指针设置为 buffer 的起始处 } }

/////////////////////////////////////////////////////////////////////////////// //名称:main() //功能:主函数 //入口参数:无 //出口参数:无

/////////////////////////////////////////////////////////////////////////////// void main(void) {

System_Init(); //系统初始化

ClearRxBuffer(); //清接收 buffer Uart_TX(); while(1) {

if(IsRxBufNotEmpty)

//如果接收 buffer 有数据 {

U0DBUF = * pRead++; //发送读指针指向的 buffer 数据,并将读指针加 1 while(!UTX0IF){}; //等待数据发送完成 UTX0IF=0;

//清发送完成标志位

if(IsRxBufReadEnd) //如果读指针到达 buffer 的结尾处 {

pRead = Buffer; //将读指针设置为 buffer 的起始处

} } } }

第 27 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

实验三代码

/////////////////////////////////////////////////////////////////////////////// //名称:RF_interrupt()

//功能:RF 一般性中断处理函数 //入口参数:无 //出口参数:无

///////////////////////////////////////////////////////////////////////////////

#pragma vector = RF_VECTOR //RF 一般性中断处理函数 __interrupt void RF_interrupt(void) {

uchar i;

S1CON &= ~0x03; //清除 RFIF_1 和 RFIF_0 中断标志 RFIRQF0 &= ~0x40; //清除接收到完整一帧中断标志 if(RSSISTAT) //读取 RSSI 值是否有效 {

RSSI_value = RSSI; }

FrameByteCnt = RXFIFOCNT; //读取帧长度 for(i=0;i

Frame[i] = RFD; }

RFRecvFlag = 1;

RFST = ISFLUSHRX; //CSP 指令-立即清除接收缓冲区 }

/////////////////////////////////////////////////////////////////////////////// //名称:UART0_TX_ISR()

//功能:串口 0 发送中断处理函数 //入口参数:无 //出口参数:无

/////////////////////////////////////////////////////////////////////////////// #pragma vector = UTX0_VECTOR __interrupt void UART0_TX_ISR(void) {

if(UTX0IF) {

UTX0IF = 0; //清除发送中断标志 cnt++; //串口次数加一 if(cnt < 12) {

U0DBUF = Frame[cnt+10]; //依次发送数据 } else

第 28 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

{

cnt = 0; //清零发送次数

} } }

模块 B:

/////////////////////////////////////////////////////////////////////////////// //名称:T1_interrupt()

//功能:T1 中断处理函数,因为,溢出一次是 10ms 所以 500ms 应该计数 50 次 //入口参数:无 //出口参数:无

/////////////////////////////////////////////////////////////////////////////// #pragma vector = T1_VECTOR //T1 中断处理函数 __interrupt void T1_interrupt(void) {

T1STAT &= ~0x20; //清除定时器 1 中断标志位 Time1Cnt++;

if(Time1Cnt == 50) {

Time1Cnt = 0;

Time1Flag = 1; //定时器到 } }

/////////////////////////////////////////////////////////////////////////////// //名称:RF_TX() //功能:RF 发送数据 //入口参数:无 //出口参数:无

/////////////////////////////////////////////////////////////////////////////// void RF_TX(void) {

uchar i;

for(i=0;i<22;i++) //写入数据 {

RFD = MAC[i]; }

RFST = ISTXON; //启动发送

while(!(RFIRQF1&0x02)); //等待发送完毕 RFIRQF1 &= ~0x02; }

实验四代码

协调器

第 29 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

/********************************************************************* * @fn MeshCenter_MessageMSGCB

* @brief Data message processor callback. This function processes * any incoming data - probably from other devices. So, based * on cluster ID, perform the intended action. * @param none * @return none

/********************************************************************* void MeshCenter_MessageMSGCB( afIncomingMSGPacket_t *pkt ) {

uint8 comdata[60]; //addrpacket addr;

switch ( pkt->clusterId ) {

case MeshCenter_CLUSTERID: //send the message by uart to pc switch (pkt->cmd.Data[0]) {

case SENADDR: comdata[0]=0x7e; comdata[1]=0x7e;

comdata[2]=3+11+pkt->cmd.Data[11]*11;//len comdata[3]=0x02; //direction

comdata[4]=0x1C; //frame contrl: addr type osal_memcpy((void *)&comdata[5],

(void *)&pkt->cmd.Data[1],11+pkt->cmd.Data[11]*11);

comdata[5+(11+pkt->cmd.Data[11]*11)]=XorPrc(&comdata[2],comdata[2]+1); HalUARTWrite ( HAL_UART_PORT_0, comdata,comdata[2]+3); // comm with PC GUI */ break; default: break; }

break; default: break; } }

路由器

/********************************************************************* * @fn SendAddrMessage

* @brief Send \* @param none * @return none

第 30 页 共 33 页

四川理工学院 自动化与电子信息学院 通信教研室

/********************************************************************* void SendAddrMessage(void ) {

uint8 i,cnt; cnt=0;

topology_packet topologydata; topology_packet topologydata;

osal_memcpy((void *)&topologydata.listdata[0].shortneighbor, (void *)&AssociatedDevList[0].shortAddr,2); //短地址拷贝 osal_memcpy((void *)&topologydata.listdata[0].rssi,

(void *)&AssociatedDevList[0].linkInfo.rxLqi,1); //RSSI 的值的拷贝

NLME_GetCoordExtAddr(topologydata.listdata[0].extneighbor); //父亲的长地址 cnt=1;

for(i=0;i<15;i++) {

if((neighborTable[i].neighborAddress!=0xFFFE) && ((neighborTable[i].neighborExtAddr[0] != 0x00) || (neighborTable[i].neighborExtAddr[1] != 0x00) || (neighborTable[i].neighborExtAddr[2] != 0x00) || (neighborTable[i].neighborExtAddr[3] != 0x00) || (neighborTable[i].neighborExtAddr[4] != 0x00) || (neighborTable[i].neighborExtAddr[5] != 0x00) || (neighborTable[i].neighborExtAddr[6] != 0x00) || (neighborTable[i].neighborExtAddr[7] != 0x00))) {

osal_memcpy((void *)topologydata.listdata[cnt].extneighbor, (void *)neighborTable[i].neighborExtAddr,8); //长地址拷贝 osal_memcpy((void *)&topologydata.listdata[cnt].shortneighbor, (void *)&neighborTable[i].neighborAddress,2); //短地址拷贝 osal_memcpy((void *)&topologydata.listdata[cnt].rssi,

(void *)&neighborTable[i].linkInfo.rxLqi,1); //RSSI 的值的拷贝 cnt++; if(cnt >= 4) {

break; } } }

topologydata.cnt=cnt;

topologydata.shortself=NLME_GetShortAddr(); //自己的短地址

osal_memcpy((void *)&topologydata.extself,(void *)NLME_GetExtAddr(),8);//自己长地址 topologydata.head=SENADDR;//SENADDR=0x05

MeshEnd_SendSensorMessage( (uint8 *)&topologydata , 12+cnt*11 ); }

第 31 页 共 33 页

本文来源:https://www.bwwdw.com/article/ll7p.html

Top