ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:695.60KB ,
资源ID:22151803      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22151803.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(物联网实验报告Word格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

物联网实验报告Word格式.docx

1、x);1. This is a string, and this is char %crn2. NUM1: HEX=0x%x, DEC=%drn, (int)(num1), (int)(num1);ADBG(RPG_LEV, 2. NUM2: HEX=0x%lx, DEC=%ldrn, (uint32_t)(num2), (uint32_t)(num2);3. FLOAT: %frn, float1);这样,第4句和第5句就不会输出。输出内容如下图所示:1.1.5 碰到的问题 第一次将基站同电脑用烧录线连接起来时,电脑会无法识别此USB设备。这样就不能把程序烧录到基站和节点当中。需要先在PC机

2、上安装此USB设备的驱动程序。具体操作是在设备管理器当中,双击图标有感叹号的设备,点击更新驱动程序,路径为:F:实验室软件物联网驱动程序。1.1.6 心得体会 本实验属于验证性实验,比较简单,代码也浅显易懂。主要通过此实验学习了如何通过串口对程序进行调试,这个调试功能是分级别调试的,只有调用处的调试级别不小于makefile中定义的调试级别的时候才会被输出到串口。1.2 串口组件通信实验1.2.1 实验目的能够掌握CC2530中的串口的通讯功能,包括串口的发送功能和接受功能以及串口波特率设置功能。为今后的综合实验打下基础。1.2.2 实验原理平台提供了串口通信模块组件PlatformSeria

3、lC,该组件提供了三个接口:StdControl、UartStream以及CC2530UartControl,其中,StdControl用于控制串口通信模块的开关,UartStream提供了串口收发功能;CC2530UartControl接口用于设置串口通信得到波特率。其中UartStream的实现,实际上是在串口层做了一个缓冲,每次将发送缓冲器的数据一个字节一个字节地往串口发送,最终达到串口的连续传输。1.2.3 实验步骤1. 将基站同电脑用烧录线连接好,打开基站的开关 5. 在Cygwin界面中执行cd apps/Demos/Basic/ SerialIO,进入到串口通讯实验目录下。6.

4、在串口通讯代码目录下执行make antc3 install,进行编译和烧录。7. 烧录成功后,实验现象为串口有内容输出。8. 根据串口输出的提示进行操作,串口提示为按下键盘【1】,基站的蓝灯会闪烁一下,按下键盘【2】,基站的黄灯会闪烁一下。如果是其它按键,串口会提示“Error key”,如下图。1.2.4 继续实验实现一个串口实验,在串口助手中实现回显的功能。在task void lightLED() 函数当中,当 m_echo_buf=1 和 m_echo_buf=2 时其各自的ADBG语句后面都多加一句 post showMenuTask();task void lightLED()

5、if(m_echo_buf=1) LED_BLUE_TOGGLE; /* 切换蓝色LED灯 */ ADBG(DBG_LEV, You choose to toggle BLUE LEDrn post showMenuTask(); else if (m_echo_buf = 2 LED_YELLOW_TOGGLE; /* 切换黄色LED灯 */You choose to toggle YELLOW LEDrn elseError Key %crn, m_echo_buf); 调试结果:1.2.5 碰到的问题 此实验相对比较容易,基本无碰上什么问题。1.2.6 心得体会 此实验的代码看起来是挺容

6、易读懂的,但是在编程实现上缺没有那么容易。TinyOS系统事先已经将串口的发送和接受功能封装成接口来让我们调用,为我们使用串口的功能提供的极大的便利。这是nesC的一大优势。提供各式各样的内部组件也为我们做物联网的开发应用节省了许多编程上的时间。1.3 Flash组件读写实验1.3.1 实验目的掌握CC2530芯片Flash的读写操作,同时为后面的综合实验做准备。1.3.2 实验原理Flash存储器具有非易失的特点,即其存储的数据掉电后不会丢失。因此常用来存储一些设备参数等。Flash存储器的组织结构为:每页2KB,共64页(CC2530-F128)。 Flash存储器的写入有别于RAM、EE

7、PROM等其他存储介质,写Flash时,每bit可以由1变为0而不能由0变为1,必须分页擦除后才能恢复全“1”。因此,需要修改某页中的部分字节时,需要将本页中用到的所有数据读出到RAM空间中修改,然后擦除本页,再将RAM中的数据写入。CC2530中使用Flash控制器来处理Flash读写和擦除。使用DMA传输和CPU直接访问SFR都可以配合Flash控制器完成写Flash等操作。DMA写Flash:需要写入的数据应存于XDATA空间,其首地址作为DMA的源地址,目的地址固定为FWDATA,触发事件为FLASH。当FCTL.WRITE置“1”时触发DMA,传输长度应为4的整数倍,否则需要补充;选

8、择字节传输,传输模式为单次模式,选择高优先级。1.3.3 实验步骤3. 打开串口助手 5. 在Cygwin开发环境中执行cd apps/Demos/Basic/Flash 6. 在Flash目录下执行make antc3 install,进行软件的编译和烧录 7. 烧录成功后,串口有内容输出,具体如下图 1.3.4 继续实验自己定义一个结构体,并且将结构体的内容写入到0x1fff8,并且在写完后将结构体的数据读取出来通原始数据进行比较。将数组ieee2 改为结构体,在结构体里面定义一个数组。struct Super uint8_t num8; ; uint8_t ieee8 = 0; uint

9、8_t ieee18 = 7,2,4,11,21,3,92,1 ; task void initTask() uint8_t i; struct Super super; for (i=0; i8; i+) super.numi = ieee1i ; ADBG(DBG_LEV, read now n call HalFlash.erase(uint8_t*)0x1fff8); i 8; i+=4) call HalFlash.write(uint8_t*)(0x1FFF8+i), (&super.num+i), 4); call HalFlash.read(ieee, (uint8_t *)0

10、x1FFF8, 8);read ok.n sizeof(ieee); +i)super.num%d=%dn, (int)i, (int)ieeei);调试结果:1.3.5 碰到的问题 在做继续实验的时候,原本想,像对数组初始化那样直接给结构体里面的数组赋初值,但是如果这样做了,在编译的时候就会出现错误。在定义结构体类型的时候不能给结构体内定义的数组赋初值,在定义好结构体变量后,也不能直接给该结构体变量的数组变量赋初值。最保险的方法就是对机构体变量的数组变量挨个赋值。1.3.6 心得体会 这次实验学习了Flash存储器读写的基本原理,并通过了实验来验证对Flash存储器的基本操作实现。这次实验相

11、对比较容易,就是在做继续实验的时候对nesC的结构体的基础知识了解不够深而卡了一小会儿。这些基础实验虽然比较简单,但是在之后的综合实验上会经常使用到,为后面的综合实验做准备。实验二 点对点通信实验2.1 实验目的1. 了解节点对点通信过程 2. 学会ATOS平台通讯模块(ActiveMessage)的使用 2.2 实验原理本实验使用TinyOS中的活动消息(ActiveMessage)模型实现点对点通信,活动模型组件ActiveMessageC包含了网络协议中路由层以下的部分。在ATOS平台下,ActiveMessageC包含的主要功能有:CSMA/CA、链路层重发、重复包判断等机制。其中,C

12、SMA/CA机制使节点在发送数据之前,首先去侦听信道状况,只有在信道空闲的情况下才发送数据,从而避免了数据碰撞,保证了节点间数据稳定传输;链路层重发机制是当节点数据发送失败时,链路层会重发,直到发送成功或重发次数到达设定的阈值为止,提高了数据成功到达率;重复包判断机制是节点根据发送数据包的源节点地址及数据包中的dsn域判断该包是不是重复包,如果是重复包,则不处理,防止节点收到同一个数据包的多个拷贝。ActiveMessageC向上层提供的接口有AMSend、Receive、AMPacket、Packet、Snoop等。AMSend接口实现数据的发送,Receive接口实现数据的接收,Snoop

13、是接收发往其它节点的数据,AMPacket接口用于设置和提取数据包的源节点地址、目的地址等信息,Packet接口主要是得到数据包的有效数据长度(payload length)、最大有数据长度、有效数据的起始地址等。AMSend、Receive、Snoop都是参数化接口,参数为一个8位的id号,类似于TCP/IP协议中的端口号。两个节点通信时,发送节点使用的AMSend接口的参数id必须与接收节点的Receive接口的参数id一致。在TinyOS操作系统下,所有的数据包都封装到一个叫message_t的结构体中。message_t结构体包含四个部分:header、data、footer、meta

14、data四个部分。其中header中包含了数据包长度、fcf、dsn、源地址、目的地址等信息;metadata包含了rssi等信息,详见cc2420.h、Message.h、platform_message.h。其中,metadata部分不需要通过射频发送出去,只是在发送前和接收后提取或写入相应的域。2.3 实验步骤1. 将基站同电脑用烧录线连接好,打开基站的开关,将基站的烧录开关拨上去 5. 在Cygwin开发环境中执行/opt/atos/apps/Demos/RFDemos/1_P2P 6. 在点对点通讯目录下执行make antc3 install GRP=01 NID=01,进行软件的

15、编译和烧录,(GRP=01 NID=01 的意思是将当前的点烧录为第一组,第一号) 7. 烧录成功后,将基站的烧录开关拨下去,将节点对应的烧录开关拨上去,然后打开节点的开关 8. 执行make antc3 reinstall GRP=01 NID=02 9. 重启基站 10. 打开刚刚烧录的节点的开关 11. 在串口助手中根据提示输入对应的操作内容 12. 当节点和基站通讯成功的情况如下图 13. 当节点和基站通讯失败的情况如下图 2.4 继续实验完成一个点对点的传输,让基站给单独节点发送一个命令,节点在接收到命令后将自己的蓝灯状态改变。 修改方案: 在Receive.receive(mess

16、age_t* msg,void* payload.unit8_t len) 函数中做修改。基站从串口接收到的数据存放在payload变量当中,所以只需要判断payload的长度和内容跟命令是否一样,如果一样就改变蓝灯的状态。这里假设该命令为”BLUE”。 修改代码: event message_t* Receive.receive(message_t* msg, void* payload, uint8_t len) ADBG_APP( rn*Receive, len = %d, DATA:, ADBG_N(len); for(i=0; len; ADBG_APP( %c, (uint8_t*

17、)payload)i); /* 继续实验 修改部分 开始*/ if (len=4) if (uint8_t*)payload)0=B & (uint8_t*)payload)1=L (uint8_t*)payload)2=U (uint8_t*)payload)3=E LED_BLUE_TOGGLE; /* 继续实验 修改部分 结束*/ LED_YELLOW_TOGGLE; m_input_type = INPUT_ADDRESS; post showMenu();2.5 碰到的问题 1. 在给节点烧录程序的时候,容易出现no-chip-system was detected 。这个时候要将下

18、载器的reset按钮按下去复位,才能使得节点顺利烧录程序。 2. 按照实验步骤一步步做下来以后,基站给节点发送消息时,串口调试助手大多时间会显示SentFAIL!。这个问题一直得不到解决,所以只好做继续实验。做继续实验的时候发现,虽然串口调试助手显示的是SentFAIL ,但是基站还是能够通过发送命令控制蓝灯的亮灭。这说明基站跟节点的通讯是成功的。串口调试助手上显示的是有误的。至于为什么会出现这个问题,我们也没有讨论出结果来。2.6 心得体会 该实验完成了基本的节点之间的通讯,该实验是基于稳定的MAC点对点传输。所以熟练掌握这个实验是接下来研究路由协议的基础。这个实验依然是验证性实验,但是出现

19、的问题比前几个实验多了。节点烧录不进去、基站与节点能够进行通信,但是串口调试助手显示失败。在这两个地方纠结的很久,最后还是跟同学交流,才知道这些问题大家都有出现。所以猜测可能是接口程序有问题。实验三 发射功率设置实验3.1 实验目的了解CC2530芯片的8个输出功率等级,掌握节点输出功率的设置方法。3.2 实验原理CC2530芯片支持8个等级的发射功率,不同功率等级发射的最远距离不一样,但是不是线性变化的。该实验就是改变CC2530芯片的发射功率寄存器的数值来改变发射功率。3.3 实验步骤5. 在Cygwin开发环境中执行 cd /opt/atos/apps/Demos/RFDemos/3_S

20、etTransmitPower/ 6. 在功率设置实验目录下执行make antc3 install GRP=01 NID=02,进行软件的编译和烧录 8. 执行make antc3 reinstall GRP=01 NID=01 10. 打开节点的开关,按照上面的提示进行操作。在上面的界面中,按“Y”后会显示功率列表提供选择,根据自己的选择进行功率设置,在设置完成后程序会自动给节点号为1的节点发送射频数据,如下图。11. 通过改变距离和改变发射功率级别,可以观察到发送功率对发送的有效距离的影响。3.4 继续实验 在该实验的基础上测试,在最大和最小发射功率下两个点之间通讯距离的差距。3.5 碰

21、到的问题 与“点对点通信实验”一样,基站与节点通讯成功以后,串口调试助手依旧显示SentFAIL ,但是我们可以通过查看代码知道射频接收数据的函数Receive.receive()函数里面有一条语句:LED_YELLOW_TOGGLE; 说明当节点接收到数据以后,节点的黄灯就会改变灯的状态。我们就以此作为判断节点是否成功接收到基站发出的数据的依据。 在设置发射功率的时候,想把功率设置成14,却怎么也设置不了。查看代码才知道16的发射功率等级对应的是十六进制的0F,如果要设置发射功率为14,则应该输入C。3.6 心得体会 本实验是在点对点通信实验的基础上完成的。通过本实验,让我们了解了CC253

22、0芯片中功率级别的概念,以及如何设置发射功率的寄存器的值。为了解决这个实验中出现的问题,仔细阅读了所给的SetTransmitPowerM.nc文件的代码。通过阅读、分析代码,对在TinyOS系统上进行nesC编程有了进一步地了解,也对nesC程序整体的框架有了一定的了解。实验四 星状网络通讯实验4.1 实验目的了解星形网络的特点,掌握星形网络的实现方法。4.2 实验原理该实验主要是完成星形网络通讯实验。在这个实验中所有的基本节点都是直接将数据发送给基站,这样就会形成一个星形。在节点端,每个节点都会启动一个定时器,在定时器超时的时候,节点就会开始采集传感器数据,在完成传感器数据采集后,节点就会

23、将采集的数据发送给基站;在基站端,接收到节点的数据后,按照基站和上位机通讯的协议将数据上报给上位机软件。4.3 实验步骤3. 打开Cygwin开发环境 4. 在Cygwin开发环境中执行cd /opt/atos/apps/Atosenet/ANTStartnet/Base 5. 在功率设置实验目录下执行make antc3 install GRP=01 NID=01,进行软件的编译和烧录 6. 烧录成功后,将基站的烧录开关拨下去,将节点对应的烧录开关拨上去,然后打开节点的开关 7. 执行cd /opt/atos/apps/Atosenet/ANTStartnet/Node,进入到星形实验的节点

24、目录。8. 在该目录下面执行make antc3 install ASO=LIGHT TYPE3 GRP=01 NID=02,对节点进行烧录。9. 依次烧录剩下的节点,确保每个节点的NID是不一样的 10. 将节点和基站的天线都插好,并且将节点的开关都打开。11. 运行光监控软件,如果没有安装,请先安装该软件,这个软件的安装包在【实验光盘演示中心LightField.msi】。12. 选择正确的串口号,点击运行标志,运行之后的界面如下。13. 从运行的图片中可以看到一个星形的网络。如果想看到一个更大的星形的网络,可以多烧录几个节点。4.4 继续实验在该实验的基础上,尝试让基站的ID变为2。每个

25、基本节点都将自己的目的地址变为2。并且最终通讯形成星形网络。将node文件夹里面的makefile 文件打开,将PFLAGS += -DATE_PROFILE_TABLE_CONFIG 改为PFLAGS += -DATE_PROFILE_TABLE_CONFIG=2 。这个修改的目的是为了设置星形网络的父节点。ATE_PROFILE_TABLE_CONFIG的值就是静态路由默认的目的节点的ID号。所以这样一改,就能使每个基本节点都将自己的目的地址变为2 。4.5 碰到的问题 按照步骤将所给的程序分别烧录到基站和节点以后,会发现网络拓扑图所示的网络非星形网络,而是树状网络。询问助教才知道这是没有对控制星形网络父节点的变量赋初值的缘故。需要将Node文件夹里的makefile文件的ATE_PROFILE_TABLE_CONFIG 改为PFLAGS += -DATE_PROFILE_TABLE_CONFIG=1。这样得到的网络拓扑图才是正确的。 按照继续实验的要求修改makefile文件后,烧录时给基站赋予的节点ID值也改为了2 ,但是出来的网络拓扑图,其星形网络的父节点的ID仍然是1。这个问题其他的同学也出现过。但是没有讨论出解决方案。4.6 心得体会 这个实验是每个基本节点都将采集到的传感器数据发送给基

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1