APP下载

RFID的图书馆自助借阅系统的身份识别实现

2022-03-16杨永明徐海霞

物联网技术 2022年3期
关键词:开发板用户名刷卡

杨永明,徐海霞

(1.西安建筑科技大学 理学院,陕西 西安 710055;2.宁夏医科大学 图书馆,宁夏 银川 750004)

0 引 言

高效、方便、人性化的检索方式是数字图书馆为用户提供优质信息服务的必要保障。在数字图书馆的基础上,近年来出现了一种新型的智慧图书馆,即在智能技术基础上,以各种新技术、新服务理念以及新管理模式为辅助,所建立的不受时间和空间限制的新型图书馆模式。智慧图书馆将利用物联网技术达到智慧化服务和管理的目的,当然在这个万物互联的时代,还需要通过云计算和智慧化的一些设备来改造现有的传统图书馆。其中当属RFID技术应用最为广泛,它改变了传统图书馆的运营服务模式,大大提高了图书馆管理人员的工作效率,极大地减少了工作量。图书馆的馆藏量日益增大,如若按照以往传统图书馆的管理方式,只有更加智能的信息系统才能在减轻管理人员负担的同时,为读者提供更加综合的信息服务。

1 RFID定位技术

RFID定位技术的基本原理是:通过一组固定式读写器读取目标RFID标签的特征信息(如身份ID、接收信号强度等),同样可以采用近邻法、多边定位法、接收信号强度等方法确定RFID电子标签所在位置。RFID室内定位系统的基本结构通常由RFID电子标签、读写器、中间件及计算机数据库组成。该系统通过参考标签和待定标签的信号强度RSSI的分析计算,利用“最近邻居”算法和经验公式得出定位标签的坐标。

RFID定位技术的优点:RFID电子标签的成本较低,可以大规模部署;RFID提供有源和无源两种方案,无源方案没有供电的问题,有源方案可以用纽扣电池持续数年地待机,极大地降低功耗;RFID基站设备相对丰富,大功率设备和小功率的读写器产品比较多,项目实施更方便,也更便于维护,适合各种场合的组网。

随着图书馆藏书量和建筑面积的逐渐增大,传统的图书馆管理方式已经不再适用。鉴于此,本文主要研究如何在用Java语言编写的图书管理系统中加入RFID进行读者的身份识别。基于RFID技术实现系统的登录,即不刷卡或者没有卡的无关人员并没有该系统的使用权限。如果没有RFID技术的应用,无关人员只须注册就能实现该系统的登录,这显然是不规范的。该技术的应用,使得新用户在注册的同时,需要获得图书馆办理的身份卡才能成为真正的用户,这大大提高了图书馆的管理效率。

2 开发实现

2.1 硬件系统开发环境

Arduino UNO是一款基于ATMEGA328P微控制器设计的Arduino开发板,它有14个数字输入/输出引脚、6个模拟输入引脚、16 MHz石英晶振、USB接口、电源接口,支持在线串行编程以及复位按键。Arduino UNO开发板是Arduino系列中最经典的开发板,而且它的编译较为简单,适合新手入门使用,只需要将开发板与电脑通过USB接口连接就可以通过开发软件Arduino IDE进行编译开发。

RFID-RC522模块是采用MF RC522原装芯片设计读卡电路,使用方便,成本低廉,适用于设备开发、读卡器开发等高级应用以及进行射频卡终端设计/生产。该模块可直接装入各种读卡器模具。模块采用电压为3.3 V,通过SPI接口简单的几条线就可以直接与用户的任何CPU主板相连接进行通信,可以保证模块稳定可靠地工作,并且读卡距离远。模块中的SDA引脚是用于选择设备的引脚,SCK引脚用来接收时钟信号,MOSI引脚是模块的串口外围接口,MISO引脚是串口数据输出口,IRQ引脚是中段警告引脚,GND为接地引脚,RST引脚是复位和断点输入引脚,3.3 V是模块的VCC引脚,该模块只能在3.3 V的电压下工作。

2.2 软件系统开发环境

Eclipse是一种可扩展的开放源代码集成开发环境(IDE),是一款非常受欢迎的Java开发工具。该系统之所以选择以Eclipse为开发环境,是因为该应用完美适配Java Swing图形管理界面,具有丰富的GUI插件,使得编程更加方便。在设计过程中能够简化操作。

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就提高了速度并增加了灵活性。MySQL使用更加容易,复杂程度较低。最重要的是,在Java连接数据库的过程中适配性更高。

完整的RFID系统由数据管理系统、阅读器、电子标签三部分组成。数据管理系统通过网络向阅读器发出指令,阅读器接收指令后通过天线发送射频信息,射频能量形成电磁场,其内的电子标签被触发并向阅读器发送或修改存储在内的数据,阅读器通过解调和解码后反馈信息给数据管理系统。在工作状态下,读写器经由射频天线向标签发射一定频率的信号,并接收返回信号,经过简单处理后把这些信号发送到后台网络。电子标签也叫射频标签、感应标签,主要用于存储数据,由天线和芯片组成,其中芯片又由控制器和存储器构成。电子标签是RFID系统中的关键组件,每个标签都拥有独一无二的电子编码。

3 硬件设计

本设计是基于RFID设计的自主借阅系统,在该实验中最重要的是如何在一个普通的图书管理系统中加入RFID技术。MF RC522是一款非接触式读写卡芯片,能够实现本系统所需要的RFID功能。但是该芯片并不能直接将读取到的信号发送至计算机串口,所以本系统还需要使用到Arduino开发板。本文选用的是Arduino UNO开发板。通过RC522芯片读取卡片ID,将读取到的信号传输给Arduino UNO,再经由UNO打印至计算机串口,实现身份识别的功能。RC522与UNO的接线方式如图1所示。

图1 硬件连线方式

3.1 程序烧录

硬件连接好后,将UNO通过USB线连接至电脑,打开Arduino软件,下载MF RC522外部库。通过外部库的实例,编写需要烧录至开发板的程序。

首先添加头文件,并对RST_PIN和SS_PIN定义引脚。运用void setup()函数进行初始化设置,设置串口的波特率为9 600 b/s,此设置其实不是固定的,只要与之后的Java串口通信中写入的参数一致即可,否则系统会发生无法读取的现象。使用loop()函数,检查MF RC522是否读取到卡片的信息。然后将读取到的卡片信息用Serial.print方法打印至串口。最后将编译好的程序烧录至UNO开发板,端口选择为UNO所使用的端口。

3.2 硬件测试

Java具有串口通信的功能,可以读取到串口的数据,再将串口的数据与创立的数据库进行对比,这样就能起到身份识别的作用。打开Arduino自带的串口监视器,完成刷卡操作,观察串口监视是否有数据传输,如果有,说明硬件部分RFID功能设计成功。

3.3 类方法创建

为了在自助借阅系统中加入RFID功能,首先需要打开电脑的串口,这样才能通过串口收发数据。因此,创建一个OpenerAndCloser类,以查看计算机可用的串口。波特率设置为9 600 b/s,数据位设置为8,停止位为1。RxTx第三方类库提供了丰富的对串口进行操作的方法,在编写Java串口通信部分的代码时,最常用的便是其中的CommPortIdentifier类。CommPortIdentifier类能够管理和设置电脑可用的串口,是RxTx中的一个核心类。因为需要列出本地电脑可用的所有串口,所以用到这个类。其次,为了使该系统能成功接收到串口的数据,需要对串口的参数进行设置,即波特率为9 600 b/s,数据位为8,停止位为1。在RxTx第三方类库中,提供了一个方法,为setSerialPortParams,能够对串口参数进行设置。此参数设置并不是固定的,只要在之后的模拟软件中,与该系统写入的参数一致即可,否则会发生无法读取的现象。最后,为了避免本地串口被其他设备占用而导致该系统出现异常、发生崩溃的情况出现,需要在编写程序代码的时候抛出该异常。在RxTx第三方类库中,将此种异常定义为PortInUseException,使用try-catch语句进行异常捕获,并将该异常抛出。

为了能够成功接收到串口发出的数据,并将其与现有数据库中的用户和管理员数据进行比对,需要再创建一个Com4EventListener类方法,用于监听串口的数据流输入,以便在之后登录操作时调用。在获取串口数据之前,需要先打开使用的串口,并抛出串口被其他设备占用的异常。为了获取串口的输入流,需要用到Java自带的IO包。在Java串口通信中,主要用到了IO包中的InputStream类,对串口的输入流进行操作。首先,定义一个变量为从串口获取到的输入流,并对该输入流进行读取。此时,就需要用到InputStream类中的read方法,读取串口的输入流。为了避免程序使用过程中,发生IO错误,导致系统异常,需要在编写代码的过程中抛出该异常,避免程序出现错误;同时对打开的端口添加事件监听来监听端口发生的变化,这样才能获取串口的输入流。在RxTx第三方类库中,提供了一个名为SerialPort的类,其中的addEventListener方法能够对串口添加事件监听。因为添加事件监听的目的是为了获取串口的输入流,所以监听事件类型应为是否有数据达到,这样才能读取串口的数据。在SerialPort类中,使用notifyOnDataAvailable方法,将监听的事件类型定义为是否有数据到达串口。最后,将后端接收到的输入流与数据库中的用户ID进行对比,并在控制台输出该用户的用户名,以方便之后对系统进行测试时找出系统的逻辑错误。

4 系统测试

将设计好的硬件设备通过USB接口连接至电脑。打开Eclipse,运行编写的图书管理系统,点击“请刷卡”按钮,之后完成刷卡操作,如图2所示。可以看出,原本不可编辑的用户名文本框出现用户名“cgd”的原因是:完成刷卡操作之后,UNO将RC522识别的卡片ID发送至端口,程序后端在数据库中查找ID为64482076的数据,并将其用户名返回给文本框,用户名文本框则自动出现了该用户对应的用户名。

图2 图书管理系统登录界面

图3所示的Eclipse控制台视图清晰地展示了上述过程。点击“请刷卡”按钮后,系统接收到串口发送的数据,在已经创建的t_user数据表中找到ID=64482076的数据,并将用户名返回,成功模拟了刷卡登录这一功能。

图3 Eclipse控制台视图

5 结 语

由于硬件和软件的结合,离不开串口通信,软件需要读取并识别硬件发送的数据。本文选择了目前最为流行的Java语言,因为它具有能够完成串口通信的特点;同时采用的Eclipse是一个开源的软件,有很多简化设计过程的插件可用。本文的创新点在于在普通图书管理系统的基础上加入RFID技术,达到刷卡登录的目的,即不通过键盘键入用户和管理员的用户名。RFID射频识别系统由阅读器和电子标签组成。对比于条形码,它的适用范围更广。随着时代的发展以及科技的进步,图书馆不再需要人力看守管理,读者也不需要自己前往图书馆就能进行借还书。RFID将助力于无人值守自助借阅图书馆的实现。

猜你喜欢

开发板用户名刷卡
《护士进修杂志》投稿程序
《护士进修杂志》投稿程序
《护士进修杂志》投稿程序
机智的快递员
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
成长日记
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板