无线传感器实验报告
无线传感器网络实验报告

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

浙江工业大学计算机学院实验报告实验名称无线传感网络实验之丢包率检测日期 2014年12月30日一、实验内容本次实验主要是通过代码的编写测试节点的发送功率和距离的远近对接收节点的丢包率的影响。
对发送功率的设置是通过修改CC2420.h文件中的参数实现的。
其中距离的远近的调节是容易实现的。
而对丢包率的计算是由接收节点的主机B将收到的数据包打印到屏幕上,主机A烧写的节点则是实现每次发送100个数据包。
二、程序源代码主机A(发送方)✧BlinkToRadio.h#ifndef BLINKTORADIO_H#define BLINKTORADIO_Henum {AM_BLINKTORADIO = 6,TIMER_PERIOD_MILLI = 250};typedef nx_struct BlinkToRadioMsg {nx_uint16_t nodeid;nx_uint16_t counter;} BlinkToRadioMsg;#endif✧BlinkToRadioAppC.nc#include <Timer.h>#include "BlinkToRadio.h"configuration BlinkToRadioAppC {}implementation {components MainC;components LedsC;components BlinkToRadioC as App;components new TimerMilliC() as Timer0;components ActiveMessageC;components new AMSenderC(AM_BLINKTORADIO);components new AMReceiverC(AM_BLINKTORADIO);App.Boot -> MainC;App.Leds -> LedsC;App.Timer0 -> Timer0;App.Packet -> AMSenderC;App.AMPacket -> AMSenderC;App.AMControl -> ActiveMessageC;App.AMSend -> AMSenderC;App.Receive -> AMReceiverC;}BlinkToRadioC.nc#include <Timer.h>#include "BlinkToRadio.h"module BlinkToRadioC {uses interface Boot;uses interface Leds;uses interface Timer<TMilli> as Timer0;uses interface Packet;uses interface AMPacket;uses interface AMSend;uses interface Receive;uses interface SplitControl as AMControl;}implementation {uint16_t counter;message_t pkt;bool busy = FALSE;void setLeds(uint16_t val) {if (val & 0x01)call Leds.led0On();elsecall Leds.led0Off();if (val & 0x02)call Leds.led1On();elsecall Leds.led1Off();if (val & 0x04)call Leds.led2On();elsecall Leds.led2Off();}event void Boot.booted() {call AMControl.start();}event void AMControl.startDone(error_t err) {if (err == SUCCESS) {call Timer0.startPeriodic(TIMER_PERIOD_MILLI);}else {call AMControl.start();}}event void AMControl.stopDone(error_t err) {}event void Timer0.fired() {counter++;//发送100个数据包if(counter <101) {if (!busy) {BlinkToRadioMsg* btrpkt =(BlinkToRadioMsg*)(call Packet.getPayload(&pkt,sizeof(BlinkToRadioMsg)));if (btrpkt == NULL) {return;}btrpkt->nodeid = 10;btrpkt->counter = counter;if (call AMSend.send(AM_BROADCAST_ADDR,&pkt, sizeof(BlinkToRadioMsg)) == SUCCESS) {busy = TRUE;}}}}event void AMSend.sendDone(message_t* msg, error_t err) {if (&pkt == msg) {busy = FALSE;}}event message_t* Receive.receive(message_t* msg, void* payload, uint8_t len){if (len == sizeof(BlinkToRadioMsg)) {BlinkToRadioMsg* btrpkt = (BlinkToRadioMsg*)payload;setLeds(btrpkt->counter);}return msg;}}✧MakefileCOMPONENT=BlinkToRadioAppCinclude $(MAKERULES)主机B(接收方)✧BlinkToRadio.h#ifndef BLINKTORADIO_H#define BLINKTORADIO_Henum {AM_BLINKTORADIO = 6,TIMER_PERIOD_MILLI = 250};typedef nx_struct BlinkToRadioMsg {nx_uint16_t nodeid;nx_uint16_t counter;} BlinkToRadioMsg;#endif✧BlinkToRadioAppC.nc#include <Timer.h>#include "BlinkToRadio.h"configuration BlinkToRadioAppC {}implementation {components MainC;components LedsC;components BlinkToRadioC as App;components new TimerMilliC() as Timer0;components ActiveMessageC;components new AMSenderC(AM_BLINKTORADIO);components new AMReceiverC(AM_BLINKTORADIO);App.Boot -> MainC;App.Leds -> LedsC;App.Timer0 -> Timer0;App.Packet -> AMSenderC;App.AMPacket -> AMSenderC;App.AMControl -> ActiveMessageC;App.AMSend -> AMSenderC;App.Receive -> AMReceiverC;}BlinkToRadioC.nc#include <Timer.h>#include "BlinkToRadio.h"#include "printf.h"module BlinkToRadioC {uses interface Boot;uses interface Leds;uses interface Timer<TMilli> as Timer0;uses interface Packet;uses interface AMPacket;uses interface AMSend;uses interface Receive;uses interface SplitControl as AMControl;}implementation {uint16_t counter;message_t pkt;bool busy = FALSE;uint32_t nowtime;uint16_t Number=0;event void Boot.booted() {call AMControl.start();}event void AMControl.startDone(error_t err) {if (err == SUCCESS) {}else {call AMControl.start();}}event void AMControl.stopDone(error_t err) {}event void Timer0.fired() {printf("now is:%d\n",(call Timer0.getNow()));printfflush();call Leds.led0Toggle();}event void AMSend.sendDone(message_t* msg, error_t err) {if (&pkt == msg) {busy = FALSE;}}event message_t* Receive.receive(message_t* msg, void* payload,uint8_t len){if (len == sizeof(BlinkToRadioMsg)) {BlinkToRadioMsg* btrpkt = (BlinkToRadioMsg*)payload;if(btrpkt->nodeid==10){//====================================if (!busy) {call Leds.led2Toggle();Number++;printf("No.%d pakage is received,thenumber:%d\n",btrpkt->counter,Number);printfflush();if (call AMSend.send(AM_BROADCAST_ADDR, &pkt,sizeof(BlinkToRadioMsg)) == SUCCESS) {busy = TRUE;}}}}return msg;}}MakefileCOMPONENT=BlinkToRadioAppCCFLAGS += -I$(TOSDIR)/lib/printfinclude $(MAKERULES)三、实验步骤1.在实验四的代码基础上,修改BlinkToRadioC.nc中的事件Timer0.fired()和事件Receive.receive中收到数据包后输出对应的信息。
无线传感网实验报告

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. 无线传感网络在实际应用中具有较高的可靠性和有效性,能够满足各种环境监测需求。
无线传感器网络实验报告

无线传感器网络实验报告Contiki mac协议与xmac协议的比较1.简介无线传感器网络(wireless sensor networks, WSN)节点由电池供电,其能力非常有限,同时由于工作环境恶劣以及其他各种因素,节点能源一般不可补充。
因而降低能耗、延长节点使用寿命是所有无线传感器网络研究的重点。
WSN中的能量能耗主要包括通信能耗、感知能耗和计算能耗,其中通信能耗所占的比重最大,因此,减少通信能耗是延长网络生存时间的有效手段。
同时,研究表明节点通信时Radio模块在数据收发和空闲侦听时的能耗几乎相同,所以要想节能就需要最大限度地减少Radio模块的侦听时间(收发时间不能减少),及减小占空比。
传统的无线网络中,主要考虑到问题是高吞吐量、低延时等,不需要考虑能量消耗,Radio模块不需要关闭,所以传统无线网络MAC协议无法直接应用于WSN,各种针对传感器网络特点的MAC协议相继提出。
现有的WSN MAC协议按照不同的分类方式可以分成许多类型,其中根据信道访问策略的不同可以分为:X-MAC协议X-MAC协议也基于B-MAC协议的改进,改进了其前导序列过长的问题,将前导序列分割成许多频闪前导(strobed preamble),在每个频闪前导中嵌入目的地址信息,非接收节点尽早丢弃分组并睡眠。
X-MAC在发送两个相邻的频闪序列之间插入一个侦听信道间隔,用以侦听接收节点的唤醒标识。
接收节点利用频闪前导之间的时间间隔,向发送节点发送早期确认,发送节点收到早期确认后立即发送数据分组,避免发送节点过度前导和接收节点过度侦听。
X-MAC还设计了一种自适应算法,根据网络流量变化动态调整节点的占空比,以减少单跳延时。
优点:X-MAC最大的优点是不再需要发送一个完整长度的前导序列来唤醒接收节点,因而发送延时和收发能耗都比较小;节点只需监听一个频闪前导就能转入睡眠。
缺点:节点每次醒来探测信道的时间有所增加,这使得协议在低负载网络中能耗性比较差。
井下无线传感器实验报告

井下无线传感器实验报告一、实验目的本实验旨在探究井下无线传感器网络的性能和应用,了解无线传感器在井下环境中的工作原理及特点,提高对无线传感器网络的认知和实践能力。
二、实验原理井下无线传感器网络由部署在矿井下的多个无线传感器节点组成,通过无线通信方式形成一个自组织的网络系统,用于监测井下的各种环境参数,如温度、湿度、瓦斯浓度等,并将监测数据传输至地面控制中心。
实验中,我们将使用具有无线通信功能的传感器节点,通过编程控制节点间的通信协议和数据传输方式,实现对井下环境的实时监测。
三、实验步骤实验准备:准备所需的无线传感器节点、井下环境模拟装置、数据采集和分析软件等。
节点部署:将无线传感器节点部署在模拟装置中,确保节点能够正常工作并采集到有效数据。
编程控制:使用编程语言对无线传感器节点进行控制,实现节点间的通信和数据传输。
数据采集:通过数据采集软件实时采集无线传感器节点发送的数据,并对数据进行处理和分析。
结果分析:根据采集到的数据,分析无线传感器网络在井下环境中的性能表现和应用前景。
四、实验结果及分析以下是实验中采集到的部分数据表格和图形:时间温度(℃)湿度(%)瓦斯浓度(%)0:00 23.5 65 0.51:00 24.2 68 0.62:00 24.7 70 0.7... ... ... ...12:00 23.3 62 0.4以下是温度数据的图形表示:(请在此处插入温度随时间变化的图表)以下是湿度数据的图形表示:(请在此处插入湿度随时间变化的图表)以下是瓦斯浓度的图形表示:(请在此处插入瓦斯浓度随时间变化的图表)根据采集到的数据,我们可以得出以下结论:在实验过程中,无线传感器网络能够实时监测井下的温度、湿度和瓦斯浓度等环境参数,数据准确可靠。
在不同的时间段内,环境参数的变化趋势明显。
例如,温度逐渐升高后趋于平稳;湿度先升高后降低;瓦斯浓度逐渐升高。
这些变化趋势符合实际情况。
在实验过程中,无线传感器网络表现出了良好的稳定性和可靠性,没有出现数据传输错误或丢失的情况。
无线传感网实验报告

无线传感网实验报告一、实验目的本实验的主要目的是了解无线传感网(Wireless Sensor Network,WSN)的基本原理和特点,以及进行一些简单的WSN实验,掌握其基本应用方法。
二、实验器材1.电脑2. 无线传感器节点(如Arduino)3. 无线通信模块(如XBee)4.传感器(如温度传感器、光照传感器等)三、实验步骤和内容1.了解无线传感网的基本概念和特点。
2.搭建无线传感网实验平台。
将无线传感器节点和无线通信模块进行连接。
3.编程控制无线传感器节点,收集传感器数据并通过无线通信模块进行传输。
4.在电脑上设置接收数据的接口,并接收传感器数据。
5.对传感器数据进行分析和处理。
四、实验结果和讨论在实验中,我们成功搭建了一个简单的无线传感网实验平台,并通过无线通信模块进行数据传输。
通过编程控制,我们能够收集到传感器节点上的温度数据,并通过无线通信模块将数据传输到电脑上进行接收。
在实验过程中,我们发现无线传感网的优点是具有灵活性和扩展性。
通过无线通信模块,传感器节点之间可以进行无线通信,灵活地传输数据。
同时,我们还可以通过添加更多的传感器节点来扩展整个无线传感网的功能和覆盖范围。
然而,无线传感网也存在一些限制和挑战。
首先,无线通信模块的传输距离和传输速率有限,可能会受到环境因素的影响。
其次,无线传感器节点的能耗问题需要考虑,因为它们通常是使用电池供电的,而且在实际应用中通常需要长时间连续工作。
五、结论通过本次实验,我们对无线传感网的基本原理和特点有了一定的了解,并掌握了一些简单的无线传感网应用方法。
我们成功搭建了一个实验平台,并通过无线通信模块和传感器节点进行数据传输和接收。
实验结果表明,无线传感网具有一定的灵活性和扩展性,但同时也面临着一些挑战。
对于以后的无线传感网应用和研究,我们需要进一步探索和解决这些挑战。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
无线传感器网络实验报告Contiki mac协议与xmac协议的比较1.简介无线传感器网络(wireless sensor networks,WSN)节点由电池供电,其能力非常有限,同时由于工作环境恶劣以及其他各种因素,节点能源一般不可补充。
因而降低能耗、延长节点使用寿命是所有无线传感器网络研究的重点。
WSN中的能量能耗主要包括通信能耗、感知能耗和计算能耗,其中通信能耗所占的比重最大,因此,减少通信能耗是延长网络生存时间的有效手段。
同时,研究表明节点通信时Radio模块在数据收发和空闲侦听时的能耗几乎相同,所以要想节能就需要最大限度地减少Radio模块的侦听时间(收发时间不能减少),及减小占空比。
传统的无线网络中,主要考虑到问题是高吞吐量、低延时等,不需要考虑能量消耗,Radio模块不需要关闭,所以传统无线网络MAC协议无法直接应用于WSN,各种针对传感器网络特点的MAC协议相继提出。
现有的WSN MAC协议按照不同的分类方式可以分成许多类型,其中根据信道访问策略的不同可以分为:X-MAC协议X-MAC协议也基于B-MAC协议的改进,改进了其前导序列过长的问题,将前导序列分割成许多频闪前导(strobed preamble),在每个频闪前导中嵌入目的地址信息,非接收节点尽早丢弃分组并睡眠。
X-MAC在发送两个相邻的频闪序列之间插入一个侦听信道间隔,用以侦听接收节点的唤醒标识。
接收节点利用频闪前导之间的时间间隔,向发送节点发送早期确认,发送节点收到早期确认后立即发送数据分组,避免发送节点过度前导和接收节点过度侦听。
X-MAC还设计了一种自适应算法,根据网络流量变化动态调整节点的占空比,以减少单跳延时。
优点:X-MAC最大的优点是不再需要发送一个完整长度的前导序列来唤醒接收节点,因而发送延时和收发能耗都比较小;节点只需监听一个频闪前导就能转入睡眠。
缺点:节点每次醒来探测信道的时间有所增加,这使得协议在低负载网络中能耗性比较差。
而且分组长度、数据发送速率等协议参数还需进一步确定X-MAC原理图如图3所示:ContikiMAC协议一.ContikiMAC协议中使用的主要机制:1.时间划分2.快速睡眠3.锁时优化ContikiMAC只使用了异步的机制,没有标识信息也没有附加的消息头,它的数据也都是普通的链路层消息。
时间划分:ContikiMAC协议具有一个基于传输过程中精确时间度量的、能量高效的唤醒技术。
的唤醒技术利用一种价格低廉的CCA(空闲信道检测)机制来实现这种机制使用无线电收发器的RSSI(接收信号强度指示值)来判断指定信道的状态。
ContikiMAC中的时间划分必须满足一系列的限制。
如图4:图4ContikiMAC中的时间划分要求:ta+td<ti<tc<tc+2tr<tsti:每次数据传输之间的时间间隔tr:进行一次稳定的RSSI指示所需要的时间tc:两次CCA检测之间的时间间隔ta:手段数据包和发送ACK消息的时间间隔td:从接收节点那里成功检测到一个ACK消息所需的时间在IEEE802.15.4标准下,不等式中一些变量被固化,如IEEE802.15.4标准定义的ta值为12个时间点我,在802.15.4中,一个时间单位是4/250ms.然后td=40/250,tr是由cc2420无线收发器的特性决定的,tr=0.192ms,不等式变为:0.352<ti<tc<tc+0.384<ts给出了ts的下限,0.736ms(0.352+0.384),这也为我们的能传输的最小报文长度设了限制。
对其它参数,contiki系统中使用时间参数配置为:ti=0.4ms tc=0.5ms ts=0.884ms快速睡眠:contikiMAC中的并不实质性地检测数据传输,而只是检测无线信道的信号强度是否在特定的门限值之上。
如果一个邻居节点在向当前的接收节点发送数据,接收节点应该保持唤醒状态来保证接收到完整的数据包,然后需要发送一个回执。
检测到该数据包的其它节点则可以快速切换回睡眠状态。
然而,潜在的接收节点并不能立即回去睡眠,因为它们必须保证接收到完整的数据包。
在检测之后,最安全的保持唤醒状态的时间是tl+ti+tl这里表示最长数据包所需的传输时间。
当由于检测到错误的无线噪声而唤醒时,的快速睡眠机制使潜在的接收节点可以早些进入休眠状态。
这种优化机制利用了中的特定传输模式。
1.若CCA检测到活动,但信道活动状态的时间比tl还要长,说明CCA检测到的是噪声,节点返回睡眠2.如果信道活动状态过程之后有一段比ti更长的静止,则返回睡眠。
3.若活动状态后有一段正确的静止长度,但接收节点检测不到任何数据报文头,返回睡眠。
快速睡眠如图5所示:图5快速睡眠锁时优化(phase-lock):该机制类似于Wise-MAC,假设传感器网络中的每个接收节点都有一个周期的、稳定的唤醒时间间隔,则发送节点可利用接收节点的唤醒时间来优化传输过程,这就是锁时优化机制。
当发送节点检测到从接收节点返回的回执消息时,它会记录下检测到的时间,并以此判断出接收节点的唤醒时间。
由于接收节点必须保持唤醒状态来保证完整地接收报文,则发送节点可假设收到消息意味着发送节点在接收节点唤醒状态的时间窗内成功向其发送了一个数据包,由此发送节点便可以知道其唤醒时间。
在发送节点了解其唤醒时间之后,发送节点便可以在接收节点应该是唤醒状态的时候向其传输数据包。
Cooja仿真实验1.我分别测试4、8、12、16个节点时,contikimac和xmac在能量消耗和丢包率两方面的特点。
2.以下是4个节点时的截图:ContikiXmac 3.以下是八个节点的截图:Contikixmac 4.以下是12个节点时的截图:ContikiXmac 5.以下是16个节点时的截图:contikiXmac6.将文件中的数据导出,然后用下列程序分析:1.(void)setDownloadProgressBlock:(void(^)(NSUInteger bytesRead,long long totalBytesRead,long long totalBytesExpectedToRead))block;方法,在block中计算数目。
[html]view plain copy1.在计算sending和got数目需要自己写一个downTask类,负责记录。
downTask主要代码来源网<a target=_blank href="/conslee/archive/126370.html">点击打开链接</a>或/conslee/archive/126370.html [html]view plain copy1.<span style="font-family:Arial,Helvetica,sans-serif;">connectionOperation=[[AFURLConnectionOperation alloc]initWithRequest:request];</span> [html]view plain copy1.[connectionOperation setDownloadProgressBlock:^(NSUInteger bytesRead,long long totalBytesRead,long long totalBytesExpectedToRead){2.//NSLog(@"bytesRead:%zi",bytesRead);3.//NSLog(@"totalBytesRead:%zi",totalBytesRead);4.//NSLog(@"totalBytesExpectedToRead:%zi",totalBytesExpectedToRead);5.6.weakSelf.downTask.totalReadPeriod+=bytesRead;7.weakSelf.downTask.totalRead+=bytesRead;8.NSDate*currentDate=[NSDate date];9.if([currentDate timeIntervalSinceDate:weakSelf.downTask.oldDatePeriod]>=1){10.double speed=[weakSelf.downTask getSpeedWithDate:currentDate];11.12.[weakSelf.gaugeView setGaugeValue:speed animation:YES];13.NSString*unit=nil;14.if(speed>RATIO){15.unit=@"M";16.speed=speed/RATIO;17.}18.else{19.unit=@"KB";20.speed=speed;21.}22.NSLog(@"current speed:%f%@",speed,unit);bSpeed.text=[NSString stringWithFormat:@"%.2f%@",speed,unit];24.//NSLog(@"totalBytesRead:%zi",totalBytesRead);25.}26.27.}];7.之后我发现其实不用程序直接用记事本计数就可,并且还有很多简便方法。
8.实验得到的结果数据如下:9.能量消耗部分截图.10.总结实验描述了无线传感器网络协议的ContikiMAC和xmac的区别。
本次试验表明,Sink 节点的能量消耗比其他的节点的要大,平均消耗并没有很大变化;随着节点的增多,两个协议的丢包率都增高,表现优于contiki似乎要优于xmac,所以细节和实验论证MATLAB 绘图有些许瑕疵,但是实验的大体和步骤都做了一遍,实验锻炼了动手能力,感觉这门课有趣。