无线传感网技术实验二
无线传感器实验二报告

浙江工业大学计算机学院实验报告实验名称无线传感网络实验之丢包率检测日期 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中收到数据包后输出对应的信息。
传感网技术实验报告

传感网技术实验报告1. 引言传感网技术是一种集传感、计算和通信为一体的无线网络技术,广泛应用于物联网、智能家居、环境监测等领域。
本实验旨在探索和学习传感网技术的原理和应用,通过设计和构建一个简单的传感网系统,加深对传感网技术的了解和认识。
2. 实验目标本实验的主要目标如下:1. 理解传感网技术的基本原理和通信方式;2. 学习使用传感器采集环境数据,并通过传感网传输到中心节点;3. 实现传感节点之间的数据通信和协作。
3. 实验设备和材料本实验所需设备和材料如下:- 传感器节点:多个可编程节点,例如Arduino等;- 中心节点:一台计算机或单片机开发板;- 无线通信模块:用于传感节点之间的通信;- 传感器:根据实验需求选择合适的传感器;- 连接线:用于连接传感器节点和中心节点。
4. 实验步骤4.1 硬件搭建根据实验需求,将传感器节点和中心节点按照拓扑结构连接起来。
每个传感器节点连接一个或多个传感器,用于采集环境数据。
中心节点负责接收传感器节点的数据,并进行处理和存储。
4.2 软件编程针对传感器节点和中心节点,编写相应的软件程序。
传感器节点的程序需要实现数据采集、封装和发送,中心节点的程序需要实现数据接收、解析和处理。
4.3 网络通信配置配置传感节点之间的网络通信参数,包括无线通信模块的通信频率、传输速率和网络拓扑结构。
确保传感节点之间可以正常通信和协作。
4.4 实验数据采集和分析使用传感节点采集环境数据,例如温度、湿度等,并通过传感网传输到中心节点。
中心节点接收数据后进行分析和处理,比如计算平均值、最大值等。
4.5 实验结果展示将实验结果进行展示和分析,比如使用图表展示温度的变化趋势、湿度的时序分布等。
根据实验结果,可以对传感网系统进行优化和改进。
5. 实验总结本实验通过设计和构建一个简单的传感网系统,深入了解和学习了传感网技术的原理和应用。
从硬件搭建到软件编程,从网络通信配置到实验数据采集和分析,全面掌握了传感网技术的实际操作和应用方法。
安徽工业大学WSN无线传感器网络实验报告.doc

《无线传感器网络实验报告》指导教师:卫琳娜班级:物联网131 班实验箱序号: 3,13 等组员姓名学号:程少锋(注:报告中有部分实验截图)实验日期: 2016 年 4 月 28 日 3,4 节实验一、软硬件平台使用[1]感知 RF2 实验箱 -WSN 系统结构系统该系统根据不同的情况可以由一台计算机,一套网关,一个或多个网络节点组成。
大小只受PC 软件观测数量,路由深度,网络最大负载量限制。
感知RF2 实验箱无线传感器实验平台内配置ZigBee2007/PRO 协议栈在没有进行网络拓补修改之前支持5级路由,31101 个网络节点。
传感器网络系统结构图如下图所示。
[2]感知 RF2 实验箱 -WSN 系统工作流程基于 ZigBee2007/PRO 协议栈无线网络,在网络设备安装过程,架设过程中自动完成。
完成网络的架设后用户便可以由PC 机发出命令读取网络中任何设备上挂接的传感器的数据,以及测试其电压。
[3]感知 RF2 实验箱 -WSN 硬件介绍感知 RF2 物联网实验箱的无线传感器网络开发平台主要硬件包括:C51RF-CC2530-WSN 仿真器、 ZigBee无线高频模块、节点底板、传感器模块以及其它配套线缆等。
网关节点由节点底板+ZigBee无线高频模块组成。
传感器节点由节点底板+ZigBee无线高频模块组成+传感器模块组成。
路由节点硬件组成与传感器节点相同,软件实现功能不同。
[4]实验目的:熟悉实验平台前期架构,便于后面程序的烧写。
[5]实验步骤:1 安装必要软件(实际实验室中软件已经下载安装完毕,只要通过仿真器C51RF-3 进行程序在线下载、调试、仿真即可)1) 在实验室机器 E 盘的《无线龙实验箱相关资料/ 无线传感器实验资料201604》中安装ZigBee 开发集成环境 IAR7.51A ,详细请参考“ \C51RF-CC2530-WSN 使用说明书”目录下的“ IAR 安装与使用”。
无线传感器网络指导书-信息与控制学院

无线传感器网络(ZIGBEE)实验指导书(CC2530)(适用于电子、通信等专业)沈阳工学院2012年12月前言本课程主要学习Zigbee无线传感器网络的特点,并且以CC2430为主要控制器介绍Zigbee网络中的编程情况,此芯片采用C语言进行编程,并且已经有了较成熟的发展,学生同学理论学习掌握了芯片的基本理论知识,以及在编程过程的相关寄存器的设置。
为了使学生更好地理解和深刻地把握这些知识,并在此基础上,训练和培养学生的动手能力,设置了五个实验项目,其中包括四个验证性实验,一个综合性实验。
这些实验需要学生了解实验器材,熟悉其使用方法,掌握编程软件的操作方法,并且重点掌握在如何编写程序以及程序中的寄存器的设计。
本实验指导书适用于通信专业,强调实际操作,注重基本仪器地使用方法及动手能力的培养。
目录验证性实验实验一IAR编程软件的使用与简单实例实验二CC2530片内温度与1/3电压的测量实验三CC2530串口发/收数实验实验四点对点无线数据通信实验综合性实验实验五Zigbee协议栈实验实验一IAR编程软件的使用与简单实例(一)实验目的1、熟悉IAR软件的使用方法。
2、掌握编辑、下载、运行程序的方法3、利用IAR软件会编写简单的程序(二)实验设备1、zigbee实验装置1套2、安装有IAR软件的PC机1台3、PC机与zigbee模块通讯电缆1根(三)实验内容一、会使用IAR软件IAR编程软件简介1、IAR软件的启动及建立一个新工程首先安装IAR编程软件。
安装之后,选择图标双击鼠标左键,出现如图1.1。
新建一个工程文件。
新建一个工程选择Empty project默认配置,单击0K弹出保存对话框这个时候我们在桌面上建立一个名为project的文件夹,输入项目的文件名,并将项目也取名为“project”将此文件保存在project文件夹中,会产生一个ewp后缀的文件。
保存工程,弹出保存工程对话框。
输入工程文件名,单击保存退出,系统将产生一个eww为后缀的文件这样,我们就建立了IAR的一个工程文件,接下来,我们对这个工程加入一些特有的配置。
无线传感器网络实验手册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”完成安装过程。
无线传感网络技术实验报告

无线传感网络技术实验报告个人文档:欢迎来到我的豆丁文档,请在阅读后给予评价~谢谢~======================================================================== ====================个人文档:欢迎来到我的豆丁文档,请在阅读后给予评价~谢谢~======================================================================== ====================无线传感网络技术实验报告学院 : 物理与机电工程学院专业 : 电子科学与技术班级 : 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)。
无线传感器网络实验报告

桂林电子科技大学实验报告2015-2016学年第一学期开课单位海洋信息工程学院适用年级、专业课程名称无线传感器网络主讲教师王晓莹课程序号1510344课程代码BS1620009X0实验名称ns2实验环境配置及应用实验学时6学时学号姓名一、实验目的1)掌握虚拟机的安装方法。
2)熟悉Ubuntu系统的基本操作方法。
3)掌握ns2环境配置。
4)掌握tcl语言的基本语句及编程规则。
5)了解使用ns2进行网络仿真的过程。
二、实验环境1)系统:Windows 10 专业版 64位2)内存:8G3)软件:VMware Workstation 12 Pro三、实验内容(一)安装虚拟机(简述安装步骤)a)在VMware官网(https:///cn)下载程序VMware Workstation12 Prob)双击打开下载好的程序自动解压,解压完成后进入安装向导。
c)程序安装完成后,对程序进行注册,VMware Workstation 12 Pro key/注册码:5A02H-AU243-TZJ49-GTC7K-3C61Nd)虚拟机程序安装成功。
(二)安装Ubuntu系统(简述安装步骤)a)网上下载ubuntu-14.04.3-desktop-amd64.iso文件(Ubuntu 14 64位系统镜像)b)打开VMware Workstation 12 Pro程序,创建一个新的虚拟机c)进入新建虚拟机向导,选择自定义配置安装进行下一步。
d)安装客户机操作系统,择安装程序光盘映像文件,放入已下载好的Ubuntu 1464位系统镜像文件,进行简易安装。
e)选择安装路径和配置完成向导,进入Ubuntu系统安装界面,等待安装完成。
(三)安装ns2软件及相关环境配置(简述安装步骤及环境配置过程)a)先更新一下系统。
在终端输入:sudo apt-get update #更新源列表sudo apt-get upgrade #更新已安装的包sudo apt-get dist-upgrade #更新软件,升级系统b)安装几个需要使用的软件包sudo apt-get install build-essentialsudo apt-get install tcl8.5 tcl8.5-dev tk8.5 tk8.5-dev #for tcl and tksudo apt-get install libxmu-dev libxmu-headers #for namc)下载ns-allinone-2.35.tar.gz。
无线传感网络课程设计

无线传感网络课程设计无线传感网络课程设计报告姓名:胡韶辉胡衎学号:********* *********班级:物131班指导教师:***2017年1月1日无线传感网络课程设计实验一、无线传感网络点对点通信实验1.实验内容此实验为验证实验,根据实验步骤进行实验,观察结果是否与预期相符2.实验步骤用IAR8.1打开路径:C:\Users\xs\Desktop\无线传感器网络课程设计\无线传感网实验资料201604\感知RF2-2530WSNV1.2\代码和例子程序\Light_Switch\IDE\Light_Switch\srf05_cc25 30\Iar\Light_Switch.eww分别编译并下载至两个节点上,打开节点,左右键选择<device1>/<device2>,选择完成后按中间键确认,观察LED灯显示情况。
3.实验代码及分析/*功能:查找字符在索引中的哪一个位置*//************************************************************************* *************************/static u16 lookforChar( u8 ch ){uint16 i;for( i = 0; i < FONTLISTCOUNT; i ++ ){if( fontList[i] == ch )return i;}return i;}//查中文static u16 lookforChar16( u16 ch ){uint16 i,j;u16 temp16;for( i = 0; i < fontChar16ListCount;i ++ ){j = i*2;temp16 = fontChar16List[j + 1];temp16 <<= 8;temp16 |= fontChar16List[j];if( temp16 == ch )return i;}return i;}/********************************** *************************************** *************************//*功能:在指定位置输出8*8*//********************************** *************************************** *************************/static void LcdPutChar8( u8 x,u8 y,u8 ch ){LcdBuf[y][x] = ch;}/********************************** *************************************** *************************//*功能:在指定位置输出16*16*//********************************** *************************************** *************************//*static void LcdPutChar16( u8 x,u8 y,u16 ch ){LcdBuf[y][x] = (u8)ch;//低前高后LcdBuf[y+1][x] = (u8)(ch>>8);}void LcdPutString8( u8 x,u8 y,u8 *ptr u8 len,u8 op ){u8 i,*tptr = ptr,xx = x,yy = y;u16 m;if( x > 95)return ;if( y > 1)return ;for( i = 0;i < len; i ++ ) {m = lookforChar(*tptr ++);if( m != FONTLISTCOUNT ) {m = m * 8;}elsereturn;xx += 8;if( xx > 88 )return;}}*/void LcdClearRam( void ) {u8 i;for( i = 0;i < 96;i ++ ) {LcdBuf[0][i] = 0;}for( i = 0;i < 96;i ++ ) {LcdBuf[1][i] = 0;}}void LcdClearScrean( void ){LcdClearRam();PutPic( (void *)LcdBuf );}void LcdPutString16_8( u8 x,u8 y,u8 *ptr,u8 len,u8 op ){u8 i,j,*tptr = ptr,xx = x,yy = y;u16 m;if( xx > 95)return ;if( yy )return ;for( i = 0;i < len; i ++ ){m = lookforChar(*tptr ++);if( m != FONTLISTCOUNT ){m = m * 16;for( j = 0;j < 8;j ++ ){if(op){LcdPutChar8( (xx + j),yy,font[m+j] );LcdPutChar8( (xx + j),yy+1,font[m+j+8] );}else{LcdPutChar8( (xx + j),yy,~font[m+j] );LcdPutChar8( (xx + j),yy+1,~font[m+j+8] );}}}elsebreak;xx += 8;if( xx > 96 )return;}PutPic( (void *)LcdBuf );}//显示16*16字符void LcdPutString16_16( u8 x,u8 y,u8 *ptr,u8 len,u8 op ){u8 i,j,*tptr = ptr,xx = x,yy = y; u16 m;if( xx > 95)return ;if( yy )return ;for( i = 0;i < len; i ++ ){m = lookforChar(*tptr ++);if( m != FONTLISTCOUNT ){m = m * 32;for( j = 0;j < 16;j ++ ){if(op){LcdPutChar8( (xx + j),yy,font[m+j] );LcdPutChar8( (xx + j),yy+1,font[m+j+16] );}else{LcdPutChar8( (xx + j),yy,~font[m+j] );LcdPutChar8( (xx + j),yy+1,~font[m+j+16] );}}}elsebreak;xx += 16;if( xx > 80 )return;}PutPic( (void *)LcdBuf );}static void LcdPrint8( u8 x,u8 y,u8 vl,u8 op ){u8 j;u16 m;m = lookforChar( vl );if( m != FONTLISTCOUNT ){m = m * 16;for( j = 0;j < 8;j ++ ){if(op){LcdPutChar8( (x + j),y,font[m+j] );LcdPutChar8( (x + j),y+1,font[m+j+8] );}else{LcdPutChar8( (x + j),y,~font[m+j] );LcdPutChar8( (x + j),y+1,~font[m+j+8] );}}}}static void LcdPrint16( u8 x, u8 y, u16 val, u8 op ){u8 j;u16 m;m = lookforChar16( val );if( m != fontChar16ListCount ){m = m * 32;for( j = 0;j < 16;j ++ ){if(op){LcdPutChar8( (x + j),y,fontChar16[m+j] );LcdPutChar8( (x + j),y+1,fontChar16[m+j+16] );}else{LcdPutChar8( (x + j),y,~fontChar16[m+j] );LcdPutChar8( (x + j),y+1,~fontChar16[m+j+16] );}}}}void LcdPutDispBuf( u8 x,u8 y,OledCodeDataType *ptr,u8 op ){u8 tcount = x;OledCodeDataType *tptr = ptr;u16 temp16;if( x > 88 )return ;if( y > 1 )return;while( (*tptr != '\0') && ( tcount <= 88) ){if(*tptr < 127)//显示ASIC码{LcdPrint8( tcount,y,*tptr,op );tptr ++;tcount += 8;}else//显示汉字{temp16 = tptr[1];temp16 <<= 8;temp16 |= tptr[0];LcdPrint16( tcount,y,temp16,op );tptr += 2;tcount += 16;}}PutPic( (void *)LcdBuf );}//实现中英文混合显示void LcdPutDisp( u8 x,u8 y,OledCodeDataType *ptr,u8 op ){u8 tcount = x;OledCodeDataType *tptr = ptr;u16 temp16;if( x > 88 )return ;if( y > 1 )return;while( (*tptr != '\0') && ( tcount <= 88) ){if(*tptr < 127)//显示ASIC码{LcdPrint8( tcount,y,*tptr,op );tptr ++;tcount += 8;}else//显示汉字{temp16 = tptr[1];temp16 <<= 8;temp16 |= tptr[0];LcdPrint16( tcount,y,temp16,op );tptr += 2;tcount += 16;}}PutPic( (void *)LcdBuf );}//从右往左输出一组字符并移运显示voidLcdPutScDispRtoL( OledCodeDataType *ptr,u8 op,u16 dl ){OledCodeDataType *tptr = ptr;u16 temp16;// LcdClearRam();while( *tptr != '\0' ){if(*tptr < 127)//显示ASIC码{memcpy(LcdBuf[0],&LcdBuf[0][8],88);memcpy(LcdBuf[1],&LcdBuf[1][8],88);LcdPrint8( 88,0,*tptr,op );tptr ++;}else//显示汉字{memcpy(LcdBuf[0],&LcdBuf[0][16],80);memcpy(LcdBuf[1],&LcdBuf[1][16],80);temp16 = tptr[1];temp16 <<= 8;temp16 |= tptr[0];LcdPrint16( 80,0,temp16,op );tptr += 2;}PutPic( (void *)LcdBuf );LcdDelay( dl );}}voidLcdPutScDispRtoL12( OledCodeDataType *ptr,u8 op,u16 dl ){OledCodeDataType *tptr = ptr;u16 i,temp16;for( i = 0;i < 12;){if(*tptr < 127)//显示ASIC码{memcpy(LcdBuf[0],&LcdBuf[0][8],88);memcpy(LcdBuf[1],&LcdBuf[1][8],88);LcdPrint8( 88,0,*tptr,op );tptr ++;i ++ ;}else//显示汉字{memcpy(LcdBuf[0],&LcdBuf[0][16],80);memcpy(LcdBuf[1],&LcdBuf[1][16],80);temp16 = tptr[1];temp16 <<= 8;temp16 |= tptr[0];LcdPrint16( 80,0,temp16,op );tptr += 2;i +=2;}PutPic( (void *)LcdBuf );LcdDelay( dl );}}//从左往右voidLcdPutScDispLtoR12( OledCodeDataType *ptr,u8 op,u16 dl ){OledCodeDataType *ttptr,*tptr = ptr;u16 temp16;u8 i,len,tempbuf[2][96];len = 12;tptr = ptr+11;for( i = 0; i < len; ){if( *(tptr)< 127 )//显示ASIC码{memcpy(&tempbuf[0][0],&LcdBuf[0][0],96 );memcpy(&tempbuf[1][0],&LcdBuf[1][0],96 );memcpy(&LcdBuf[0][8],&tempbuf[0][0],88) ;memcpy(&LcdBuf[1][8],&tempbuf[1][0],88) ;LcdPrint8( 0,0,*tptr,op );tptr --;i ++;}else//显示汉字{memcpy(&tempbuf[0][0],&LcdBuf[0][0],96 );memcpy(&tempbuf[1][0],&LcdBuf[1][0],96 );memcpy(&LcdBuf[0][16],&tempbuf[0][0],80 );memcpy(&LcdBuf[1][16],&tempbuf[1][0],80 );ttptr = tptr;temp16 = *ttptr;temp16 <<= 8;ttptr = tptr-1;temp16 |= *ttptr;LcdPrint16( 0,0,temp16,op );tptr -= 2;i += 2;}PutPic( (void *)LcdBuf );LcdDelay( dl );}}voidLcdPutScString( OledCodeDataType *ptr,u8 op,u8 rl,u16 dl ){switch( rl ){case LIFT_SC:LcdPutScDispLtoR12( ptr,op,dl );break;case RIGHT_SC:LcdPutScDispRtoL12( ptr,op,dl );break;default:break;}}void LcdPutPic( u8 x, u8 y,u8 w,u8 h,OledCodeDataType *ptr,u8 op ){u8 i;OledCodeDataType *tptr = ptr;if( (x > 95) || ((x + w) > 96) )return;if( (y > 1) || ((y + h) > 2))return;for( i = 0;i < w; i ++ ){if(op){LcdBuf[y][x + i] = *tptr ;if( h == 2 )LcdBuf[y+1][x + i] = *(tptr+w);tptr ++;}else{LcdBuf[y][x + i] = ~*tptr ;if( h == 2 )LcdBuf[y+1][x + i] = ~*(tptr+w);tptr ++;}}PutPic( (void *)LcdBuf );}//整屏滑动显示void LcdPutScPic( OledCodeDataType *ptr, u8 op,u8 qp,u16 dl ){u8 i,j;u8 tempbuf[2][96];if(qp){for( i = 0 ;i < 96; i ++ ) {tempbuf[0][i] = *ptr++;}for( i = 0 ;i < 96; i ++ ) {tempbuf[1][i] = *ptr++;}}else{for( i = 0 ;i < 96; i ++ ) {tempbuf[0][i] = ~*ptr++;}for( i = 0 ;i < 96; i ++ ){tempbuf[1][i] = ~*ptr++;}}switch( op ){case RIGHT_SC: //右边for( i = 0; i < 8; i ++ ){for(j = 0;j < 84; j ++ ){LcdBuf[0][95-j] = LcdBuf[0][83 - j];LcdBuf[1][95-j] = LcdBuf[1][83 - j];}for( j = 0;j < 12; j ++ ){LcdBuf[0][11-j] = tempbuf[0][95 - j];LcdBuf[1][11-j] = tempbuf[1][95 - j];}for(j = 0;j < 84; j ++ ){tempbuf[0][95-j] = tempbuf[0][83 - j];tempbuf[1][95-j] = tempbuf[1][83 - j];}PutPic( (void *)LcdBuf );}LcdDelay( dl );break;case LIFT_SC: //左边for( i = 0; i < 8; i ++ ){for(j = 0;j < 84; j ++ ){LcdBuf[0][j] = LcdBuf[0][j + 12];LcdBuf[1][j] = LcdBuf[1][j + 12];}for( j = 0;j < 12; j ++ ){LcdBuf[0][95-j] = tempbuf[0][11-j];LcdBuf[1][95-j] = tempbuf[1][11-j];}for(j = 0;j < 84; j ++ ){tempbuf[0][j] = tempbuf[0][j+12];tempbuf[1][j] = tempbuf[1][j+12];}PutPic( (void *)LcdBuf );}LcdDelay( dl );break;default:break;}}void LcdPutString16_8_R( u8 *ptr,u8 op){u8 i,x=0;for(i=0;i<12;i++){x=88-i*8;LcdPutString16_8( x,0,ptr,i+1,op );LcdDelay(100);}}4.实验总结此实验室实现两个节点间的通信,可以输出中文或英文,或中英文混合输出。
无线传感网络与物联网应用技术实训教程

项目二:基于无线传感网络的智能家居系统
实训目标
了解智能家居系统的基本概念和架构,掌握基于无线传感 网络的智能家居系统的设计和实现方法。
实训内容
学习家居环境中常用传感器的原理和使用方法,了解智能 家居系统的通信协议和组网技术,完成智能家居系统的硬 件搭建和软件编程。
云计算技术
为物联网提供强大的数据存储 和处理能力,实现海量数据的 分析和挖掘。
大数据技术
对物联网产生的海量数据进行 处理和分析,提取有价值的信 息和知识。
人工智能技术
为物联网提供智能化决策和支 持,包括机器学习、深度学习
等技术。
03
CATALOGUE
无线传感网络与物联网融合应用
无线传感网络在物联网中的应用
实训步骤
需求分析、系统设计、硬件搭建、软件编程、系统测试与优化。
05
CATALOGUE
物联网应用技术实训项目
项目一:基于RFID的物流管理系统
系统架构
数据采集与处理
利用RFID技术实现物流信息的自动采集和处理,包 括货物入库、出库、盘点等环节的信息化管理。
设计基于RFID的物流管理系统的整体架构, 包括RFID读写器、标签、中间件和应用软件 等组成部分。
CATALOGUE
无线传感网络与物联网安全技术
无线传感网络安全技术
加密技术
采用先进的加密算法,确保无线传感器网络数据传输 的安全性,防止数据被窃取或篡改。
身份认证技术
通过身份认证机制,验证网络节点的身份,防止非法 节点接入网络,确保网络的完整性。
防火墙技术
在无线传感器网络的网关或重要节点上部署防火墙, 防止恶意攻击和非法访问,提高网络的安全性。
无线传感网络实验报告

图1.3背光调节实验程序流程图
1.5.3实验步骤
(1)双击打开lab1.c文件,在274行找到该背光调节实验程序代码BacklightSetting (),并在其中设置断点,断点位置如下图阴影部分所示。
(2)将工程编译通过,并点击调试按钮进入调试界面。
(3)运行程序,在主菜单下,通过齿轮电位计选择:2.Backlight,然后按下S1键,由于在该程序中设置了断点,程序开始的界面,如下图所示。
2.3实验内容
本章实验包括以下三个小实验:(1)加速度计校准实验;(2)动态立方体演示实验;(3)数字拼图游戏实验。
实验2主函数lab3()的整体程序流程图如图2.1所示:
图21.加速度计应用实验整体程序流程图
2.4加速度计校准实验
2.4.1程序代码
该实验的程序代码包含在lab3.c文件内:
2.4.2程序流程
(2)利用Mini-USB线连接开发板仿真端口(左下角)和PC机。
(3)打开CCSv5.1软件,确认工作区间“F\MSP-EXP430F5529\Workspace”,并导入LAB1工程,导入步骤请参考2.2节:利用CCSv5.1导入已有工程。
(4)双击打开lab1.c文件,在244行找到该对比度调节实验程序代码ContrastSetting (),并在其中设置断点,断点位置如图中阴影部分所示。
2.4.4实验结果
通过本实验,可以完成加速度计的校准,并将校准后的参数存入内存,供其他实验所用。
2.5动态立方体演示实验
2.5.1程序代码
该实验的程序代码包含在UserExperienceDemoCube.c文件内:
2.5.2程序流程
动态立方体演示实验程序流程图如图2.3所示。
无线传感网实验报告

Central South University无线传感器网络实验报告学院:班级:学号:姓名:时间:指导老师:第一章基础实验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 节点板,另一端连接 PC 机串口。
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 下载并调试程序下载完后,如果不想调试程序,可点工具栏上的按钮终止调试。
无线传感器网络实验报告

无线传感器网络实验报告集团文件版本号:(M928-T898-M248-WU2669-I2896-DQ586-M1988)无线传感器网络实验报告专业计算机科学与技术班级 13级计科1班学号姓名目录实验一 CC2530 I/O基础实验实验二 CC2530按键中断实验三 CC2530定时器的使用实验四串行通信接口发送与接收实验五 Zigbee点到点无线通信实验六 Zigbee串口实验实验七无线温度检测实验实验八 Zigbee组网实验实验一 CC2530 I/O基础实验一、实验目的1.掌握IAR编译软件界面的功能;2.掌握配置通用IO寄存器的方法;3.掌握如何编写代码及程序下载。
二、实验内容1.使用CC2530的IO来控制LED灯循环闪烁;2.判断按键是否被按下,如果按下,改变LED灯的状态,原先亮的灯灭,原先灭的亮,如此循环下去。
三、相关知识点cc2530有21个可编程的I/O引脚,P0、P1口是完全的8位口,P2口只有5个可使用的位。
通过软件设定一组SFR寄存器的位和字节,可使这些引脚作为通常的I/O口或作为连接ADC、计时器或USART部件的外围设备I/O口使用。
2.I/O口特性:(1)可设置为通常的I/O口,也可设置为外围I/O口使用;(2)在输入时有上拉和下拉能力;(3)全部21个数字I/O口引脚都具有影响外部的中断事件也能被用来唤醒休眠模式。
3.I/O端口的寄存器如下:P0:端口0 P1:端口1 P2:端口2 PERCFG:外设控制寄存器 APCFG:模拟外设I/O配置P0SEL:端口0功能选择寄存器 P1SEL:端口1功能选择寄存器P2SEL:端口2功能选择寄存器 P0DIR:端口0方向寄存器P1DIR:端口1方向寄存器 P2DIR:端口2方向寄存器P0INP:端口0输入模式寄存器 P1INP:端口1输入模式寄存器P2INP:端口2输入模式寄存器 P0IFG:端口0中断状态标志寄存器P1IFG:端口1中断状态标志寄存器P2IFG:端口2中断状态标志寄存器 PICTL:中断边缘寄存器P0IEN:端口0中断掩码寄存器 P1IEN:端口1中断掩码寄存器P2IEN:端口2中断掩码寄存器 PMUX:掉信号Mux寄存器OBSSEL0:观察输出控制寄存器0 OBSSEL1:观察输出控制寄存器1 OBSSEL2:观察输出控制寄存器2 OBSSEL3:观察输出控制寄存器3 OBSSEL4:观察输出控制寄存器4 OBSSEL5:观察输出控制寄存器5四、实验步骤1.启动IAR;2.新建一个IAR工作区,或者打开一个IAR工作区;3.连接CC Debugger调试器和ZigBee模块、连接CC Debugger到计算机,安装驱动;4.设置项目参数;5.编写、编译、下载程序。
西安交通大学无线传感器网络实验报告

西安交通大学无线传感器网络实验报告姓名:日期:实验一 ZigBee网络设备类型设置基础实验及协调器、路由器和终端的设置一、实验目的1、学习和掌握IAR软件的安装。
2、学习和掌握ZigBee协议栈在IAR软件开发环境中的应用。
3、学习和掌握协调器、路由器和终端的实质。
二、实验设备(1)硬件设备PC机一台;CC2530-DEBUG仿真器一台;ZigBee通信模块(插接在传感器模块的ZigBee通信模块);ZigBee协调器(插接在嵌入式网关或PC机上的ZigBee通信模块)。
(2)软件工具IAR Embedded Workbench Evaluation for 8051 版;PL2303-USB转串口驱动程序;串口调试软件。
三、实验内容及结果(1)仿真器的连接在设置ZigBee的设备前应将仿真器与被设置的设备及PC机正确连接。
仿真器有两个接口,其中一个是USB接口,另一个是仿真接口。
仿真器配有一条USB连线和一条仿真器连线,USB连线的一端插在仿真器上的USB接口上,另一端插在计算机的任一USB口上,该仿真器由计算机的USB口供电。
仿真器连线的一端插入仿真器的仿真接口,另一端插入需要使用的ZigBee通信模块的仿真器接口上,本实验箱的协调器的仿真接口在自身的电路板上,实验箱内的其它应用电路的ZigBee通信模块的仿真器接口在应用电路的电路板上,如传感器右侧的仿真接口即为插接在该传感器上的通信模块的仿真接口。
(2)协调器的设置将仿真器的仿真线的一端插入仿真器,另一端插入协调器模块的仿真口;将仿真器USB 连线的一端插入仿真器,另一端插入电脑的USB口;将协调器插接在计算机的任意一个USB 口上,协调器模块由计算机的USB口供电,协调器模块的电源指示灯亮。
具体步骤如下:1)协调器模块的连接;2)打开 IAR Embdded Workbench 软件;3)打开工程文件;4)选择协调器设备模块;5)设置协调器模块的预编译选项;6)设置协调器预编译文件;7)、添加协调器预编译文件的路径(识别设备类型的关键部分);8)设置协调器连接库文件路径;9)协调器编译下载并使用串口调试程序测试结果。
无线自组网实验报告

《传感网原理及应用》实验报告专业班级: 物联网工程姓名: ##学号:指导教师:评阅成绩:评阅意见:提交报告时间: 2015年 12月 21日目录实验二无线自组网实验1.实验目的…………………………………………………………………………2.实验内容…………………………………………………………………………3.实验步骤…………………………………………………………………………4.实验现象描述与实验结果分析…………………………………………………5.实验思考…………………………………………………………………………实验一点对点通信实验一、实验目的1.了解无线自组网工作原理。
2.掌握利用ZigBee协议栈和传感器组件无线自组网的方法。
二、实验内容本实验使用lAR Embedded Workbench环境和物理地址烧写软件smadRF Flash Programmer,利用ZigBee协议栈和传感器组建无线传感网络,学习zigbee网络组成过程以及各个传感器模块的工作原理和功能。
三、实验步骤1.给zigbee模块下载程序:1.1使用JTAG仿真器连接zigbee模块和PC机;1.2 打开软件SmartRF Flash PrOgramme(物理地址烧写软件):1.3下载*.hex文件。
找到下载所需的程序(*.hex文件),分别为协调器程序以及各个传感器板卡程序。
使用Sma戌RF Flash Programmer软件将*.heX文件下载到协调器以及各个传感器模块中(协调器模块已经集成在ARM网关上。
首先,使用SmadRF Flash Programmer软件打开将要下载的*.hex 文件, 然后,打开“协调器*.hex”文件后,打开将要下载的*.hex文件点击Perform actions, 最后,完成对*.hex 文件的烧写,即完成了对协调器程序文件的烧写.如图:用同样的方法分别对其他传感器终端节点模块进行程序烧写。
无线传感器网络实验报告

郑州航空工业管理学院无线传感器网络实验报告(第1版)20 14– 2015 第2学期赵成编着院系:电子通信工程姓名:专业:物联网工程学号:电子通信工程系2015年6月制实验一WSNs开发环境的建立一、实验目的了解基于TI CC2431/CC2530的WSNs基础知识,熟悉WSNs的开发环境,掌握Cygwin、TinyOS、SDCC、SmartRF Studio 7等软件的安装方法。
二、实验内容1.认识并观察WSNs节点模块的电路板;2.WSNs开发环境的建立:(1)Cygwin仿真软件的安装;(2)TinyOS 操作系统的安装;(3)SDCC小型设备C编译器的安装;(4)SmartRF Studio 7编程软件的安装;三、预备知识了解无线传感器网络的基本概念;熟悉无线传感器网络的结构及开发环境的建立。
四、实验设备1. 硬件环境配置计算机:Intel(R) Pentium(R) 及以上;内存:1GB及以上;实验设备:CC2431无线传感器网络节点模块;2. 软件环境配置操作系统:Microsoft Windows 7 Professional Service Pack 1;WSNs开发环境:Cygwin、TinyOS、SDCC、SmartRF Studio 7。
五、实验分析1.安装的Cygwin仿真软件时选择□Install from Internet还是√□Install from Local Directory。
(在正确的前面打勾)2.在安装Cygwin时,需要选择安装包,如下图所示,在箭头所指向的位置,表示对所有(All)包的操作,点击循环按钮,观察四种安装方式格式什么?写在下面。
图1 Cygwin Setup – Select Package安装方式:Default 、Install 、Reinstall 、Uninstall 。
3.安装TinyOS 操作系统时采用了shell脚本自动安装,请在下面写出执行shell脚本的指令。
无线传感网络技术论文

无线传感网络技术论文无线传感网络技术论文无线网络传感技术给人们的生活创造了很多的乐趣,也为信息的有效、及时的传递起到一定的促进作用,以下是小编为您整理的无线传感网络技术论文相关资料,欢迎阅读!无线传感网络技术论文一摘要:实验教学在学校教育教学中提升学生的实际动手与操作能力方面具有十分重要的作用,尤其是在电子类课程的教学中实验室的重要性更是不言而喻。
但是对这类实验室的管理难度却要更大,迫切需要良好的技术手段和方法支持其管理。
目前基于WSN新型分布式协议在电子类实验室管理中的应用越来越广泛,为如何提高电子类实验室的使用效率提供了重要的思路和方法。
关键词:WSN新型分布式协议;电子类实验室;管理;应用研究WSN也就是无线传感器网络(全称为wirelesssensornetwork),WSN目前在国际上是备受关注,其涉及诸多的学科,而这些学科还具有高度的交叉性和集成性。
具体来说,WSN综合了目前比较流行的传感器技术、嵌入式计算技术、现代网络、无线通信技术以及分布式信息处理技术等一系列的高新技术。
1WSN新型分布式协议在电子类实验室管理中的应用传统背景下,WSN主要是由部署在检测区域内大量的传感器节点(一般都是比较廉价的)所组成,其通过无线通信和传输的方式形成的一个多跳的、自组织的综合系统,其实际的目的就是为了协作地感知、采集与处理网络覆盖区域中具体的感知对象,并将感知到的具体对象的信息发送给观察者。
一般是由传感器、感知对象以及观察者,三个基本要素所构成。
在电子类实验室的WSN应用领域,感知对象就是电子类实验室中的各种实验仪器、设备、操作平台等,而观察人员则为实验室的管理员(当然也有相应的技术人员参与其中)。
新型的分布式WSN网络协议使得监控获得的信息数据不再仅仅局限于一些环境数据信息如温度、湿度、位置等标量的数据。
其已经集成了更多的视频、音频、图像信息等进入到系统中,而分布式的WSN 网络协议与网络结构的OSI模型有着类似之处,就是将系统分层、分布的展开,不同的层次负责不同的业务,是一种分布处理的工作机制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《无线传感网技术》实验二班级:微电子1102 学号:0301110213 姓名:王绪安一、实验目的通过仿真实验,掌握无线传感网络联通率与通信半径以及节点数目之间的关系。
二、实验内容(1)在不同节点数目n 情况下,用Matlab 拟合出连通率与通信半径的关系曲线。
(2)在不同通信半径R 情况下,用Matlab 拟合出连通率与节点数量n 的关系曲线。
三、实验思路分析过程(包括程序说明)用计算机语言编写图的连通性判断算法,判断节点是否连通以及确定连通分支的个数,Warshell 算法实现方法Warshell 算法Warshell 算法可解决图是否连通的问题, 而且效率很高。
在该算法中,矩阵P 是判断矩阵,1=ij p 表示从i 到j 连通,0=ij p 表示从i 到j 不连通。
T 矩阵是模拟节点的两两直接连通矩阵T ij =1表示从i 到j 连通,T ij =0表示从i 到j 不连通。
(1)置新矩阵 P:= T ;(2)k=1.....9,P=P*T ;循环叠乘得出最终连通矩阵。
(3)对P 矩阵P ij 进行连续判断,若有P ij <=0,则该图不连通,跳出循环。
(4)重复上面操作1000次,累计连通图的次数n,得出连通率。
四、实验程序(1)在不同节点数目n 情况下,用Matlab 拟合出连通率与通信半径的关系曲线。
rate_1 = zeros(1,100);r=0.01:0.01:1;for k=1:1:100for number=1:1:1000flag_overflow=1;x=rand(10,1);y=rand(10,1);for num=1:1:10for sec_num=1:1:10if(sqrt((x(num)-x(sec_num))^2+(y(num)-y(sec_num))^2)<r(k)) p(num,sec_num)=1;elsep(num,sec_num)=0;endendendt=p;for s=1:1:9t=t*p;endfor i=1:1:10for j=1:1:10if t(i,j)<=10flag_overflow=0;break;endendif flag_overflow==0break;endendrate_1(k)=rate_1(k)+flag_overflow;endrate_1(k)=rate_1(k)/1000;endrate_2 = zeros(1,100);r=0.01:0.01:1;for k=1:1:100for number=1:1:1000flag_overflow=1;x=rand(20,1);y=rand(20,1);for num=1:1:20for sec_num=1:1:20if(sqrt((x(num)-x(sec_num))^2+(y(num)-y(sec_num))^2)<r(k)) p(num,sec_num)=1;elsep(num,sec_num)=0;endendendt=p;for s=1:1:19t=t*p;endfor i=1:1:20for j=1:1:20if t(i,j)<=10flag_overflow=0;break;endendif flag_overflow==0break;endendrate_2(k)=rate_2(k)+flag_overflow;endrate_2(k)=rate_2(k)/1000;endrate_3 = zeros(1,100);r=0.01:0.01:1;for k=1:1:100for number=1:1:1000flag_overflow=1;x=rand(50,1);y=rand(50,1);for num=1:1:50for sec_num=1:1:50if(sqrt((x(num)-x(sec_num))^2+(y(num)-y(sec_num))^2)<r(k)) p(num,sec_num)=1;elsep(num,sec_num)=0;endendendt=p;for s=1:1:49t=t*p;endfor i=1:1:50for j=1:1:50if t(i,j)<=10flag_overflow=0;break;endendif flag_overflow==0break;endendrate_3(k)=rate_3(k)+flag_overflow;endrate_3(k)=rate_3(k)/1000;endrate_4 = zeros(1,100);r=0.01:0.01:1;for k=1:1:100for number=1:1:1000flag_overflow=1;x=rand(100,1);y=rand(100,1);for num=1:1:100for sec_num=1:1:100if(sqrt((x(num)-x(sec_num))^2+(y(num)-y(sec_num))^2)<r(k)) p(num,sec_num)=1;elsep(num,sec_num)=0;endendendt=p;for s=1:1:99t=t*p;endfor i=1:1:100for j=1:1:100if t(i,j)<=10flag_overflow=0;break;endendif flag_overflow==0break;endendrate_4(k)=rate_4(k)+flag_overflow; endrate_4(k)=rate_4(k)/1000;endx_lab=0.01:0.01:1;plot(x_lab,rate_1,'+-r');hold all;plot(x_lab,rate_2,'b--');hold all;plot(x_lab,rate_3,'ko-');hold all;plot(x_lab,rate_4,'g*-');xlabel( '通信半径')ylabel('网络连接概率')(2)在不同通信半径R情况下,用Matlab拟合出连通率与节点数量n的关系曲线。
%联通半径是0.05,0.15,0.25,0.35%x轴是节点数%y轴是联通率%k是结点数number_max = 1000;rate_1 = zeros(1,100);x_y_1 = [];r_1 = 0.15;for k=1:1:100p = zeros(k,k);%存放k*k矩阵的联通值0或1for number=1:1:number_maxflag_overflow=1;%x=rand(k,1);%每次随x生成1-100%y=rand(k,1);%生成联通点,x,yx_y_1 =rand(k,2,1);%生成p的联通矩阵for num=1:1:kfor sec_num=1:1:kif(sqrt((x_y_1(num,1)-x_y_1(sec_num,1))^2+(x_y_1(num,2)-x_y_1(sec_num,2))^2)< r_1)p(num,sec_num)=1;elsep(num,sec_num)=0;endendend%p复制给t进行联通率判断t=p;p;%图论的联通率判断法for s=1:1:k-1t=t*p;end%两层循环判断是否全联通for i=1:1:kfor j=1:1:kif t(i,j)<=0flag_overflow=0;break;endendif flag_overflow==0break;endendrate_1(k)=rate_1(k)+flag_overflow;endrate_1(k)=rate_1(k)/number_max;endrate_2 = zeros(1,100);x_y_2 = [];r_2 = 0.25;for k=1:1:100p = zeros(k,k);%存放k*k矩阵的联通值0或1for number=1:1:number_maxflag_overflow=1;%x=rand(k,1);%每次随x生成1-100%y=rand(k,1);%生成联通点,x,yx_y_2 =rand(k,2,1);%生成p的联通矩阵for num=1:1:kfor sec_num=1:1:kif(sqrt((x_y_2(num,1)-x_y_2(sec_num,1))^2+(x_y_2(num,2)-x_y_2(sec_num,2))^2)< r_2)p(num,sec_num)=1;elsep(num,sec_num)=0;endendend%p复制给t进行联通率判断t=p;p;%图论的联通率判断法for s=1:1:k-1t=t*p;end%两层循环判断是否全联通for i=1:1:kfor j=1:1:kif t(i,j)<=0flag_overflow=0;break;endendif flag_overflow==0break;endendrate_2(k)=rate_2(k)+flag_overflow;endrate_2(k)=rate_2(k)/number_max;endrate_3 = zeros(1,100);x_y_3 = [];r_3 = 0.35;for k=1:1:100p = zeros(k,k);%存放k*k矩阵的联通值0或1for number=1:1:number_maxflag_overflow=1;%x=rand(k,1);%每次随x生成1-100%y=rand(k,1);%生成联通点,x,yx_y_3 =rand(k,2,1);%生成p的联通矩阵for num=1:1:kfor sec_num=1:1:kif(sqrt((x_y_3(num,1)-x_y_3(sec_num,1))^2+(x_y_3(num,2)-x_y_3(sec_num,2))^2)< r_3)p(num,sec_num)=1;elsep(num,sec_num)=0;endendend%p复制给t进行联通率判断t=p;p;%图论的联通率判断法for s=1:1:k-1t=t*p;end%两层循环判断是否全联通for i=1:1:kfor j=1:1:kif t(i,j)<=0flag_overflow=0;break;endendif flag_overflow==0break;endendrate_3(k)=rate_3(k)+flag_overflow; endrate_3(k)=rate_3(k)/number_max;endrate_4 = zeros(1,100);x_y_4 = [];r_4 = 0.45;for k=1:1:100p = zeros(k,k);%存放k*k矩阵的联通值0或1for number=1:1:number_maxflag_overflow=1;%x=rand(k,1);%每次随x生成1-100%y=rand(k,1);%生成联通点,x,yx_y_4 =rand(k,2,1);%生成p的联通矩阵for num=1:1:kfor sec_num=1:1:kif(sqrt((x_y_4(num,1)-x_y_4(sec_num,1))^2+(x_y_4(num,2)-x_y_4(sec_num,2))^2)< r_4)p(num,sec_num)=1;elsep(num,sec_num)=0;endendend%p复制给t进行联通率判断t=p;p;%图论的联通率判断法for s=1:1:k-1t=t*p;end%两层循环判断是否全联通for i=1:1:kfor j=1:1:kif t(i,j)<=0flag_overflow=0;break;endendif flag_overflow==0break;endendrate_4(k)=rate_4(k)+flag_overflow;endrate_4(k)=rate_4(k)/number_max;endx_lab=1:1:100;plot(x_lab,rate_1,'+-r');hold all;plot(x_lab,rate_2,'b--');hold all;plot(x_lab,rate_3,'ko-');hold all;plot(x_lab,rate_4,'g*-');五、实验结果不同节点数n,连通率与通信半径R的关系曲线图一不同通信半径R,连通率与节点数n的关系曲线图二。