APP下载

基于ZigBee技术的无线评分系统设计与实现

2020-06-30吴君胜许颖频

微型电脑应用 2020年4期
关键词:物联网

吴君胜 许颖频

摘 要:针对目前各类竞赛活动普遍存在计时和评分无法由多名裁判员直接主动实时处理并展示多组分数的问题,提出了一套场地局限性小、高效率、低成本、低功耗的无线评分设计方案。基于ZigBee技术实现自动组网,采用C++设计并开发了无线评分系统,并基于Web实现评分数据发布。详细描述了系统的软硬件结构和系统设计与实现,通过对系统在实际竞赛中的结果分析,新型的无线评分系统具有极高的应用价值。

关键词: 物联网; Zigbee; CC2530; VC++; Web服务器

中图分类号: TP 311      文献标志码: A

Design and Implementation of Wireless Scoring

System Based on ZigBee Technology

WU Junsheng,  XU Yingpin

(College of Humanities and Engineering, Guangzhou Open University, Guangzhou, Guangdong 510091, China)

Abstract:

In view of the common problem of timing and scoring in all kinds of competition activities at present, it is impossible for multiple referees to directly take the initiative to deal with and display multiple sets of scores in real time. A wireless scoring design solution with small site limitation, high efficiency, low cost and low power consumption is proposed. The automatic network is realized based on ZigBee technology, the wireless scoring system is designed and developed by using C ++, and the scoring data release is realized based on Web. In this paper, the structure of software and hardware and the design and implementation of the system are described in detail. Through the analysis of the results of the system in the actual competition, the new wireless scoring system has a very high application value.

Key words:

internet of things;  ZigBee;  CC2530;  VC++;  Web server

0 引言

隨着物联网变得越来越普遍,ZigBee无线通信技术以其易于部署、低复杂度、低成本、自组无线网路的特性被广泛应用于人们的生活。针对目前各类竞赛活动普遍存在计时和评分无法由多名裁判员直接主动实时处理并展示多组分数的问题,设计和开发出一套计时、计分兼顾投票需求的无线评分系统,硬件设备便携易用,软件数据实时同步,有效提高比赛的公平、公正和公开。

1 需求问题描述

无线评分系统重点实现评分数据的实时同步、远程显示功能,软硬件系统的设计原则是极简操作和零布线,技术选型是软件设计和硬件设计的主要考虑问题。

硬件设计需要实现信号覆盖广、功耗低、便携易用等功能。各类竞赛活动的场地面积范围各不相同,而ZigBee技术是一种低功耗的近距离无线组网通讯技术,传输范围在10~100 m,各类竞赛活动场地的距离一般不会大于100 m,能满足场地较小的活动需求。在增加发射功率后,亦可增加到1~3 km[2],能满足场地较大的活动需求。ZigBee技术最大优点是网络容量,并且支持无限扩展,在速率为非重要因素的情况下,可认为ZigBee技术的场地局限性小。

软件设计需要实现实时投屏、自动排名、分组统分等功能。各类竞赛活动的举办形式不同,评分显示方式也会有不同的要求。一般可分为现场显示和远程显示,两种显示方式要实时同步需要数据库技术支持,开发基于Web的应用程序,以便适配PC端和智能设备终端的数据显示。

2 ZigBee无线通信模块设计

2.1 ZigBee无线通信技术

ZigBee是一种介于无线标间技术和蓝牙之间的无线通信技术,是基于IEEE802.15.4的无线个人区域网工作组的一项标准。ZigBee每个节点都可以进行三种类型通信,分别是广播、组播、点对点。每个节点都可以自行声明组号,在组内进行组播。每个节点可以分为3种类型:协调器(Coordinator),路由(Router),传输终端(Endpoint)。每个网络都需要一个协调器和多个路由,路由数量因不同的厂家而不同的限制。协调器负责组网和分配地址,组网后关闭,网络能自己存在。路由可以和传输终端两个融合在一起,它转发通信内容、负责维系周围的路由。传输终端可以收发信息,但不转发消息。本系统就是以一个协调器作为中心节点,并与PC通信,而其它终端兼具路由组网功能。

2.2 ZigBee自动组网的实现

当协调器通电后,它将配置好一个网络的panID,唯有panID相同的节点才会被认作是同一网络。同时它还设置了加入这个网络的密码。并且协调器还要定义通信的信道号,它自身的发射功率。这个网络开始工作后,协调器还要负责给新加入的节点设定短地址。在正常工作时,除了网络其它节点互相收发信息外,一般更多使用协调器作为星型网络的中心点进行通信。在本系统中,如果没有协调器组网,其它终端在等待组网时,通过自带LED灯提示当前的网络是否连通。

2.3 ZigBee自动路由的实现

每个路由向周围发送beacon信息,通过识别接收到的帧,建立路由表并进行广播。通过此机制,对收到的帧,自动转发给相应的节点,如图1所示。C为协调器,R为路由,E为传输终端。

当无线路由发生移动,节点变化,ZigBee路由通过自动路由功能,重新建立路由表,保持新的路径能到达目标。因此,当网络拓扑变化,仍然可以进行通信。ZigBee每个节点都有自己的唯一的MAC地址,但网络中使用的通信地址是短地址。即便你知道对方的MAC  地址,也需要先通过MAC查询短地址,用短地址才能向对方发送消息。

3 解决问题的系统设计

整个系统分为上位机和下位机两大部分,其中下位机部分分为两个模块,一个是连接在PC端,作为协调器,另一个是手持便携式终端或显示设备终端,配置为路由。上位机部分采用VC++编写的系统管理软件,负责比赛选手、裁判员、选手分组等信息的录入和分组,以及历史数据的管理,负责下位机数据的接收和处理[1],同时将数据同步到云主机的数据库服务器中,通过云主机的Web服务发布,实现PC或智能设备的实时查询,系统结构图如图2所示。

裁判员手上便携式评分器终端设备的硬件采用的微控制单元(MCU)是STC公司的51内核单片机STC15W4K16S4,内置1T的51核,4个通用异步收发传输器(UART),内置EEPROM,如图3所示。

节点采用E18-MS1-PCB,发射功率是4.5 dbm。每个手持便携式终端内含一块STC15W4K16S单片机负责连接键盘、数码管、蜂鸣器、指示灯和ZigBee模块,可根据评分需要将数码管升级为人机交互的液晶显示屏。与PC端联机的通信接收和控制模块由无线收发模块和USB设备控制单元组成,采用EBYTE公司的E18-MS1PA1-IPX的ZigBee模块作为协调器,发射功率是20 dbm,协调器只连接电源、天线、USB转232串口,如图4所示。

3.1 解决硬件设计问题

考虑信号完整性问题,ZigBee模块选用2.4 GHz自带PCB天线的设计,而天线的匹配按照使用场景的环境状况调整。ZigBee模块设计位于PCB板的角落位置,并将天线部分下面的所有铜箔去掉,以免影响电容工作。当整个PCBA装入手持便携式评分器外壳后,考虑介电常数的变化,会使得天线的中心频点偏移,要解决这个问题需要调节PCB天线的附加电路。

考虑电源的效率问题,采用9 V层叠电池供电,其放电特性是小电流时寿命长。而本设计实际需要3.3 V电压,如果使用LDO设计,电流将会是持续大电流,使得电池寿命非常短。当电源需要使用DC-DC开关电源,能量能有效率的传递,使得电池使用寿命成几倍增加。

3.2 解决软件设计问题

软件设计部分由终端、PC端和云服务端三部分组成。

1)终端设备软件设计

终端部分由于采用51内核单片机,没有使用操作系统,直接使用keilC编写单片机程序,整个程序结构类似arduino IDE默认的程序结构,主要工作需要在主循环内完成,中断使用信号通知,主循环接收信号处理中断数据,中断处理主要是时钟终端和串口终端,如图5所示。

键盘和数码管是需要扫描的主要器件。为了不影响中断响应时间,限定主循环一次不能超过串口接收到一个字节的时间即大约为1/baudrate*11。键盘扫描程序的单次扫描虽不会超过这个时间限制,但按键消抖时间却不足。因此,消抖操作需要多次循环来实现。每次记录有效按键的扫描值,当连续n次为同一个键则完成消抖。数码管按照百分制三位显示,显示程序在单循环的时间内,如果完成所有的显示,最后一个显示位必定占最长的时间并且亮度高于其它各位。为避免因加延时而超出时间限制,程序增加计数器记录循环第几位,每次循环只显示一位,确保各位亮度一致。

每个ZigBee模块都带具有MAC地址,此地址要转换为短地址进行通信,每台手持设备设置ID编号。本系统MCU带有EEPROM,将ID编号存储在EEPROM内,在初始化阶段读取ID编号完成每台机器的识别。只需设置两个字节长度的ID编号就足够覆盖整个网络容量65535的需求。EEPROM写入方式分为生产时烧写EEPROM文件和利用程序在线写入两种方式,前者增加生产控制难度,后者需要自定义写入的协议完成在线写入。为避免在通信过程中误擦除EEPROM,自定义协议要考虑与通信协议相区分,如表1所示。

使用ZigBee模块需要遵循其通信协议,主要涉及的通信协议列举如表2所示。每个命令头都带有一组的命令,比如用作配置、读取、发送,以发送命令为例说明。发送接收类协议分为组播、点播、广播三種模式,本系统采用点播为主,即点对点通信,点播格式如表3所示。

网络通信期间还会收到一些网络状态转换模块会发出状态转换指示,如FFFF 是建立网络、FFAA是加入网络、FF00是失去网络。这些要与收到的数据区分处理。

接收方收到发送方的数据以及附加地址,需要区分短地址或MAC地址,在数据域内自定义协议分辨每个命令及其长度,自定义的部分命令格式如表4所示。

以下代码节选自主循环,主要举例描述上述按键处理和自定义通信协议等部分

while(1){

showdigi();//数码管显示

if (btickcle==1){

ctemp=translate();//读按键

......//按键消抖

}

if (sflag==1 && rflag1==0){

if (curkey!=0xa){

......//*按键动作处理

......// 按键动作处理

......//数字按键动作处理

}

......

}

if (rflag1==1){//串口1收到数据处理zigbee定义协议

if (storetemp==0xff && rbuf1[ri1-1]==0x0){//失去网络}

if (storetemp==0xff && rbuf1[ri1-1]==0xAA){//加入网络}

if (storetemp==0xaa && rbuf1[ri1-1]==0x55){//设置成登陆模式}

if (storetemp==0x46){//echo命令

......

if (qid1==addr1 && qid2==addr2){//回答查询

rbuf1[0]=0xfc;rbuf1[1]=0x07;rbuf1[2]=0x03;rbuf1[3]=0x02;//addr地址

rbuf1[4]=0x00;rbuf1[5]=0x00;//地址=00 00

rbuf1[6]=0x46;rbuf1[7]=0x46;rbuf1[8]=0x44;.

senddatas(rbuf1,9);

}

}

if (storetemp=='x') {//写eeprom地址1

......

IapProgramByte(IAP_ADDRESS, rbuf1[ri1-1]);

S1SendData('o');

......

}

if (storetemp=='w') {//写eeprom地址2......}

if (storetemp=='e') {//擦除eeprom地址2......}

if (storetemp=='r') {//读取eeprom地址2......}

......

}

}

2)终端设备软件设计

PC端软件开发采用VC++编写,数据库连接云主机的MS SQL Server2016。软件程序提供硬件设置、开始工作、过程显示、数据查询以及分组显示分数等功能,页面采用网页格式,以便同时可在云主机的Web服务器中发布页面。程序设计监听线程负责监听网络、处理数据、写入数据库、触发显示的线程。监听线程不停轮询串口数据,根据上述自定义协议处理各种命令,流程图如图6所示。

其中对每个不同的命令处理时,先验证合法性,再写入数据库,触发显示窗口的WebBrowser控件刷新显示。

定时是由PC机完成的,终端只负责显示定时器值,因此对每个接入的终端,保留一个数据结构,结构内保存它的ID和定时值等数据。将此数据结构挂成一个链表。每秒钟定时器处理函数,对链表进行遍历,把定时值减少,并发出指令让终端显示定时值。若接收到终端停止信号,停止计时;否则在时间到时,让终端蜂鸣器发出声音,并停止计时,提醒裁判比赛结束。

3)云服务端软件设计

云服务端软件设计的开发工具使用Visual Studio 2017,在ASP.NET的开发框架下,采用C#语言编程[6],PC端软件通过IP地址连接SQL Server 2016进行数据库读写,以网站形式部署在云服务器上,通过IIS发布网站[7],实现网页浏览能自动适配PC或智能设备。

4 技术效果分析

下面以本系统在“2018年广州市青少年计算机组装及组网技能竞赛”中的应用为例,验证系统开发的实效性。竞赛场地位于广州市广播电视大学室内羽毛球场,长度31米,宽度11米,场地信号测试正常,手持设备如图7所示。

参赛单位共31个,62名选手,每两人一组,每轮7组同时进行,5轮完赛,软件实现按轮分组显示和自动排名,系统界面显示如图8所示。

竞赛全程历时5小时,手持便携式评分器无需更换电池,能满足竞赛全程的电源供电,设备实物图如图所示。由于赛程时间较长的比赛,出现赛程队伍晚到或提前离场的情况,远程Web查询能有效为参赛队伍、主办单位、主管单位领导提供现场数据情况。

5 总结

基于ZigBee技术的无线评分系统是一套软硬件整体开发的设计方案,低成本、低功耗的无线手持便携式评分仪可以灵活应用于各类的竞赛活动,降低裁判员计时和评分的工作复杂度,实时显示和统计数据,在极大程度上提高比赛的公正性和公平性。本文重点阐述了技术实现的细节,整套系統能满足各类竞赛的需求,无线通信技术实现零布线,但仍有改进的 空间,例如接入竞赛报名系统、微信实时推送竞赛成绩等引入智能设备的应用,让校园内竞赛数据纳入智慧校园大数据中,这些都有待进一步开发和完善。

参考文献

[1] 戴延浩, 余先涛. Zigbee技术在便携式打分仪中的应用[J].武汉理工大学学报,2010(32):944-946.

[2] 成都亿佰特电子科技有限公司. E18系列通信协议说明书[EB/OL].[2018-07-22].http://www.cdebyte.com.

[3] QST青软实训. ZigBee技术开发——CC2530单片机原理及应用[J]. 北京:清华大学出版社,2015.

[4] 深圳鼎泰克电子有限公司. CC2530F32,CC2530F64,CC2530F128,CC2530F256 Datasheet—Texas Instruments.[EB/OL]. [2018-07-22].www.dtkcn.com.

[5] 深圳鼎泰克电子有限公司,CC2530 Software Examples UsersGuid—Texas Instruments,[EB/OL]. [2018-07-22].www.dtkcn.com.

[6] 吴君胜,莫景彤. 基于微信公众平台的课程云签到系统的设计与应用[J],微型电脑应用,2018,34(3):5-8.

[7] 吴君胜. 基于虚拟机技术的远程访问服务综合性实验教学的设计与应用[J]. 微型电脑应用,2016,32(1):30-31.

[8] 王小强. ZigBee无线传感器网络设计与实现[M]. 北京:化学工业出版社,2012.

(收稿日期: 2019.03.10)

猜你喜欢

物联网
基于高职院校物联网技术应用人才培养的思考分析
基于LABVIEW的温室管理系统的研究与设计
论智能油田的发展趋势及必要性
中国或成“物联网”领军者