一、实验目的
- 理解掌握时间同步的重要意义
- 了解时间同步的基本方法,理解 TPSN 协议机理
- 掌握 TinyOS 定时器相关接口和组件的使用
4. 能够在 TinyOS 中实现多节点间的时间同步
二、实验要求
- 功能:2 个节点以通过通信实现时间同步,实现手动(按键、重启)和自动(固定间隔)进行 时间同步
- 现象:节点上两个 LED 灯能够同步闪烁(开始是同步闪烁的,随着时间的流逝节点上时钟的漂 移,节点 LED 闪烁逐渐不同步,能够通过自动和手动方式实现再同步)
三、实验设备
- 装有 TinyOS 开发环境的 PC 机一台;
- 下载器一个;
- 物联网实验综合箱一套(两个 CC2530 节点,ID 分别为 01 和 00)。
四、实验原理
时间同步的相关知识请参阅《无线传感器网络》教材第 11 章。
本时间同步实验是一种简单的粗略的时间同步方法,附加实验是一种精确时间同步方法—— TPSN。
本时间同步实验,0 号节点启动完成后发送同步消息包,发送完成后启动定时器;1 号节点接收 到同步消息包后启动自己的定时器;两个节点定时器触发后翻转 LED 灯状态,并启动下个周期的定 时。通过这种消息包的方式,实现每次 0 号节点启动就进行粗略时间同步。TPSN 算法能够实现精确的时间不同。
五、实验步骤
TestTimerSync:
1、打开 opt/tinyos-2.x/apps/cc2530_app/ 下的 TestTimerSync
2、修改 Makefile 文件内容:root节点和node节点分别如下:
3、修改 TestTimerSynC.nc 文件内容:设定led每翻转300次自动同步一次
4、用 cd 命令进入到文件目录下用命令 make cc2530zn 进行编译,进入到编译目录下,make cc2530zn install 进行烧录,然后删除编译的目录。
5、观察实现现象:最近开始led亮灭是同步的,但是随着时间的增长,led亮不在同步。此时可以重启root节点或者等待下一次自动同步
六、附加实验步骤
TestTPSN:
- 打开 opt/tinyos-2.x/apps/cc2530_app/ 下的 TestTPSN。修改 Makefile 文件内容,特别是要修改为 自己组分配的信道号和 GroupID,先修改节点 ID 为 0。:
- 分别对root节点和node节点进行编译烧录
- 观察实验现象:
发现led由最开始的同步闪烁再到后面有点不同步,在进行同步。
七、思考、测试、回答
- 简述语句 call MilliTimer.startOneShot(PERIOD);含义。
答:启动一次为时长为PERIO毫秒的定时器。
- 简述为什么一段时候会出现 LED 闪烁不同步(不能简单说定时器会有一定误差)?
答:cc2530使用的使用低端晶振;时钟漂移与抖动经常发生。
- 简要回答节点时间同步能够带来什么好处?
答:能保持准确的全局时间,进而保证系统中的所有各种消息、事件、节点、数据具备正确的逻辑性、协调性和可追溯性。
- 尝试修改实验能否在发生漂移的时候到达一定阈值的时候,传递一个现象(比如 node 节点急速 闪烁)。 TPSN 实验
答:在计算delta值后,判断其值是否达到一定阈值,再去改变灯闪烁的频率。
- [19:42:56.427]收←◆0000 7FFF # 0000 81E0 # 0000 81E4 # 0000 8071 [19:43:28.837]收←◆0000 FFFF # 0001 0017 # 0001 001B # 0001 0035 简述串口输入代表含义?
答:第一串0000代表第一次通信序号,第二个第三个第四个0000是下一次的序号,其他数据应该是发送的消息。
- 观察连接一个节点(连接一个节点需要等至少 30 秒看到现象),灯的闪烁和连接两个有什么区 别?为什么会有这种区别?
答:led1灯亮的更晚一点;可能是因为节点的数量增多而导致通信更长,接收到的时间更晚。
- 尝试修改程序,使 TPSN 实验精准矫正频率上升。
- 能否修改程序隔一段时间记录一下 delta 的值,并一定时间进行串口打印。
- 如何实现 3 个节点乃至更多个节点的同步?
答:改地址号。
八、实验总结
通过这次实验了解了时间同步的实现,也学会了tinyOS定时器相关组件的使用,对时间同步了解也更为深刻,实验不算很难,通过老师给的视频和代码间的一些注释,也能顺利的理解整个代码的工作流程。
标签:同步,0000,层次,定时器,时间,实验,节点 From: https://www.cnblogs.com/dhyyds/p/16960386.html