第五次无线传感器网络实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南昌航空大学实验报告
二O 一六年五月 3 日
课程名称:无线传感器网络实验名称:点对点通信实验
班级:姓名:
指导教师评定:签名:
一、实验目的
1. 了解CC2530无线通信的基本原理和用法;
2. 掌握实验编译、下载和测试的方法;
3. 分析CC2530 BasicRF工程的文件组织和源代码,为学习Z-Stack协议
栈奠定基础。
二、实验内容
1.将一个CC2530节点(称为1号节点)编程为受控节点,将另一个CC2530
节点(称为2号节点)编程为控制节点;
2.将2号节点的USB232通信接口通过USB线连接PC;在串口调试助手输
入命令,以无线通信的方式控制1号节点上的LED。
三、基础知识
1. 工程文件介绍
CC2530 BasicRF有三个文件夹,本实验所使用的eww文件(workspace)是经过删减的,删掉了4个不使用的工程,仅保留了light_switch工程,并且此工程内部的LCD、button等硬件不具备的资源或不使用的资源相关的.h和.c文件进行了删减。
docs文件夹:
打开文件夹里面仅有一个名为CC2530_Software_Examples的PDF文档,文档的主要内容是介绍BasicRF的特点、结构及使用,里面Basic RF包含三个实验例程:无线点灯、传输质量检测、谱分析应用。
Ide文件夹:
有三个文件夹,及一个cc2530_sw_examples.eww工程,在IAR环境中打开,在workspace看到。
Ide\Settings文件夹:
主要保存有读者自己的IAR环境里面的设置。
Ide\srf05_CC2530文件夹:
仅有一个iar文件夹,进入之后有工程light_switch.eww,还有temp文件夹存放临时文件,settings文件夹存放工程的一些设置文件。
Source文件夹:
打开文件夹里面有apps文件夹和components文件夹
Source\apps文件夹:
存放BasicRF实验的应用实现的源代码
Source\components文件夹:
包含着BasicRF的应用程序使用不同组件的源代码。
打开实验工程:
打开文件夹WSN CC2530 BasicRF\ide\路径里的cc2530_sw_examples.eww,并点击application的light_switch.c。
2、Basic RF layer介绍及其工作过程
关键字:
CCM ‐Counter with CBC‐MAC (mode of operation)
HAL ‐Hardware Abstraction Layer (硬件抽象层)
PAN ‐Personal Area Network (个人局域网)
RF ‐Radio Frequency (射频)
RSSI ‐Received Signal Strength Indicator(接收信号强度指示)
在介绍Basic RF之前,来看看这个实验例程设计的大体结构,如图所示Basic RF例程的软件设计框图就如一座建筑物,Hardware layer放在最底,肯定是你实现数据传输的基础了。Hardware Abstraction layer它提供了一种接口来访问TIMER,GPIO,UART,ADC等。这些接口都通过相应的函数进行实现。Basic RF layer为双向无线传输提供一种简单的协议
图4 Basic RF例程的软件设计框图
Application layer是用户应用层,它相当于用户使用Basic RF层和HAL的接口,也就是说我们通过在Application layer就可以使用到封装好的Basic RF 和HAL的函数。本例程的要求就是读者理解掌握Basic RF
Basic RF layer简介:
Basic RF由TI公司提供,它包含了IEEE 802.15.4标准的数据包的收发功能但并没有使用到协议栈,它仅仅是是让两个结点进行简单的通信,也就是说Basic RF仅仅是包含着IEEE 802.15.4标准的一小部分而已。其主要特点有:
1、不会自动加入协议、也不会自动扫描其他节点也没有组网指示灯(LED3)。
2、没有协议栈里面所说的协调器、路由器或者终端的区分,节点的地位都是相等的。
3、没有自动重发的功能。Basic RF layer为双向无线通信提供了一个简单的协议,通过这个协议能够进行数据的发送和接收。Basic RF还提供了安全通信所使用的CCM-64身份验证和数据加密,它的安全性读者可以通过在工程文件里面定义SECURITY_CCM在Project->Option里面就可以选择,本次实验并不是什么高度机密,所以在SECURITY_CCM前面带X了。
Basic RF的工作过程:启动、发射、接收
启动
1、确保外围器件没有问题
2、创建一个basicRfCfg_t的数据结构,并初始化其中的成员,在basic_rf.h 代码中可以找到
typedef struct {
uint16 myAddr; //16位的短地址(就是节点的地址)
uint16 panId; //节点的PAN ID
uint8 channel; //RF通道(必须在11-26之间)
uint8 ackRequest; //目标确认就置true
#ifdef SECURITY_CCM //是否加密,预定义取消了加密
uint8* securityKey;
uint8* securityNonce;
#endif
} basicRfCfg_t;
3.调用basicRfInit()函数进行协议的初始化,在basic_rf.c代码中可以找到uint8 basicRfInit(basicRfCfg_t* pRfConfig)
函数功能:对Basic RF的数据结构初始化,设置模块的传输通道,短地址,PAD ID。
发送
1. 创建一个buffer,把payload放入其中。Payload最大为103个字节
2. 调用basicRfSendPacket()函数发送,并查看其返回值
在basic_rf.c中可以找到uint8 basicRfSendPacket(uint16 destAddr, uint8* pPayload, uint8 length)
destAddr目的短地址
pPayload指向发送缓冲区的指针
length发送数据长度
函数功能:给目的短地址发送指定长度的数据,发送成功刚返回SUCCESS,失败则返回FAILED
接收
1. 上层通过basicRfPacketIsReady()函数来检查是否收到一个新数据包
在basic_rf.c中可以找到uint8 basicRfPacketIsReady(void)