好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

无线传感网络操作系统实验4分析.doc

9页
  • 卖家[上传人]:鲁**
  • 文档编号:542057387
  • 上传时间:2023-10-29
  • 文档格式:DOC
  • 文档大小:364.50KB
  • / 9 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 无线传感器网络实验报告班级: _14104341__ 姓名: __代姝佳__ 学号: _1410400111_时间: _2017-4-12__ 教师: _陈飞云_ 成绩: 实验名称:一、 实验目的1. 了解点对点通信过程2. 学会 ATOS 平台通讯模块( ActiveMessage )的使用二、实验原理本实验使用 TinyOS 中的活动消息( PlatformMacC )模型实现点对点通信,活动模型组件 PlatformMacC 包含了网络协议中路由层以下的部分在 ATOS 平台下, PlatformMacC 包含的主要 功能有: CSMA/CA 、链路层重发、重复包判断等机制其中, CSMA/CA 机制使节点在发送数据 之前,首先去侦听信道状况,只有在信道空闲的情况下才发送数据,从而避免了数据碰撞,保证 了节点间数据稳定传输;链路层重发机制是当节点数据发送失败时,链路层会重发,直到发送成 功或重发次数到达设定的阈值为止,提高了数据成功到达率;重复包判断机制是节点根据发送数 据包的源节点地址及数据包中的 dsn 域判断该包是不是重复包,如果是重复包,则不处理,防止 节点收到同一个数据包的多个拷贝。

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

      其中,metadata部分不需要通过射频发送出去,只是在发送前和接收后提取 或写入相应的域三、实验内容1. 将 J-Link 对应端插入 ATOS 多模汇聚节点的 CN3 引脚,将 ATOS 多模汇聚节点上的 STM32 同电脑连接起来2. 打开 SEGGER/J-Link arm v4.081/J-flash arm 软 件 ,点击 target/connect, 连 接成功后 ,点 击 file/open ,按照路径光盘 A/02 演示中心 /STM32 相关 HEX 打开 M3GW-PC.hex ,再点击 target/program ,其烧录到 ATOS 多模汇聚节点的 STM32 芯片中烧录成功后,最后点击 target/start application 在多模汇聚节点的 STM32 芯片 上运行程序3. 用串口线将 ATOS 多模汇聚节点和 PC 机器连接起来4. 将ATOS多模汇聚节点与任一 WIFI节点插上天线5. 将ATOS多模汇聚节点同电脑用烧录线连接好,打开 ATOS多模汇聚节点的开关,同时将ATOS多模汇聚节点的编程开关打开6. 打开Cygwin开发环境7. 在 Cygwin 开发环境中执行 /opt/atos/apps/Demos/RFDemos/1_P2P。

      8. 在点对点通讯目录下执行 make antc5 in stall GRP=01 NID=01,进行软件的编译和烧录,(GRP=01 NID=01的意思是将当前的点烧录为第一组,第一号 )9. 烧录成功后,将 ATOS多模汇聚节点的编程开关关闭,然后打开 WIFI节点的开关,并将其对应的编程开关打开10. 执行 make antc5 reinstall GRP=01 NID=02 11. 打开串口助手,设置波特率与串口号12. 重启ATOS多模汇聚节点,串口助手中有如下的内容:13. 重启刚刚烧录的 WIFI节点的开关14. 通过电脑在串口助手窗口中输入 2,点回车键,当出现“ * To Send:”后,输入“ hello”,再点击回车键15. 当WIFI节点和ATOS多模汇聚节点通讯成功的情况如下图:四、实验过程1) 详细的调试步骤1. 将J-Link对应端插入 ATOS多模汇聚节点的 CN3引脚,将ATOS多模汇聚节点上的 STM322. 同电脑连接起来3. 打开 SEGGER/J-Link arm v4.081/J-flash arm 软件,点击 target/connect,连接成功后,点击file/open,按照路径光盘 A/02 演示中心/STM32 相关 HEX 打开 M3GW-PC.hex,再点击target/program,其烧录到 ATOS多模汇聚节点的 STM32芯片中。

      烧录成功后,最后点击target/start application在多模汇聚节点的 STM32芯片上运行程序4. 用串口线将ATOS多模汇聚节点和 PC机器连接起来5. 将ATOS多模汇聚节点与任一 WIFI节点插上天线6. 将ATOS多模汇聚节点同电脑用烧录线连接好,打开 ATOS多模汇聚节点的开关,同时将7. ATOS多模汇聚节点的编程开关打开8. 打开Cygwin开发环境9. 在 Cygwin 开发环境中执行 /opt/atos/apps/Demos/RFDemos/1_P2P10. 在点对点通讯目录下执行 make an tc5 in stall GRP=01 NID=01,进行软件的编译和烧录,11. (GRP=01 NID=01的意思是将当前的点烧录为第一组,第一号 )12. 烧录成功后,将 ATOS多模汇聚节点的编程开关关闭,然后打开 WIFI节点的开关,并将其13. 对应的编程开关打开14. 执行 make antc5 reinstall GRP=01 NID=02 15. 打开串口助手,设置波特率与串口号16. 重启ATOS多模汇聚节点,串口助手中有如下的内容:17. 重启刚刚烧录的 WIFI节点的开关。

      18. 通过电脑在串口助手窗口中输入 2,点回车键,当出现“ * To Send :”后,输入“ hello”,再点击回车键19. 当WIFI节点和ATOS多模汇聚节点通讯成功的情况如下图:2) 实验现象1.通过电脑在串口助手窗口中输入 2,点回车键,当出现“ * To Send :”后,输入“ hello”,再点击回车键2.当WIFI节点和ATOS多模汇聚节点通讯成功的情况如下图:3) 必要的实验数据//配置组件con figuratio n P2PC{}impleme ntati on{compo nents P2PM; comp onents MainC;P2PM.Boot -> Mai nC.Boot;/*串口收发组件*/comp onents PlatformSerialC;P2PM.UartStdC on trol -> PlatformSerialC; P2PM.UartStream -> PlatformSerialC;/*活动消息组件*/compo nents new PlatformMacC(123); comp onents AtosMacC;P2PM.AtosCo ntrol -> AtosMacC; P2PM.AMPacket -> PlatformMacC;P2P M.P acket -> PlatformMacC;P2PM.AMSe nd -> PlatformMacC; P2PM.Receive ->PlatformMacC;} //模块组件#define DBG LEV 1000 module P2PM{uses {interface Boot;interface AtosControl;interface StdControl as UartStdControl;interface UartStream;interface AMSend;interface Receive;interface AMPacket;interface Packet;}}implementation{enum{MAX_ADDRESS_LEN = 5,INPUT_ADDRESS = 0,INPUT_DATA = 1,};message_t m_msg;uint8_t m_len = 0;char m_address_str[MAX_ADDRESS_LEN] = {0};uint8_t m_address_index = 0;uint8_t m_input_type = 0;/* 显示菜单 */task void showMenu(){if( m_input_type == INPUT_DATA){/* 等待输入欲发送的数据 */ADBG_APP( "\r\n* To Send:\r\n");}else{/* 等待输入欲发送的地址 */ADBG_APP( "\r\n###################################################\r\n* MY NodeId = 0x%x, Group=0x%x, destination ?\r\n",ADBG_N(call AMPacket.address()), ADBG_N(TOS_IEEE_PANID));m_input_type = INPUT_ADDRESS; m_address_index = 0;/* 将从串口输入的地址字符串转化为真实地址 */uint16_t getDestAddress(){uint16_t address = 0; uint8_t i = 0;if(m_address_index > MAX_ADDRESS_LEN){m_address_index = MAX_ADDRESS_LEN -1;}for ( i=0; i < m_address_index; ++i){uint8_t digital = m_address_str[i]; if(digital >= 'A' && digital <= 'F') {digital = digital - 'A' + 10;}else if(digital >= 'a' && digital <= 'f'){digital = digital - 'a' + 10;}else if(digital >= '0' && digital <= '9'){digital = digital - '0';}address = address*16 +digital;}return addres。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.