打印

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

[复制链接]
2541|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ohy3686|  楼主 | 2017-8-23 17:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ohy3686 于 2017-8-23 17:10 编辑

【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的办法

<注1> 需要项目工程源码(有注释)和信息显示终端的,可以给我发邮件索取。
<注2> 题目的设计思路和实现步骤,我做了个百度付费文档,实在需要的可百度搜索题目。

相关帖子

沙发
ghuca| | 2017-8-23 17:25 | 只看该作者

使用特权

评论回复
板凳
ghuca| | 2017-8-23 17:26 | 只看该作者
这个处罚顺序是怎么实现的?

使用特权

评论回复
地板
ohy3686|  楼主 | 2017-8-23 17:48 | 只看该作者
ghuca 发表于 2017-8-23 17:26
这个处罚顺序是怎么实现的?

处罚程序???

使用特权

评论回复
5
dirtwillfly| | 2017-8-23 20:38 | 只看该作者

使用特权

评论回复
6
ohy3686|  楼主 | 2017-8-23 21:48 | 只看该作者

又得版主一点赞,灰常高兴。

使用特权

评论回复
7
yzqok| | 2017-8-24 10:02 | 只看该作者
点赞+

使用特权

评论回复
8
feelhyq| | 2017-8-24 12:04 | 只看该作者

使用特权

评论回复
9
51xlf| | 2017-9-3 21:53 | 只看该作者
上位机也是自己设计的吗?

使用特权

评论回复
10
51xlf| | 2017-9-3 21:56 | 只看该作者
确实比那些有限的抢答器强多了。

使用特权

评论回复
11
ohy3686|  楼主 | 2017-9-3 23:24 | 只看该作者
51xlf 发表于 2017-9-3 21:53
上位机也是自己设计的吗?

YEAH~是的。

使用特权

评论回复
12
ohy3686|  楼主 | 2017-9-3 23:25 | 只看该作者
51xlf 发表于 2017-9-3 21:56
确实比那些有限的抢答器强多了。

使用特权

评论回复
13
angerbird| | 2017-9-4 21:43 | 只看该作者
这是通过zigbee组网设计的么?

使用特权

评论回复
14
angerbird| | 2017-9-4 21:44 | 只看该作者
先这样的局域网的,一般都是采用zigbee的组网技术实现比较好

使用特权

评论回复
15
ohy3686|  楼主 | 2017-9-4 22:07 | 只看该作者
angerbird 发表于 2017-9-4 21:43
这是通过zigbee组网设计的么?

是的,用Zigbee组网的。

使用特权

评论回复
16
dspmana| | 2017-9-6 21:56 | 只看该作者
这个隔断电路怎么设计的?

使用特权

评论回复
17
dspmana| | 2017-9-6 21:58 | 只看该作者
Ready信号是怎么产生的?

使用特权

评论回复
18
ohy3686|  楼主 | 2017-9-6 22:06 | 只看该作者
dspmana 发表于 2017-9-6 21:58
Ready信号是怎么产生的?

自定义通信规约。

使用特权

评论回复
19
backlugin| | 2017-9-8 15:20 | 只看该作者
这个可以实际应用了。

使用特权

评论回复
20
backlugin| | 2017-9-8 15:23 | 只看该作者
控制信号属于主持人控制的 ,这个方便多了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:广东职业技术学院 欧浩源(ohy3686@foxmail.com)    [Zigbee技术&物联网应用] 群:168225322    [技术交流微信]:gzyohy (暗号:宝塔镇河妖)

322

主题

899

帖子

2900

粉丝