无线传感器网络实验手册.doc

上传人:文库蛋蛋多 文档编号:2390757 上传时间:2023-02-17 格式:DOC 页数:97 大小:12.07MB
返回 下载 相关 举报
无线传感器网络实验手册.doc_第1页
第1页 / 共97页
无线传感器网络实验手册.doc_第2页
第2页 / 共97页
无线传感器网络实验手册.doc_第3页
第3页 / 共97页
无线传感器网络实验手册.doc_第4页
第4页 / 共97页
无线传感器网络实验手册.doc_第5页
第5页 / 共97页
点击查看更多>>
资源描述

《无线传感器网络实验手册.doc》由会员分享,可在线阅读,更多相关《无线传感器网络实验手册.doc(97页珍藏版)》请在三一办公上搜索。

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

2、tallatos4tinyos.msi 。 Keil C51编译器安装包:c51v808a.exe,在光盘的路径为,无线传感器网络1.5TinyOS2TinyOS_installc51v808a.exe 。 IIS服务器:准备一张 Windows XP professional 的安装光盘。 SQL SERVER 2005数据库管理工具 :准备一张SQL SERVER 2005的安装光盘。创建AtoseNet环境:Cygwin1. 打开无线传感器网络光盘,进入如下路径 TinyOS2TinyOS_install, 双击atos4tinyos.msi 进入安装过程2. 进入如下界3. 单机下一步

3、4. 选择合适的路径(这里选择缺省路径),点击“下一步”5. 单击安装,进入安装进程如下6. 安装完成后将出现如下两个界面7. 选择完路径后单击“点击开始安装”8. 进入Cygwin 安装界面,安装完成后自动弹出如下界面:9. 请任意键后即可完成安装。桌面上会自动建立Cygwin 的快捷方式,单击进入即可安装Keil C51 编译器10. 打开无线传感器网络光盘,进入如下路径 TinyOS2TinyOS_install, 双击c51v808a.exe 进入安装过程11. 单击“Next”并且选中“I agree to all the terms of the preceding License

4、 Agreement”12. 选择默认的路径13. 选择安装路径后,单击“Next”:14. 输入用户名等资料后单击“Next”进入安装进度界面:15. 单击“Finish”完成安装过程。桌面上会自动建立 keil的快捷方式,单击进入即可。至此无线传感器网络实验开发环境搭建已完成实验二 程序烧录实验以下步骤描述了如何逐步执行实验 2 “程序烧录实验”来实现节点程序的烧写。先决条件: 安装好Cygwin和TinyOS实验环境。 掌握对无线节点进行程序烧写的方法。Cygwin下烧写节点程序1. 启动Cygwin,输入命令cd /进入TinyOS主目录,用命令ls可以查看目录下的所有文件。2. 输入

5、命令cd /opt/atos,进入该目录后,用ls命令可以查看目录下有环境变量配置文件setupenv,然后执行source setupenv命令,使环境变量生效。3. 进入apps文件夹,再进入Atosenet文件夹,输入ls查看4. 对基站节点烧写 对于基站节点,请将基站节点插入网关板的插口处,将USB线缆一端与PC端USB口连接,一端与基站板USB Slave端连接。发现新硬件后选择自动安装软件,选择下一步直到完成安装。5. 进入如下目录:cd /opt/atos/apps/Atosenet/ANTBase6. 执行烧录命令:make antc3 install NID=01 GRP=0

6、17. 烧写成功8. 对传感器节点烧写对于传感器节点,请将传感器节点插入网关板的插口处(直接将网关板节点取下替换),将USB线缆一端与PC端USB口连接,一端与基站板USB Slave端连接。9. 进入如下目录:cd /opt/atos/apps/Atosenet/ANTc310. 执行烧写命令:make antc3 ASO=TH TYPE=1 install NID=02 GRP=01(以温湿度传感器为例)11. 出现如下结果注1:此处NID给定了节点号,不能为01,请从02开始编号即可。必须为两位的十六进制数(不够补零)注2:GRP给定了网络号,所有联网的节点必须一致。必须为两位的十六进制

7、数(不够补零)注3:传感器温湿度单温度光流量血压海拔霍尔雨滴火焰TYPE123456789ASOTHTLIGHTFLUXBLOODALTITUDEHOARERAINFIRE实验三 硬件接口实验以下步骤实现通过IO和RTC控制小灯亮灭的过程先决条件: 安装好Cygwin和TinyOS实验环境。 掌握对无线节点进行程序烧写的方法。LED小灯的点亮:1. 启动Cygwin,输入命令cd /进入TinyOS主目录,用命令ls可以查看目录下的所有文件。2. 输入命令cd /opt/atos,进入该目录后,用ls命令可以查看目录下有环境变量配置文件setupenv,然后执行source setupenv命

8、令,使环境变量生效,最后执行export | grep ATOSROOT来查看。3. 输入命令cd apps,进入应用程序目录后,再用ls查看目录下包含的文件和目录,然后使用命令mkdir MyProject来创建一个名为MyProject的目录。4. 输入命令cd MyProject,进入新创建的MyProject目录,然后在MyProject目录下使用命令vi Led.nc来创建工程文件Led.nc。5. 下图为工程文件Led.nc的程序代码,完成代码编写后使用命令 :wq保存文件并退出。configuration Ledimplementationcomponents LedM; /*

9、LED模块程序,用于实现LED代码 */components MainC; /* TinyOS2主模块,这里用于关联系统启动 */* LED模块程序的Boot接口与系统Boot接口关联 这样系统启动时会调用LedM的Boot接口?*/LedM.Boot - MainC.Boot;6. 在MyProject目录下使用命令vi LedM.nc来建立模块文件LedM.nc。7. 下图为模块文件LedM.nc的程序代码,完成代码编写后使用命令 :wq保存文件并退出。module LedMuses interface Boot;implementation/* LED灯演示*/task void Dem

10、oLed()/* 目前节点上提供两个LED灯LED_BLUE - 蓝灯LED_YELLOW - 黄灯*/LED_BLUE_OFF; /* 熄灭蓝色LED灯 */LED_YELLOW_ON; /* 点亮黄色LED灯 */* 启动事件处理函数,在LED.nc已经关联到MainC.Boot接口系统启动后会调用此函数*/event void Boot.booted()post DemoLed();8. 用命令ls可以查看在MyProject目录下包含了新建的Led.nc和LedM.nc两个文件,然后在MyProject目录下用vi Makefile命令来编写Makefile文件。9. 下图为Makef

11、ile文件的程序代码,完成代码编写后使用命令 :wq保存文件并退出。COMPONENT=Led#PFLAGS += -DUSE_MODULE_LED#include $(MAKERULES)10. 使用命令ls查看MyProject目录下包括新建的Makefile文件。11. 将CC2430核心板插到网关板上,连接上USB_Slave线缆,打开网关板电源,进入工程MyProject目录,运行烧录命令:12. 可以看到网关板上的D2、D3灯在交替闪烁,而将CC2430核心板插到电池板上,也会看到相同的现象RTC的使用:1. 启动Cygwin,输入命令cd 进入TinyOS主目录,用命令ls可以查

12、看目录下的所有文件。2. 输入命令cd /opt/atos,进入该目录后,用ls命令可以查看目录下有环境变量配置文件setupenv,然后执行source setupenv命令,使环境变量生效,最后执行export | grep ATOSROOT来查看。3. 输入命令cd apps,进入应用程序目录后,再用ls查看目录下包含的文件和目录,然后使用命令mkdir MyProject来创建一个名为MyProject的目录。4. 输入命令cd MyProject,进入新创建的MyProject目录,然后在MyProject目录下使用命令vi TimerLed.nc来创建工程文件TimerLed.nc

13、。5. 下图为工程文件TimerLed.nc的程序代码,完成代码编写后使用命令 :wq保存文件并退出。configuration TimerLedimplementationcomponents TimerLedM; /* TimerLed模块程序,用于实现具体代码 */components MainC; /* TinyOS2主模块,这里用于关联系统启动 */* TimerLed模块程序的Boot接口与系统Boot接口关联 这样系统启动时会调用LedM的Boot接口?*/TimerLedM.Boot - MainC.Boot;/*使用系统毫秒级Timer组件新建第一个定时器并且接口关联到Tim

14、erLedM处理模块*/components new TimerMilliC() as Timer1;TimerLedM.Timer1 - Timer1;/*使用系统毫秒级Timer组件新建第二个定时器*/components new TimerMilliC() as Timer2;TimerLedM.Timer2 - Timer2;6. 在MyProject目录下使用命令vi TimerLedM.nc来建立模块文件TimerLedM.nc。7. 下图为模块文件TimerLedM.nc的程序代码,完成代码编写后使用命令 :wq保存文件并退出。module TimerLedMuses inter

15、face Boot;/* Timer为系统接口TMilli指明了定时器的精度为毫秒 */uses interface Timer as Timer1; /* as关键字为接口别名 */uses interface Timer as Timer2;implementation/* 任务: 切换黄色LED灯 */task void ToggleLedYellow()LED_YELLOW_TOGGLE;/* 启动事件处理函数,在TimerLed.nc已经关联到MainC.Boot接口系统启动后会调用此函数*/event void Boot.booted()/* 定时器1: 持续工作,每隔2s触发一次

16、 */call Timer1.startPeriodic(2000);/* 定时器2: 持续工作,每隔3s触发一次*/call Timer2.startPeriodic(3000);/* 定时器1的事件处理函数 */event void Timer1.fired()/* 事件处理中直接切换蓝色LED灯 */LED_BLUE_TOGGLE;/* 定时器2的事件处理函数 */event void Timer2.fired()/* 可以用任务触发,等待系统调用触发黄色LED切换*/post ToggleLedYellow();8. 用命令ls可以查看在MyProject目录下包含了新建的TimerL

17、ed.nc和TimerLedM.nc两个文件,然后在MyProject目录下用vi Makefile命令来编写Makefile文件。9. 下图为Makefile文件的程序代码,完成代码编写后使用命令 :wq保存文件并退出。COMPONENT=TimerLed#PFLAGS += -DUSE_MODULE_LED#include $(MAKERULES)10. 使用命令ls查看MyProject目录下包括新建的Makefile文件。将CC2430核心板插到网关板上,连接上USB_Slave线缆,打开网关板电源, 进入工程MyProject目录,运行烧录命令11. 可以看到网关板上的D2每隔2s亮

18、一次,D3灯每隔3s亮一次,而将CC2430核心板插到电池板上,也会看到相同的现象实验四 ADC采样实验以下步骤描述了如何逐步执行实验来实现ADC采样的值。先决条件: 安装好Cygwin和TinyOS实验环境。 掌握对无线节点进行程序烧写的方法。利用ADC对传感器进行采样1. 启动Cygwin,输入命令cd /进入TinyOS主目录,用命令ls可以查看目录下的所有文件。2. 点击Cygwin输入命令cd /opt/atos,进入该目录后,用ls命令可以查看目录下有环境变量配置文件setupenv,然后执行source setupenv命令,使环境变量生效。3. 查看设置结果 ,如下图:4. 输

19、入命令cd apps,进入应用程序目录后,再用ls查看目录下包含的文件和目录,然后使用命令mkdir MyProject来创建一个名为MyProject的目录。5. 输入命令cd MyProject,进入新创建的MyProject目录,然后在MyProject目录下使用命令vi AdcSensor.nc来创建工程文件AdcSensor Demo。configuration AdcSensorimplementationcomponents AdcSensorM; /* AdcSensor模块程序,用于实现具体代码 */components MainC; /* TinyOS2主模块,这里用于关联

20、系统启动 */* AdcSensor模块程序的Boot接口与系统Boot接口关联 这样系统启动时会调用AdcSensorM的Boot接口*/AdcSensorM.Boot - MainC.Boot;/* 系统AD采集组件*/components new AdcC() as AdcDemo;AdcSensorM.AdcControl - AdcDemo;AdcSensorM.AdcRead - AdcDemo;6. 在MyProject目录下使用命令vi AdcSensorM.nc来建立模块文件AdcSensorM.nc#include Adc.h#define DBG_LEV9module A

21、dcSensorMuses interface Boot;uses interface AdcControl;uses interface Read as AdcRead;implementationtask void SensorData()ADBG(DBG_LEV, rnStart ADC reading.);/*配置ADC工作模式:1: 14bit A/D2: 参考电压 VDD 3.3V3: AD通道4(p0.4)*/ call AdcControl.enable(ADC_REF_AVDD, ADC_14_BIT, ADC_AIN4); if (call AdcRead.read() =

22、 SUCCESS)ADBG(DBG_LEV, OKrn);elseADBG(DBG_LEV, FAILrn);event void AdcRead.readDone(error_t result, int16_t val)/*响应于AdcRead.read(),系统AD转换完成触发该事件*/if (result = SUCCESS)ADBG(DBG_LEV, AdcRead.readDone: SUCCESS, value=0x%xrn, val);elseADBG(DBG_LEV, AdcRead.readDone: FAIL!rn, val);event void Boot.booted(

23、)post SensorData();7. 用命令ls可以查看在MyProject目录下包含了新建的AdcSensor.nc和AdcSensorM.nc两个文件,然后在MyProject目录下用vi Makefile命令来编写Makefile文件COMPONENT=AdcSensor#使用LED模块PFLAGS += -DUSE_MODULE_LED#使用串口调试模块PFLAGS += -DUART_DEBUG#调试级别PFLAGS += -DADBG_LEVEL=9#include $(MAKERULES)8. 步骤1: 将CC2430核心板插到网关板上,连接上USB_Slave线缆,打开网

24、关板电源,进入工程MyProject目录,执行make antc3 install。9. 烧录成功:10. 结果:启动后通过串口可以获得ADC 采样的值实验五 串口通讯实验以下步骤描述了如何逐步执行实验来实现调试信息输出及I/O口控制实验。先决条件: 安装好Cygwin和TinyOS实验环境 熟悉tinyos程序设计 掌握对无线节点进行程序烧写的方法利用调试函数进行串口输出:1. 启动Cygwin,输入命令cd /opt/atos/apps进入应用程序目录2. 在/opt/atos/apps目录下建立一个SerialDebug目录3. 用cd命令切换到在SerialDebug目录下4. 用vi

25、命令在该目录下建立SerialDebug.nc工程文件5. 并在该文件中输入如下内容:6. 用vi命令在该目录下建立SerialDebugM.nc模块文件7. 并在该文件中输入如下内容,按Esc键,输入 :wq保存并退出编辑状态/* 定义调试级别,参加Makefile的ADBG_LEVEL定义,设置大于等于ADBG_LEVEL */#define DBG_LEV9module SerialDebugMuses interface Boot;implementation/* 任务: 通过串口打印信息来调试 */task void DebugSerial()uint8_t num1 = 0x39;

26、uint32_t num2 = 0x12345678;float float1 = 123.1234;/* ADBG,格式类似于printf,第一个参数为调试等级,可以参见tos/lib/common/antdebug.h */* 打印字符和字符串 */ADBG(DBG_LEV, rnrnDEMO of Serial Debugrn, x);ADBG(DBG_LEV, 1. This is a string, and this is char %crn, x);/* 打印8位的数字 */ADBG(DBG_LEV, 2. NUM1: HEX=0x%x, DEC=%drn, (int)(num1)

27、, (int)(num1);/* 打印32位数字 */ADBG(DBG_LEV, 2. NUM2: HEX=0x%lx, DEC=%ldrn, (uint32_t)(num2), (uint32_t)(num2);/* 打印浮点数*/ADBG(DBG_LEV, 3. FLOAT: %frn, float1);/* 启动事件处理函数,在SerialDebug.nc已经关联到MainC.Boot接口系统启动后会调用此函数 */event void Boot.booted()post DebugSerial();8. 用vi命令在该目录下建立Makefile文件9. 并在该文件中输入如下内容,按Es

28、c键,输入 :wq保存并退出编辑状态COMPONENT=SerialDebug#使用LED模块PFLAGS += -DUSE_MODULE_LED#使用串口调试模块PFLAGS += -DUART_DEBUG#调试级别PFLAGS += -DADBG_LEVEL=9#include $(MAKERULES)10. 设置环境变量, 在cygwin环境下进入/opt/atos目录11. 执行如下命令脚本setupenv进行环境变量设置12. 利用cd命令切换回SerialDebug目录,执行make antc3 install编译工程文件并将其自动烧写到cc2430中。(执行该步骤必须保证网关板的

29、USB与计算机连接上,并且通电)13. 当出现如下界面说明成功编译并烧写14. 从计算机的开始菜单所有程序附件通讯超级终端,打开超级终端设置,进行如下设置:选择 COM1,波特率设为9600,数据流控制选择无。15. 将网关板的串口通过我们提供的串口线与计算机的串口连接起来,按网关板上的复位键,将在超级终端输出如下信息:创建I/O口控制工程文件:1. 启动Cygwin,输入命令cd /opt/atos/apps进入应用程序目录2. 在/opt/atos/apps目录下建立一个SerialIo目录3. 用cd命令切换到在SerialIo目录下4. 用vi命令在该目录下建立SerialIo.nc工

30、程文件5. 并在该文件中输入如下内容,按Esc键,输入 :wq保存并退出编辑状态configuration SerialIoimplementationcomponents SerialIoM; /* SerialIo模块程序,用于实现具体代码 */components MainC; /* TinyOS2主模块,这里用于关联系统启动 */* SerialIo模块程序的Boot接口与系统Boot接口关联 这样系统启动时会调用SerialIoM的Boot接口*/SerialIoM.Boot - MainC.Boot;/* PlatformSerialC*/components PlatformSe

31、rialC;SerialIoM.UartStdControl - PlatformSerialC.UartStdControl;SerialIoM.UartStream - PlatformSerialC.UartStream;6. 用vi命令在该目录下建立SerialIoM.nc模块文件7. 并在该文件中输入如下内容,按Esc键,输入 :wq保存并退出编辑状态#include /* 定义此宏,将演示UartStream.receive函数,允许一次指定数量的数据 */#define SERIALIO_RECEIVE#define DBG_LEV 9module SerialIoMuses i

32、nterface Boot;uses interface StdControl as UartStdControl;uses interface UartStream;implementationuint8_t m_receive_len;uint8_t m_echo_buf;uint8_t m_receive_buf10;uint8_t m_send_buf100;/* 显示一个菜单提示用户 */ void showMenu() strcpy(m_send_buf, rnrnDemo of Serio I/Orn1 Toggle BLUE LEDrn2 Toggle YELLOW LEDrn

33、); /* 通过 UartStream.send可以发送字节数据 */ call UartStream.send(m_send_buf, strlen(m_send_buf); /* 启动事件处理函数,在SerialIo.nc已经关联到MainC.Boot接口系统启动后会调用此函数*/event void Boot.booted() call UartStdControl.start(); #ifdef SERIALIO_RECEIVE /* 演示缓冲接收功能,接收完指定长度的数据才会调用 receiveDone */ strcpy(m_send_buf, DEMO of serial I/O

34、, input ); call UartStream.send(m_send_buf, strlen(m_send_buf); call UartStream.receive(m_receive_buf, sizeof(m_receive_buf); #else /* 回显串口输入数据的功能 */ showMenu(); #endif async event void UartStream.sendDone(uint8_t *buf, uint16_t len, error_t error)task void showMenuTask() showMenu(); task void light

35、LED() if(m_echo_buf=1) LED_BLUE_TOGGLE; /* 切换蓝色LED灯 */ ADBG(DBG_LEV, You choose to toggle BLUE LEDrn); else if (m_echo_buf = 2) LED_YELLOW_TOGGLE; /* 切换黄色LED 灯 */ ADBG(DBG_LEV, You choose to toggle YELLOW LEDrn); else ADBG(DBG_LEV, Error Key %crn, m_echo_buf); post showMenuTask(); /* 如果没有调用 receive接

36、收,则每接收到一个数据就会触发此事件 */ async event void UartStream.receivedByte(uint8_t byte) m_echo_buf = byte; post lightLED(); /* 在接收完 receive命令欲接收的长度后会调用此事件 */ async event void UartStream.receiveDone(uint8_t *buf, uint16_t len, error_t error) /* 回显接收到的10个字符 */ call UartStream.send(m_receive_buf, sizeof(m_receive

37、_buf); /* 重新接收10个字符 */ call UartStream.receive(m_receive_buf, sizeof(m_receive_buf); /* 如果没有调用 receive接收,则每接收到一个数据就会触发此事件 */ async event void UartStream.receivedByte(uint8_t byte) m_echo_buf = byte; post lightLED(); /* 在接收完 receive命令欲接收的长度后会调用此事件 */ async event void UartStream.receiveDone(uint8_t *b

38、uf, uint16_t len, error_t error) /* 回显接收到的10个字符 */ call UartStream.send(m_receive_buf, sizeof(m_receive_buf); /* 重新接收10个字符 */ call UartStream.receive(m_receive_buf, sizeof(m_receive_buf); 8. 用vi命令在该目录下建立Makefile文件9. 并在该文件中输入如下内容,按Esc键,输入 :wq保存并退出编辑状态COMPONENT=SerialIo # #使用LED模块 PFLAGS += -DUSE_MODU

39、LE_LED #使用串口调试模块 PFLAGS += -DUART_DEBUG #调试级别 PFLAGS += -DADBG_LEVEL=9# include $(MAKERULES)10. 编译并对传感节点进行烧写11. 设置环境变量, 在cygwin环境下进入/opt/atos目录12. 执行如下命令脚本setupenv进行环境变量设置13. 利用cd命令切换回SerialIo目录,执行make antc3 install编译工程文件并将其自动烧写到cc2430中。(执行该步骤必须保证网关板的USB与计算机连接上,并且通电)14. 当出现如下界面说明成功编译并烧写15. 从计算机的开始菜单

40、所有程序附件通讯超级终端,打开超级终端设置,进行如下设置:选择 COM1,波特率设为9600,数据流控制选择无。16. 将网关板的串口通过我们提供的串口线与计算机的串口连接起来,按网关板上的复位键,将在超级终端输出如下信息:17. 通过串口输入 1、2 切换控制灯亮、灯灭,如下所示:实验六 点对点射频实验通过这个实验可以实现两个不同节点之间的无线通信先决条件: 安装好Cygwin和TinyOS实验环境。 了解CC2430的射频控制原理和TinyOS下射频收送的编程。 掌握对无线节点进行程序烧写的方法。创建工程文件RFDemo.nc:1. 启动Cygwin,输入命令cd /进入TinyOS主目录

41、,用命令ls可以查看目录下的所有文件。2. 输入命令cd /opt/atos,进入该目录后,用ls命令可以查看目录下有环境变量配置文件setupenv,然后执行source setupenv命令,使环境变量生效。3. 输入命令cd apps,进入应用程序目录后,再用ls查看目录下包含的文件和目录,然后使用命令mkdir MyProject来创建一个名为MyProject的目录。4. 输入命令cd MyProject,进入新创建的MyProject目录,然后在MyProject目录下使用命令vi RFDemo.nc来创建工程文件RFDemo。下图为工程文件RFDemo的程序代码,完成代码编写后使用命令 :wq保存文件并退出。建立模块文件RFDemoM.nc:5. 在MyProject目录下使用命令vi RFDemoM.nc来建立模块文件RFDemoM.nc。下图为模块文件RFDemoM程序代码,完成代码编写后使用命令 :wq保存文件并退出。编写Makefile文件:6. 用命令ls可以查看在MyProje

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号