1、TINYOS试验Keil的破解:打开keil,file-license management,复制CID 号到keygen.exe中,点generate,将生成的号复制到keil license management中的 new license ID Code 中。1. 启动Cygwin,2. 输入命令cd /opt/atos,进入该目录后,用ls命令可以查看目录下有环境变量配置文件setupenv,然后执行source setupenv命令,使环境变量生效。 3. 进入apps文件夹,再进入Atosenet文件夹,输入ls查看 4. 对基站节点烧写 对于基站节点,请将基站节点插入网关板的插口
2、处,将USB线缆一端与PC端USB口连接,一端与基站板USB Slave端连接。发现新硬件后选择自动安装软件,选择下一步直到完成安装。5. 进入如下目录:cd /opt/atos/apps/Atosenet/ANTBase 6执行基站烧写命令make antc3 install NID=01 GRP=01 7烧写成功8. 对传感器节点烧写 对于传感器节点,请将传感器节点插入网关板的插口处(直接将网关板节点取下替换),将USB线缆一端与PC端USB口连接,一端与基站板USB Slave端连接。9. 进入如下目录:cd /opt/atos/apps/Atosenet/ANTc3 9.执行传感节点烧
3、写命令make antc3 ASO=TH TYPE=1 install NID=02 GRP=01烧写成功10.再对另外两个节点执行烧些命令make antc3 ASO=TH TYPE=1 install NID=03 GRP=01make antc3 ASO=TH TYPE=1 install NID=04 GRP=0111.运行dotnefx.exe, 即Microsoft Framework 2.0安装程序,在运行AtosWin.msi,即AtoStudio数据管理软件的安装程序。将基站节点插入网关板的插口处,将USB线缆一端与PC端USB口连接,一端与基站板USB Slave端连接。将
4、其他几个传感器节点放在不同位置,打开电源开关。打开AtoStudio数据管理软件,并开启监控,故可以看到传感节点。实验三 硬件接口实验1. 启动Cygwin,输入命令cd /opt/atos进入TinyOS主目录,用命令ls可以查看目录下的所有文件。 2. 输入命令cd /opt/atos,进入该目录后,用ls命令可以查看目录下有环境变量配置文件setupenv,然后执行source setupenv命令,使环境变量生效,最后执行export | grep ATOSROOT来查看。 3. 输入命令cd apps,进入应用程序目录后,再用ls查看目录下包含的文件和目录,然后使用命令mkdir M
5、yProject来创建一个名为MyProject的目录4打开NesC编辑器,file-new 编写好程序后file-save as保存在MyProject目录下,保存文件名为Led.nc代码为configuration Ledimplementation components LedM; /* LED模块程序,用于实现LED代码 */ components MainC; /* TinyOS2主模块,这里用于关联系统启动 */ LedM.Boot - MainC.Boot;/* LED模块程序的Boot接口与系统Boot接口关联 这样系统启动时会调用LedM的Boot接口? */同理在编写Led
6、M.nc,也保存在MyProject目录下。代码为module LedM uses interface Boot;implementation /* LED灯演示 */ task void DemoLed() int i,j; while(1) /*/ for(i=0;i1000;i+)for(j=0;j1000;j+); /*注意上面两行代码仅仅起延时作用,是一个空循环,下面两行可以认为是并行执行,两语句的执行间隔可忽略不计,故可以看到两灯同时点亮*/ LED_BLUE_ON; /* 点亮蓝色LED灯 */ LED_YELLOW_ON; /* 点亮黄色LED灯 */ for(i=0;i100
7、0;i+) for(j=0;jnew 编写Makefile文件,代码为COMPONENT=Led#PFLAGS += -DUSE_MODULE_LEDPFLAGS += -DUSE_MODULE_LEDinclude $(MAKERULES)5. 用命令ls可以查看在MyProject目录下包含了新建的Led.nc,LedM.nc和Makefile文件 6将CC2430核心板插到网关板上,连接上USB_Slave线缆,打开网关板电源,进入工程MyProject目录,运行烧录命令: 7烧写成功可以看到网关板上的D2、D3灯同时点亮,一段时间后同时熄灭,两灯同时点亮同时熄灭交替进行,而将CC243
8、0核心板插到电池板上,也会看到相同的现象 8改写LedM.nc代码,可实现蓝灯,黄灯交替闪烁。module LedM uses interface Boot;implementation /* LED灯演示 */ task void DemoLed() /* 目前节点上提供两个LED灯 LED_BLUE - 蓝灯 LED_YELLOW - 黄灯 */ int i,j; while(1) for(i=0;i1000;i+) for(j=0;j1000;j+); LED_BLUE_OFF; /* 熄灭蓝色LED灯 */ LED_YELLOW_ON; /* 点亮黄色LED灯 */ for(i=0;i
9、1000;i+) for(j=0;j MainC.Boot; /* 使用系统毫秒级Timer组件新建第一个定时器 并且接口关联到TimerLedM处理模块 */ components new SleepTimerMilliC() as Timer1; TimerLedM.Timer1 - Timer1; /* 使用系统毫秒级Timer组件新建第二个定时器 */ components new SleepTimerMilliC() as Timer2; TimerLedM.Timer2 - Timer2; TimerLedM.nc代码为/* 定时器示例程序的实现模块,间隔点亮两个LED灯autho
10、r NUAAdate */module TimerLedM uses interface 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接口 系统启动后会调用此函数
11、 */ event void Boot.booted() /* 定时器1: 持续工作,每隔1s触发一次 */ call Timer1.startPeriodic(1000); /* 定时器2: 持续工作,每隔2s触发一次*/ call Timer2.startPeriodic(2000); /* 定时器1的事件处理函数 */ event void Timer1.fired() /* 事件处理中直接切换蓝色LED灯 */ LED_BLUE_TOGGLE; /* 定时器2的事件处理函数 */ event void Timer2.fired() post ToggleLedYellow(); Mak
12、efile代码为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,
13、然后执行source setupenv命令,使环境变量生效。 2. 打开nesc编辑器,编写AdcSensor.nc, AdcSensorM.nc,Makefile文件,并将其保存在apps目录下的MyProject文件夹下。AdcSensor.nc代码为configuration AdcSensorimplementation components AdcSensorM; /* AdcSensor模块程序,用于实现具体代码 */ components MainC; /* TinyOS2主模块,这里用于关联系统启动 */ /* AdcSensor模块程序的Boot接口与系统Boot接口关联 这
14、样系统启动时会调用AdcSensorM的Boot接口 */ AdcSensorM.Boot - MainC.Boot; /* 系统AD采集组件 */ components new AdcC() as AdcDemo; AdcSensorM.AdcControl - AdcDemo; AdcSensorM.AdcRead - AdcDemo; AdcSensorM.nc代码为#include Adc.h/* 定义调试级别,参加Makefile的ADBG_LEVEL定义,设置大于等于ADBG_LEVEL */#define DBG_LEV 9module AdcSensorM uses inter
15、face Boot; uses interface AdcControl; uses interface Read as AdcRead;implementation task void SensorData() ADBG(DBG_LEV, rnStart ADC reading.); /* 配置ADC工作模式: 1: 14bit A/D 2: 参考电压 VDD 3.3V 3: AD通道4(p0.4) */ call AdcControl.enable(ADC_REF_AVDD, ADC_14_BIT, ADC_AIN4); if (call AdcRead.read() = SUCCESS)
16、 ADBG(DBG_LEV, OKrn); else ADBG(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); else ADBG(DBG_LEV, AdcRead.readDone: FAIL!rn, val); event void Boot.boot
17、ed() post SensorData(); Makefile代码为COMPONENT=AdcSensor#使用LED模块PFLAGS += -DUSE_MODULE_LED#使用串口调试模块PFLAGS += -DUART_DEBUG#调试级别PFLAGS += -DADBG_LEVEL=9#include $(MAKERULES)3.将CC2430核心板插到网关板上,连接上USB_Slave线缆,打开网关板电源,进入工程MyProject目录,执行make antc3 install NID=01 GRP=01。 烧录成功4. 从计算机的开始菜单所有程序附件通讯超级终端,打开超级终端设置
18、,进行如下设置:选择 COM4,波特率设为9600,数据流控制选择无。将网关板的串口通过我们提供的串口线与计算机的串口连接起来,按网关板上的复位键RESET(每按一次都会输出一段信息),将在超级终端输出如下信息: 实验五 串口通讯实验利用调试函数进行串口输出1.设置环境变量在/opt/atos/apps目录下建立一个SerialDebug目录 2. 打开nesc编辑器,编写SerialDebug.nc,SerialDebugM.nc,Makefile文件,并将其保存在apps目录下的SerialDebug文件夹下。SerialDebug.nc代码为configuration SerialDeb
19、ugimplementation components SerialDebugM; /* SerialDebug模块程序,用于实现具体代码 */ components MainC; /* TinyOS2主模块,这里用于关联系统启动 */ /* SerialDebug模块程序的Boot接口与系统Boot接口关联 这样系统启动时会调用SerialDebugM的Boot接口 */ SerialDebugM.Boot - MainC.Boot; components PlatformSerialC; SerialDebugM.CC2430UartControl - PlatformSerialC;Se
20、rialDebugM.nc代码为/* 定义调试级别,参加Makefile的ADBG_LEVEL定义,设置大于等于ADBG_LEVEL */#define DBG_LEV 9module SerialDebugM uses interface Boot; uses interface CC2430UartControl;implementation /* 任务: 通过串口打印信息来调试 */ task void DebugSerial() uint8_t num1 = 0x69; uint32_t num2 = 0x12344321; float float1 = 321.123; /*只能最多
21、显示出7位*/ /* ADBG,格式类似于printf, 第一个参数为调试等级,可以参见tos/lib/common/antdebug.h */ /* 打印字符和字符串 */ ADBG(DBG_LEV, rn朱才智超级终端欢迎您!rn, x);/*r将当前位置移到当前行头,n回车换行,将当前位置移到下一行开头*/ 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.输出一个
22、uint8_t,显示出十六进制和十进制大小rn, x); ADBG(DBG_LEV, NUM1: HEX=0x%x, DEC=%drn, (int)(num1), (int)(num1); /* 打印32位数字 */ ADBG(DBG_LEV, 3.输出一个uint32_t,显示出十六进制和十进制大小rn, x); ADBG(DBG_LEV, NUM2: HEX=0x%lx, DEC=%ldrn, (uint32_t)(num2), (uint32_t)(num2); /* 打印浮点数*/ ADBG(DBG_LEV, 4.输出一个浮点型rn, x); ADBG(DBG_LEV, FLOAT:
23、%frn, float1); /* 启动事件处理函数,在SerialDebug.nc已经关联到MainC.Boot接口 系统启动后会调用此函数 */ event void Boot.booted() call CC2430UartControl.setBaudRate(9600); post DebugSerial(); Makefile代码为COMPONENT=SerialDebug#使用LED模块PFLAGS += -DUSE_MODULE_LED#使用串口调试模块PFLAGS += -DUART_DEBUG#调试级别PFLAGS += -DADBG_LEVEL=9#include $(M
24、AKERULES)3利用cd命令进入SerialDebug目录,执行make antc3 install编译工程文件并将起自动烧写到cc2430中。烧写成功4.从计算机的开始菜单所有程序附件通讯超级终端,打开超级终端设置,进行如下设置:选择 COM4,波特率设为9600,数据流控制选择无。将网关板的串口通过我们提供的串口线与计算机的串口连接起来,按网关板上的复位键RESET(每按一次都会输出一段信息),将在超级终端输出如下信息:创建I/O口控制工程文件1. 在cygwin环境下进入/opt/atos目录,设置环境变量。输入命令cd /opt/atos/apps进入应用程序目录 在/opt/at
25、os/apps目录下建立一个SerialIo目录 2.打开nesc编辑器,编写SerialIo.nc,SerialIoM.nc,Makefile文件 ,并保存在SerialIo目录下,SerialIo.nc代码为configuration SerialIoimplementation components SerialIoM; /* SerialIo模块程序,用于实现具体代码 */ components MainC; /* TinyOS2主模块,这里用于关联系统启动 */ /* SerialIo模块程序的Boot接口与系统Boot接口关联 这样系统启动时会调用SerialIoM的Boot接口 */ SerialIoM.Boot - MainC.Boot; /* PlatformSerialC */ components PlatformSeria
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2