文献标识码:A
DOI:10.19358/j.issn.2096-5133.2018.08.021
中文引用格式:陈科,苏鲁阳,杨笔锋.基于ZigBee的教学应答系统软件设计[J].信息技术与网络安全,2018,37(8):91-95.
基于ZigBee的教学应答系统软件设计
摘要:随着我国高校教育的不断普及,大学生数量虽然激增,但是课堂学习氛围淡薄,甚至有逃课情况。这些现象严重影响着高校教师的教学计划以及对学生素质的培养。基于ZigBee 平台,设计了一套师生课堂应答系统,并重点阐述其软件设计。采用指纹识别替代传统的签到流程,加入副协调器以解决主协调器异常情况,利用Z-stack协议栈解决不同教室间误组网问题,并让学生能换一种方式对教学计划进行反馈。学生可利用硬件模块上的液晶屏和按键无线传递问题答题或表决信息,这使得师生间的交互变得更加方便与灵活。
关键词:
Abstract:
Key words:
0 引言
近些年,对于不少在校大学生而言,度过了高考大关,似乎已经厌倦了课堂学习和思考问题。即使是一名优秀的高校教师也难以彻底摆脱课堂的沉闷气氛。如何让更多人参与到知识探索中成为当前高校教育面临的一个问题。教师的教学水平对课堂固然有一定影响,但是恰当的多媒体支持能让课堂更具有活力。
本文基于ZigBee以及Z-stack协议栈对协调器、终端节点、路由器进行了程序设计,设计了一套应答系统。将整个ZigBee网络的协调器作为教师端模块,用于建立网络、引导其他模块加入网络以及管理学生端,并通过串口与上位机进行交互操作;将ZigBee网络的终端节点作为学生端,无线发送来自学生的输入信息,无线接收来自教师端的信息;将ZigBee网络的两个路由器分别作为指纹识别模块以及副协调器,前者传输指纹信息,后者接收来自主协调器的状态信息,当主协调器异常时,副协调器将对其进行替换,保证系统稳定。上位机同步来自服务器的课程信息,对各个终端节点进行组网配置,避免教室之间的错误入网现象。
1 系统整体流程
系统整体流程如图1所示,每间教室都有一个主协调器用于搭建网络并与上位机进行通信,备份协调器用于异常处理[1]。当一堂课快要开始时,教师登录上位机软件,学生进入教室,并通过指纹模块进行签到。在学生签到后,指纹ID信息通过无线发送给协调器。协调器接收到指纹ID后,通过串口反馈给上位机[2]。上位机软件会显示学生的实时签到信息。
签到完成后,学生用学生端模块,在确保成功连入ZigBee网络的情况下,用学号进行登录。上位机对登录信息进行识别,若发现输入有误或者这堂课上没有该生信息,立即反馈给学生端错误信息,并不予登录;反之,学生端模块将进入答题界面,准备答题或是表决。
当课程结束时,上位机软件下达下课指令,所有终端节点切换自身的个域网地址并重启,为下一堂课做好准备。
2 Z-stack协议栈流程
TI的Z-Stack协议栈从总体上来看主要由三部分组成:硬件抽象层(Hardware Abstraction Layer,HAL)、操作系统抽象层(Operating System Abstraction Layer,OSAL)和ZigBee协议各层。
在整个Z-Stack系统运行时,主函数主要完成两个任务。其一,整个系统的初始化,其中涉及HAL中各个硬件模块的初始化;其二,系统进行网络配置和任务优先级的划分。
图2所示为系统启动流程,首先屏蔽所有中断,在经历底板、IO、硬件驱动、非易失存储器等硬件相关的初始化后,通过OSAL的初始化函数进行系统初始化操作,这包括存储器、定时器等;之后通过任务初始化函数进行网络配置和任务分级,并对系统任务和用户任务进行初始化操作[3];最后通过OSAL启动函数进入轮询状态,不停地监听任务事件的触发,并跳转至任务执行函数。所有用户想触发的事件必须要注册登记,以此绑定事件与用户任务,这样当事件触发时,比如按键按下时,系统才能从轮询中正常跳转至用户的执行函数[4]。
3 系统软件设计
整个系统的软件部分包括上位机、协调器、路由器以及各个终端节点的程序设计[5]。本文主要在ZigBee2007版协议栈的基础上对后三者的流程进行讲解,对其中涉及的液晶屏、按键、指纹传感器等模块只做简略介绍,并不深究其控制代码。
3.1 协调器程序设计
为了方便管理,本系统对每一个设备设置了一个8位ID,协调器设置为0x00[6]。整个软件流程如图3所示,协调器上电后,在完成协议栈的各项底层初始化操作后,开始组建网络[7]。主协调器搭建起了整个网络,以2.4 GHz作为此方案的通信频段,选用16号信道,引入节点和路由器,构建树型网络。2.4 GHz频段下,在一个教室内部进行无线通信,其通信质量是可以得到保证的[8]。
之后,系统进行所需模块的初始化,主要有以下3点:
(1)完成液晶屏的初始化界面显示。协调器现阶段几乎不会用液晶屏和按键,因此对于协调器而言,液晶屏目前仅仅为其显示连接状态,按键也仅仅留出硬件接口,以便后续功能补充。
(2)进行端点描述、地址类型结构体的参数配置。对于端点,一个设备上可以拥有多个端点,它的作用主要是将不同的无线任务进行分类。当某个设备在接收数据包时,首先匹配短地址,成功后再由底层解析并分发给对应端点,如端点不匹配则直接丢弃。在本项目中,所有设备的端点号都设为8。
而地址类型结构体,即afAddrType_t,是对端点、目的地址、发送模式、个域网地址的一种包装。在配置好这样一个结构体之后,用户在使用无线传输函数进行无线数据发送时,可以很方便地调用。为了让整个网络的无线传输数据分类更加清楚,本项目定义了三个这样的结构体,对应三种传输情况,协调器用到了两种:广播(教师端向所有学生端发送信息,便于题目的下达)和单播(教师端向单个学生端发消息,便于单独抽问)。
(3)进行串口的初始化与注册。对于串口,本项目利用协议栈中的调试层,对串口进行简单快捷的处理。因为调试层中有许多调试接口能与各层进行直接通信,利用串口,联系上位机与用户任务显得更加方便。
在完成初始化之后,系统将进行轮询状态。但本项目中加入了定时触发事件,主协调器将对副协调器定时每10 s发送一次状态信息,当副协调器连续3次未收到数据时,系统将认为主协调器工作状态异常,副协调器将执行切换操作。
如果系统收到无线数据,也将跳转执行函数,并根据预先设置好的帧标志位,判别接收信息的类别,然后对信息进行加工,并通过串口向上位机上传;同理,如果收到来自上位机的串口信息,也将判别指令类型,然后再控制各个学生端进行操作[9]。
具体而言,上位机通过云端同步更新上课信息和指令信息。如图3所示,上位机目前有7种命令格式传递给协调器,协调器接收3种来自其他节点的信息。
在提问环节中,上位机目前支持的操作大致为:允许答题、禁止答题、单独抽问、随机分组、开启答题倒计时,基本满足课堂应答的所需。
登录认证是为了对学生端的登录信息进行校对并及时反馈。
下课指令不仅为了清除当前课堂的残留数据,也更新了学生端的内在组网配置,为下一次连接做准备,避免设备错误入网。
3.2 节点程序设计
与协调器一样,为了方便管理,对每一个终端节点设置了一个8位ID,从0x01开始命名,最大0xfd。整个节点软件流程如图4所示,节点上电后,在完成协议栈的各项底层初始化操作后,开始根据当前个域网地址值搜索网络并加入,同时初始化用户任务函数。之后,节点将进行重连检测。若在之前设备未登录,则进行正常的登录操作,进入答题界面答题并准备执行教师端所发指示;若在之前设备异常断电,则将跳过登录操作,并恢复一些数据。
节点上主要使用的两个硬件模块是液晶屏和矩阵键盘。液晶屏采用SPI接口接入协议栈,将一直引导用户进行相应的操作。协议栈本身针对几个独立按键进行了定义,本设计用到了其中两个独立按键,其中一个作为整个矩阵键盘的扫描启动开关,学生在输入前需要先按下此键才能正常输入;另外一个则作为手动复位的按钮,按下后,可以清除所有信息,包括Flash中保存的内容。但根据项目的需求,硬件上又加入了4×4矩阵键盘,占用P1口共8个端口,支持16种字符的输入,包括:0~9十个数字,A~D四个字母,*和#两个功能按键。
3.2.1 重连检测
在初始化完成后,实际上因节点设备入网状态的变化(从未组网变为终端节点),系统将退出轮询去处理执行函数。系统判定入网设备的类型,如果是终端节点,则会进行重连检测。具体而言,用接口函数读取Flash中的重连标志位。
如果其值为1,则表示该设备之前已入网,需进行界面恢复。该设备将恢复到之前答题界面,并且读取Flash,然后将分组信息、倒计时信息也复原;如果其值为0,则表示上次是正常断电。系统将进行正常登录操作,等待学生信息的录入。
3.2.2 显示界面
主要设计的界面是登录界面和答题界面,当然还有一些其他反馈界面。
在登录界面,本项目需要学生首先按下矩阵键盘的启动按键,再通过矩阵键盘输入自己10位学号信息,以*键作为退格键,#键作为确认键。发送后,等待协调器进行认证反馈。认证成功,则液晶屏显示“登录成功”,进入答题页面;反之,则液晶屏显示“登录失败”,重新进入登录页面。为防止误发送,在软件后台进行了发送限制,当输入位数少于10位或包含其他字符,#键将失效。
在答题界面,节点将向协调器发送答题信息。但首先需要接收来自协调器的答题指令,当节点收到允许答题指令时,节点内置的答题开关(一个布尔型的变量)将开启;同理,当收到停止答题指令时,此开关将关闭。用户需要在这段时间内根据投影仪或PPT所示的题目,键入答案并发送。这是节点最主要也是最基本的输入界面,答案长度最大16个字符。
3.2.3 其他指令的操作
除了允许答题和关闭答题这两个基本操作外,系统还有其他指令。
当协调器收到上位机的随机抽问命令,则会随机开启某一个节点答题开关,让其答题。当然,这个过程会有相应的蜂鸣器和LED闪烁进行提醒。
随机分组指令让所有在场学生平均并且随机地分成几个小组,小组编号将在节点的答题界面上进行显示。
开启倒计时是让答题者在限定时间内答题,时间一到,节点便会停止作答,倒计时也将显示在节点的液晶屏上。倒计时功能采用协议栈的事件定时触发函数进行操作,时间参数为1 000,即1 s触发一次,事件每次触发将更新液晶屏上的显示时间,基本实现了时间同步。
对于下课指令,上位机可以向云端同步信息,从而得知班级下一个上课地点的网络地址。这样上位机就可以通过协调器控制所有节点软切换其网络配置,从而达到切换教室的效果,避免教室之间可能出现的误组网问题[10]。
其具体切换流程为:各个节点从协调器获取到新的网络地址,然后调用接口函数写入并更新自身的网络地址,再清空重连标志位和分组信息,避免再次链接时出现问题,最后进行软件重启。
3.3 路由器软件设计
在本设计中,路由器充当两个重要模块,自定义的8位ID分别是0xfe和0xff。下面分别讲解这两个模块。
3.3.1 副协调器软件流程
副协调器要想替换主协调器,自动组建和维持ZigBee网络,并让之前网络中的其他节点继续工作,必须复制网络的关键参数,这些参数包括个域网地址、信道信息和网络邻居表。其中个域网地址和信道信息相对简单,为了让网络邻居表也简单一些,此项目中副协调器将不引导其他节点加入网络。
由于副协调器一开始就和主协调器在一个网络中,因此个域网地址和信道与主协调器一样,不用处理。主协调器定时向副协调器发送状态信息。实际上,这个信息就是主协调器通过系统接口函数获取到的邻居表,经过包装之后得到的信息帧。副协调器将该信息存储在Flash中,一旦发生异常,则将Flash中存储的设备间关系信息通过内置函数进行恢复,用副协调器重新启动网络。
如图5所示,副协调器在进行一系列初始化后进入轮询。正常情况下只需要接收状态信息,并且计算与上一次接收的时间差。若超过30 s未收到数据,则进行协调器的切换。
3.3.2 指纹模块软件流程
本项目通过串口将指纹传感器和ZigBee模块联系起来,组成一个指纹采集模块[11]。
指纹录入时,ZigBee模块发送读取图像指令,然后传感器开始读取检测到的指纹图像,一段延时之后,再发送生成指纹特征指令,传感器进而将生成指纹特征。二次录入时,也将生成一个指纹特征。接着ZigBee模块发送模板特征比对指令。如果比对成功,则生成指纹模板,分配ID并存储;若失败则重新录入。
检测指纹时,与指纹录入时一样。ZigBee模块同样需要发送读取图像指令和生成指纹特征指令,从而获取指纹特征。ZigBee模块发送搜索指纹图像指令。若比对成功,则向协调器发送指纹ID;若失败,则重新录入。
在上课之前,ZigBee模块通过云端同步学生的指纹信息,并对指纹库进行更新。所以当学生进行签到时,只需比对相应信息,若比对成功,将无线发送特征指令。
如图6所示,指纹模块也需要加入到整个网络,所以也要初始化协议栈。之后,模块等待学生的指纹录入,当检测到指纹图像时,向传感器获取指纹特征。与库信息进行比对后,获得其指纹ID,无线转发给协调器,等待下一次的指纹签到。
4 结论
本文基于ZigBee设计了一套教学应答系统,主要说明了其中ZigBee软件部分,对其中多个模块的运作进行了分析。目前该系统已有一些基本功能,能够基本满足课堂需求。在实际使用中,上位机与协调器的通信无异常,能够正常收发指令。各个教室内的ZigBee网络通信顺畅,且没有错误入网现象。对于后续的扩展,可以考虑从手机入手,让手机与云端相连,从而在课下为学生提供查漏补缺的机会。
参考文献
[1] 杨小来. 基于ZigBee技术的家居智能化环境状态数据检测系统设计[J]. 通讯世界, 2015(23):263.
[2] 姚远, 唐亚华. 基于C#的OTP存储器烧录器上位机软件的设计与实现[J]. 电子设计工程, 2016, 24(13):30-33.
[3] 刘蕴. LED智能照明控制系统的研究与设计[D]. 西安:陕西科技大学, 2013.
[4] 曾宝国. Z-STACK协议栈应用开发分析[J]. 物联网技术, 2011(3):71-73.
[5] 孙九瑞, 孙晓晨. 基于ZigBee的图书馆环境监控系统设计[J]. 应用科技, 2015,42(3):49-54.
[6] 崔妮. 基于无线传感器网络的采煤机状态监测系统设计与实现[D]. 太原:中北大学, 2016.
[7] 张久强, 施仁政, 陈远知. 基于ZigBee的WSN节点嵌入式软件研究与开发[C]// 全国信号和智能信息处理与应用学术会议会刊, 2014.
[8] 王建风, 师晓红. 城市轨道交通CBTC无线干扰及防护措施[J]. 城市建设理论研究(电子版), 2014(13): 12236-12238.
[9] 王超. 基于ZigBee技术的无缝钢轨爬行监测系统研究与设计[D]. 长沙:中南大学, 2014.
[10] 钟小磊, 陈赜, 代祖浩,等. ZigBee自组网的网间串扰和通信解决方案[J]. 光通信研究, 2017(4):70-73.
[11] 乔磊. 基于ZigBee技术的无线点餐系统设计[J]. 现代电子技术, 2011, 34(3):68-71.
(收稿日期:2018-03-19)
作者简介:
陈科(1993-),男,硕士研究生,主要研究方向:嵌入式单片机、气象设备仪器。
苏鲁阳(1992-),男,硕士研究生,主要研究方向:图像拼接技术研究。
杨笔锋(1980-),男,硕士,副教授,主要研究方向:气象探测技术及应用、信号获取技术及应用。