物联网实验报告-实验二_第1页
物联网实验报告-实验二_第2页
物联网实验报告-实验二_第3页
物联网实验报告-实验二_第4页
物联网实验报告-实验二_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告实验名称利用LED的HelloWorld实例课程名称无线传感器网络实验院系部:电气与电子工程学院专业班级:电网1101班学生姓名:张雪垠赵炳强张鸣祚学号:111160013011116001321111600129指导教师:武昕 成绩:实验日期:2014-4-8华北电力大学(北京)一、实验目的及要求:本章将应用前面所学习的LED控制组件及Timer组件,对安装在ZigbeX上的LED的On/Off进行摩尔斯编码并输出单词“hello,world”的实例进行学习。二、仪器用具:主电脑、1个Mote设备、ISP工具、打印机连接线、USB连接线三、实验原理:HelloWorld应用程序是把“hello,world”文字转换为摩尔斯电码并显示在LED中的程序。在HelloWorld实例中,设置Timer并按指定的时间打开/关闭LED,可以用摩尔斯电码表示所需的英文单词。为了控制时间设置和LED的On/Off,在HelloWorld.nc文件中声明TimerC组件及LedsC组件,与自身的模块HelloWorldM组件进行连接。在HelloWorld实例中使用的各组件的声明及连接结构,可以在配置文件HelloWorld.nc中进行确认。Helloworld为了能够运行一个完整的应用程序,把必需的Main组件放在下层组件中,对其它组件及自身的模块部分进行连接。通过Main组件最先运行的是HelloWorldM的StdControl.Init()函数。在该函数中执行对LED的初始化及有关Off的指令。在此之后调用的函数为StdControl.Start函数,通过Timer组件,设置为每秒(1000)只调用一次警报(TIMER_ONE_SHOT)。Timer组件按设置,在1秒后通过Signal,调用HelloWorldM内的Timer.fired()函数。在Timer.fired()函数中,根据保存在static指针变量morse中的“helloes,world"摩尔斯值,命令REDLED的On/Off。例如,在摩尔斯电码空格“”中,在2*MORSE_UNIT期间内LED无任何变化,摩尔斯电码“.”中,在MORSE_UNIT期间内打开REDLED后,然后在MORSE_UNIT期间内关闭REDLED,通过current++跳到下一个摩尔斯电码。摩尔斯电码“-”中,3*MORSE_UNIT期间内打开REDLED后,同样在MORSE_UNIT期间内关闭REDLED,通过current++跳到下一个摩尔斯电码。通过这样的计算方法,安装了Helloworld程序的ZigbeX传感器节点,通过REDLED输出“Hello,world”摩尔斯电码。将HelloWorldM中使用的多个组件的连接结构以图形结构显示如下:实验步骤(包括原理图、实验结果与数据处理)<利用Ponyprog工SP程序下载到ZigbeX中>首先运行Cygwin。如下输入命令,进入实例文件夹。cd/opt/tinyos-1.x/contrib/zigbex/helloworld接下来,输入“MakeZigbex”进行编译。<利用USB工SP板下载到ZigbeX中>①运行AVRStudio②在AVRStudio中选择Tools->ProgramAVR->AutoConnect菜单,连接到USB-ISP上。③连接完成后,出现如下下载画面。④点击“…”按钮,选择所需的Hex文件后,点击“Program”按钮运行程序。⑥按相应功能进行适当设置后,点击“Program”按钮。在进行上述步骤之前,与ZigbeX连接的USB工SP板上的开关必须设为“ISP”模式,而且己通过USB连接线与计算机进行连接。<在例程基础上修改程序为实验要求的程序>修改后的程序如下:加粗出为修改处#defineMORSE_WPM1/*speed,inwordsperminute*//*we'dliketosay1000*60/50/MORSE_WPMhere,butthatgeneratescompilerwarningswhenproducing16-bitcode*/#defineMORSE_UNIT(1000000/MORSE_WPM)/*millisecondsperunit*/修改比例,让小灯闪烁变慢。。。。。。implementation{intm=0,t,tt=800,ttt=300;//m为绿灯状态变量,m=0表示等灭;tt控制‘-’和‘.’时的周期;ttt控制‘’时的快闪周期commandresult_tStdControl.init(){ callLeds.init(); /*TheTinyOScodetriestoturnofftheLEDsintheinitroutine, butTOSSIMdoesn'tseemtoclearthemunlessweresetthem explicitly:*/ callLeds.redOff(); callLeds.yellowOff(); callLeds.greenOff(); returnSUCCESS;}。。。。。。eventresult_tTimer.fired(){ /*AnesCcompilerbugpreventsusfromdeclaring staticcharmorse[],soweneedstaticchar*morse.*/ staticchar*morse="--.......--.--." "-..-..-.""-.--..-.";//‘张雪垠’对应的莫斯码。。。。。。 switch(*current){ case'':/*pause:offfortwounits*/ dbg(DBG_USR1,"Morse:pause\n");callLeds.redOn();for(t=0;t<ttt;t++){TOSH_uwait(1000);}//红灯点亮周期800mscallLeds.redOff();for(t=0;t<ttt;t++){TOSH_uwait(1000);}//红灯熄灭周期800mscallLeds.redOn();for(t=0;t<ttt;t++){TOSH_uwait(1000);}callLeds.redOff();for(t=0;t<ttt;t++){TOSH_uwait(1000);} callTimer.start(TIMER_ONE_SHOT,0);//已用for循环延时,此处跳转延时设置为0current++; break; case'.':/*dot:onforoneunit,offforoneunit*/ if(m==0){ dbg(DBG_USR1,"Morse:dot\n"); callLeds.greenOn();m=1;//用m=0时点亮绿灯,m=1时熄灭绿灯for(t=0;t<tt;t++){TOSH_uwait(1000);} callTimer.start(TIMER_ONE_SHOT,0); }else{dbg(DBG_USR1,"Morse:dot\n"); callLeds.greenOff();for(t=0;t<tt;t++){TOSH_uwait(1000);}m=0; callTimer.start(TIMER_ONE_SHOT,0); }current++; break;//下面程序思路和之前的思路相近 case'-':/*dash:onforthreeunits,offforoneunit*/ dbg(DBG_USR1,"Morse:dash\n"); callLeds.yellowOn(); for(t=0;t<tt;t++){TOSH_uwait(1000);}//callTimer.start(TIMER_ONE_SHOT,MORSE_UNIT); callLeds.yellowOff();for(t=0;t<tt;t++){TOSH_uwait(1000);} callTimer.start(TIMER_ONE_SHOT,0); current++; break; default:/*illegalcharacter:ignore*/ dbg(DBG_USR1,"Morse:illegalcharacter!\n"); break; } /*wraparoundstringifendreached*/ if(!*current) current=morse; returnSUCCESS;}}五、讨论与结论(对实验现象、实验故障及处理方法、实验中存在的问题等进行分析和讨论,对实验的进一步想法或改进意见。)把HelloWorld程序下载到设备后,可以看到设备通过三个LED反复显示“Hello,world"摩尔斯电码。实验过程中主要问题是延时上的问题,之前一直想用callTimer.start(TIMER_ONE_SHOT,MORSE_UNIT)这条语句中的MORSE_UNIT来延时,后来发现callTimer.s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论