A. 誰有無線感測器網路路由協議用MATLAB模擬的代碼及圖,急用......... 麻煩大神給我一個啊
I=randi(100,1024,768);%這里用隨機矩陣,你改自己數據
A=mat2cell(I,8*ones(128,1),8*ones(96,1));
Sum=cellfun(@mean2,A);
Edge=Sum>50;
B. 無線感測器網路常見通信協議標準是什麼
無線感測器網路主要由三大部分組成,包括節點、感測網路和用戶這3部分。其中,節點一般是通過一定方式將節點覆蓋在一定的范圍,整個范圍按照一定要求能夠滿足監測的范圍;感測網路是最主要的部分,它是將所有的節點信息通過固定的渠道進行收集,然後對這些節點信息進行一定的分析計算,將分析後的結果匯總到一個基站,最後通過衛星通信傳輸到指定的用戶端,從而實現無線感測的要求
C. ns2 實現無線感測器網路antsense路由演算法的tcl腳本
NS是一種針對網路技術的源代碼公開的、免費的軟體模擬平台,研究人員使用它可以很容易的進行網路技術的開發,而且發展到今天,它所包含的模塊已經非常豐富,幾乎涉及到了網路技術的所有方面。所以,NS成了目前學術界廣泛使用的一種網路模擬軟體。在每年國內外發表的有關網路技術的學術論文中,利用NS給出模擬結果的文章最多,通過這種方法得出的研究結果也是被學術界所普遍認可的,此外,NS也可作為一種輔助教學的工具,已被廣泛應用在了網路技術的教學方面。因此,目前在學術界和教育界,有大量的人正在使用或試圖使用NS。
然而,對初學者來說,NS是非常難於掌握的,一般人從學習NS到上手至少需要半年多時間。原因是多方面的:一方面,NS內容龐雜,隨軟體所提供的手冊更新不夠快,初學者閱讀起來非常困難;另一方面,使用NS還要掌握其它很多必備的相關知識以及相關工具,這會使初學者感到無從入手;有的使用者可能還不了解網路模擬的過程或是對NS軟體的機制缺乏理解,這也影響了對NS的掌握。另外,不論在國外還是國內,還沒有一本書能集中回答和解決這些問題,這也是NS難於被掌握的一個重要原因。
1、NS2簡介
NS2(Network Simulator, version 2)是一種面向對象的網路模擬器,本質上是一個離散事件模擬器。由UC Berkeley開發而成。它本身有一個虛擬時鍾,所有的模擬都由離散事件驅動的。目前NS2可以用於模擬各種不同的IP網,已經實現的一些模擬有:網路傳輸協議,比如TCP和UDP;業務源流量產生器,比如FTP, Telnet, Web CBR和VBR;路由隊列管理機制,比如Droptail , RED和CBQ;路由演算法,比如Dijkstra等。NS2也為進行區域網的模擬而實現了多播以及一些MAC 子層協議。
NS2使用C++和Otcl作為開發語言。NS可以說是Otcl的腳本解釋器,它包含模擬事件調度器、網路組件對象庫以及網路構建模型庫等。事件調度器計算模擬時間,並且激活事件隊列中的當前事件,執行一些相關的事件,網路組件通過傳遞分組來相互通信,但這並不耗費模擬時間。所有需要花費模擬時間來處理分組的網路組件都必須要使用事件調度器。它先為這個分組發出一個事件,然後等待這個事件被調度回來之後,才能做下一步的處理工作。事件調度器的另一個用處就是計時。NS是用Otcl和C++編寫的。由於效率的原因,NS將數據通道和控制通道的實現相分離。為了減少分組和事件的處理時間,事件調度器和數據通道上的基本網路組件對象都使用C++寫出並編譯的,這些對象通過映射對Otcl解釋器可見。
當模擬完成以後,NS將會產生一個或多個基於文本的跟蹤文件。只要在Tcl腳本中加入一些簡單的語句,這些文件中就會包含詳細的跟蹤信息。這些數據可以用於下一步的分析處理,也可以使用NAM將整個模擬過程展示出來。
2、使用NS進行網路模擬的方法和一般過程。
進行網路模擬前,首先分析模擬涉及哪個層次,NS模擬分兩個層次:一個是基於OTcl編程的層次。利用NS已有的網路元素實現模擬,無需修改NS本身,只需編寫OTcl腳本。另一個是基於C++和OTcl編程的層次。如果NS中沒有所需的網路元素,則需要對NS進行擴展,添加所需網路元素,即添加新的C++和OTcl類,編寫新的OTcl腳本。
假設用戶已經完成了對NS的擴展,或者NS所包含的構件已經滿足了要求,那麼進行一次模擬的步驟大致如下:
(1)開始編寫OTcl腳本。首先配置模擬網路拓撲結構,此時可以確定鏈路的基本特性,如延遲、帶寬和丟失策略等。
(2)建立協議代理,包括端設備的協議綁定和通信業務量模型的建立。
(3)配置業務量模型的參數,從而確定網路上的業務量分布。
(4)設置Trace對象。NS通過Trace文件來保存整個模擬過程。模擬完後,用戶可以對Trace文件進行分析研究。
(5)編寫其他的輔助過程,設定模擬結束時間,至此OTcl腳本編寫完成。
(6)用NS解釋執行剛才編寫的OTcl腳本。
(7)對Trace文件進行分析,得出有用的數據。
(8)調整配置拓撲結構和業務量模型,重新進行上述模擬過程。
NS2採用兩級體系結構,為了提高代碼的執行效率,NS2 將數據操作與控制部分的實現相分離,事件調度器和大部分基本的網路組件對象後台使用C++實現和編譯,稱為編譯層,主要功能是實現對數據包的處理;NS2的前端是一個OTcl 解釋器,稱為解釋層,主要功能是對模擬環境的配置、建立。從用戶角度看,NS2 是一個具有模擬事件驅動、網路構件對象庫和網路配置模塊庫的OTcl腳本解釋器。NS2中編譯類對象通過OTcl連接建立了與之對應的解釋類對象,這樣用戶間能夠方便地對C++對象的函數進行修改與配置,充分體現了模擬器的一致性和靈活性。
3、NS2的功能模塊
NS2模擬器封裝了許多功能模塊,最基本的是節點、鏈路、代理、數據包格式等等,下面分別來介紹一下各個模塊。
(1)事件調度器:目前NS2提供了四種具有不同數據結構的調度器,分別是鏈表、堆、日歷表和實時調度器。
(2)節點(node):是由TclObject對象組成的復合組件,在NS2中可以表示端節點和路由器。
(3)鏈路(link):由多個組件復合而成,用來連接網路節點。所有的鏈路都是以隊列的形式來管理分組的到達、離開和丟棄。
(4)代理(agent):負責網路層分組的產生和接收,也可以用在各個層次的協議實現中。每個agent連接到一個網路節點上,由該節點給它分配一個埠號。
(5)包(packet):由頭部和數據兩部分組成。一般情況下,packet只有頭部、沒有數據部分。
4、NS2的軟體構成
NS2包含Tcl/Tk, OTcl, NS,Tclcl。其中Tcl是一個開放腳本語言,用來對NS2進行編程;Tk是Tcl的圖形界面開發工具,可幫助用戶在圖形環境下開發圖形界面;OTcl是基於Tcl/Tk的面向對象擴展,有自己的類層次結構;NS2為本軟體包的核心,是面向對象的模擬器,用C++編寫,以OTcl解釋器作為前端;Tclcl則提供NS2和OTcl的介面,使對象和變數出現在兩種語言中。為了直觀的觀察和分析模擬結果,NS2 提供了可選的Xgraphy、可選件Nam。
5、NS現有的模擬元素
從網路拓撲模擬、協議模擬和通信量模擬等方面介紹NS的相應元素:
(1)網路拓撲主要包括節點、鏈路。NS的節點由一系列的分類器(Classifier,如地址分類器等)組成,而鏈路由一系列的連接器(Connector)組成。
(2)在節點上,配置不同的代理可以實現相應的協議或其它模型模擬。如NS的TCP代理,發送代理有:TCP,TCP/Reno,TCP/Vegas,TCP/Sack1,TCP/FACK,TCP/FULLTCP等,接收代理有:TCPSINK,TCPSINK/DELACK。TCPSINK/SACK1,TCPSINK/SACK1/DELACK等。此外,還提供有UDP代理及接收代理Null(負責通信量接收)、Loss Monitor(通信量接收並維護一些接收數據的統計)。
(3)網路的路由配置通過對節點附加路由協議而實現。NS中有三種單播路由策略:靜態、會話、動態。
(4)在鏈路上,可以配置帶寬、時延和丟棄模型。NS支持:Drop-tail(FIFO)隊列、RED緩沖管、CBO(包括優先權和Round-robin 調度)。各種公平隊列包括:FQ,SFQ,DRR等。
(5)通信量模擬方面,NS提供了許多通信應用,如FTP,它產生較大的峰值數據傳輸;Telnet則根據相應文件隨機選取傳輸數據的大小。此外,NS提供了四種類型的通信量產生器:EXPOO,根據指數分布(On/Off)產生通信量,在On階段分組以固定速率發送,Off階段不發送分組,On/Off的分布符合指數分布,分組尺寸固定;POO,根據Pareto分布(On/Off)產生通信量,它能用來產生長范圍相關的急劇通信量;CBR,以確定的速率產生通信量,分組尺寸固定,可在分組間隔之間產生隨機抖動;Traffic Trace,根據追蹤文件產生通信量。
D. 無線感測器網路的覆蓋控制演算法有哪幾類
通常無線感測器網路的節點在目標區域的部署有大規模、高密度的特點,這就導致網路中大量節點的覆蓋區域相互交疊。這種覆蓋冗餘性會導致採集、傳輸數據的冗餘以及信道的干擾,浪費了有限的能量資源。使用合適的覆蓋控制演算法和節點調度演算法在保證一定覆蓋性的前提下使一些節點的感測模塊策略性的休眠,對延長網路生存時間有重要意義!
E. 誰有用C語言編寫的無線感測器網路信道沖突避免程序,急急急
SqlConnection con = new SqlConnection
con.Open();
string sqlstr = "sql語句";
SqlDataAdapter da = new SqlDataAdapter(sqlstr, con);
DataSet ds= new DataSet();
da.Fill(ds);
dataGridView1.DataSource = ds.Tables[0];
con.Close();
F. 誰能提供一下STM32W108無線射頻無線感測器網路煩霧採集的程序源代碼與實例非常感謝
STM32W108無線射頻模塊AD轉換器煙霧感測器數據採集
STM32W108 AD轉換器是一個一階∑-△轉換器,具有以下特性:
l 解析度可達12位
l 采樣最小時間5.33us(188KHz)
l 6個外部和4個內部輸入源,可進行差分和單端轉換
l 兩個電壓轉換范圍(差分):-VREF~+VREF,-VDD_PADS~+VDD_PADS
l 可選擇內部和外部參考標准VREF:內部的VREF可用於輸出
l 數字偏移和增益校準
l 專用DMA通道,通道支持一次和連續的操作模式
應用實例解析
編寫煙霧感測器測試程序,讀取煙霧感測器的AD值,並輸出到串口顯示。
9.3.1開發環境與硬體說明
硬體:STM32W108 無線開發板、煙霧感測器、J-LINK調試器、PC機等。
軟體:IAR Embedded Workbench開發軟體、SimpleMac協議棧。
圖9.13為煙霧感測器的原理圖,煙霧感測器的引腳連接圖如圖9.14所示,煙霧感測器的5V接引腳1,GND接引腳4,DOUT接引腳2(即晶元中的PA3),AOUT接引腳3(即晶元中的PA4)。
圖9.14. 煙霧感測器與STM32W108晶元管腳連接圖
9.3.2軟體設計與規劃
本實例煙霧感測器中用到adc.c中的函數,有StStatus halStartAdcConversion(ADCUser id, ADCReferenceType reference, ADCChannelType channel, ADCRateTyperate),該函數是開啟AD轉換功能;其中ADCUser id在adc.h中定義,有三種,本實例中用到ADC_USER_APP;ADCReferenceType reference為參考類型,adc.h中定義,本實例中用ADC_REF_INT,ADCChannelType channel為模擬輸入通道,在adc.h中定義,本實例中用到的是PA4作為模擬輸入的通道;ADCRateType rate為AD轉換頻率,在adc.h中定義,本實例中用到的是ADC_CONVERSION_TIME_US_4096,4096us,12個有效位。
無線節點上電首先進行硬體初始化,然後等按鍵S2被按下,只要S2被按下,無線節點就周期性的進行AD轉換。
9.3.3感測器數據採集程序設計
在煙霧感測器的驅動程序中涉及到了AD轉換的內容:
其中adc.h中的內容有:
static int16u adcData; //DMA中的ADC轉換結果
在煙霧感測器的驅動程序中涉及到了AD轉換的函數:
在adc.c中的添加函數有:
/**************************************************************************
功能描述:完成對AD轉換後數據的獲取
輸入參數:無
輸出參數:AD轉換後的16位無符號數
*************************************************************************/
int16u getData(void)
{
int16s data; //存放AD轉換後的電壓的數值
while ( !(INT_ADCFLAG & INT_ADCULDFULL)); //無效時,空等待
data=halConvertValueToVolts(adcData); //將AD轉換的電壓數據存至data變數中
return (int16u)data;
}
/**************************************************************************
功能描述:內部ADC初始化
輸入參數:無
輸出參數:無
*************************************************************************/
void halInternalInitAdc(void)
{
//初始化狀態變數
adcPendingRequests = 0;
adcPendingConversion = NUM_ADC_USERS;
adcCalibrated = FALSE;
adcStaticConfig = ADC_1MHZCLK | ADC_ENABLE; //初始化配置:1MHz, 低壓范圍
// 設置所有ADC讀取無效
adcReadingValid = 0;
// 關閉ADC
ADC_CFG = 0; //禁用ADC,關閉HV緩沖區
ADC_OFFSET = ADC_OFFSET_RESET;
ADC_GAIN = ADC_GAIN_RESET;
ADC_DMACFG = ADC_DMARST;
ADC_DMABEG = (int32u)&adcData;
ADC_DMASIZE = 1;
ADC_DMACFG = (ADC_DMAAUTOWRAP | ADC_DMALOAD);
//清空ADC中斷,並使能中斷
INT_ADCCFG = INT_ADCULDFULL;
INT_ADCFLAG = 0xFFFF;
INT_CFGSET = INT_ADC;
stCalibrateVref(); //校準參考電壓
}
MQ2.h編寫(煙霧感測器)
/*****************************************************************
文件名:MQ2.h
版本號:v1.0
創建日期:2012-4-1
硬體描述:煙霧感測器的數字輸出接STM32W晶元的PA3,模擬輸出接STM32W晶元的PA4
主要函數描述:MQSetStatus(int32u status):設置對應引腳;
MQGetStatus():獲得對應埠值
MQGetDCData():獲得煙霧感測器數字輸出的值
MQADCInit():設置PA4為模擬輸入狀態
MQGetADCStart():開啟AD轉換
*****************************************************************/
#ifndef __MQ_H__
#define __MQ_H__
//設置MQ2煙霧感測器的數字輸出埠與STM32W的PA3埠相連接
#define MBUS PORTA_PIN(3)
#define MBUS_INPUT_GPIO GPIO_PAIN
#define MBUS_OUTPUT_GPIO GPIO_PAOUT
#define MBUS_GPIO_PIN PA3_BIT
#define MBUS_WAKE_SOURCE 0x00000080
#define MBUS_SET (GPIO_PASET_ADDR+((GPIO_PBCFGL_ADDR
-GPIO_PACFGL_ADDR)*(MBUS/8)))
#define MBUS_CLR (GPIO_PACLR_ADDR+((GPIO_PBCFGL_ADDR
-GPIO_PACFGL_ADDR)*(MBUS/8)))
extern void MQSetStatus(int32u status); //設置對應引腳;
extern u8 MQGetStatus(); //獲得對應埠值
extern u8 MQGetDCData(); //獲得煙霧感測器數字輸出的值
extern void MQADCInit(); //設置PA4為模擬輸入狀態
extern void MQGetADCStart(); //開啟AD轉換
#endif
MQ2.c編寫(煙霧感測器)
/*****************************************************************
文件名:MQ2.c
版本號:v1.0
創建日期:2012-4-1
硬體描述:煙霧感測器的數字輸出接STM32W晶元的PA3,模擬輸出接STM32W晶元的PA4
主要函數描述:MQSetStatus(int32u status):設置對應引腳;
MQGetStatus():獲得對應埠值
MQGetDCData():獲得煙霧感測器數字輸出的值
MQADCInit():設置PA4為模擬輸入狀態
MQGetADCStart():開啟AD轉換
*****************************************************************/
#include PLATFORM_HEADER
#include BOARD_HEADER
#include "MQ2.h"
#include "hal/micro/micro-common.h"
#include "hal/micro/cortexm3/micro-common.h"
#include "hal/micro/adc.h"
#include "stdio.h"
#define LOW 0//低電平
#define HIGH 1//高電平
/**************************************************************************
功能描述:完成對特定埠的設置
輸入參數:status:埠參數,高電平或低電平
輸出參數:無
*************************************************************************/
void MQSetStatus(int32u status)
{
halGpioConfig(MBUS,GPIOCFG_OUT);
if(MBUS/8 < 3)
{
if(status==HIGH) //設置為高電平
*((volatile int32u *)MBUS_SET) = BIT(MBUS&7);
else //設置為低電平
*((volatile int32u *)MBUS_CLR) = BIT(MBUS&7);
}
}
/**************************************************************************
功能描述:完成獲取對應埠的值
輸入參數:無
輸出參數:對應埠的值
*************************************************************************/
u8 MQGetStatus()
{
return (MBUS_INPUT_GPIO & (1<<MBUS_GPIO_PIN)) ? 1 : 0;
}
/**************************************************************************
功能描述:完成對煙霧感測器數字輸出的獲取
輸入參數:無
輸出參數:煙霧感測器數字輸出值
*************************************************************************/
u8 MQGetDCData()
{
halGpioConfig(MBUS,GPIOCFG_IN);
if(MQGetStatus()==0)
{
halCommonDelayMicroseconds(500); //延時抗干擾
if(MQGetStatus()==0)
return 0;
else
return 1;
}
else
return 1;
}
/**************************************************************************
功能描述:設置PA4埠為模擬輸入輸出
輸入參數:無
輸出參數:無
*************************************************************************/
void MQADCInit()
{
halGpioConfig(PORTA_PIN(4),GPIOCFG_ANALOG);
}
/**************************************************************************
功能描述:完成對給定數字的顯示
輸入參數:無
輸出參數:無
*************************************************************************/
void MQGetADCStart()
{
halAdcCalibrate(ADC_USER_APP); //設置ADC校準
halStartAdcConversion(ADC_USER_APP,ADC_REF_INT, ADC_SOURCE_ADC4_VREF2,ADC_CONVERSION_TIME_US_4096 ); //開啟AD轉換,ADC4,轉換速率4096
}
9.3.4測試程序編寫
編寫測試程序源文件solar-system.c:
/*****************************************************************
文件名:solar-system.c
版本號:v1.0
創建日期:2012-4-1
硬體描述:對於無線節點上煙霧感測器數字輸出接PA3,模擬輸出接PA4
主要函數描述:main( )函數實現對各個感測器的控制。
*****************************************************************/
#include PLATFORM_HEADER
#include BOARD_HEADER
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "error.h"
#include "hal/hal.h"
#include "include/phy-library.h"
#include "hal/micro/cortexm3/iap_bootloader.h"
#include "MQ2.h"
/**************************************************************************
功能描述:完成對某種感測器的檢測
輸入參數:無
輸出參數:無
*************************************************************************/
int main(void)
{
boolean preesed = FALSE;
halInit();//初始化硬體
uartInit(115200, 8, PARITY_NONE, 1); //初始化UART
.
//配置PA4和PA5作為復用輸出引腳,用於數據包的跟蹤
halGpioConfig(PORTA_PIN(4),GPIOCFG_OUT_ALT);
halGpioConfig(PORTA_PIN(5),GPIOCFG_OUT_ALT);
GPIO_IRQDSEL = PORTB_PIN(2); //連接IRQD到PB2/SC1RXD
//允許IRQD標志位激活任何的IRQD
GPIO_INTCFGD = (3<<GPIO_INTMOD_BIT);
INT_GPIOFLAG = INT_IRQDFLAG;
INT_PENDCLR = INT_IRQD;
INTERRUPTS_ON();
halInitLed(); //初始化LED
halInitButton(); //初始化按鍵
halInternalInitAdc();//內部ADC初始化
MQADCInit(); //煙霧感測器介面初始化
printf("Press S2 to begin ADC Change\n");
while(TRUE)
{
halCommonDelayMilliseconds(10);
if (halGetButtonStatus(BUTTON_S2) == BUTTON_PRESSED||preesed == TRUE)
{
preesed = TRUE;
/********讀取煙霧感測器AD值*******************/
MQGetADCStart();
u16 mqacdata=getData();
u8 flag=0;
if(mqacdata&(0x01<<15)!=0)
{
mqacdata=~(mqacdata-1);//負數,2進制補碼
flag=1;
}
if(mqacdata<32768)
{
if(flag==1)
{
printf("Smoke -%d\n",mqacdata);
}
else
{
printf("Current ADC: %d\n",mqacdata);
}
}
halCommonDelayMilliseconds(2000);//2000ms
}
}
}
9.3.5測試結果及分析
煙霧感測器的模擬輸出經過AD轉換後的值通過串口發送到PC機,AD轉換的電壓范圍最大為1.2V,操作各感測器時,可以調節煙霧感測器模塊上面的滑動變阻器,以改變感測器的靈敏度。
本文出自《STM32W108嵌入式無線感測器網路》邱鐵,夏鋒,周玉編著.清華大學出版社,2014年5月
同時參考http://blog.csdn.net/u010273356/article/details/46932007
G. 匯聚節點(sink節點)的代碼怎麼寫 無線感測器網路組網
要是用的tinyos系統的話,Basetion可以作為sink節點接收,別的C語言寫的因代碼而異。
H. 在下在做WSN無線感測器網路MATLAB的數據融合aggregation的模擬,不知道哪位大俠有TAG協議的模擬程序
我也需要做這方面的,請問您現在有代碼了嗎
I. 妹子急求無線感測器網路S-MAC協議的模擬研究代碼 求各路大神幫忙 能夠運行成功全部金幣拿走。。。
http://wenku..com/link?url=SJeM1ieR3P020zMoFbjo8_nG_pn3Kfj5dPH5i