TINYOS试验.docx

上传人:b****1 文档编号:2569291 上传时间:2023-05-04 格式:DOCX 页数:45 大小:460.98KB
下载 相关 举报
TINYOS试验.docx_第1页
第1页 / 共45页
TINYOS试验.docx_第2页
第2页 / 共45页
TINYOS试验.docx_第3页
第3页 / 共45页
TINYOS试验.docx_第4页
第4页 / 共45页
TINYOS试验.docx_第5页
第5页 / 共45页
TINYOS试验.docx_第6页
第6页 / 共45页
TINYOS试验.docx_第7页
第7页 / 共45页
TINYOS试验.docx_第8页
第8页 / 共45页
TINYOS试验.docx_第9页
第9页 / 共45页
TINYOS试验.docx_第10页
第10页 / 共45页
TINYOS试验.docx_第11页
第11页 / 共45页
TINYOS试验.docx_第12页
第12页 / 共45页
TINYOS试验.docx_第13页
第13页 / 共45页
TINYOS试验.docx_第14页
第14页 / 共45页
TINYOS试验.docx_第15页
第15页 / 共45页
TINYOS试验.docx_第16页
第16页 / 共45页
TINYOS试验.docx_第17页
第17页 / 共45页
TINYOS试验.docx_第18页
第18页 / 共45页
TINYOS试验.docx_第19页
第19页 / 共45页
TINYOS试验.docx_第20页
第20页 / 共45页
亲,该文档总共45页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

TINYOS试验.docx

《TINYOS试验.docx》由会员分享,可在线阅读,更多相关《TINYOS试验.docx(45页珍藏版)》请在冰点文库上搜索。

TINYOS试验.docx

TINYOS试验

Keil的破解:

打开keil,file->licensemanagement,复制CID号到keygen.exe中,点generate,将生成的号复制到keillicensemanagement中的newlicenseIDCode中。

1.启动Cygwin,

2.输入命令cd/opt/atos,进入该目录后,用ls命令可以查看目录下有环境变量配置文件setupenv,然后执行sourcesetupenv命令,使环境变量生效。

3.进入apps文件夹,再进入Atosenet文件夹,输入ls查看

4.对基站节点烧写

对于基站节点,请将基站节点插入网关板的插口处,将USB线缆一端与PC端USB口连接,一端与基站板USBSlave端连接。

发现新硬件后选择自动安装软件,选择下一步直到完成安装。

5.进入如下目录:

cd/opt/atos/apps/Atosenet/ANTBase

6.执行基站烧写命令

makeantc3installNID=01GRP=01

7.烧写成功

8.对传感器节点烧写

对于传感器节点,请将传感器节点插入网关板的插口处(直接将网关板节点取下替换),将USB线缆一端与PC端USB口连接,一端与基站板USBSlave端连接。

9.进入如下目录:

cd/opt/atos/apps/Atosenet/ANTc3

9.执行传感节点烧写命令makeantc3ASO=THTYPE=1installNID=02GRP=01

烧写成功

10.再对另外两个节点执行烧些命令

makeantc3ASO=THTYPE=1installNID=03GRP=01

makeantc3ASO=THTYPE=1installNID=04GRP=01

11.运行dotnefx.exe,即MicrosoftFramework2.0安装程序,在运行AtosWin.msi,即AtoStudio数据管理软件的安装程序。

将基站节点插入网关板的插口处,将USB线缆一端与PC端USB口连接,一端与基站板USBSlave端连接。

将其他几个传感器节点放在不同位置,打开电源开关。

打开AtoStudio数据管理软件,并开启监控,故可以看到传感节点。

实验三硬件接口实验

1.启动Cygwin,输入命令cd/opt/atos进入TinyOS主目录,用命令ls可以查看目录下的所有文件。

2.输入命令cd/opt/atos,进入该目录后,用ls命令可以查看目录下有环境变量配置文件setupenv,然后执行sourcesetupenv命令,使环境变量生效,最后执行export|grepATOSROOT来查看。

3.输入命令cdapps,进入应用程序目录后,再用ls查看目录下包含的文件和目录,然后使用命令mkdirMyProject来创建一个名为MyProject的目录

4打开NesC编辑器,file->new编写好程序后file->saveas保存在MyProject目录下,保存文件名为Led.nc

代码为

configurationLed

{

}

implementation

{

componentsLedM;/*LED模块程序,用于实现LED代码*/

componentsMainC;/*TinyOS2主模块,这里用于关联系统启动*/

LedM.Boot->MainC.Boot;/*LED模块程序的Boot接口与系统Boot接口关联这样系统启动时会调用LedM的Boot接口?

*/

}

同理在编写LedM.nc,也保存在MyProject目录下。

代码为

moduleLedM

{

usesinterfaceBoot;

}

implementation

{

/**LED灯演示

*/

taskvoidDemoLed()

{

inti,j;

while

(1)/**/

{

for(i=0;i<1000;i++)

for(j=0;j<1000;j++);/*注意上面两行代码仅仅起延时作用,是一个空循环,下面两行可以认为是并行执行,两语句的执行间隔可忽略不计,故可以看到两灯同时点亮*/

LED_BLUE_ON;/*点亮蓝色LED灯*/

LED_YELLOW_ON;/*点亮黄色LED灯*/

for(i=0;i<1000;i++)

for(j=0;j<1000;j++);/*注意上面两行代码仅仅起延时作用,是一个空循环,在灯点亮过一段时间后再去熄灭灯,若无此语句将看不到灯先亮灭的效果*/

 

LED_BLUE_OFF;/*熄灭蓝色LED灯*/

LED_YELLOW_OFF;/*熄灭黄色LED灯*/

}

}

 

/**启动事件处理函数,在LED.nc已经关联到MainC.Boot接口

系统启动后会调用此函数

*/

eventvoidBoot.booted()

{

postDemoLed();

}

}

/**启动事件处理函数,在LED.nc已经关联到MainC.Boot接口

系统启动后会调用此函数

*/

eventvoidBoot.booted()

{

postDemoLed();

}

}

在NesC编辑器中,file->new编写Makefile文件,代码为

COMPONENT=Led

######################

PFLAGS+=-DUSE_MODULE_LED

PFLAGS+=-DUSE_MODULE_LED

include$(MAKERULES)

5.用命令ls可以查看在MyProject目录下包含了新建的Led.nc,LedM.nc和Makefile文件

6

将CC2430核心板插到网关板上,连接上USB_Slave线缆,打开网关板电源,进入工程MyProject目录,运行烧录命令:

7烧写成功

可以看到网关板上的D2、D3灯同时点亮,一段时间后同时熄灭,两灯同时点亮同时熄灭交替进行,而将CC2430核心板插到电池板上,也会看到相同的现象

8改写LedM.nc代码,可实现蓝灯,黄灯交替闪烁。

moduleLedM

{

usesinterfaceBoot;

}

implementation

{

/**LED灯演示

*/

taskvoidDemoLed()

{

/**目前节点上提供两个LED灯

LED_BLUE->蓝灯

LED_YELLOW->黄灯

*/

inti,j;

while

(1)

{

for(i=0;i<1000;i++)

for(j=0;j<1000;j++);

LED_BLUE_OFF;/*熄灭蓝色LED灯*/

LED_YELLOW_ON;/*点亮黄色LED灯*/

for(i=0;i<1000;i++)

for(j=0;j<1000;j++);

LED_BLUE_ON;/*点亮蓝色LED灯*/

LED_YELLOW_OFF;/*熄灭黄色LED灯*/

}

}

 

/**启动事件处理函数,在LED.nc已经关联到MainC.Boot接口

系统启动后会调用此函数

*/

eventvoidBoot.booted()

{

postDemoLed();

}

}

RTC的使用:

1.输入命令cd/opt/atos,进入该目录后,用ls命令可以查看目录下有环境变量配置文件setupenv,然后执行sourcesetupenv命令,使环境变量生效,最后执行export|grepATOSROOT来查看

2.打开nesc编辑器,编写TimerLed.nc,TimerLedM.nc,Makefile文件,并将其保存在apps目录下的MyProject文件夹下。

TimerLed.nc代码为

configurationTimerLed

{

}

implementation

{

componentsTimerLedM;/*TimerLed模块程序,用于实现具体代码*/

componentsMainC;/*TinyOS2主模块,这里用于关联系统启动*/

/*TimerLed模块程序的Boot接口与系统Boot接口关联

这样系统启动时会调用LedM的Boot接口?

*/

TimerLedM.Boot->MainC.Boot;

 

/**

使用系统毫秒级Timer组件新建第一个定时器

并且接口关联到TimerLedM处理模块

*/

componentsnewSleepTimerMilliC()asTimer1;

TimerLedM.Timer1->Timer1;

/**

使用系统毫秒级Timer组件新建第二个定时器

*/

componentsnewSleepTimerMilliC()asTimer2;

TimerLedM.Timer2->Timer2;

}

TimerLedM.nc代码为

/**

定时器示例程序的实现模块,间隔点亮两个LED灯

@authorNUAA

@date

*/

moduleTimerLedM

{

usesinterfaceBoot;

/*Timer为系统接口TMilli指明了定时器的精度为毫秒*/

usesinterfaceTimerasTimer1;/*as关键字为接口别名*/

usesinterfaceTimerasTimer2;

}

implementation

{

/**任务:

切换黄色LED灯*/

taskvoidToggleLedYellow()

{

LED_YELLOW_TOGGLE;

}

/**启动事件处理函数,在TimerLed.nc已经关联到MainC.Boot接口

系统启动后会调用此函数

*/

eventvoidBoot.booted()

{

/**定时器1:

持续工作,每隔1s触发一次*/

callTimer1.startPeriodic(1000);

/**定时器2:

持续工作,每隔2s触发一次*/

callTimer2.startPeriodic(2000);

}

/**定时器1的事件处理函数*/

eventvoidTimer1.fired()

{

/**事件处理中直接切换蓝色LED灯*/

LED_BLUE_TOGGLE;

}

/**定时器2的事件处理函数*/

eventvoidTimer2.fired()

{

postToggleLedYellow();

}

}

Makefile代码为

COMPONENT=TimerLed

######################

PFLAGS+=-DUSE_MODULE_LED

######################

include$(MAKERULES)

3.将CC2430核心板插到网关板上,连接上USB_Slave线缆,打开网关板电源,进入工程MyProject目录,运行烧录命令

可以看到网关板上的D2每隔1s亮一次,D3灯每隔2s亮一次,而将CC2430核心板插到电池板上,也会看到相同的现象

 

实验四ADC采样实验

以下步骤描述了如何逐步执行实验来实现ADC采样的值。

1.点击Cygwin输入命令cd/opt/atos,进入该目录后,用ls命令可以查看目录下有环境变量配置文件setupenv,然后执行sourcesetupenv命令,使环境变量生效。

2.打开nesc编辑器,编写

AdcSensor.nc,AdcSensorM.nc,Makefile文件,并将其保存在apps目录下的MyProject文件夹下。

AdcSensor.nc代码为

configurationAdcSensor

{

}

implementation

{

componentsAdcSensorM;/*AdcSensor模块程序,用于实现具体代码*/

componentsMainC;/*TinyOS2主模块,这里用于关联系统启动*/

/**AdcSensor模块程序的Boot接口与系统Boot接口关联

这样系统启动时会调用AdcSensorM的Boot接口

*/

AdcSensorM.Boot->MainC.Boot;

/**系统AD采集组件

*/

componentsnewAdcC()asAdcDemo;

AdcSensorM.AdcControl->AdcDemo;

AdcSensorM.AdcRead->AdcDemo;

}

AdcSensorM.nc代码为

#include"Adc.h"

/*定义调试级别,参加Makefile的ADBG_LEVEL定义,设置大于等于ADBG_LEVEL*/

#defineDBG_LEV9

moduleAdcSensorM

{

usesinterfaceBoot;

usesinterfaceAdcControl;

usesinterfaceReadasAdcRead;

}

implementation

{

taskvoidSensorData()

{

ADBG(DBG_LEV,"\r\nStartADCreading...");

/**

配置ADC工作模式:

1:

14bitA/D

2:

参考电压VDD3.3V

3:

AD通道4(p0.4)

*/

callAdcControl.enable(ADC_REF_AVDD,ADC_14_BIT,ADC_AIN4);

if(callAdcRead.read()==SUCCESS)

{

ADBG(DBG_LEV,"OK\r\n");

}

else

{

ADBG(DBG_LEV,"FAIL\r\n");

}

}

eventvoidAdcRead.readDone(error_tresult,int16_tval)

{

/**

响应于AdcRead.read(),系统AD转换完成触发该事件

*/

if(result==SUCCESS)

{

ADBG(DBG_LEV,"AdcRead.readDone:

SUCCESS,value=0x%x\r\n",val);

}

else

{

ADBG(DBG_LEV,"AdcRead.readDone:

FAIL!

\r\n",val);

}

}

eventvoidBoot.booted()

{

postSensorData();

}

}

Makefile代码为

COMPONENT=AdcSensor

######################

#使用LED模块

PFLAGS+=-DUSE_MODULE_LED

#使用串口调试模块

PFLAGS+=-DUART_DEBUG

#调试级别

PFLAGS+=-DADBG_LEVEL=9

######################

include$(MAKERULES)

3.将CC2430核心板插到网关板上,连接上USB_Slave线缆,打开网关板电源,进入工程MyProject目录,执行makeantc3installNID=01GRP=01。

烧录成功

4.从计算机的开始菜单所有程序附件通讯超级终端,打开超级终端设置,进行如下设置:

选择COM4,波特率设为9600,数据流控制选择无。

将网关板的串口通过我们提供的串口线与计算机的串口连接起来,按网关板上的复位键RESET(每按一次都会输出一段信息),将在超级终端输出如下信息:

实验五串口通讯实验

利用调试函数进行串口输出

1.

设置环境变量

在/opt/atos/apps目录下建立一个SerialDebug目录

2.打开nesc编辑器,编写

SerialDebug.nc,SerialDebugM.nc,Makefile文件,并将其保存在apps目录下的SerialDebug文件夹下。

SerialDebug.nc代码为

configurationSerialDebug

{

}

implementation

{

componentsSerialDebugM;/*SerialDebug模块程序,用于实现具体代码*/

componentsMainC;/*TinyOS2主模块,这里用于关联系统启动*/

/*SerialDebug模块程序的Boot接口与系统Boot接口关联

这样系统启动时会调用SerialDebugM的Boot接口

*/

SerialDebugM.Boot->MainC.Boot;

componentsPlatformSerialC;

SerialDebugM.CC2430UartControl->PlatformSerialC;

}

SerialDebugM.nc代码为

/*定义调试级别,参加Makefile的ADBG_LEVEL定义,设置大于等于ADBG_LEVEL*/

#defineDBG_LEV9

moduleSerialDebugM

{

usesinterfaceBoot;

usesinterfaceCC2430UartControl;

}

implementation

{

/**任务:

通过串口打印信息来调试*/

taskvoidDebugSerial()

{

uint8_tnum1=0x69;

uint32_tnum2=0x12344321;

floatfloat1=321.123;/*只能最多显示出7位*/

/**ADBG,格式类似于printf,

第一个参数为调试等级,可以参见tos/lib/common/antdebug.h

*/

/**打印字符和字符串*/

ADBG(DBG_LEV,"\r\n朱才智超级终端欢迎您!

\r\n",'x');/*\r将当前位置移到当前行头,\n回车换行,将当前位置移到下一行开头*/

ADBG(DBG_LEV,"\r\n\r\nDEMOofSerialDebug\r\n",'x');

ADBG(DBG_LEV,"1.Thisisastring,andthisischar'%c'\r\n",'x');

/**打印8位的数字*/

ADBG(DBG_LEV,"2.输出一个uint8_t,显示出十六进制和十进制大小\r\n",'x');

ADBG(DBG_LEV,"NUM1:

HEX=0x%x,DEC=%d\r\n",(int)(num1),(int)(num1));

/**打印32位数字*/

ADBG(DBG_LEV,"3.输出一个uint32_t,显示出十六进制和十进制大小\r\n",'x');

ADBG(DBG_LEV,"NUM2:

HEX=0x%lx,DEC=%ld\r\n",(uint32_t)(num2),(uint32_t)(num2));

/**打印浮点数*/

ADBG(DBG_LEV,"4.输出一个浮点型\r\n",'x');

ADBG(DBG_LEV,"FLOAT:

%f\r\n",float1);

}

/**启动事件处理函数,在SerialDebug.nc已经关联到MainC.Boot接口

系统启动后会调用此函数

*/

eventvoidBoot.booted()

{

callCC2430UartControl.setBaudRate(9600);

postDebugSerial();

}

}

Makefile代码为

COMPONENT=SerialDebug

######################

#使用LED模块

PFLAGS+=-DUSE_MODULE_LED

#使用串口调试模块

PFLAGS+=-DUART_DEBUG

#调试级别

PFLAGS+=-DADBG_LEVEL=9

######################

include$(MAKERULES)

3

利用cd命令进入SerialDebug目录,执行makeantc3install编译工程文件并将起自动烧写到cc2430中。

烧写成功

4.从计算机的开始菜单所有程序附件通讯超级终端,打开超级终端设置,进行如下设置:

选择COM4,波特率设为9600,数据流控制选择无。

将网关板的串口通过我们提供的串口线与计算机的串口连接起来,按网关板上的复位键RESET(每按一次都会输出一段信息),将在超级终端输出如下信息:

创建I/O口控制工程文件

1.在cygwin环境下进入/opt/atos目录,设置环境变量。

输入命令cd/opt/atos/apps进入应用程序目录在/opt/atos/apps目录下建立一个SerialIo目录

2.打开nesc编辑器,编写SerialIo.nc,SerialIoM.nc,Makefile文件,并保存在SerialIo目录下,

SerialIo.nc代码为

configurationSerialIo

{

}

implementation

{

componentsSerialIoM;/*SerialIo模块程序,用于实现具体代码*/

componentsMainC;/*TinyOS2主模块,这里用于关联系统启动*/

/**SerialIo模块程序的Boot接口与系统Boot接口关联

这样系统启动时会调用SerialIoM的Boot接口

*/

SerialIoM.Boot->MainC.Boot;

/**PlatformSerialC

*/

componentsPlatformSeria

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2