无线传感网络实验报告

合集下载

无线传感器网络实验报告

无线传感器网络实验报告

一、实验背景随着物联网技术的飞速发展,无线传感器网络(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)观察实验结果,分析实验现象。

传感网技术实验报告

传感网技术实验报告

传感网技术实验报告1. 引言传感网技术是一种集传感、计算和通信为一体的无线网络技术,广泛应用于物联网、智能家居、环境监测等领域。

本实验旨在探索和学习传感网技术的原理和应用,通过设计和构建一个简单的传感网系统,加深对传感网技术的了解和认识。

2. 实验目标本实验的主要目标如下:1. 理解传感网技术的基本原理和通信方式;2. 学习使用传感器采集环境数据,并通过传感网传输到中心节点;3. 实现传感节点之间的数据通信和协作。

3. 实验设备和材料本实验所需设备和材料如下:- 传感器节点:多个可编程节点,例如Arduino等;- 中心节点:一台计算机或单片机开发板;- 无线通信模块:用于传感节点之间的通信;- 传感器:根据实验需求选择合适的传感器;- 连接线:用于连接传感器节点和中心节点。

4. 实验步骤4.1 硬件搭建根据实验需求,将传感器节点和中心节点按照拓扑结构连接起来。

每个传感器节点连接一个或多个传感器,用于采集环境数据。

中心节点负责接收传感器节点的数据,并进行处理和存储。

4.2 软件编程针对传感器节点和中心节点,编写相应的软件程序。

传感器节点的程序需要实现数据采集、封装和发送,中心节点的程序需要实现数据接收、解析和处理。

4.3 网络通信配置配置传感节点之间的网络通信参数,包括无线通信模块的通信频率、传输速率和网络拓扑结构。

确保传感节点之间可以正常通信和协作。

4.4 实验数据采集和分析使用传感节点采集环境数据,例如温度、湿度等,并通过传感网传输到中心节点。

中心节点接收数据后进行分析和处理,比如计算平均值、最大值等。

4.5 实验结果展示将实验结果进行展示和分析,比如使用图表展示温度的变化趋势、湿度的时序分布等。

根据实验结果,可以对传感网系统进行优化和改进。

5. 实验总结本实验通过设计和构建一个简单的传感网系统,深入了解和学习了传感网技术的原理和应用。

从硬件搭建到软件编程,从网络通信配置到实验数据采集和分析,全面掌握了传感网技术的实际操作和应用方法。

无线传感网实验报告

无线传感网实验报告

Cent ral SouthUniversity无线传感器网络实验报告学院:班级:学号:姓名:时间:指导老师:第一章基础实验1了解环境1.1实验目的安装 IAR开发环境。

CC2530 工程文件创建及配置。

源代码创建,编译及下载。

1.2 实验设备及工具硬件:ZX2530A 型底板及CC2530 节点板一块,USB 接口仿真器,PC 机软件:PC 机操作系统 WinXP,IAR集成开发环境,TI 公司的烧写软件。

1.3实验内容1、安装IAR 集成开发环境IAR 集成开发环境安装文件所在光盘目录:物联网光盘\工具\C D-EW8051-76012、ZIBGEE 硬件连接安装完IAR 和 Smartrf Flash Programmer 之后,按照图所示方式连接各种硬件,将仿真器的20 芯 JTAG口连接到ZX2530A 型 CC2530 节点板上,USB 连接到PC 机上,RS-232串口线一端连接ZX2530A 型 CC2530节点板,另一端连接 P C机串口。

3、创建并配置 CC2530 的工程文件IAR是一个强大的嵌入式开发平台,支持非常多种类的芯片。

IAR 中的每一个 Project,都可以拥有自己的配置,具体包括Device 类型、堆/栈、Linker、Debugger 等。

(1)新建Workspace 和Project首先新建文件夹ledtest。

打开 IAR,选择主菜单File ->New -> Workspace 建立新的工作区域。

选择Project ->Create New Project -> Empty Project,点击 OK,把此工程文件保存到文件夹ledtest 中,命名为:ledtest.ewp(如下图)。

(2)配置Ledtest工程选择菜单Project->Options...打开如下工程配置对话框选择项 General Options,配置 Target 如下Device:CC2530;(3)Stack/Heap设置:XDATA stack size:0x1FF(4)Debugger 设置:Driver:Texas Instruments (本实验为真机调试,所以选择TI;若其他程序要使用IAR仿真器,可选 Simulator)至此,针对本实验的IAR 配置基本结束.4、编写程序代码并添加至工程选择菜单 File->New->File创建一个文件,选择File->Save 保存为main.c将 main.c 加入到 ledtest 工程,将实验代码输入然后选择 Project->Rebuild All 编译工程编译好后,选择Project->Download and debug 下载并调试程序下载完后,如果不想调试程序,可点工具栏上的按钮终止调试。

无线传感实验报告

无线传感实验报告

无线传感实验报告无线传感实验报告引言无线传感技术是一种基于无线通信的传感器网络技术,它可以实时地感知、采集和传输环境中的各种信息。

本实验旨在通过搭建一个简单的无线传感网络,探索其在实际应用中的潜力和限制。

实验目的1.了解无线传感技术的基本原理和应用领域。

2.学习搭建无线传感网络的基本步骤和方法。

3.研究无线传感网络在环境监测、智能家居等方面的实际应用。

实验步骤1.硬件准备:准备一台主控节点和多个从属节点,主控节点负责接收和处理从属节点发送的数据。

2.网络搭建:通过无线通信模块将主控节点和从属节点连接起来,形成一个无线传感网络。

3.传感器连接:将各个从属节点上的传感器与主控节点相连接,实现数据的采集和传输。

4.数据采集:设置从属节点的采样频率和采样范围,开始采集环境中的各种数据。

5.数据传输:从属节点将采集到的数据通过无线通信模块发送给主控节点。

6.数据处理:主控节点接收到数据后,进行数据处理和分析,得出有用的信息。

实验结果通过本实验,我们成功搭建了一个简单的无线传感网络,并实现了环境数据的采集和传输。

在实际应用中,无线传感技术可以广泛应用于环境监测、智能家居、农业等领域。

例如,在环境监测方面,我们可以通过无线传感网络实时监测空气质量、温湿度等参数,并及时采取相应措施保障人们的健康。

在智能家居方面,无线传感技术可以实现家庭设备的自动控制和远程监控,提高生活的便利性和舒适度。

在农业方面,无线传感技术可以监测土壤湿度、光照强度等参数,帮助农民科学种植,提高农作物的产量和质量。

实验总结通过本次实验,我们深入了解了无线传感技术的原理和应用。

无线传感网络可以实现分布式的数据采集和传输,具有灵活性和可扩展性。

然而,在实际应用中,我们也发现了一些问题和挑战。

首先,无线传感网络的能耗问题仍然存在,如何延长节点的电池寿命是一个需要解决的关键问题。

其次,无线传感网络的安全性也需要重视,如何保护数据的隐私和防止网络攻击是一个亟待解决的问题。

无限传感网络实验报告

无限传感网络实验报告

一、实验目的1. 了解无线传感网络的基本概念、组成和结构。

2. 掌握无线传感网络的基本操作和实验方法。

3. 通过实验,验证无线传感网络在实际应用中的可靠性和有效性。

二、实验内容1. 无线传感网络基本概念及组成无线传感网络(Wireless Sensor Network,WSN)是一种由大量传感器节点组成的分布式网络系统,用于感知、采集和处理环境信息。

传感器节点负责采集环境信息,并通过无线通信方式将信息传输给其他节点或中心节点。

无线传感网络主要由以下几部分组成:(1)传感器节点:负责感知环境信息,如温度、湿度、光照等。

(2)汇聚节点:负责将多个传感器节点的信息进行融合、压缩,然后传输给中心节点。

(3)中心节点:负责收集各个汇聚节点的信息,进行处理和分析,并将结果传输给用户。

2. 无线传感网络实验(1)实验环境硬件平台:ZigBee模块、ZB-LINK调试器、USB3.0数据线、USB方口线两根、RJ11连接线;软件平台:WinXP/Win7、IAR开发环境、SmartRFFlashProgrammer、ZigBeeSensorMonitor。

(2)实验步骤① 连接硬件设备,搭建无线传感网络实验平台;② 编写传感器节点程序,实现环境信息的采集;③ 编写汇聚节点程序,实现信息融合和压缩;④ 编写中心节点程序,实现信息收集和处理;⑤ 测试无线传感网络性能,包括数据采集、传输、处理等。

(3)实验结果分析① 数据采集:传感器节点能够准确采集环境信息,如温度、湿度等;② 传输:汇聚节点将多个传感器节点的信息进行融合和压缩,传输给中心节点;③ 处理:中心节点对采集到的信息进行处理和分析,生成用户所需的结果;④ 性能:无线传感网络在实际应用中表现出较高的可靠性和有效性。

三、实验总结1. 无线传感网络是一种新型的网络技术,具有广泛的应用前景;2. 通过实验,我们掌握了无线传感网络的基本操作和实验方法;3. 无线传感网络在实际应用中具有较高的可靠性和有效性,能够满足各种环境监测需求。

无线传感网络技术实验报告

无线传感网络技术实验报告

无线传感网络技术实验报告个人文档:欢迎来到我的豆丁文档,请在阅读后给予评价~谢谢~======================================================================== ====================个人文档:欢迎来到我的豆丁文档,请在阅读后给予评价~谢谢~======================================================================== ====================无线传感网络技术实验报告学院 : 物理与机电工程学院专业 : 电子科学与技术班级 : 2013级2班学号 :姓名 :指导老师 :感谢你来到我的生命中,带来了美丽、快乐,感谢你给了我永远珍视的记忆。

==================================================================== ===欢迎下次再来学习个人文档:欢迎来到我的豆丁文档,请在阅读后给予评价~谢谢~======================================================================== ====================个人文档:欢迎来到我的豆丁文档,请在阅读后给予评价~谢谢~======================================================================== ====================一、 ADC的采样实验实验的目的:通过本次实验了解到了CC2530 ADC的相关寄存器的详细配置;通过本次实验了解到了CC2530的ADC单次采集功能的运用。

实验的内容:1. 根据相关的实验配置ADC寄存器;2. 为了实现可调电阻的电压采集。

实验设备:硬件部分:ZIGBEE调试底板一个 ZIGBEE的仿真器一个;ZIGBEE模块板一个电源一个软件部分:IAR751的安装包仿真器驱动程序实验的原理:0端口的引脚的信号作为ADC的输入,本次实验的ADC 有三种种类的控制寄存器,他们分别为:ADCCON1, ADCCON2 和ADCCON3,这些寄存器用于配置ADC,通过这个来并报告试验结果。

无线传感网络实验报告

无线传感网络实验报告

《无线传感网络技术与应用》实验报告目录一、研究背景 (1)二、研究内容 (1)三、传感器原理介绍 (1)(一)MQ-2 气体传感器简介 (1)(二)声音检测传感器简介 (2)(三)声光报警器原理 (3)(一)烟雾传感器模块 (4)(二)声音检测传感器模块 (5)(三)声光报警器模块 (7)(四)协调器与终端模块 (8)五、实验分析 (9)(一)烟雾传感器数据分析 (9)(二)声音检测传感器模块数据分析 (9)(三)声光报警检测传感器模块数据分析 (10)六、实验中出现的问题 (11)(一)打开文件存在缺失 (11)(二)串口无法识别 (11)(三)安装stm8或stem32时无法打开文件 (11)(四)做数据透传模型实验时无法通信 (11)七、实验总结 (11)一、研究背景近几年,随着我国经济的不断发展和构建和谐社会理念的提出,特别是重大工程对安防行业的刺激和需求,安防行业面临着前所未有的发展机遇。

结合当前先进技术提高安全防范系统性能,成为当前安防发展的一个重要课题。

在分析了无线传感网络在国内外安防系统应用现状的基础上,针对安防系统存在的问题,提出一种基于无线传感网络的智能安防系统设计方案。

与传统安防系统相比,具有免布线、费用低、布置方便等优点。

在综合考虑了当前流行的无线通信技术后,选择具有数据吞吐量小、低功耗、网络容量大等优点的ZigBee 技术作为构建智能安防无线通信网络的关键技术。

可以预计,ZigBee 技术将在家庭智能化、安防行业、工业控制等领域获得广泛应用。

二、研究内容本次课题研究涉及到三个传感器,分别是烟雾传感器、声音检测传感器、声光报警传感器,通过相关程序的烧写到实验板上,根据每个传感器的特点对每个传感器进行测试,通过观察串口终端的数字变化,检查外部环境的变化是否有数据变化。

最后根据实验现象进行总结分析。

三、传感器原理介绍(一)MQ-2 气体传感器简介MQ-2 气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。

无线传感网实训报告万能

无线传感网实训报告万能

一、实训背景随着物联网技术的飞速发展,无线传感网作为物联网的核心技术之一,在环境监测、智能家居、工业控制等领域扮演着越来越重要的角色。

为了提高我们对无线传感网技术的理解和应用能力,我们开展了为期两周的无线传感网实训。

二、实训目标1. 理解无线传感网的基本原理和组成。

2. 掌握无线传感网的搭建和配置方法。

3. 学习无线传感网的数据采集、传输和处理技术。

4. 熟悉无线传感网在实际应用中的案例。

三、实训内容1. 无线传感网基本原理无线传感网(Wireless Sensor Network,WSN)是由大量的传感器节点组成,通过无线通信方式相互连接,协同工作,实现对特定区域进行感知、监测和控制的一种网络系统。

传感器节点通常由传感模块、处理模块、通信模块和能量供应模块组成。

2. 无线传感网搭建与配置实训中,我们使用ZigBee模块搭建了一个简单的无线传感网。

首先,我们需要准备ZigBee模块、无线模块、传感器、电源等硬件设备。

然后,通过编程实现对传感器数据的采集、处理和传输。

在搭建过程中,我们学习了以下内容:- ZigBee模块的硬件连接和编程;- 传感器数据的采集和处理;- 无线通信协议的配置;- 网络拓扑结构的构建。

3. 无线传感网数据采集与传输在实训中,我们使用了温度传感器和湿度传感器进行数据采集。

通过编程,我们将采集到的数据发送到上位机进行显示和分析。

我们学习了以下内容:- 传感器数据的实时采集;- 数据的格式化和压缩;- 无线通信协议的数据传输;- 数据的加密和安全传输。

4. 无线传感网应用案例为了更好地理解无线传感网在实际应用中的价值,我们分析了以下几个案例:- 环境监测:通过无线传感网对空气质量、水质等进行实时监测;- 智能家居:利用无线传感网实现对家庭设备的远程控制和能源管理;- 工业控制:利用无线传感网对生产线进行实时监控和故障预警。

四、实训成果通过本次实训,我们取得了以下成果:1. 掌握了无线传感网的基本原理和组成;2. 熟悉了无线传感网的搭建和配置方法;3. 学会了无线传感网的数据采集、传输和处理技术;4. 深入了解了无线传感网在实际应用中的案例。

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

-------无线传感网络实验报告学院:信息工程学院专业:网络工程学号:201216213姓名:张新龙LEACH协议LEACH协议简介分簇算法LEACH 协议是Wendi B. Heinzelman , AnanthaP. Chandrakasan , Hari Balakrishnan (MIT ,电子与计算机系) 2000 年提出的分层的传感器网络协议, 它采用分层的网络结构. LEACH,协议是通过基于簇的操作使WSN减少功耗,LEACH,协议的目的是在网络中动态地选择传感器节点作为簇头并形成簇。

在LEACH 算法中, 节点自组织成不同的簇, 每个簇只有一个簇首.各节点独立地按照一定概率决定自己是否做簇首,周期性的进行簇首选举和网络重组过程, 避免了簇首节点能耗过多, 影响网络寿命. LEACH 算法建立在所有节点都是平等且无线电信号在各个方向上能耗相同的假设上。

LEACH协议有时候也会动态地改变簇的活跃动态,如果采用高功率的方式使网络中的所有传感器节点与汇聚节点进行通信。

LEACH协议原理LEACH 协议分为两个阶段操作, 即簇准备阶段(set - up phase)和就绪阶段(ready phase). 为了使能耗最小化, 就绪阶段持续的时间比簇准备阶段长簇准备阶段和就绪阶段所持续的时间总和称为一轮(round). [ 7-8]在簇准备阶段, 随机选择一个传感器节点作为簇首节点(cluster head node), 随机性确保簇首与Sink 节点之间数据传输的高能耗成本均匀地分摊到所有传感器节点. 簇首节点选定后, 该簇首节点对网络中所有节点进行广播, 广播数据包含有该节点成为簇首节点的信息. 一旦传感器节点收到广播数据包, 根据接收到的各个簇首节点广播信号强度, 选择信号强度最大的簇首节点加入, 向其发送成为其成员的数据包.以便节省能量.簇头建立阶段:初始阶段,每个节点从0和1中随机产生一个数,如果这个数小于阀值T(n),该节点就成为当前轮的簇头。

其中,P是期望的簇头数在所有节点中占的百分比,r是选举轮数,r mod (1/p)代表这一轮循环中当选过簇头的节点个数,G是这一轮循环中未当选过簇头的节点集合。

被选为簇头的节点会通知网络中的其他节点自己是最新的簇头。

在通告自己是最新簇头的过程中,LEACH协议采用基于CSMA的随机存取机制以避免多个簇头的广播发生碰撞。

LEACH协议的优缺点LEACH协议具有很多优点,比如分层的簇型结构、本地数据联合处理和簇头节点动态分配,特别是在处理具有高度相关性的数据时,由于数据融合力度大,冗余数据被大量消除,因此在能耗方面性能较好,但LEACH仍有不足之处:1)在LEACH算法中,分布式簇首选取机制能够均匀网络中节点能耗,但随机选取的簇首节点无法保证簇头节点在空间上均匀分布,在某些情况下,算法所选择的簇头节点可能集中在某一个小范围之内,使得一部分成员节点无法加入任何簇或者成员节点与簇头节点进行数据传输时消耗过多的能量。

2) LEACH算法假定所有节点都能直接与Sink节点进行通信,这显然限制了LEACH算法在较大区域内无线传感器网络的应用。

LEACH协议的创建LEACH协议的创建阶段分为三个阶段:广播,建簇和调度表的生成,每个开始LEACH协议都会随机选择传感器节点作为簇头。

簇头选则广播阶段生成,在广播阶段中传感器节点广播一个簇头广告信息。

一旦传感器节点收到广播,它们就被确定从属于哪个簇头了,规则为如果一个节点接收到某个凑头的广播,那么它们就可以自动从属于此簇头。

但是,一个传感器节点收到来自哪个簇头的广播,就能通过接受到的簇头之间信道选择,即来自哪个簇头的信号强弱就判断哪个簇头。

可以说,簇与簇头之间信道选择是以信道质量更好为标准。

LEACH的改进LEACH在小规模的网络中性能表现较佳,但在大规模的网络环境中,就会出现能量负载不均,性能明显下降的情况。

进一步分析可以发现,在大规模网络中,远距离的节点距离基站的距离较远,无论如何分簇,传输数据要消耗更多的能量。

因此在网络中的边缘节点总是较快的耗尽能量。

而靠近基站较近的节点,相反的,因为传输数据所要消耗的能量较小,所以通常是最后死亡。

结合前人实验的结果,可以得到LEACH 协议节点大致的死亡时间分布,见图,最外围的节点死亡的概率最大,次外圈的其次,而最里圈的死亡概率最小。

由于LEACH 算法中,在每一轮中,簇首节点负责数据融合和与基站通信,比非簇首节点需要消耗更多的能量。

网络中的边缘簇首节点与基站通信本身就要消耗大量的能量,再加上进行数据融合,会很快死亡,甚至有可能在与基站通信时能量就消耗殆尽,造成数据的丢失另外,簇首数目过多导致数据融合的效率降低,产生过多不必要的通信能耗。

因此,一定存在一个最佳的簇首概率值[5],使得网络在每一轮中的能耗最小,尽可能地延长整个网络的生命周期。

本文中将簇头节点的优化方案融入改进的协议,并且在本文实验的条件下对其进一步精确化。

簇头节点如下公式:22fs opt toBS mp N Mk d επε=其中,N 为无线传感器网络中的总节点个数;fs ε为自由信道传输放大器的能耗系数,单位为J/bit/m2;mp ε为多径信道传输放大器的能耗系数,单位为J/bit/m2;M 为无线传感器网络覆盖区域长度;toBS d 为网络中节点到基站的距离。

用MATLAB 实现LEACH 协议仿真:xm = 200;ym = 200;%x and y Coordinates of the Sinksink.x = 88;sink.y = 188;n = 200; %Number of Nodes in the fieldp=0.05; %Optimal Election Probability of a node to become cluster head packetLength = 400; %数据包长度ctrPacketLength = 100; %控制包长度%Energy Model (all values in Joules)%Initial EnergyEo = 0.5;%Eelec=Etx=ErxETX=50*0.000000001;ERX=50*0.000000001;%Transmit Amplifier typesEfs=10*0.000000000001;Emp=0.0013*0.000000000001;%Data Aggregation EnergyEDA=5*0.000000001;rmax=200%%%%%%%%%%%%%%%%%%END OF PARAMETERS %%%%%%%%%%%%%%%%%Computation of dodo=sqrt(Efs/Emp);%Creation of the random Sensor Networkfigure(1);for i=1:1:nS(i).xd=rand(1,1)*xm; %坐标XR(i)=S(i).xd;S(i).yd=rand(1,1)*ym;YR(i)=S(i).yd;S(i).G=0;%initially there are no cluster heads only nodes S(i).type='N'; %普通节点S(i).E=Eo;S(i).ENERGY=0;plot(S(i).xd,S(i).yd,'k.');hold on;endS(n+1).xd=sink.x;S(n+1).yd=sink.y;plot(S(n+1).xd,S(n+1).yd,'red p');%First Iterationfigure(2);%counter for CHscountCHs=0;%counter for CHs per roundrcountCHs=0;cluster=1;countCHs;rcountCHs=rcountCHs+countCHs;flag_first_dead=0;for r=0:1:rmax %主循环,每次1轮r%Operation for epochif(mod(r, round(1/p) )==0)for i=1:1:nS(i).G=0;endendhold off;%Number of dead nodesdead=0;%Number of dead Advanced Nodesdead_a=0;%Number of dead Normal Nodesdead_n=0;%counter for bit transmitted to Bases Station and to Cluster Heads packets_TO_BS=0;packets_TO_CH=0;%counter for bit transmitted to Bases Station and to Cluster Heads %per roundPACKETS_TO_CH(r+1)=0;PACKETS_TO_BS(r+1)=0;for i=1:1:n%checking if there is a dead nodeif (S(i).E<=0)plot(S(i).xd,S(i).yd,'red o');hold on;dead=dead+1;endif S(i).E>0S(i).type='N';endendif (dead == n)%节点全部死亡退出循环break;STATISTICS(r+1).DEAD=dead;DEAD(r+1)=dead;DEAD_N(r+1)=dead_n;DEAD_A(r+1)=dead_a;%When the first node diesif (dead==1)if(flag_first_dead==0)first_dead=rflag_first_dead=1;endendcountCHs=0;cluster=1;for i=1:1:nif(S(i).E>0)temp_rand=rand;if ( (S(i).G)<=0) %如果该节点在候选集合中%Election of Cluster Headsif( temp_rand <= (p/(1-p*mod(r,round(1/p)))))countCHs = countCHs+1;S(i).type = 'C';S(i).G = round(1/p)-1;C(cluster).xd = S(i).xd;C(cluster).yd = S(i).yd;distance=sqrt( (S(i).xd-(S(n+1).xd) )^2 +(S(i).yd-(S(n+1).yd) )^2 );%到sink距离C(cluster).distance = distance;C(cluster).id = i;X(cluster)=S(i).xd;Y(cluster)=S(i).yd;cluster=cluster+1;%%广播自成为簇头distanceBroad = sqrt(xm*xm+ym*ym);if (distanceBroad > do)S(i).E = S(i).E- ( ETX * ctrPacketLength + Emp* ctrPacketLength*( distanceBroad*distanceBroad*distanceBroad*distanceB road ));%广播自成为簇头elseS(i).E = S(i).E- ( ETX * ctrPacketLength + Efs * ctrPacketLength*( distanceBroad*distanceBroad));end%Calculation of Energy dissipated 簇头自己发送数据包能量消耗distance;if (distance > do)S(i).E = S(i).E- ( (ETX+EDA)*(packetLength) + Emp * packetLength*( distance*distance*distance*distance ));elseS(i).E = S(i).E- ( (ETX+EDA)*(packetLength) + Efs * packetLength*( distance * distance ));endpackets_TO_BS = packets_TO_BS+1;PACKETS_TO_BS(r+1) = packets_TO_BS;endendendendSTATISTICS(r+1).CLUSTERHEADS = cluster-1;%统计第r轮簇头数目,r是从0开始的,所以加1;cluster最后要-1,是应为上面的循环多加了1CLUSTERHS(r+1)= cluster-1;%Election of Associated Cluster Head for Normal Nodesfor i=1:1:nif ( S(i).type=='N' && S(i).E>0 ) %普通节点% min_dis = sqrt( (S(i).xd-S(n+1).xd)^2 + (S(i).yd-S(n+1).yd)^2 );%默认距离是到sink的距离min_dis =+inf;if(cluster -1 >= 1)%如果有簇头存在min_dis_cluster = 1;%加入最近的簇头for c = 1:1:cluster - 1 %簇头数量一共是cluster - 1%temp = min(min_dis,sqrt( (S(i).xd - C(c).xd)^2 + (S(i).yd - C(c).yd)^2 ) );temp = sqrt( (S(i).xd - C(c).xd)^2 + (S(i).yd - C(c).yd)^2 );if ( temp < min_dis )min_dis = temp;min_dis_cluster = c;end%接收簇头发来的广播的消耗S(i).E = S(i).E - ETX * ctrPacketLength;end%Energy dissipated by associated Cluster Head普通节点发送数据包到簇头消耗,和加入消息min_dis;if (min_dis > do)S(i).E = S(i).E - ( ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis * min_dis * min_dis * min_dis)); %向簇头发送加入控制消息S(i).E = S(i).E - ( ETX*(packetLength) +Emp*packetLength*( min_dis * min_dis * min_dis * min_dis)); %向簇头数据包elseS(i).E = S(i).E - ( ETX*(ctrPacketLength) +Efs*ctrPacketLength*( min_dis * min_dis)); %向簇头发送加入控制消息S(i).E = S(i).E - ( ETX*(packetLength) +Efs*packetLength*( min_dis * min_dis)); %向簇头数据包endS(i).E = S(i).E - ETX*(ctrPacketLength); %接收簇头确认加入控制消息%Energy dissipated %簇头接收簇成员数据包消耗能量,接收加入消息和和确认加入消息if(min_dis > 0)S(C(min_dis_cluster).id).E = S(C(min_dis_cluster).id).E - ( (ERX + EDA)*packetLength ); %接受簇成员发来的数据包S(C(min_dis_cluster).id).E = S(C(min_dis_cluster).id).E - ERX *ctrPacketLength ; %接收加入消息if (min_dis > do)%簇头向簇成员发送确认加入的消息S(C(min_dis_cluster).id).E = S(C(min_dis_cluster).id).E - ( ETX*(ctrPacketLength) + Emp * ctrPacketLength*( min_dis * min_dis * min_dis * min_dis));elseS(C(min_dis_cluster).id).E = S(C(min_dis_cluster).id).E - ( ETX*(ctrPacketLength) + Efs * ctrPacketLength*( min_dis * min_dis));endPACKETS_TO_CH(r+1) = n - dead - cluster + 1; %所有的非死亡的普通节点都发送数据包endS(i).min_dis = min_dis;S(i).min_dis_cluster = min_dis_cluster;endendendcountCHs;rcountCHs = rcountCHs + countCHs;[vx,vy]=voronoi(X,Y);plot(X,Y,'red *',vx,vy,'g -');hold on;voronoi(X,Y);axis([0 xm 0 ym]);endfor i=1:1:nif (S(i).E>0)plot(S(i).xd,S(i).yd,'k.');hold on;plot(S(n+1).xd,S(n+1).yd,'rp');endendfor i=1:1:nif (S(i).E<=0)plot(S(i).xd,S(i).yd,'r.');hold on;endendfigure(3);x=1:1:r;y=1:1:r;z=1:1:r;for i=1:r;x(i)=i;y(i) = n - STATISTICS(i).DEAD;z(i)=CLUSTERHS(i);endplot(x,y,'r',x,z,'b');legend('存活的节点数','被选取为簇头的节点数')hold on;结果:结果分析:在MATLAB编程环境中首先产生一个200×200的区域,并在其内部随机生成一个含有1200个节点(坐标不同)的连通图,而且随机选择100*m个节点作为高级节点。

相关文档
最新文档