无线传感网络操作系统实验1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

无线传感器网络实验报告

班级: _14104341_ 姓名:__代姝佳__ 学号:_1410400111__

时间: 2017-3-20_教师: _陈飞云__成绩:_________

实验名称:LED组件实验

一、实验目的

掌握CC2530芯片LED对应的GPIO引脚,并且熟练掌握LED的使用。

二、实验原理

目前WIFI节点上有红、蓝、黄、绿4个LED灯,其中,红灯是电源指示灯,黄灯、蓝灯和绿灯主要用于程序调试。现在对LED灯的操作有三种:点亮、关闭、闪烁(由亮变暗或者由暗变亮),相对应的命令分别为:LED_GREEN_ON、LED_GREEN_OFF、LED_GREEN_TOGGLE、LED_RED_ON、LED_RED_OFF、LED_RED_TOGGLE。在CC2530芯片中蓝灯对应P1.2,黄灯对应P1.3,对P1.2的操作会反映在蓝灯上,将P1.2置高,蓝灯就会亮,否则蓝灯就会灭掉。

三、实验内容

1.将ATOS多模汇聚节点同电脑用烧录线连接好,打开其中任意WIFI节点的电源开关,同时将

WIFI节点对应的编程开关打开。

2.打开Cygwin开发环境。

3.在Cygwin界面中执行cd apps/Demos/Basic/Led,进入到LED实验目录下,如下图。在Cygwin

界面中会用到以下几个命令:cd目录名:进入特定的目录。cd\ 退回到根目录。cd ..退回到上一级目录。dir即显示出当前目录下的所有文件。ls列出目录下的所有文件。

4.在LED实验目录下执行make antc5 install进行编译和烧录。

5.可以看到实验现象为WIFI节点上的蓝灯和黄灯交替闪烁。

四、实验过程

1)详细的调试步骤

1.将ATOS多模汇聚节点同电脑用烧录线连接好,打开其中任意WIFI节点的电源开关,同时将

WIFI节点对应的编程开关打开。

2.打开Cygwin开发环境。

3.在Cygwin界面中执行cd apps/Demos/Basic/Led,进入到LED实验目录下,如下图。在Cygwin

界面中会用到以下几个命令:cd目录名:进入特定的目录。cd\ 退回到根目录。cd ..退回到上一级目录。dir即显示出当前目录下的所有文件。ls列出目录下的所有文件。

4.在LED实验目录下执行make antc5 install进行编译和烧录。

5.可以看到实验现象为WIFI节点上的蓝灯和黄灯交替闪烁。

2)实验现象

在LED实验目录下执行make antc5 install进行编译和烧录。烧录成功,WIFI节点上的蓝灯和黄灯交替闪烁。

3)必要的实验数据

module LedM

{

uses interface Boot;

}

implementation

{

/* LED灯演示*/

task void DemoLed()

{

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

LED_GREEN -> 蓝灯

LED_RED -> 黄灯*/

int i,j;

while(1)

{

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

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

LED_GREEN_OFF; /* 熄灭蓝LED灯*/

LED_RED_ON; /* 点亮黄LED灯*/

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

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

LED_GREEN_ON; /* 点亮蓝LED灯*/

LED_RED_OFF; /* 熄灭黄LED灯*/

}

}

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

系统启动后会调用此函数*/

event void Boot.booted()

{

post DemoLed();

}

}

五、软件组成

1.ATOS物联网教学实验平台实验箱

2.烧录线一根

六、总结分析

该实验完成了对CC2530芯片的LED进行控制,实际上是对CC2530芯片的GPIO的控制。掌握芯片LED控制之后,在复杂的程序中可以用LED作为一种很好的调试手段。

七、习题答案

1.在改实验的基础上修改,使得最后的效果为蓝灯一直处于熄灭的状态,黄灯不停的闪烁。

实验现象如下:

实验代码如下:

/**

LED 示例程序的实现模块,简单的点亮3个LED灯

@date 2010-1

*/

module LedM

{

uses interface Boot;

}

implementation

{

/** LED灯演示

*/

task void DemoLed()

{

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

LED_BLUE -> 蓝灯

LED_YELLOW -> 黄灯

*/

int i,j;

while(1)

{

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

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

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

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

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

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

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

}

}

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

系统启动后会调用此函数

*/

event void Boot.booted()

{

post DemoLed();

}

}

2.尝试不用如LED_BLUE_OFF宏定义,编写底层端口驱动程序代码控制蓝灯和黄灯闪烁,参考

PlatformLed.h文件和书上例子。

3.纵观整个代码,没有头文件包含语句,却在代码中用到在头文件中定义的宏定义,如

LED_BLUE_OFF,简述原因。

4.简述booted事件怎样触发?在何处触发?

相关文档
最新文档