物联网实验报告.docx
《物联网实验报告.docx》由会员分享,可在线阅读,更多相关《物联网实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
物联网实验报告
物联网实验报告
学院:
班级:
学号:
:
指导教师:
2013/12/8
实验一RFID的读与写
一、实验目的
熟悉和学习ISO/IEC18000-3,ISO15693标准规第三局部协议和指令容
中的读取和写入标签数据操作局部容。
二、实验容
通过发送不同的根本指令,观察返回的数据,了解指令的作用。
三、根本原理
ISO15693标准规第三局部。
四、所需仪器
供电电源、电子标签。
五、实验步骤
1、读取UID
将1个标签放于仪器天线之上,给系统上电,翻开系统软件PracticeSystem.exe,正确
设置串口,设置操作同防碰撞实验局部的设置操作。
运行“寻卡〞mand,得到正常标签的UID。
操作如图3.1所示:
2、读取单个BLOCK数据
确认系统已经得到了单个标签的UID,在“ISO15693命令〞处,运行“读取单个数据
块〞mand,即可得到确定UID标签的相应Block里面的数据。
操作如图3.2所示:
查看“响应数据〞里面的“数据显示栏〞处和信息栏里的数据,上图为放置1个标签〔卡
片〕时读写器读到这个标签存储器地址为0里面存储的数据。
可以在BlkAdd处更改地址,选择读取需要地址的数据
3、写单个BLOK数据
确认系统已经得到了单个标签的UID,在“ISO15693命令〞处选择写入单个数据块,
在BlkAdd处输入想要写入数据的存储器地址数值,再在BlkBit处输入需要写入存储器这
个地址的数据,运行“写入单个数据块〞mand,即可把需要的数据写入到当前标签指定
地址的Block存储器里。
操作如图3.3所示
查看“响应数据〞里面的“Status〞处的信息。
上图为放置1个标签〔卡片〕时读写器向标
签的存储器00位置写入12341234这4个字节数据的响应。
写入数据后,可以再通过“读取单个数据块〞mand读取相应地址的数据,与刚刚
写入的数据比拟来验证是否写入正确。
详细操作可以参考泰格瑞德科技的RFID教学系列根本使用说明和
RFID_ReaderPC软件命令使用说明相关文档。
实验二RFID防撞系统实验
一、实验目的
熟悉和学习ISO/IEC18000-3,ISO15693标准规第三局部协议的第8节
Anticollision容,理解它的原理、流程和软件实现方法。
二、实验容
通过使用带anticollison处理过程的指令和不带anticollison处理过程的指令读
取多个标签,以及使用不带anticollison处理过程的指令读取单个标签,比拟其
指令和读取的结果。
分析实验数据,总结防冲撞机理,掌握指令产生的作用。
三、根本原理
ISO15693标准规第三局部第8节。
四、所需仪器
1、设置
供电电源、多电子标签。
加电运行系统,在系统的天线围放置多个标签。
翻开系统软件PracticeSystem.exe,
正确设置串口,操作如图4.1所示:
选择确定当前使用的串口,操作如图4.2所示:
按“Confirm〞确认后,然后按“Connect〞连接串口。
连接正确时信息栏显示如图4.3所示:
2、操作
(1)Anticollision操作
在系统软件下,“测试命令〞处,选择运行“测试防冲突〞,“发送使用防冲突算法的寻
卡命令〞动作。
操作如图4.4所示:
查看“响应数据〞里面的“数据显示栏〞处和信息栏里的数据,上图为放置3个标签〔卡
片〕时“Anticollision〞命令读到的数据响应。
注意“manddata〞里面的“数据显示栏〞处的数据。
(2)Non-Anticollision操作
保持多标签数量不变,在系统软件下,“ISO15693命令〞处,选择运行
“Non-Anticollision〞动作。
操作如图4.5所示:
查看“响应数据〞里面的“数据显示栏〞处和信息栏里的数据,上图为放置3个标签〔卡
片〕时“Non-Anticollision〞命令读到的数据响应。
注意此时“manddata〞里面的“数据显示栏〞处的数据。
在系统的射频磁场保存一电子标签,拿出多余的标签,在系统软件下,“ISO
15693命令〞处,再次选择运行“Non-Anticollision〞动作。
操作如图4.6所示:
查看“响应数据〞里面的“数据显示栏〞处和信息栏里的数据,上图为放置1个标签〔卡
片〕时“Non-Anticollision〞命令读到的数据响应。
注意此时“manddata〞里面的“数据显示栏〞处的数据。
把这个数据和
“Non-Anticollision〞操作多个标签时以及“Anticollision〞操作时“manddata〞里
面的“数据显示栏〞处的数据比拟,结合ISO/IEC15693标准协议,分析实现现象和结
果,体会实验过程,加深对RFID防冲撞的理解。
实验三CC2530LED组件实验
一、实验目的
掌握CC2530芯片LED对应的GPIO引脚,并且熟练掌握LED的使用。
二、实验设备
1.实验箱中的基站
2.烧录线一根
三、准备知识
熟读文件/opt/atos/tos/lib/antc5/mon/atosled.h的容。
在这个代码文件中
详细定义了各个LED对应的引脚,已经定义了各个LED的点灯和灭灯的操作。
四、实验原理
目前节点上有红、蓝、黄3个LED灯,其中,红灯是工作指示灯,蓝灯和
黄灯主要用于程序调试。
现在对LED灯的操作有三种:
点亮、关闭、闪烁〔由
亮变暗或者由暗变亮〕,相对应的命令分别为:
LED_BLUE_ON、
LED_BLUE_OFF、LED_BLUE_TOGGLE、LED_YELLOW_ON、
LED_YELLOW_OFF、LED_YELLOW_TOGGLE。
在CC2530芯片中蓝灯对应
P1.2,黄灯对应P1.3,对P1.2的操作会反映在蓝灯上,将P1.2置高,蓝灯就会
亮,否那么蓝灯就会灭掉。
下面是CC2530中LED局部的原理图。
五、实验步骤
1.将基站同电脑用烧录线连接好,翻开基站的开关,同时将基站的烧录开关拨
上去
2.翻开Cygwin开发环境
3.在Cygwin界面中执行cdapps/Demos/Basic/Led,进入到LED实验目录下,如下列图。
4.在LED实验目录下执行makeantc5install进展编译和烧录,烧录成功如下列图。
5.可以看到实验现象为黄灯和蓝灯交替闪烁。
六、实验考前须知
要到达LED等闪烁的效果,在每次LED等状态改变之后要有一定时间的延
时,否那么状态切换太快超出人眼的反响时间就看不到闪烁的效果了。
七、流程图
八、参考程序
以下代码为主要局部代码,详细代码请参考该实验的源程序,源程序的目录如下:
$(安装目录)\cygwin\opt\atos\apps\Demos\Basic\Led
moduleLedM
{
usesinterfaceBoot;
}
implementation
{
/*LED灯演示*/
taskvoidDemoLed()
{
/**目前节点上提供两个LED灯
LED_BLUE->蓝灯
LED_YELLOW->黄灯
*/
inti,j;
while
(1)
{
for(i=0;i<1000;i++)
for(j=0;j<500;j++);
LED_BLUE_OFF;/*熄灭蓝色LED灯*/
LED_YELLOW_ON;/*点亮黄色LED灯*/
for(i=0;i<1000;i++)
for(j=0;j<500;j++);
LED_BLUE_ON;/*熄灭蓝色LED灯*/
LED_YELLOW_OFF;/*点亮黄色LED灯*/
}
}
/**启动事件处理函数,在LED.nc已经关联到MainC.Boot接口
系统启动后会调用此函数
*/
eventvoidBoot.booted()
{
postDemoLed();
}
}
九、实验总结
该实验完成了对CC2530芯片的LED进展控制,实际上是对CC2530芯片的
GPIO的控制。
掌握芯片LED控制之后,在复杂的程序中可以用LED作为一种
很好的调试手段。
实验四CC2530定时器组件实验
一、实验目的
1.了解CC2530芯片的定时器
2.学会使用CC2530芯片的定时器
二、实验设备
1.实验箱中的基站
2.烧录线一根
三、准备知识
查看CC2530的芯片手册中定时器局部的文档,对定时器有一定的了解。
同
时要能够理解定时器中断的概念。
可以找一些其它平台的关于定时器的代码进展
阅读。
四、实验原理
CC2530芯片包含四个定时器〔Timer1、Timer2、Timer3、Timer4〕和一个
休眠定时器〔SleepTimer〕。
Timer1是16位的定时器,支持典型的定时/计数功能以及PWM功能,该定
时器共有三个捕捉/比拟通道,每个通道使用一个单独的I/O引脚。
Timer1的时
钟频率是由系统时钟分频得到,首先由存放器中的CLKON.TICKSPD分频,系
统时钟是32MHz的情况下,CLKON.TICKSPD可以将该时钟频率分频到32MHz
〔TICKSPD为000〕、16MHz〔TICKSPD为001〕、8MHz〔TICKSPD为010〕、
4MHz〔TICKSPD为011〕、2MHz〔TICKSPD为100〕、1MHz〔TICKSPD为101〕、
0.5MHz〔TICKSPD为110〕、0.25MHz〔TICKSPD为111〕;分频后的时钟频率
可以被T1CTL.DIV分频,分频数为1、8、32、128。
因此,在32MHz的系统频
率下,Timer1的最小时钟频率为1953.125Hz,最大时钟频率为32MHz。
详见
CC2530.pdf第99页。
Timer2主要用于为802.15.4标准中的CSMA/CA算法提供定时。
该定时器
即使在节点处于低功耗状态下仍然运行。
Timer3和Timer4是两个8位的定时器,主要用于提供定时/计数功能。
SleepTimer主要将节点从超低功耗工作状态唤醒。
TinyOS系统下,定时器组件一般为通用组件〔genericponents〕,通用组
件类似于C++中的类,可以通过new来实例化最多255个定时器,类似于类实
例化的对象。
在Antc5下,定时器通用组件为TimerMilliC,是Timer1提供的,
此外,Timer1还提供了Alarm32khzC等组件。
定时器向上层提供的接口分为Timer和Alarm两种,使用Timer接口需要指
定定时器的精度,分为TMilli〔毫秒〕、T32kHz〔32KHz〕、TMicro〔微秒〕三种;
使用Alarm接口既要指定定时精度,还要指定定时器的位宽。
五、实验步骤
1.将基站同电脑用烧录线连接好,翻开基站的开关,同时将基站的烧录开关拨
上去
2.翻开Cygwin开发环境
3.在Cygwin界面中执行cdapps/Demos/Basic/Timer,进入到定时器实验目录下。
4.在定时器代码目录下执行makeantc5install,进展编译和烧录。
5.实验现象为蓝灯1秒闪一次,黄灯3秒闪一次。
六、实验考前须知
在开启一个定时器的时候有两种方式,一种启动方式是只超时一次,另外一
种是循环超时。
所以在开启的时候要根据具体的需求选择具体的启动方式。
七、流程图
八、参考程序
以下代码为主要局部代码,详细代码请参考该实验的源程序,源程序的目录如下:
$(安装目录)\cygwin\opt\atos\apps\Demos\Basic\Timer
#defineDBG_LEV5
moduleTimerLedM
{
usesinterfaceBoot;
/*Timer为系统接口TMilli指明了定时器的精度为毫秒*/
usesinterfaceTimerasTimer1;/*as关键字为接口别名*/
usesinterfaceTimerasTimer2;
}
implementation
{
/**任务:
切换黄色LED灯*/
taskvoidToggleLedYellow()
{
LED_YELLOW_TOGGLE;
}
/**启动事件处理函数,在TimerLed.nc已经关联到MainC.Boot接口
系统启动后会调用此函数
*/
eventvoidBoot.booted()
{
/**定时器1:
持续工作,每隔1s触发一次*/
callTimer1.startPeriodic(1000);
/**定时器2:
持续工作,每隔3s触发一次*/
callTimer2.startPeriodic(5000);
}
/**定时器1的事件处理函数*/
eventvoidTimer1.fired()
{
/**事件处理中直接切换蓝色LED灯*/
ADBG(5,"ledbluetoggle.\r\n");
LED_BLUE_TOGGLE;
}
/**定时器2的事件处理函数*/
eventvoidTimer2.fired()
{
ADBG(5,"ledyellowtoggle.\r\n");
postToggleLedYellow();
}
}
九、实验总结
该实验完成了对CC2530芯片的定时器的使用,通过LED来表现定时器的工
作过程。
在这个实验中用的定时器的精度为毫秒。
在这个实验中只使用了定时器
的几个最重要的功能,还有好多接口都没有使用,比方
timer.stop(),timer.isRunning()等,我们可以在课后自己动手尝试使用这些接口的功
能。