无线传感器网络练习-05_利用Task控制LED

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

本章正式作为针对控制HBE-Ubi-CC2431节点的第一章练习,将使用TinyOS提供的LED组件,学习控制节点的Red,Yellow,Green三种LED的方法和其结构。利用Task(任务模式)的LED控制5.2培训目标理解节点的LED控制,尝试通过创建例题程序,使节点的LED直接运行。理解TinyOS提供的LedsC组件结构。理解Blink例题中使用的多个下层组件。5.3基本知识节点LED的一般用途LED主要用于确认感应器节点的状态及是否执行特定操作即使不用其他的调试方法,也可以通过LED的状态轻松确认节点的运行状态LedsC组件LedsC是一个组件,用来控制LED.LedsC组件通过使用Leds的,为了控制节点中的三种LED,提供了如下的Command函数.5.3基本知识Leds组件中提供的函数整体LED控制Leds.get()–提取当前Led的状态。(bit0=led0,bit1=led1,bit2=led2)Leds.set(uint8_t)–将Led的状态设定为输入的值。(bit0=led0,bit1=led1,bit2=led2)红色LEDLeds.led0On()–打开红色LED。Leds.led0Off()–关闭红色LED。Leds.led0Toggle()–将红色LED变更为与当前状态相反的状态。(通常用于LED闪烁时)绿色LEDLeds.led1On()–打开绿色LED。Leds.led1Off()–关闭绿色LED。Leds.led1Toggle()–将绿色LED变更为与当前状态相反的状态。(通常用于LED闪烁时)黄色LEDLeds.led2On()–打开黄色LED。Leds.led2Off()–关闭黄色LED。Leds.led2Toggle()–将Y黄色LED变更为与当前状态相反的状态。(通常用于LED闪烁时)5.4.1Blink例题的构成Blink程序文件Blink.nc–Blink例程的配置文件.BlinkM.nc–Blink例程的模块文件Blink文件的位置cygwin安装目录/opt/tinyos-2.x/contrib/cc2431/Blink/请参阅Bink.nc和BlinkM.nc文件夹中的文件。5.4.1Blink.ncBlink.ncBlink例题中的各组件配置关系5.4.1Blink.nc4:components后是使用的模块,有MainC、BlinkM以及用于控制LED的组件LedsC及提供延迟功能的BusyWaitMicroC5:在TinyOS2.X中通过Boot接口与MainC模块连接。MainC组件及TinyOS的相关设点结束后,通过Boot的Booted事件开始程序6:连接模块BlinkM的接口Leds和下层组件LedsC的接口Leds7:为了提供以us为单位延迟时间的BusyWait接口,连接BusyWaitMicroC组件1:configurationBlink{2:}3:implementation{4:componentsMainC,BlinkM,LedsC,BusyWaitMicroC;5:BlinkM.Boot-MainC;6:BlinkM.Leds-LedsC;7:BlinkM.BusyWait-BusyWaitMicroC;8:}5.4.2BlinkM.nc1:moduleBlinkM{2:uses{3:interfaceBoot;4:interfaceLeds;5:interfaceBusyWaitTMicro,uint16_t;6:}7:}8:implementation{9:taskvoidled_task();10:eventvoidBoot.booted(){11:postled_task();12:}}2~6:Module文件中,通过uses声明的接口,有通知程序开始的Boot接口,控制LED的Leds接口,提供延迟时间的BusyWait接口。BusyWait的内的内容中,TMicro意味着时间单位以us为单位,设定的时间变量类型为uint16_t。9:为了声明想要通过Task运行的特征函数,需在函数前添加关键词task,第9行中的led_task在第13行被定义。10~12:如果TinyOS初始化完毕,根据MainC组件,Boot.booted()函数被调用。在该函数中,为了调用第9行的Task函数,而使用了关键词post。如果booted函数结束,依靠调度程序,led_task()Task函数被调用。5.4.2BlinkM.nc13:taskvoidled_task(){14:inti;15:for(i=0;i10;i++)16:{17:callLeds.led2On();18:callBusyWait.wait(30000);19:callLeds.led1Toggle();20:callLeds.led2Off();21:}22:}2313~22:led_task()被调用,打开led2(黄色LED),经过30ms的迟延时间后,反复进行10次使led1(绿色LED)Toggle,并关闭led2(黄色LED)的操作。5.5Blink练习首先开始运行Cygwin。如下输入命令,进入例题文件夹。现在输入makecc2431(zigbex)进行编译。对于CC2431节点:cd/opt/tinyos‐2.x/contrib/cc2431/Blink对于ZigbeX节点:cd/opt/tinyos‐2.x/contrib/zigbex/Blink编译后,生成build/cc2431(build/zigbex)文件夹,在该文件夹中生成app.hex文件。5.5Blink下载首先将要下载的HBE-Ubi-CC2431节点的USBMCU开关移向MCU一侧后,通过USB线与PC连接。其他节点下载时的连接如图所示。USBMCUSwitchPowerSwitchCC2431下载的操作Zigbex2下载的操作,下载器拨到ISPZigbex下载的操作,下载器拨到SPI5.5Blink下载接下来,单击桌面上的SmartRFProg.exe快捷方式图标(或者打开Windows的‘开始-程序-TexasInstruments-SmartRFFlashProgrammer1.5.0-SmartRFFlashProgrammer’)。使要下载的HBE-Ubi-CC2431节点的USBMCU开关移向MCU后。5.5Blink下载FlashProgrammer启动运行如果已与PC连接好,则在FlashProgrammer运行后,画面将如下图所示。5.5Blink下载FlashProgrammer的初始画面上将如上图所示以蓝色行显示哪个节点与PC连接。现在,在“Flash”路径输入行中单击‘…’按钮,选择刚才编译的例题的app.hex文件。5.5Blink下载如果设定了要下载的hex文件,接下来单击FlashProgrammer下端的“Performaction”按钮。如果单击该按钮,所选的hex文件会通过C8051F320被下载到cc2431芯片中。5.5Blink下载zigbex及ZigbeX2节点)ZigbeX及ZigbeX2通过AVRStudio的下载方法123455.6Blink练习–结果结果如果完成了按上述顺序进行的实习,将会看到韩伯节点的YellowLED被打开,每隔30msGreenLED进行on/off变换。Blink例题,由于下载结束后被立刻运行,因此有可能不能通过眼睛看到LED的运行。这种情况下,关闭节点的电源后,再次打开,从而确认LED的运行。如果节点仍是通过USB线与PC连接的状态,希望将其分开后,再令电源开关on/off。

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功