基于Zstack的串口控制LED 实验报告 - 图文 下载本文

西北师范大学计算机科学与工程学院

课程实验报告

课程名称 姓名 无线传感网技术 杨盛培 班级 学号 11级物联网1班 201171060138 实验日期 实验成绩 实验名称 基于Zstack的串口控制LED 实验 实 验 目 的 及 要 求 实验目的: 本实验旨在使学生使用IAR开发环境设计程序,在Stack-2.3.0-1.4.0协议栈源码例程SampleApp工程基础上, 实现无线组网及通讯, 并设计上位机串口控制程序,实现上位机PC串口对ZIGBEE模块的LED控制。 实验要求: 充分熟悉TI Z-Stack2007协议栈软件架构,基本掌握TI Z-Stack协议栈软件开发流程。 Z-Stack软件架构图 : Z-Stack软件流程图: 1

实 验 环 境 实 验 内 容 硬件:UP-CUP IOT-6410-II 型嵌入式物联网综合实验系统,PC 机 软件:IAR Embedded Workbench for MCS-51 学习TI ZStack2007协议栈内容,掌握CC2530模块无线组网原理及过程。掌握ZStack协议中关于串口MT层的处理流程。学习协议栈中关于串口的基本设置和操作。 使用IAR开发环境设计程序,ZStack-2.3.0-1.4.0协议栈源码例程SampleApp工程基础上,实现无线组网及通讯。即协调器自动组网,终端节点自动入网,并设计上位机串口控制程序,实现上位机PC串口对ZIGBEE模块的控制,如LED的控制等 系统框图如下: 本实验实现上位机通过串口控制命令,发送数据到ZIGBEE协调器节点,协调器通过无线网络控制节点端LED灯的开关状态。

2

实 验 设 计 思 想 描 述 及 实 验 原 理 1.ZIGBEE(CC2530)模块LED硬件接口 : ZIGBEE(CC2530)模块硬件上设计有2个LED灯,用来编程调试使用。分别连接CC2530的P1_0、P、1_1两个IO引脚。从原理图上可以看出,2个LED灯共阳极,当P1_0、P1_1引脚为低电平时候,LED灯点亮。 2. SampleApp实验简介 : SampleApp实验是协议栈自带的ZIGBEE无线网络自启动(组网)样例,该实验实现的功能主要是协调器自启动(组网),节点设备自动入网。之后两者建立无线通讯,数据的发送主要有2中方式,一种为周期定时发送信息(本次实验采用该方法测试),另一种需要通过按键事件触发发送FLASH信息。由于实验配套ZIGBEE模块硬件上与TI公司的ZIGBEE样板有差异,因此本次实验没有采用按键触发方式。 Periodic消息是通过系统定时器开启并定时广播到group1出去的,因此在SampleApp_ProcessEvent事件处理函数中有如下定时器代码: 当设备加入到网络后,其状态就会变化,对所有任务触发ZDO_STATE_CHANGE事件,开启一个定时器。当定时时间一到,就触发广播periodic消息事件,触发事件SAMPLEAPP_SEND_PERIODIC_MSG_EVT,相应任务为SampleApp_TaskID,于是再次调用SampleApp_ProcessEvent()处理SAMPLEAPP_SEND_PERIODIC_MSG_EVT事件,该事件处理函数调用SampleApp_SendPeriodicMessage()来发送周期信息。 3

3. MT层串口通讯 : 协议栈将串口通讯部分放到了MT层的MT任务中去处理了,因此我们在使用串口通讯的时候要在编译工程(通常是协调器工程)时候在编译选项中加入MT层相关任务的支持:MT_TASK,ZTOOL_P1 或ZAPP_P1。 4. 关于串口控制LED关键代码分析 :

4

SampleApp_ProcessEvent() 函数为应用层事件处理函数,从上面的代码可知,当应用层接收到串口数据(即发生SPI_INCOMING_ZAPP_DATA:事件)时,会调用SampleApp_ProcessMTMessage(MSGpkt); 串口处理函数,当接收到网络数据(即发生AF_INCOMING_MSG_CMD事件)时,会调用SampleApp_MessageMSGCB( MSGpkt );处理函数,现在来分析这两个函数

5

这个函数是协调器要完成的工作,当串口接收到字符串“on”时会向串口回发“set led on”,并向终端节点发送0x01,当串口接收到字符串“off”时会向串口回发“set led off”,并向终端节点发送0x00。 这个函数是终端节点要完成的工作,当终端节点收到协调器以SAMPLEAPP_LEDCTL_CLUSTERID簇ID发送过来的一字节命令(保存在cmd.Data[0])时,会根据这个命令来设置LED状态。 实验步骤: 1.使用配套 USB 线连接 PC 机和 UP-CUP IOT-6410-II 型设备,设备上电,确保打开 ZIEBEE 模块开关供电。 2.使用CCD_SETKEY按键选择ZIGBEE仿真器要连接的ZIGBEE设备模块(根据LED指示灯判断)。 3.将系统配套串口线一端连接PC机,一端连接到平台上靠近USB串口(RS232-2)上。 4.打开物联网无线传感网络部分\\exp\\zigbee\\基于ZStack的上位机串口控制LED实验 。 \\Projects\\zstack\\Samples\\SampleApp\\CC2530DB里的工程。 5.选择CoordinatorEB工程,编译下载到ZIGBEE COORDINATOR 模块中 。 实 验 步 骤 及 实 验 结 果 6

6.选择EndDeviceEB 工程,编译下载到终端节点 实验结果: 启动设备测试,首先启动协调器模块,建立网络时LED1闪烁,成功后LED1点亮停止闪烁,再启动节点端ZIGBEE模块,入网成功后LED1点亮停止闪烁,网络组建成功后,通过CCD_SETKEY按键将PC机串口线

7

连接到ZIGBEE协调器模块对应的串口上,打开串口终端,设置波特率为38400、8位、无奇偶校验、无硬件流模式即可在串口终端中输入“on”或者“off”来发送串口控制命令至协调器模块,协调器通过串口接收到命令后,无线控制远程节点模块上LED灯开关状态。 截图如下: 在串口终端输入“on”,终端节点端ZIGBEE模块的LED2点亮 8

总 结 在串口终端输入“off”,终端节点端ZIGBEE模块的LED2熄灭 通过本次实验我学习了TI ZStack2007协议栈内容,掌握CC2530模块无线组网原理及过程及ZStack协议中关于串口MT层的处理流程。学会使用IAR开发环境设计程序,在ZStack-2.3.0-1.4.0协议栈源码例程SampleApp工程基础上,实现无线组网及通讯,即协调器自动组网,终端节点自动入网,并设计上位机串口控制程序,实现上位机PC串口对ZIGBEE模块的LED灯控制。这为以后的学习打下了良好的基础。

9