【Zigbee技术入门教程-号外】基于Z-Stack协议栈的抢答系统

【Zigbee技术入门教程-号外】基于Z-Stack协议栈的抢答系统

广东职业技术学院  欧浩源

一、引言
    2017年全国职业院校技能大赛“物联网技术应用”赛项中任务三题2的“抢答器开发”是一个非常优秀的题目。本人对题目进行了适当的改造和完善,剔除了和技能大赛中特别设备高度相关的内容,使其成为一个通用的Zigbee无线组网技术应用入门学习的综合实训案例。不管是自我学习,还是专业教学,甚至是在技能大赛训练中,这个题目都适合使用。

二、硬件资源需求
    要进行本“抢答系统”的实训案例,你需要5块具有无线数据通信能力的CC2530开发模块,其中一个板子有串口通信能力,另外的板子上至少有2个LED灯和1个按键,只要满足这些硬件资源即可开展该综合实训。

本“抢答系统”实训案例中采用TI公司的2.5.1版Z-Stack协议栈,其在网络上随时随地都能下载到。在该版本Z-Stack协议栈的硬件驱动中支持了3个LED灯和1个按键,它们分别是:
    HAL_LED_1:      P1_0(即D3)
    HAL_LED_2:      P1_1(即D4)
    HAL_LED_3:      P1_3(即D6)
    HAL_KEY_SW_6:   P0_1(即SW2)
   <注:括号中为全国职业院校技能大赛中新大陆国赛设备对应的资源>
    根据“抢答系统”案例的需求,对上面的指示灯和按键做了相应的定义:
    HAL_LED_1:      数据接收灯
    HAL_LED_2:      抢答指示灯
    HAL_LED_3:      网络状态灯
    HAL_KEY_SW_6:   操作键
    在本“抢答系统”案例中只需要使用“数据接收灯”和“抢答指示灯”,“网络状态灯”被Z-Stack协议栈占用了,当无线组网成功后,该Zigbee开发板的这个灯会点亮,如果不亮,说明该Zigbee开发板组网失败。
    在进行本实训案例开发的时候,您使用的CC2530开发模块上的端口定义最好和这个版本协议栈原有的一致,不然可要进行底层的移植工作了。

三、项目应用需求
    在为“抢答系统”准备好的5块基于CC2530的Zigbee无线组网开发板中,根据功能需求,分为以下三类设备:
    1块为显示节点
    1块为主持人板
    3块为抢答器板
    显示节点通过串口连接到电脑,在电脑端有一个“抢答器信息显示终端”的上位机软件。该上位机软件是一个接收并显示“抢答系统”运行状态和抢答结果信息的软件。实际上,你可以根据本实训案例的通信规约自行设计一个合适的上位机显示软件。在没有该上位机软件的情况下也是可以进行“抢答系统”实训案例的开发的,你可以打开“串口助手”这种能过接收串口数据的小软件,监测系统传送过来的原始数据,然后对照系统的通信规约,从而判断“抢答系统”的运行状态和抢答结果。“抢答器信息显示终端”的参考界面如下:

在“抢答系统”的无线网络数据传输中,数据流以帧的形式进行交互,并遵循一个简单的通信规约
    <1> 该数据帧有四个字节,其格式如下:
    帧头<0xFA>   命令域   参数域    帧尾<0xAF>
    <2> 主持人板复位指令:
    帧头<0xFA>   0xA0      0x00     帧尾<0xAF>
    <3> 抢搭器板抢答指令:
    帧头<0xFA>   0xB1   抢答板ID号  帧尾<0xAF>
    <4> 主持人板确认指令:
    帧头<0xFA>   0xA1   抢答板ID号  帧尾<0xAF>
    <5> 串口波特率为:9600
    <6> Zigbee的通道为:17
    <7> Zigbee的PAN ID为:0x2017
    <8> Zigbee通信方式广播

在协议栈“ZStack-CC2530-2.5.1a”中的适当的位置添加相应工程代码,实现抢答系统的如下功能:
   【步骤1】:所有的Zigbee开发板上电后,“抢答指示灯”闪烁3下,然后等待“网络状态灯”点亮,即全部Zigbee开发板组网成功,每个Zigbee开发版在成功接收到无数据帧的时候,“数据指示灯”快速闪烁2下。
   【步骤2】:单击主持人板的“操作键”时,主持人板抢答器板的“抢答指示灯”均点亮,此时,显示节点的“抢答指示灯”熄灭,“抢答器信息显示终端”里显示“Ready!!!”,这时三个抢答器板可以开始抢答,在主持人板的“抢答指示灯”未亮之前,抢搭无效。

【步骤3】:当主持人板抢答器板的“抢答指示灯”点亮后,单击抢答器板中的“操作键”可进行问题抢答。当有人抢答成功后,主持人板及所有的抢答器板的“抢答指示灯”熄灭,显示节点上的“抢答指示灯”点亮,“抢答器信息显示终端”里显示“X号抢答成功!”。此时,3块抢答器板再次抢答无效。

【步骤4】:重复步骤2、步骤3,完成下一题抢答。

四、项目设计概述
    在我们下载的Z-Stack协议栈中有一个用户自定义任务SampleApp,本“抢答系统”案例将利用该协议栈的现有用户任务,将对其工程代码进行适当的添加和修改,以“抢答系统”的业务功能。
    抢答系统中的5块Zigbee开发板分为三种设备类型:显示节点、主持人板和抢答器板。因此,需要设计三个不同的工程代码。实际上,这个三个不同工程中的代码,绝大部分是相同的。你可以用三个协议栈工程来实现,你也可以用一个协议栈工程,通过三个不同的任务代码文件来实现,你还可以用条件编译来对三个设备类型,编译三种不同的工程代码。对应入门的初学者来说,建议使用第一种办法。在本案例分析过程中,介绍的是第二种方法。
    本抢答系统的设计关键在于,有一个系统的模型,有一个清晰的思路,有一个明确的方向,有一颗强大的内心。本项目案例的实现难点,不是设计程序,而是调试程序,而且还是多终端无线联调
    要完成实现“抢答系统”要求的功能,除了要求掌握CC2530底层硬件基础和Z-Stack协议栈基础操作之外,还需要你不但有程序设计的能力,还要有代码调试的经验,不但能把代码跑起来,还能有锁定BUG的办法

[注]:[题目详解及实现思路,可见百度付费文档!]

时间: 2024-08-02 06:55:49

【Zigbee技术入门教程-号外】基于Z-Stack协议栈的抢答系统的相关文章

【Zigbee技术入门教程-01】Zigbee无线组网技术入门的学习路线

[Zigbee技术入门教程-01]Zigbee无线组网技术入门的学习路线 广东职业技术学院  欧浩源 一.引言    在物联网技术应用的知识体系中,Zigbee无线组网技术是非常重要的一环,也是大家感觉比较难以掌握的一个部分.Zigbee无线组网技术之所以让你感有学习难度,不是因为它真的复杂,而是它看起来很复杂,让人望而止步.另一方面则是Zigbee技术在应用层面上将硬件和软件完成融为一个体系,要求开发人员既要有扎实的硬件技术,又要有清晰的软件思维.    目前,尽管有不少关于Zigbee无线组

Zigbee Z‐STACK协议栈和TinyOS

ZigBee 和 Tinyos 关于ZigBee和TinyOS ZigBee的基础是IEEE 802.15.4.但IEEE仅处理低级MAC层和物理层协议,因此Zigbee联盟扩展了IEEE,对其网络层协议和API进行了标准化,这就是Z‐STACK,Z‐STACK协议栈是TI公司研发,通过ZigBee联盟认证的免费协议栈,协议内部包括了WSN(无线传感器网络)的OS的模型,协议栈具有国际化,标准化的特点,协议栈已提供十几种应用场景,可以非常轻松的让用户开发出满足国际标准的产品. TinyOS是一个

【教程】原创:历上最简单的游戏编程入门教程(基于cocos2d-js)

前言: 大家好.我是一个游戏开发者.曾就职于cocos2d-x这个手机游戏引擎的开发的公司. 在这边我准备了一个最简单的教程,想告诉大家制作一个游戏有多简单. 回忆起当年刚刚步入游戏这个行业,我也抱着非常多的疑问. 所以如果大家对游戏有兴趣的朋友,可以在下面留言. 这个教程我会讲的非常通俗易懂.争取几句话之内就让你看到一个效果. 另外教程里面有丰富的图文讲解.我保证你学完之后掌握了做游戏的真髓. 你完全可以马上开始做自己的游戏.并且能够让你的游戏在网页上,ios,android 还有pc平台上跑

Win2012R2 Hyper-V初级教程15 -- 基于Kerberos与CA证书的系统容灾(中)

二.基于CA证书的HTTPS复制 ??????? 刚刚看了一下关于基于Kerberos与CA证书的系统容灾(上)还是2017-08-31写的,到现在半年过去了,懒癌太重了,一直没有更新,从今天起将逐步更新完初级教程,希望能够有更多的博友了解并学习微软的虚拟化技术.前面我们说到了基于HTTP的复制,在内部网络的时候我们可以采用这种方法,因为本身而言内网相对安全很多,如果你是需要进行跨广域网的复制,建议你最好配置CA证书服务,通过443端口进行数据传输,以保证数据的安全性.下面我们就来说一下基于CA

Win2012R2 Hyper-V初级教程15 -- 基于Kerberos与CA证书的系统容灾(下)

上一文已经讲到了基于CA证书下的HTTPS复制,这里我们简单测试一下故障转移是否正常. 三.测试故障转移 1.为了验证此功能是否真的有效,我们需要对其进行一次测试,下面我们对本身没有123.txt的桌面添加此文件,然后我们再来看一下在同步复制完成后,此功能是否生效. 2.右击对应的虚拟机,选择"复制"点击"查看复制运行状况(V)..." 3.在这里我们可以看到复制的状态,等待他复制完成后,我们再进行测试. 4.下面我们右击选择对应的副本服务器选择"测试故障

基于DDD的现代ASP.NET开发框架--ABP系列之2、ABP入门教程

点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术开发现代WEB应用程序的新起点,它旨在成为一个通用的WEB应用程序框架和项目模板. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://gith

[Z]LaTeX入门教程

LaTeX入门教程 Contents TEX/LATEX是什么? 为什么要用TEX/LATEX? 安装 开始使用 数学符号使用中文文章的各个部分表格 行内公式与行间公式 上标与下标 常见的数学公式 行列式与矩阵 方程组与分段函数 插图 罗列 分割长文档 学习资料 幻灯片制作简介 重要建议 Bibliography TEX/LATEX是什么? TEX 是一个非常优秀的排版软件, LATEX 是基于 TEX 之上的一个宏包集.因为 LATEX 的出现,使得人们使用 TEX 更加容易,目前大部分人们使

Android基础入门教程——3.2 基于回调的事件处理机制

Android基础入门教程--3.2 基于回调的事件处理机制 标签(空格分隔): Android基础入门教程 本节引言 在3.1中我们对Android中的一个事件处理机制--基于监听的事件处理机制进行了学习,简单的说就是 为我们的事件源(组件)添加一个监听器,然后当用户触发了事件后,交给监听器去处理,根据不同的事件 执行不同的操作;那么基于回调的事件处理机制又是什么样的原理呢?好吧,还有一个问题:你知道 什么是方法回调吗?知道吗?相信很多朋友都是了解,但又说不出来吧!好了,带着这些疑问我们 对a

DreamHouse项目(基于ARM与ZIGBEE技术的智能家居)之项目展示

这是本人做的一次有关智能家居的项目,仅是用来参加比赛的!或者是我用来练手的吧!大概花费了我近2个月的时间来完成他,平台是建立在博创S3C2410的嵌入式的箱子上的,我觉得我唯一没有足够自信说是自己写的代码的话就是驱动部分了,毕竟当时的状态也是刚刚把单片机的知识全部学会罢了,因为这是基础中的基础,对于C语言,在校的学生普遍是没有完全掌握的,对于开发真的知识储备确实不够!好吧废话我不多说了,先讲讲我自己做的项目吧!学生的练手项目,大家应该不会来喷我吧! 上图先! 通用模块 我本人真的是没有做出来,但