无线传感器网络实验指导书

合集下载

无线传感器网络实验报告

无线传感器网络实验报告

一、实验背景随着物联网技术的飞速发展,无线传感器网络(Wireless Sensor Networks,WSN)作为一种重要的信息获取和传输手段,在军事、环境监测、智能交通、智能家居等领域得到了广泛应用。

为了深入了解无线传感器网络的工作原理和关键技术,我们进行了本次实验。

二、实验目的1. 熟悉无线传感器网络的基本概念和组成;2. 掌握无线传感器网络的通信协议和拓扑结构;3. 熟悉无线传感器网络的编程与调试方法;4. 通过实验,提高动手能力和实践能力。

三、实验内容1. 无线传感器网络概述无线传感器网络由传感器节点、汇聚节点和终端节点组成。

传感器节点负责感知环境信息,汇聚节点负责收集和转发数据,终端节点负责处理和显示数据。

传感器节点通常由微控制器、传感器、无线通信模块和电源模块组成。

2. 无线传感器网络通信协议无线传感器网络的通信协议主要包括物理层、数据链路层和网络层。

物理层负责无线信号的传输,数据链路层负责数据的可靠传输,网络层负责数据路由和传输。

3. 无线传感器网络拓扑结构无线传感器网络的拓扑结构主要有星形、树形、网状和混合形等。

星形拓扑结构简单,但易受中心节点故障影响;树形拓扑结构具有较高的路由效率,但节点间距离较长;网状拓扑结构具有较高的可靠性和路由效率,但节点间距离较远。

4. 无线传感器网络编程与调试本实验采用ZigBee模块作为无线通信模块,利用IAR Embedded WorkBench开发环境进行编程。

实验内容如下:(1)编写传感器节点程序,实现数据的采集和发送;(2)编写汇聚节点程序,实现数据的收集、处理和转发;(3)编写终端节点程序,实现数据的接收和显示。

5. 实验步骤(1)搭建实验平台,包括传感器节点、汇聚节点和终端节点;(2)编写传感器节点程序,实现数据的采集和发送;(3)编写汇聚节点程序,实现数据的收集、处理和转发;(4)编写终端节点程序,实现数据的接收和显示;(5)调试程序,确保各节点间通信正常;(6)观察实验结果,分析实验现象。

无线传感器网络实验手册cygwin

无线传感器网络实验手册cygwin

XLUC目录实验一开发环境搭建实验 (2)实验二程序烧录实验 (10)实验三硬件接口实验 (13)实验四 ADC采样实验 (19)实验五串口通讯实验 (24)实验六点对点射频实验 (32)实验七传感器添加实验 (39)实验八基于网关板的pc机数据采集和分析实验 (48)实验九基于sink节点数据采集和分析实验 (57)实验十基于web的数据录入和数据访问实验 (61)实验一开发环境搭建实验以下步骤描述了如何逐步搭建无线传感器网络实验开发环境注:本开发环境是在Windows XP操作系统下搭建的先决条件:∙AtoseNet环境:Cygwin atos4tinyos.msi安装包,在光盘的路径为,无线传感器网络1.5\TinyOS2\TinyOS_install\atos4tinyos.msi 。

∙Keil C51编译器安装包:c51v808a.exe,在光盘的路径为,无线传感器网络1.5\TinyOS2\TinyOS_install\c51v808a.exe 。

∙IIS服务器:准备一张Windows XP professional 的安装光盘。

∙SQL SERVER 2005数据库管理工具:准备一张SQL SERVER 2005的安装光盘。

创建AtoseNet环境:Cygwin1.打开无线传感器网络光盘,进入如下路径\TinyOS2\TinyOS_install\, 双击atos4tinyos.msi 进入安装过程2.进入如下界3.单机下一步4.选择合适的路径(这里选择缺省路径),点击“下一步”5.单击安装,进入安装进程如下6.安装完成后将出现如下两个界面7.选择完路径后单击“点击开始安装”8.进入Cygwin安装界面,安装完成后自动弹出如下界面:9.请任意键后即可完成安装。

桌面上会自动建立Cygwin的快捷方式,单击进入即可安装Keil C51 编译器10.打开无线传感器网络光盘,进入如下路径\TinyOS2\TinyOS_install\, 双击c51v808a.exe 进入安装过程11.单击“Next”并且选中“I agree to all the terms of the preceding LicenseAgreement”12.选择默认的路径13.选择安装路径后,单击“Next”:14.输入用户名等资料后单击“Next”进入安装进度界面:15.单击“Finish”完成安装过程。

无线传感器网络实验大纲(ZHJ)V4

无线传感器网络实验大纲(ZHJ)V4
课程教学目标
本课程侧重于无线传感器网络开发技术,采用 ZigBee 标准的 CC2530 无线 SOC 芯片及 传感器构成节点硬件平台,涉及 IAR 工程开发与 I/O、时钟源与定时器、中断、串行通信; AD 与传感器;Zigbee 协议栈 Zstack 中数据传输、数据包分析、串口通信、组网通信、网络 管理。
任务是传授无线传感器网络的实验知识、实验方法,培养实验技能,具体包含两个方面 ①编译软件工具的使用、单片机 C 语言编程、软件仿真调试、硬件验证训练;②案例深入 剖析、文档资料总结及报告写作。
教学方法和教学手段
本课程主要采用实验、实验报告、现场答疑、现场验收、测验方式手段。总体内容依据 “深入浅出、阶梯推进”教学模式设置,设计经典工程案例让学生全程直观感受及亲身体验, 培养物联网专业要求的工程设计实践能力。
实验教学方法采用“做中学、启发讨论、因材施教”式教学法,通过做来学,引导学生 掌握实践基础知识,确保学生切实高效体验。实时跟踪实验过程,现场启发和讨论交互,充 分调动学生积极作用。因材施教,给通才定规则,给天才留空间,实验教学中挖掘学生的潜 在能力,为个性化培养提供场地、实验仪器等方面开放式支持。
课程内容及基本要求
序 项目名

类程
设计
掌握开发软硬件环境配置;掌握建立一个 IAR 简单工程和配置,
编程实现 CC2530 的 I/O 扩展 LED 自动闪烁、按键应用。
3
时钟源 02 与定时

中断应 03 用
串行通 04 信与显
示 传感器 05 应用 Zstack 06 数据传 输 Zstack 07 数据包 分析 Zstack 08 串口应 用 无线温 09 度检测 Zstack 10 广播通 信 Zstack 11 组播通 信 Zstack 12 网络管 理基础 Zstack 13 网络管 理扩展

无线传感器网络技术实验指导书(苏明霞)

无线传感器网络技术实验指导书(苏明霞)

⽆线传感器⽹络技术实验指导书(苏明霞)实验⼀外部中断实验1.实验环境硬件:ZigBee(CC2530)模块,ZigBee下载调试板,USB仿真器,PC机。

软件:IAR Embedded Workbench for MCS-512.实验⽬的阅读 ZigBee2530开发套件 ZigBee 模块硬件部分⽂档,熟悉 ZigBee 模块按键接⼝中断使⽤⽅式。

使⽤ IAR 开发环境设计程序,利⽤ CC2530 的电源管理控制寄存器控制系统⼯作状态。

3.实验原理3.1硬件接⼝原理按键接⼝,如图3.1.1所⽰。

图3.1.1CC2530开发板有三个按键,⼀个复位按键。

其余两个按键可以通过编程进⾏控制。

当按键按下时,相应的管脚输出低电平。

在此我们采⽤下降沿触发中断的⽅式来检测是否有按键按下。

ZigBee(CC2530)模块 LED 硬件接⼝图 3.1.2 LED 硬件接⼝ CC2530 相关寄存器图3.1.2 P1寄存器图3.1.3 P1SEL寄存器图3.1.4 P1DIR寄存器图3.1.5 P1INP 寄存器图3.1.6 P2INP 寄存器图3.1.7 PICTL寄存器图3.1.8 P1IEN 寄存器图3.1.9 IEN2 寄存器4、实验内容按键按下⼀次,led1亮,led2灭。

按键按下2次,led1灭,led2亮。

按键按下3次,都亮。

按键按下4次,都灭。

下降沿触发中断。

5、注意事项1、实验前,请正确安装RF2530模块,注意其丝印⽅向应与底板丝印⽅向⼀致,严禁反接;2、实验过程中,严禁带电插拨器件,防⽌损坏电路;3、实验过程中,严禁⽤⼿触摸裸露的器件特别是芯⽚,防⽌造成短路或损坏芯⽚;4、所有模块出⼚前均已调试完毕,除⾮有特别说明,否则不建议⾃⾏对电路中可调部分进⾏调节。

6、实验步骤1、将⼀个RF2530模块插⼊到WSN通⽤底板的相应位置。

2、zigbee多功能仿真器的⼀端通过10 pin下载线接到WSN通⽤底板的JTAG 接⼝上,另⼀端通过USB线接到PC机上,并通过SmartRF Flash Programmer软件正确下载⾃⼰编写的实验源码。

【优质】zigbee实验指导书-实用word文档 (19页)

【优质】zigbee实验指导书-实用word文档 (19页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==zigbee实验指导书篇一:zigbee实验无线传感网络设计-----基于手机(联想a698t)计算机科学与技术1205班0911120513孙斌1.手机中所包括的终端设备及传感器:手机操作系统为Android OS 4.0网络连接 GSM/TD-SCDMA/GPRS/EDGE支持频段:2G:GSM 900/1800/19003G:TD-SCDMA 201X-2025MHz支持WAPI兼容WIFI(802.11n) 电容触摸屏摄像头传感器类型为CMOS支持重力传感器支持光线传感器支持距离传感器电容触摸屏2.家庭环境智能监测系统设计家庭环境智能监测系统是智能家居系统中至关重要的一部分,一般包括温度、湿度、光线、火灾,.有毒气体等的监测。

通过获得的这些对象信息,用户可以多种方式感知家庭内部的环境信息并且对家庭进行相应的处理和控制。

当采集到的光强数据低于设定值时,用户可以通过软件调节灯光的强弱;当感知到的温度高于或低于人的舒适温度时,系统自动打空调;当家庭环境的湿度过低时,管理中心控制加湿器的打开;当家庭煤气发生泄漏或发火灾时候,烟雾传感器将感知数据发送给用户,实施报警。

家庭环境智能监测为用户提供了可靠、完善的居所环境信息,使得人们的生活更加舒适、高效、安全。

本系统设计特点如下:(1)提供全面的家庭环境真实信息,保证了家庭内部的安全。

(2)据弃了有线家庭环境监测系统铺设成本高,扩展性和维护性差的缺点。

(3)不受地理和空间限制,只要在网络覆盖范围内,就可以通过手机随时掌握家庭环境的最新信息。

图1家庭环境智能监测系统结构如图1所示,由家庭内部网络、家庭网关和外部网络三部分组成,各自功能如下:(1)家庭内部网络采用ZigBee无线技术实现内部网络的组建。

网络中主节点举起网络后,传感器节点以关联方式加入ZigBee网络,在每个传感器节点上都搭载了温度、湿度、光强和烟雾传感器以及LED灯。

《无线传感器网络》实验指导书

《无线传感器网络》实验指导书

《无线传感器网络》 实验指导书机械与电气工程学院郑晖编广州大学 2011年目录1实验一、处理器基础实验 (4)1.1 实验目的 (4)1.2 参考资料 (4)1.3 实验内容及步骤 (4)1.3.1开发环境搭建 (4)1.3.2了解开发环境的使用 (4)1.3.3基本I/O读写 (6)1.3.4简单A/D转换 (7)1.3.5基本定时 (8)1.3.6PWM输出 (8)2实验二、点到点无线通信实验 (9)2.1 实验目的 (9)2.2 参考资料 (9)2.3 实验内容及步骤 (9)2.3.1发送模块代码分析 (9)2.3.2接收模块代码分析 (9)2.3.3运行示例项目 (9)2.3.4应用设计 (10)3实验三、无线传感器组网实验 (11)3.1 实验目的 (11)3.2 参考资料 (11)3.3 实验内容及步骤 (11)3.3.1协调器模块代码分析 (11)3.3.2路由器模块代码分析 (12)3.3.3终端模块代码分析 (12)3.3.4运行示例项目 (14)3.3.5修改示例项目 (14)4大作业 (15)4.1 目的 (15)4.2 任务 (15)4.2.1题目1:LED跑马灯控制 (15)4.2.2题目2:超声波测距 (15)4.2.3题目3:语音通信 (15)4.2.4题目4:其它经老师同意的题目 (15)实验课时安排建议实验名称 课时实验一处理器基础实验 2实验二点到点无线通信实验 24实验三无线传感器组网实验1 实验一、处理器基础实验实验目的1.11. 掌握开发环境的搭建方法;2. 掌握基本调试步骤及方法;3. 掌握基本I/O、定时器、A/D的编程方法;1.2 参考资料1. IAR安装步骤说明:“C51RF-CC2530系统使用说明书\ IAR安装与使用.pdf”;2. 无线龙CC2530模块说明书:“C51RF-CC2530-PK使用说明书\C51RF-CC2530-PK使用说明书V1.01.pdf”;3. IAR开发环境使用方法:“C51RF-CC2530系统使用说明书\ IAR IDE用户手册.pdf”;4. CC2530芯片说明书:“C51RF-CC2530数据手册\CC253x.pdf”;5. 本实验指导书所附例程;“C51RF-CC2530-PK使用说明书\CC25306. 无线龙CC2530模块基础实验说明:基础实验V1.00.pdf”;7. 无线龙CC2530模块基础实验例程:“C51RF-CC2530演示程序\CC2530单片机基础实验”;1.3 实验内容及步骤1.3.1 开发环境搭建按照参考资料[1]、[2]的指导,安装IAR软件,安装仿真器驱动程序。

无线传感器网络实验报告

无线传感器网络实验报告

无线传感器网络实验报告实验报告:无线传感器网络的应用与优化探究一、实验目的本次实验旨在探究无线传感器网络的应用与优化,具体包括传感器网络的组网方式、数据传输协议的选择与优化等。

二、实验原理及工具1.传感器网络组网方式传感器网络通常采用星型、树型、网状三种组网方式。

星型组网结构简单,但单点故障时整个系统会瘫痪;树型组网结构便于数据的传输与管理,但在拓扑结构发生变化时需要重新组网;网状组网结构形式多样,具有较强的灵活性,但网络维护复杂。

本实验将分别对比三种组网方式的性能差异。

2.数据传输协议的选择与优化实验将分别采用无线传感器网络中常用的LEACH、BCP、SPIN协议进行数据传输。

并通过测试比较它们在不同条件下的性能表现,优化协议选择与参数设置,提高网络的传输效率和能耗。

3.实验工具实验中将使用Contiki操作系统,该操作系统是专门为无线传感器网络设计的,支持多种协议,并提供了实验所需的模拟环境。

三、实验内容及步骤1.组网方式的测试(1)搭建星型、树型、网状三种不同的传感器网络拓扑结构。

(2)分别记录每种网络结构在传输运行时的稳定性、延迟、能耗等性能指标,并进行对比分析。

2.数据传输协议的测试及优化(1) 安装Contiki操作系统,选择LEACH、BCP、SPIN协议,并设置相应的参数进行数据传输实验。

(2)改变实验条件(如节点密度、网络负载等),测试和比较三种协议在不同条件下的性能表现。

(3)根据实验结果,优化协议的参数设置,并比较优化后的协议和原始协议的性能差异。

四、实验结果及讨论1.组网方式的测试实验结果显示,星型组网方式具有简单易实现、维护成本低的特点,但存在单点故障的风险,一旦发生节点故障,整个系统将瘫痪。

树型组网方式在数据传输和管理方面具有一定的优势,但拓扑结构变化时需要重新组网。

网状组网方式相对灵活,但也增加了网络维护的复杂性。

根据实验结果,可以根据具体应用场景的要求选择最适合的组网方式。

无线传感器网络实验指导——学生用2

无线传感器网络实验指导——学生用2

主要事项1.实验必须小心谨慎,一丝不苟;2.对各个模块必须轻拿轻放;3.对损坏的器件将照价赔偿;4.要准备跳线;5.每个同学要记录实验箱号码;6.带几个U盘考原程序;7.写一篇实验感想。

实验八CC2530 ADC实验一、硬件环境智能主板(可以不接传感器)见图1、cc2530仿真器(cc debuger),1根JTAG (10芯线),2根USB(A/B)或1根USB(A/B)和1根8路USB(A/B)。

图1 智能主板二、软件环境安装IAR:调试程序;安装SmartRF Flash Programer:烧写程序。

三、实验步骤1.新建一个文件夹新建一个文件夹如zhangsan(以英文姓名命名),将\OURS_CC2530LIB\lib9(ADC)单独拷贝粘贴成一个单独的文件夹lib9(ADC)放在zhangsan文件夹中,在zhangsan件夹中,再建一个文件夹,以实验项目命名,如adc。

2.创建一个工作区窗口使用IAR 开发环境首先应建立一个新的工作区workspace。

在一个工作区中可创建一个或多个工程。

用户打开IAR Embedded Workbench 时,已经建好了一个工作区,或选择File\New\Workspace。

可创建新的工程并把它放入工作区。

也可选择打开最近使用的工作区或向当前工作区添加新的工程。

3. 建立一个新工程单击Project 菜单,选择Create New Project,弹出图2选择工程类型对话框,确认Tool chain 栏已经选择8051,单击OK 按钮。

图2选择工程类型将工程保存在adc文件夹中,更改工程名,如adc,单击Save保存,如图3所示,这样工程就出现在工作区窗口中了,如图 3 所示。

工程保存后的界面如图4所示图4工程保存后的界面系统产生两个创建配置:调试(Debug)和发布(release),我们只使用Debug。

项目名称后的星号*表示修改还没有保存。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

无线传感器网络实验指导书信息工程学院实验一 质心算法一、实验目的掌握合并质心算法的基本思想;学会利用MATLAB 实现质心算法;学会利用数学计算软件解决实际问题。

二、实验内容和原理无需测距的定位技术不需要直接测量距离和角度信息。

定位精度相对较低,不过可以满足某些应用的需要。

在计算几何学里多边形的几何中心称为质心,多边形顶点坐标的平均值就是质心节点的坐标。

假设多边形定点位置的坐标向量表示为p i = (x i ,y i )T ,则这个多边形的质心坐标为:例如,如果四边形 ABCD 的顶点坐标分别为 (x 1, y 1),(x 2, y 2), (x 3, y 3) 和(x 4,y 4),则它的质心坐标计算如下:这种方法的计算与实现都非常简单,根据网络的连通性确定出目标节点周围的信标参考节点,直接求解信标参考节点构成的多边形的质心。

锚点周期性地向临近节点广播分组信息,该信息包含了锚点的标识和位置。

当未知结点接收到来自不同锚点的分组信息数量超过某一门限或在一定接收时间之后,就可以计算这些锚点所组成的多边形的质心,作为确定出自身位置.由于质心算法完全基于网络连通性,无需锚点和未知结点之间的协作和交互式通信协调,因而易于实现。

三、实验内容及步骤该程序在Matlab 环境下完成无线传感器中的质心算法的实现。

在长为100米的正方形区域,信标节点(锚点)为90个,随机生成50个网络节点。

节点的通信距离为30米.需完成:分别画出不同通信半径,不同未知节点数目下的误差图,并讨论得到的结果所用到的函数:1. M = min(A)返回A 最小的元素.如果A 是一个向量,然后min (A )返回A 的最小元素。

如果A 是一个矩阵,然后min (A)是一个包含每一列的最小值的行向量。

2。

rand()12341234,,44x x x x y y y y x y ++++++⎛⎫= ⎪⎝⎭X = rand返回一个单一均匀分布随机数在区间 (0,1)。

X = rand(n)返回n——n矩阵的随机数字。

3。

S = sum(A)返回 A 沿其大小不等于 1 的第一个数组维度的元素的总和.如果A是一个向量,sum(A)可返回元素的总和。

如果A是一个矩阵,然后sum(A)返回一个行向量包含每个列的总和。

4。

inf无穷大此 MATLAB 函数返回正无穷大的 IEEE 算术表示.除以零和溢出等操作会生成无穷值,从而导致结果因太大而无法表示为传统的浮点值5. zeros —创建全零数组X = zeros返回标量0.X = zeros(n) -由—n矩阵的零返回n。

6。

plot(X,Y)画出Y随X变化的2D 曲线。

plot(X,Y,o)用o描述(X,Y)这一点。

7。

n= norm(v)返回的 2—范数或欧氏范数的向量v。

n = norm (v,p)返回向量范数定义的sum(abs(v)^p)^(1/p),这里p是任何正值, Inf 或-Inf.8.s = num2str(A)数值数组转换为字符数组输出,它表示的数字。

输出格式取决于原始值的大小。

num2str是用于标签和标题情节与数字值.所用到的变量:xy:均匀分布的信标节点位置矩阵n:未知节点数量SS:未知节点位置矩阵dm:通信半径cent:质心MM:未知节点估计坐标矩阵e:估计位置和实际位置距离矩阵(误差)四、源程序clearclc%锚节点节点设置for i=1:1:10%1到10,步长是1;画出锚点,前一个括号是标号。

for j=1:1:10x(j+(i-1)*10)=(i—1)*10;y(j+(i-1)*10)=(j—1)*10;endendfigure%出现图形界面plot(x,y,’k.'); %黑点hold on %继续画图axis([0 100 0 100]);xy=[x;y];把X,Y的坐标付给矩阵XYxy;hold onxm=90;ym=90;n=50;%未知节点for i=1:1:nSx(i)=rand(1,1)*xm;%产生一个一行一列的矩阵;依然是0—1中任意一个值。

Sy(i)=rand(1,1)*ym;plot(Sx(i),Sy(i),’r*’);%红星xlabel(’x轴’);ylabel(’y轴');hold onenddm=30 ;%通信半径m=100;一共100个点;for j=1:1:n%未知节点循环;每一个未知节点都与在通讯范围内所有的锚点算一遍距离,放到一个矩阵中,通讯距离以外的点为零。

SS=[Sx(j);Sy(j)];k=0;%表示通信半径内的信标节点数for i=1:1:md=norm((xy(:,i)—SS),2);%2范数就是求直线距离;不管行,第i 列;if d〈=dm 是否在范围内,取出信标节点,放到XX,yy中xx(j,i)=xy(1,i);第1行第i列;%X坐标都给了XXyy(j,i)=xy(2,i);第2行第i列;k=k+1;elsexx(j,i)=0;yy(j,i)=0;endendif k~=0%k不等于零cent(:,j)=[sum(xx(j,:));sum(yy(j,:))]/k;%第j行的所有列 elsecent(:,j)=0;令第j列的所有元素为零.endplot(cent(1,j),cent(2,j),'o') ;hold onplot([cent(1,j) Sx(j)],[cent(2,j) Sy(j)],’R--’) ;%估计位置和真实位置连接title('Centroid’);hold onMM=[cent(1,j);cent(2,j)];e(j)=norm((MM—SS),2); %定位误差end% figure/dm% axis([0 n 0 1])% j=1:1:n% plot(j,e(j),’—r.’)% hold on% title('Centroid')% E=sum(e)/nE=sum(e)/(n*dm);disp(['定位误差=’,num2str(E)]); %将结果转换成字符串输出实验二 DV—hop算法一、实验目的掌握DV-hop算法的基本思想;学会利用MATLAB实现DV—hop算法;学会利用数学计算软件解决实际问题。

二、实验内容和原理DV—Hop算法解决了低锚点密度引发的问题,它根据距离矢量路由协议的原理在全网范围内广播跳数和位置。

已知锚点L1与L2、L3之间的距离和跳数。

L2计算得到校正值(即平均每跳距离)为(40+75)/(2+5)=16。

42m。

假设传感器网络中的待定位节点A从L2获得校正值,则它与3个锚点之间的距离分别是L1=3×16。

42,L2=2×16.42,L3=3×16。

42,然后使用多边测量法确定节点的位置。

图1 DV hop 算法示意图三、实验内容及步骤该程序在Matlab环境下完成无线传感器中的DV-Hop算法的实现.在长为100米的正方形区域,随机生成100个网络节点,其中信标节点(锚点)为8个,未知坐标节点为92个。

节点的通信距离为50米.可算出最短路经算法计算节点间跳数、每个信标节点的校正值并可用用跳数估计距离。

(1000—1000, 300个节点,60个信标节点)所用到的函数:参见上节:质心算法;需完成:1)运行程序,生成随机分布的节点;2)更正程序中的错误,求每个信标节点的校正值;3)继续运行程序,利用跳数估计待求节点的距离.四、源程序%~~~~~~~~~~ DV—Hop算法~~~~~~~~~~ ~~~~~~~~~~ ~~~~~~~~~~ % BorderLength-—---正方形区域的边长,单位:m% NodeAmount—-----—网络节点的个数% BeaconAmount——-信标节点数% Sxy--—-——-—--——--用于存储节点的序号,横坐标,纵坐标的矩阵%Beacon-———--—-—-信标节点坐标矩阵;BeaconAmount*BeaconAmount%UN——-——--—-—-——未知节点坐标矩阵;2*UNAmount% Distance-----—未知节点到信标节点距离矩阵;2*BeaconAmount%h——-—---—--———--节点间初始跳数矩阵%X—--———--——-———-节点估计坐标初始矩阵,X=[x,y]’% R-——-——-—-———-———--节点的通信距离,一般为10-100mclear,close all;BorderLength=100;NodeAmount=100;BeaconAmount=8;UNAmount=NodeAmount-BeaconAmount;R=50;%D=zeros(NodeAmount,NodeAmount);%未知节电到信标节点距离初始矩阵;BeaconAmount行NodeAmount列h=zeros(NodeAmount,NodeAmount);%初始跳数为0;NodeAmount行NodeAmount列X=zeros(2,UNAmount);%节点估计坐标初始矩阵%~~~~~~~~~在正方形区域内产生均匀分布的随机拓扑~~~~~~~~~~~~~~~~~~~~C=BorderLength.*rand(2,NodeAmount);%带逻辑号的节点坐标Sxy=[[1:NodeAmount];C];%将1-NodeAmount与C上下合到一起,产生一个总矩阵。

Beacon=[Sxy(2,1:BeaconAmount);Sxy(3,1:BeaconAmount)];%信标节点坐标UN=[Sxy(2,(BeaconAmount+1):NodeAmount);Sxy (3,(BeaconAmount+1):NodeAmount)];%未知节点坐标%画出节点分布图plot(Sxy(2,1:BeaconAmount),Sxy(3,1:BeaconAmount),’r*',Sxy(2,(BeaconAmount+1):NodeAmount),Sxy(3,(BeaconAmount+1):NodeAmount),'k.')xlim([0,BorderLength]);ylim([0,BorderLength]);title(’* 红色信标节点。

黑色未知节点')%~~~~~~~~~~~~~~~~~~~~~~~~~~~~初始化节点间距离、跳数矩阵~~~~~~~~~~~~~~~~~~~~~~for i=1:NodeAmountfor j=1:NodeAmountDall(i,j)=((Sxy(2,i)—Sxy(2,j))^2+(Sxy(3,i)-Sxy(3,j))^2)^0.5;%所有节点间相互距离if (Dall(i,j)<=R)&(Dall(i,j)〉0)h(i,j)=1;%初始跳数矩阵elseif i==jh(i,j)=0;%自己到自己的距离else h(i,j)=inf;endendend%~~~~~~~~~~~最短路经算法计算节点间跳数~~~~~~~~~~~~~~~~~~~~ for k=1:NodeAmountfor i=1:NodeAmountfor j=1:NodeAmountif h(i,k)+h(k,j)〈h(i,j)%min(h(i,j),h(i,k)+h(k,j))h(i,j)=h(i,k)+h(k,j);endendendendh%~~~~~~~~~~~~~求每个信标节点的校正值~~~~~~~~~~~~~~~~~~~~~~~~~~h1=h(1:BeaconAmount,1:BeaconAmount);%从大矩阵中取出信标节点的跳数D1=Dall(1:BeaconAmount,1:BeaconAmount);%从大矩阵中取出信标节点的距离for i=1:BeaconAmountdhop(i,1)=sum(D1(i,:))/sum(h1(i,:));%每个信标节点的平均每跳距离endD2=Dall(1:BeaconAmount,(BeaconAmount+1):NodeAmount);%新标节点与未知节点的距离,逗号前面是行的范围,后面是列的范围.for i=1:BeaconAmountfor j=1:UNAmountif min(D2(:,j))==D2(i,j)Dhop(1,j)= dhop (i,j);%未知节点从最近的信标获得校正值endendendDhop%~~~~~~~~~~~~~~~~用跳数估计距离~~~~~~~~~~~~~~~~~~~hop1=h(1:BeaconAmount,(BeaconAmount+1):NodeAmount)%未知节点到信标跳数,BeaconAmount行UNAmount列for i=1:UNAmounthop=Dhop(1,i);%hop为从最近信标获得的校正值Distance(:,i)=hop*hop1(:,i);%%Beacon行UN列;end% %~~~~~~~~~~~~~最小二乘法求未知点坐标~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~d=Distance;for i=1:2for j=1:(BeaconAmount-1)a(i,j)=Beacon(i,j)-Beacon(i,BeaconAmount);endend%a为第一个信标节点和最后一个信号节点的坐标差值,保留最后一个信标节点% a'A=—2*(a’);% d=d1’;for m=1:UNAmountfor i=1:(BeaconAmount—1)B(i,1)=d(i,m)^2—d(BeaconAmount,m)^2—Beacon(1,i)^2+Beacon(1,BeaconAmount)^2—Beacon(2,i)^2+Beacon(2,BeaconAmount)^2;% 前九个信标节点到未知节点的距离平方%最后信标节点到未知节点的距离平方%前九个信标节点横坐标平方%最后信标节点到未知节点的横坐标平方%前九个信标节点纵坐标平方% 最后信标节点纵坐标平方endX1=inv(A'*A)*A'*B; %inv是求逆矩阵X(1,m)=X1(1,1);X(2,m)=X1(2,1);end%X为估计的未知节点位置for i=1:UNAmounterror(Z,i)=(((X(1,i)—UN(1,i))^2+(X(2,i)-UN(2,i))^2)^0。

相关文档
最新文档