无线传感网络期末大作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于ZigBee的点对点通信实验
一:ZigBee的简介
Zigbee是IEEE 802.15.4协议的代名词。

根据这个协议规定的技术是一种短距离、低功耗的无线通信技术。

这一名称来源于蜜蜂的八字舞,由于蜜蜂(bee)是靠飞翔和“嗡嗡”(zig)地抖动翅膀的“舞蹈”来与同伴传递花粉所在方位信息,也就是说蜜蜂依靠这样的方式构成了群体中的通信网络。

其特点是近距离、低复杂度、自组织、低功耗、低数据速率、低成本。

主要适合用于自动控制和远程控
制领域,可以嵌入各种设备。

简而言之,ZigBee就是一种便宜的,低功耗的近距离无线组网通讯技术。

无线传感网络的无线通信技术可以采用ZigBee技术、蓝牙、Wi-Fi和红外等技术。

ZigBee技术是一种短距离、低复杂度、低功耗、低数据速率、低成本的双向无线通信技术或无线网络技术,是一组基于IEEE802.15.4无线标准研制开发的组网、安全和应用软件方面的通信技术。

1、CC2530简介
CC2530是用于IEEE802.15.4、ZigBee和RF4CE应用的一个真正的方案。

它能以非常低的总的材料成本建立强大的网络节点。

CC2530结合了领先的RF收发功能的优良性能,业界标准的增强型8051CPU,系统内可编程内存,8-KB RAM
和许多其他KB的内存。

CC2530有不同的运行模式,使得它尤其适应超低功耗要求的系统。

系统模式之间的转换时间短进一步确保了低能源消耗。

2、网络结构及协议解
2.1 Basic RF 简介
Basic RF 由TI 公司提供,它包含了IEEE 802.15.4 标准的数据包的收发。

这个协议只是用来演示无线设备是如何进行数据传输的,不包含完整功能的协议。

但是它采用了与802.15.4 MAC 兼容的数据包结构及ACK 包结构,其功能限制如下:
1. 不提供“多跳”、“设备扫描”及Beacon。

2. 不提供不同种的网络设备,如协调器、路由器等。

所有节点同级,只实现点对点传输。

3. 传输时会等待信道空闲,但不按802.15.4 CSMA-CA要求进行两次CCA检测。

4. 不重传数据。

简言之,Basic RF 不适合直接用于产品的开发,但可用来进行无线设备数据传输的入门学习。

2.2 Basic RF 工作原理
1.2.1 启动
1. 创建一个basicRfCfg_t 的数据结构,并初始化其中的成员
2. 调用basicRfInit()函数进行协议的初始化
1.2.2 数据发送:
1. 创建一个buffer,把payload 放入其中
2. 调用basicRfSendPacket()函数发送
1.2.3 数据接收:
1. 上层通过basicR fPacketIsReady()函数来检查是否收到一个新的数据包
2. 调用basicRfRec eive()函数,把收到的数据复制到buffer 中。

二、基于Basic RF 的无线LED灯的控制实验
1、实验目的:
在两个电池板(Q2530SB)上进行CC2530 无线通讯的控制;
2、实验设备:
(1)RF2530N射频模块 2 块;(2)Q2530SB 底板 2 块;
(3)USB 连接线一根;(4)SmartRF04EB 仿真器一个。

3、程序功能:
一个Q2530SB(简称Q1 )上的按键作为控制开关,无线控制另一个Q2530SB(简
称Q2)上的LED 灯开启或者关闭;
4、实验过程:
将Q2530RF 模块插在电池板上,连上仿真器,将发送、接收程序分别下进Q1、Q2
两个模块;拔掉仿真器,给Q1、Q2供电,可以看到Q1、Q2上的D1灯熄灭,表明上电后程序开始运行;此时按下Q1(发射板)上的S2 按键,发现Q2(接收板)上的D1 灯灭,表明Q1发送的数据被Q2接收;再次按下Q1上的S2 按键,Q2上的D1灯又重新点亮;如此反复;
5、程序演示
将程序编译、下载至开发板后,按Reset 键后,若Q2板开始显示如下
此时,按下“S1”键,发送控制信号,将打开Q2板上的LED1。

若开始LED1亮的,将关闭“电灯”板上的LED1;如此,再按按S1,Q2板不断点亮、熄灭。

6、程序简介
(1)程序框架
void main(void)
{
uint8 appMode = NONE;
basicRfConfig.panId = PAN_ID; //配置basicRF
basicRfConfig.channel = RF_CHANNEL;
basicRfConfig.ackRequest = TRUE;
#ifdef SECURITY_CCM
basicRfConfig.securityKey = key;
#endif
halBoardInit(); //初始化外围设备
if(halRfInit()==FAILED)
{ HAL_ASSERT(FALSE);
}
halLedSet(1);
//appSwitch(); //按键
appLight(); //点亮灯
}
(2)2.4.2 设备寻址:
本例程实现的是两个点间的通信,各自的地址只因设置为“开关”或者“灯”而不同,不存在地址安排等一系列复杂的网络问题。

此平台采用的是典型的“死循环”结构,其中有一个循环等待用户按“S1”键,进行功能设置,设置完之后按功能不同分别进入“开关”和“灯”的死循环。

如下代
static void appSwitch() //开关
{
……
// 初始化BasicRF
basicRfConfig.myAddr = SWITCH_ADDR;
basicRfReceiveOff();
//主函数死循环
while (TRUE) {
if(halButtonPushed()==HAL_BUTTON_1){
basicRfSendPacket(LIGHT_ADDR, pTxData, APP_PA YLOAD_LENGTH);
halIntOff();
halMcuSetLowPowerMode(HAL_MCU_LPM_3);
halIntOn();
}
static void appLight() //灯
{
……
// 初始化BasicRF
basicRfConfig.myAddr = LIGHT_ADDR;
basicRfReceiveOn();
//主函数死循环
while (TRUE) {
while(!basicRfPacketIsReady());
if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0) {
if(pRxData[0] == LIGHT_TOGGLE_CMD) {
}
// BasicRF 地址设置
#define PAN_ID 0x2007
#define SWITCH_ADDR 0x2520
#define LIGHT_ADDR 0xBEEF。

相关文档
最新文档