一种基于MQTT协议的实验室使用登记系统软硬件设计

2021-05-24 10:34陈儒敏张开金刘佳辉
物联网技术 2021年5期
关键词:主控板读卡器按键

陈儒敏,于 静,张开金,李 泽,刘佳辉

(1.北京科技大学天津学院 信息工程学院,天津 301830;2.山东高图测绘信息科技有限公司,山东 德州 253072)

0 引 言

随着教育部对高等院校大学生创新创业教育的大力推进,各高校也都针对性地设立或开放了一些创新性实验室,这些实验室在培养学生创新精神与应用能力方面发挥着重要的作用[1]。对于信息化没有全面覆盖的高校,实验室使用登记一直是件令人头疼的事情。传统纸质登记效率低,学生不爱填写。直接购买现成的考勤机,除了成本因素外,还无法与现有系统兼容,后续还需要人工导出数据和统计,增加人力成本。

本设计基于ESP32平台和MQTT协议设计了一套实验室自动登记系统。系统分读卡器终端和服务器端。读卡器通过射频卡读取模块读取使用者校园卡、带NFC功能的手环或手机的基本信息,将信息通过MQTT协议发送到服务器,接收程序通过服务器接收信息,存入数据库,实现实验室使用的自动登记。

1 系统硬件设计

系统读卡器终端由ESP32主控模块、射频卡读取模块、显示模块、按键、RGB指示灯、蜂鸣电路和供电电路组成,硬件结构如图1所示。为最大程度利用现有模块,同时降低调试难度和方便后续扩展,将ESP32主控、供电单元、按键与蜂鸣器单元做成一块主控板,留出接口,外接显示模块与射频卡读取模块。

图1 系统硬件结构

1.1 主控板电路板电路设计

主控板包括ESP32主控的最小系统电路,作为整个系统供电的稳压电路以及按键与蜂鸣器的驱动电路。

1.1.1 ESP32最小系统

ESP32最小系统电路如图2所示。主控采用乐鑫出品的ESP-WROOM-32模块,该模块自带蓝牙和WiFi功能,同时集成了天线开关、射频Balun(平衡-非平衡转换器)、功率放大器、低噪声放大器、滤波器以及电源管理模块[3]。最小系统电路主要是使该模块能稳定工作的最小电路,除了复位电路外,还留出了烧写电路接口,当需要烧写时,将J1接口用短路帽短接,复位后进入烧写模式,再使用串口通过CN3烧写程序即可。平时还可通过CN3与模块进行串口通信。

图2 ESP32最小系统电路

1.1.2 供电电路设计

供电电路主要给整个系统提供电源,系统中的器件和模块使用5 V和3.3 V两种电压。这里使用USB-C接口,通过5 V电源适配器直接提供5 V电压,然后经过稳压芯片AMS1117降为3.3 V供给需要的器件和模块。供电电路如图3所示。

图3 供电电路

1.1.3 其他电路设计

为了后期可以进行人机交互,系统设计两个按键,平时输入为高电平,按下为低电平。RGB LED使用的是WS2812,可以使用一个引脚控制,这里主要用来指示系统的不同状态,蜂鸣器电路用于读卡成功指示。按键、RGB LED、蜂鸣器电路如图4所示。系统的射频卡、显示屏和TF卡读写是独立模块,为此需要在主控板上留出接口,如图5所示。

图4 按键、RGB LED、蜂鸣器电路

图5 接口电路

1.2 射频卡读取模块

因为大部分的应用场景主要是用读取校园卡的ID信息,考虑到成本因素,这里采用NXP 公司的RC522方案,其主要支持ISO/IEC 14443A和MIFARE通信协议,可以满足要求。读取模块使用SPI接口与主控相连。为了满足以后的扩展要求,特别是读取带NFC功能的设备信息,还设计了PN532射频方案的通信接口,其除了支持ISO/IEC 14443A/MIFARE,还支持ISO/IEC 14443B、ISO/IEC18092,ECM340、Felica等协议。主控板中留出了I2C接口与PN532模块进行通信。

1.3 TFT显示和TF读写模块

读卡器终端使用2.0英寸TFT彩屏模块显示工作过程中的基本信息,其采用ILI9225芯片驱动方案,最大可以支持176×220分辨率,262 144种颜色。模块还带有一个TF卡接口,这里用来连接TF卡,设备离线时可暂存信息。主控板使用EPS32的HSPI接口与ILI9225相连,使用普通SPI口与TF卡相连。

2 系统软件设计

读卡器终端使用MQTT协议与服务器连接,传送打卡信息。MQTT是一个轻量级的发布/订阅模式的消息传输协议,是目前最流行的物联网传输协议之一。协议的特点是轻巧、开放、简单和规范,比较适合环境受限的机器与机器通信场景,在常见的物联网应用环境也都有应用[4]。硬件端软件使用Arduino环境开发。

读卡器终端软件主要需要完成参数读取、连接网络、检测卡片、信息显示、向MQTT服务器发送打卡信息、OTA升级等功能。整体程序框架如图6所示。

图6 系统工作整体流程

2.1 参数设置与读取

针对不同的使用环境,其WiFi名称(SSID)、密码、设备MQTT主题等参数会不一样,这里采用将参数先存入ESP32的E2PROM中,系统上电后读取,再调用相关函数进行初始化。E2PROM中参数格式包括读卡器类型、WiFi名称、WiFi密码、MQTT服务器地址、服务器端口号、服务器账号、服务器密码、设备发布主题。其中读卡器类型为1位,0表示RC522方案读卡器,1表示PN532方案读卡器。其余字段均不限定长度,但每个字段的头两位表示该字段所带信息的位数,例如WiFi的名称是8位,则该字段头两位应该是08,后面再跟上WiFi名称。程序中根据前面的字段以及位数信息依次推算出后续参数信息。

通过按键配合ESP32自带的蓝牙功能可以重新写入上面的参数,这里是利用ESP32的蓝牙串口功能。系统上电启动后,会检测2号按键是否按下,如有按下则进入该模式,可以用PC或手机连接设备蓝牙,借助串口调试助手之类的工具对参数进行设置。

2.2 卡片检测程序设计

系统上电后连接网络,如果没有检测到按键,则会接着初始化其他参数,然后进入正常工作模式,主要包括读取网络时间,循环检测是否有卡片,显示屏及RGB灯信息显示等。其程序流程如图7所示。

图7 读卡器正常工作流程

这里会直接从NTP服务器读取时间,该信息用于设置ESP32本身RTC时间,没有网络时可以将刷卡的时间信息暂存到TF卡中,网络恢复后再发送回服务器。由于程序运行较快,可能存在一张卡片多次读取的情况,程序中设置了10 s左右的时间间隔,这段时间如果再次检测到同一张卡片,则不记录该卡片信息。

2.3 OTA功能设计

为方便后续升级,还设计了OTA(Over The Air),即空中下载功能,在程序初始化前按住按键1,联网成功进入OTA模式,并在显示屏上显示设备IP。通过1台与该设备处于同一局域网下的PC机,使用浏览器对设备进行固件升级。另外,主控板上还留有对ESP32的烧写电路,在无法进行OTA时使用。

2.4 服务器及数据记录

系统使用MQTT协议进行消息传送,需要1台MQTT服务器进行消息转发,可以使用百度、阿里云提供的物联网平台,也可在现有服务器上搭建一个MQTT服务。这里使用的开源程序为ActiveMQ,ActiveMQ是Apache基金会推出的消息中间件程序,可支持多种协议,包括MQTT协议。

数据的接收使用Python语言编写,使用第三方库PAHO-MQTT可以实现MQTT信息的订阅、收取和发送。这里,Python脚本会在启动后订阅每台设备的主题,然后在后台监控消息,将传递过来的消息内容加上接收日期和时间一起记录在数据库中。

3 功能实现

系统的实物包括主控板的PCB设计与电路设计,PCB的设计图如图8所示,实物如图9所示。

图8 主控板PCB图

图9 实物

设置好MQTT服务器后,使用MQTT.fx软件订阅读卡器的主题,然后刷卡测试,软件端收到消息以及显示屏显示内容如图10所示。

图10 读卡器运行状态图

服务器端接收脚本后会存入数据库,程序调试输出与数据库中的数据如图11所示。

图11 数据库信息

4 结 语

实验室使用登记是实验室管理的一个重要环节。本文基于MQTT协议与ESP32平台设计了一种实验室登记系统,完成了系统的硬件电路设计、读卡器实物制作,编写了相应的硬件控制程序、接收程序,并搭建了服务器。经验证,所设计系统可以实现规定功能,自动完成实验室使用登记工作。

猜你喜欢
主控板读卡器按键
一种快速可靠的主控冗余及切换机制的设计与实现
基于有限状态机的按键检测程序设计
与淘汰命运抗争 看懂笔记本的读卡器
升级双主控板交换机ISO
基于EMV非接通信规范的非接触读卡器设计
为二维码识别的献礼之作——评测平治二维码门禁读卡器
变频器检测台的设计、制作及主控板的维修
一种多方向导光按键结构设计
MATLAB实现组态王中TCP/IP读卡器监控方法
按键的多种状态检测及消抖处理方法