实战16-zigbee网络基于rssi实现两点间测距以太网简单_第1页
实战16-zigbee网络基于rssi实现两点间测距以太网简单_第2页
实战16-zigbee网络基于rssi实现两点间测距以太网简单_第3页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、Zigbee 简单测距实验利用 RSSI 值简单定位2014/3/28OSAL 是协议栈的躯干,可以理解为一个超级简单的操作系统目录前言2必要条件2原理图2编程参考2准备工作3源码分析311 前言经过前面的学习,我终于来到山顶上了。学习 Z-Stack 是的目的,而前面的学习只是为学习 Z-Stack 协议栈做铺垫。没有前面的知识我将很难有学成今后的实验。下面将进入 zigbee 应用。本实验中主要是利用通信中的两节点 RSSI 值(RSSI 是(Received Signal Strength Indication)接收信号强度指示),换算出相应的距离。其常用的描述方程:d = 10n其中是

2、当前距离的信号强度指示,境相关的指数。dbm,是相隔一米处的信号强度指示,n 是与环2 必要条件A 硬件1、 SmartRF 系列开发板,CC2530 或者 CC2531 2、 CC-Debugger 仿真器3、 MiniBoard-ENC28J60B1、 IAR for 8051 开发环境,版本:8.202、 Flash Programmer 固件烧写3、 Source Insight3.5 代码阅读。3 原理图见 CC2530 开发板资料-0 开始:入手开发套件-原理图-SCH-NewSmartRF-V1.0.pdf 这是板子的原理图。4 编程参考OSAL 实验中,需要参考的有两份文档1、

3、 HALAPI.pdf(位于协议栈安装目录DriverTexas),对于英语比较好一点的读者可以直接阅读InstrumentsZStack-CC2530-2.5.1a这份英文资料,这个是由 TI 提供的。还有一份中文文档在开发板资料0 开始:入手开发套件协议栈中API(中).pdf提供资料的目录下 CC2530中文件中文翻译HAL 驱动2、 Z-Stack API.pdf(位于协议栈安装目录 Texas Instrument ZStack-CC2530-2.5.1a),对于英语比较好一点的读者可以直接阅读这份英文资料,这个是由 TI 提供的。还有一份中文文档在提供资料的目录下 CC2530 开

4、发板资料0 开始:入手开发套件协议栈中中文件中文翻译ZStack API 接口(中).pdf2此函数定义在 BindTable.c 文件中,读者可以使用 SI 创建工程,并用其搜所功能定位bindAddEntry 函数。5 准备工作使用 SourceInsight3.5 来创建一个代码阅读工程,来帮助与中级篇都有说明,请参考之前的说明。学习。具体步骤在基础篇6 源码分析请将 CC2530 开发板资料-4 实战:ZIGBEE 实战战-实战 16:zigbee 简单测距实验下的工 程 TestRoutine_lib到 协 议 栈 的 安 装 目 录 下TexasInstrumentZStack-C

5、C2530-2.5.1aProjectszstackSles 目录下双击打开 IAR 工程 TestRoutine.EWW)为了能使终端设备在刚上电时就将自己的父备加入到自己的绑定表中。在终端设备的ZDO_SE_CHANGE 事件处理中,加入了绑定代码。同时启动 TestRoutine_SEND_MSG_EVT事件,即 0.1 秒钟定时器。3在 TestRoutine_bindAddEntry 函数点将自己的父设备添加到自己的绑定表中,系统函数 NLME_GetCoordShortAddr 是获得自己父设备的网络地址。系统函数 bindAddEntry 执行绑定操作。具体的代码见下图所示。完成

6、绑操作之后,节点就可以向自己的父设备发送相应的消息,在TestRoutine_SEND_MSG_EVT 事件中可以看到,节点向父设备发送的数据为OxFF。此数据没有任何实际意义,只是作为父设备判断的依据。所以在协调器的ING_MSG_CMD系统事件中通过判断来自终端的信息,并通过ingMSGPacket_t 事件结构中rssi 成员此进的RSSI 值。ingMSGPacket_t 事件结构如下所示。4从ingMSGPacket_t 结构体中rssi 的定义可知,它的数据类型是有符号八位数据。再者根据实际情况,rssi 一般为负值。所以结构体中的rssi 值为负数,而负数在储方式是以二进制的补码

7、形式存放的。所以要进行相应的转换。具体见下图代码。的存代码中的rssi_value = (rssi_value-1);的指令是将实际 rssi 值转换成了绝对值(负数二进制的源码,反码,补码知识用户可以查看相应的资料)。在代码中也启用了条件编译指令。本实验采用的方案是将rssi 值发送给电脑,让电脑对其进行相应地换算。Net_SendData 函数是向电脑断发送数据函数。为了能够实现通过以太网向电脑端发送数据,必须初始化网卡驱动。所以在任务实始化函数中,加入了网卡驱动函数,同时也向任务网络系统消息。在按键处理函数中,在按键 SW2 加入手TCPserver 端发起连接。这部分代码主要是在协调器

8、中起作用。因为在这个系统中,协调器负责向 TCPServer 端发送数据,所以连接必须在协调器端完成。同时根据是 server,还是 cnt 来决定是发起连接还是端口。在 SW3 中增加了手动断开连接。在 SW4 部分我加入了修改网卡在网络的 IP 地址,修改成功之后,必须重新启动才能生效,见下面的源码。在源码中没有加入了相关的预处理指令,目的是为了增加翻译的灵活性,节省的 FLASH。在修改网卡的 IP 地址时,通过闪烁 LED1 或 LED25来指示修改成功与否。关与 TCP 部分的知识不是说明。zigbee 学习的重点,在这里不会详细在本实验中,网卡默认的 IP 是 6,上位机默认的 I

9、P 是 04。端口是 8000。如果用户需要修改,可以调用 Set_RemoateIP 函数修改函数中的源码部分。IP 地址,详细使用见 SW4 处理在编译之前,需要在协调器工程中定义两个宏:一个是 ENC28J60=TRUE,ENC_RELEASE。只有这样,网卡的驱动程序才会被编译进程序。如下图所示。再者加上一个搜索路径。6源码的分析就到这里,下面我就将程序下到板子上看看实验现象。在此实验中最少需要 2块的开发板。一个作为协调器,一个作为终端设备。在编译时,在 IAR 工程的左侧选择 CoordinatorEB,点击 Rebuild ALL 。完成时将程序烧录到板子上,此时板子就是网络中的

10、协调器,它将会显示终端设备发送的信息。编译完协调器,再编译终端设备。在 IAR 工程的左侧选择 EndDeviceEB,点击 Rebuild ALL 。完成时将程序烧录到板子上,此时板子就是网络中的终端设备。它在上电时会搜索网络并加入。终端设备会每 0.1s 向父节点发送一次数据。zigbee 设备中没有对rssi 与距离进行换算,而将主要的换算工作放在上位机上。上位机上的源码我已经提拱,详见工程实验目录下的 PC 上的源码或 android 设备源码。下图是 PC 端的上位机程序,在测量过程显示的距离。7其中标定按钮用与简单的校准。标定的过程如下:先将两个测量的设备放在相隔 1m 处等待RSSI 值稳定后,点击标定按钮标定完成之后

温馨提示

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

评论

0/150

提交评论