物联网实验2 协议栈剖析
1 实验目的
(1)熟悉SampleApp工程;
(2)掌握Zigbee的组网,数据点播、广播;
(3)熟悉协议栈的串口。
2 实验环境
(1)硬件:CC2530节点板2块,CC2530仿真器,PC 机;
(2)软件:Windows 7/Windows XP,IAR集成开发环境。
3 实验内容
(1)在SampleApp工程中添加点播代码;
(2)在SampleApp工程中添加串口功能,实现串口的接收和发送;实现两台电脑的串口射频无线数据传输。
4 实验预习要求
仔细阅读第3篇Zstack协议栈剖析的PPT内容,理解组网、点播和广播,熟悉SampleApp工程中的数据发送和接收函数,熟悉串口的使用。
5 实验步骤
由于源码zigbee网络PAN ID均设置为0xFFF1,为了避免实验环境下多个实验平台之间网络互相串扰,每个实验平台需要修改PAD ID,修改工程内文件:Tools -> f8wConfig.cfg,将PAN ID修改为:个人学号的后四位+100
A、在SampleApp工程中添加点播代码
:
(1)解压ZStack-CC2530-2.3.0-1.4.0.rar压缩包
(2)打开SampleApp工程,注意软件版本使用IAR8.20
(3)在SampleApp.c文件的对应位置添加下图所示的代码,对点播通讯定义
(4)在SampleApp.c文件的SampleApp_Init()函数对应位置添加下图所示的代码,对点播参数进行赋值
(5)由于协调器不进行点播,故周期任务初始化时协调器不初始化,所以将它注释掉。在SampleApp.c文件的SampleApp_Init()函数对应位置注释相应代码
(6)在SampleApp.c文件的最后添加点播发送函数的实现代码
(7)在SampleApp.h文件的相应位置添加点播发送簇的定义
(8)在SampleApp.c文件的SampleApp_ProcessEvent()函数里,找到相应位置,将广播发送函数注释掉,加上点播发送函数
(9)在SampleApp.c中修改SampleApp_MessageMSGCB ()函数,完成点播数据的接收。把发送的内容显示出来。自己编程实现!!!
(10)至此,点播通讯相关的代码添加完毕,尝试编译,直至编译成功,继续第二部分内容。
B、在第一部分的基础上,在SampleApp工程中添加串口功能,实现串口的接收和发送;实现两台电脑的串口射频无线数据传输:
(1)在SampleApp.c文件的开始位置添加下图所示的代码,把串口需要的头文件包含进来
(2)在SampleApp.c文件的SampleApp_Init()函数里添加串口的初始化函数
使用HalUARTWrite()函数在这里输出自己的姓名首字母和学号后4位。
(3)在MT_UART.h文件中找到下图相应代码位置,也可以在MT_UartInit()函数中进去查找,关闭流控制和修改波特率为115200
在OnBoard.h文件中找到下图位置修改代码,也可以在MT_UartInit()函数中进去查找
在MT_UART.c文件的MT_UartInit()函数中找到下图位置,修改代码
(4)注释协调器的MT层和ZTOO_P1相关的宏,打开ZAPP_P1宏。添加HOLD_AUTO_START和ZAPP_P1,注释xZTOOL_P1、xMT_TASK、xMT_SYS_FUNC、xMT_ZDO_FUNC、xBUILD_ALL_DEVICES。
5)注释终端节点的MT层和ZTOO_P1相关的宏,打开ZAPP_P1宏。添加HOLD_AUTO_START和ZAPP_P1,注释xZTOOL_P1、xMT_TASK、xMT_SYS_FUNC、xMT_ZDO_FUNC、xLCD_SUPPORTED=DEBUG、xNWK_AUTO_POLL。参照上图!!!
(6)在MT_UART.c中找到函数void MT_UartProcessZAppData ( uint8 port, uint8 event ) ,注释流控制功能代码。
(7)在SampleApp.c文件中声明一个结构体用于数据传递,并声明串口接收处理函数。
8)在SampleApp.c文件的最后添加串口接收处理的函数实现代码
(9)在SampleApp.c文件的SampleApp_ProcessEvent()函数中添加串口事件处理
(10)完善点播/广播接收的代码,在接收到点播/广播数据后使用串口输出到电脑
(11)分别编译下载程序
(12)分别下载到实验箱中的两个模块,一个终端节点一个协调器,分别连接上串口线,并打开串口调试助手,注意选择COM口,尝试使用串口调试助手互相发送数据,观察现象。
正常现象:两个模块上电时会输出自己的姓名首字母和学号后4位(如果不能输出,可能程序错误或者串口连接线有问题,检查硬件连接),终端节点会定时点播数据到协调器,所以协调器的串口会间隔输出0123456789的字符(尝试定时发送输出自己的姓名首字母和学号后4位),使用串口调试助手可以互相进行数据无线透传。