胡 锋,李 峥,陈韵秋,石惠敏
(淮北师范大学物理与电子信息学院,安徽淮北235000)
QR二维码,又叫做二维条码,可以将各种信息以数字化的形式用特定的图形按照一定规律分布在黑白相间的图形中。自20世纪90年代日本Denso公司设计出QR二维码之后,世界上很多国家加快对二维码技术[1]的研究并且开发很多二维码设备。中国在1993年开始着手研究二维码技术,于2008年制定了二维码的国家标准,促进了中国二维码的研发。
最初的机械门锁采用的是机械阻塞式,金属钥匙的偶合性强,一把钥匙开多个门的情况经常发生,并且金属钥匙笨重,不易携带。之后发展成为IC卡、ID卡[2]为介质的射频识别门禁,但IC卡和ID卡的认证介质容易丢失、损坏,并且门禁卡容易复制,安全性低。无论是金属钥匙还是门禁卡,公司访客到达时需要配备大量的工作人员进行人工管理,工作繁琐且成本高[3]。针对传统的公司访客门禁存在的诸多问题,本文设计了一种基于QR二维码识别的公司访客门禁系统,能够有效解决钥匙和门禁卡的管理、存放以及携带等各种问题,提高了公司整体工作效率,减少人力资源的浪费。同时该系统对二维码采用加密保护机制和权限管理模式,一方面提高了门禁系统的安全性能,另一方面使得门禁系统变得更加智能化,公司访客的出入方式也会因此变得更加便利、快捷。
系统通过OpenMV3摄像头识别访客二维码,将二维码信息传输到上位机,上位机接收信息与系统库中的信息进行匹配,匹配成功则实现门禁的放行。在系统中管理员可以根据不同访客的信息生成不同的加密二维码,并将该二维码以邮箱或者微信等方式发送给访客。访客手持二维码在摄像头下扫描,二维码的信息通过摄像头上的Wi-Fi模块传输,上位机接收信息并对所获得的加密二维码进行对应的解码,将解码得到的信息与系统库中的访客信息进行匹配,当信息与库中某一访客信息匹配成功,则上位机通过ESP8266模块发送匹配成功的指令给STM32,单片机接收到正确的指令后精准地控制舵机进行门锁的启动[4]。公司访客门禁系统的硬件框图见图1。管理员可以通过上位机对公司访客设置相应时间段的开门权限,访客拿到的二维码钥匙是具有一定时效的,并非一天内任何时间段都可以开门,一旦超过系统设置的相应时间范围,访客所持有的二维码钥匙就会失效,这样的钥匙权限设置大大地提高了公司门禁的安全性。
图1 公司访客门禁系统的硬件框图
主控模块是整个门禁系统的核心,可以精准控制其他模块的正常工作,本设计中主控模块选用STM32F103RCT6单片机。一方面是因为其配置齐全,运算速度和处理能力远远超过51系列和12系列单片机。另一方面是因为STM32单片机有着极高的集成度,其主频是72 MHz、256 K的flash存储器,自带两个12位ADC,拥有IIC、TIMER等众多外部设备,具有功耗低、体积小、可靠性高等特点[5]。
本设计中的摄像头模块使用的是OpenMV3和ATWINC1500 Wi-Fi扩展板[6]。其中,摄像头负责采集信息,Wi-Fi拓展板负责信息的传输,OpenMV3与Wi-Fi拓展板连接原理图如图2所示。OpenMV3采用STM32F765VIT6处理器,主频是216 MHz,RAM 是512 kB,Flash是2 MB,所有的I/O引脚输出3.3 V并且5 V耐受,一个SPI总线高达54 MB/s速度。
图2 OpenMV3与ATWINC1500 Wi-Fi扩展板连接原理图
OpenMV3通过高级语言Python编写,其高级数据结构可以在机器视觉算法中处理复杂的输出,也可以很容易地使用外部终端触发拍摄或者执行算法,并运用算法结果来控制I/O引脚。OpenMV3可以在MCU上很好地快速运行,同时具有简单小巧、低功耗、低成本等特点,在机器视觉(Machine Vision)方面也具有很好的应用。
在本设计中驱动模块采用的SCS2332舵机,该舵机可以实现360°旋转,响应性好、效率高[7]。使用SCS2332舵机的主要原因是由于在本设计门锁和门销的转动过程中是需要任意角度旋转的,而普通的舵机只能在180°范围内进行角度转动,无法达到本设计的要求。利用SCS2332舵机360°旋转的特性就可以有效地控制门锁和门销的开关。
SCS2332舵机可以选择4.8~7.4 V间的任意电压。当舵机得到一个PWM脉冲信号,会以特定速度选择转动,闭环控制,速度控制稳定。PWM信号与360°舵机转速满足如下关系:当控制舵机的输出为1.5 ms方波时,舵机的转速为0;小于1.5 ms时,舵机正向旋转并于0.5 ms到最大转速;大于1.5 ms时,反向旋转并于2.5 ms到最大转速。在本设计中使用了两个SCS2332舵机,分别控制公司门禁中门锁和门销。
在门禁系统中,上位机、摄像头与STM32之间的通信都是通过Wi-Fi模块建立连接的。本设计Wi-Fi模块选择ATK-ESP8266模块,这是ALIENTEK设计提供的一款高性能UART-WIFI(串口-无线)模块。该模块获得了FCCCE认证,通过采用串口与MCU通信,内置TCP/IP协议栈,能够实现串口与Wi-Fi之间的转换[8]。ESP8266与单片机系统兼容,可以通过AT指令来控制,在使用过程中有3种模式可供选择,用户可根据需要选择不同模式。第一种模式是COM-WIFI AP模式;第二种模式是COM-WIFI STA模式;第三种模式是COM-WIFI AP+STA模式,既可以连接到其他无线网络,也可以作为热点供其他无线设备连接[9]。本设计主要是利用了ESP8266的STA模式,实现了模块间的数据传输。
本设计的按键模块采用电容式触摸按键[10],其电路原理图如图3所示,在公司门禁的内侧安装一个按键模块,房间内部的人可以实现一键开关门销,方便快捷。
电容式触摸按键运用的是RC充放电电路原理。RC电路充放电公式为:
(1)
其中,V0是电压初值,V1为最终电压值,Vt表示的是瞬时电压值。当V0=0时,公式可简化为:
(2)
在同样的条件下,电容值C跟时间值t成正比关系,电容越大,充电到达某个临界值的时间越长。当手指按下,电容值变大,充电时间增加,反之充电时间减少。按键是否被按下就可以通过充电时间来判别,一旦按键成功则会触发门销的开关。
图3 电容式触摸按键电路原理图 图4 OLED模块电路原理图
选用0.96寸OLED显示屏[11]作为显示模块,其电路原理图如图4所示。在本设计中OLED显示屏主要显示两方面信息:一方面,当无访客进入时,OLED模块实时显示当前电源电压和所剩电量,便于门禁管理者及时关注电量信息。另一方面,当有访客准备扫码进入时,系统核对二维码信息的正确性,如果正确则会显示验证成功允许进入的信息,如果二维码信息错误或者已失效则会提醒访客验证失败禁止进入的信息。
本设计的下位机部分是用C语言编写的。C语言简洁灵活、逻辑性强、便于移植,在门禁系统的程序设计中,程序代码高效执行,单片机可以快速处理数据,同时发送相应指令操控驱动模块、Wi-Fi模块、显示模块等功能模块。
摄像头部分的程序运用Python语言,其流程图如图5所示。Python是面向对象的解释性语言,是一种高级编程语言[12]。在本设计中使用Python编程写出清晰易懂的程序,实现摄像头部分的功能。上位机部分则用C#编写,管理员事先将访客信息通过上位机录入库中,然后按照访客提供二维码信息与库中信息进行匹配,匹配成功则发送成功指令给STM32,从而进行下一步操作。二维码在公司访客门禁中应用的设计程序流程图如图6所示。
图5 Python编写的摄像头识别流程图
图6 设计程序流程图
二维码作为电子钥匙应用于公司访客门禁中,其安全性显得尤为重要,因为只有一把真正安全的钥匙才能保证门禁系统整体的安全。本设计从二维码门禁的安全性角度出发认真考虑了如何对二维码进行加密与解密,从而保证二维码不会被不法分子破解,避免巨大损失。
二维码加密及解密的核心就是密钥[13]。本设计的密钥主要采用两种加密算法协同加密的方式,其中一种是AES加密算法,另一种是RSA加密算法,这样的加密密钥安全性能很高。首先将明文使用AES密钥加密,随后生成密文,在加密时密钥的长度不能太短,一般选择192位,以此保证加密的安全性。考虑到仅使用AES算法无法真正保证二维码钥匙的绝对安全,在算力如此快速的今天,不法分子还是会利用计算机获得大量明文和密文的样本,很快推出系统的密钥,从而达到破解二维码钥匙的目的。针对上述问题,本设计使用RSA算法的公钥为AES的密钥进行了深层加密保护,大大提高了整个二维码钥匙的安全性[14]。二维码加密及解密设计流程图如图7所示。
图7 二维码加密及解密设计流程图
4.1.1 访客注册
首先录入访客信息,主要包括姓名、手机号、性别等,接着授权该访客访问门禁的相应权限,将访客的二维码钥匙的类型设置成两种模式:一种是临时的,另一种是永久的。临时二维码的时间可以随意调整,可以将访客到访时间规定在9∶00—16∶00的时间段内,不在规定时间是无法开启门禁的,最后即可完成访客注册,注册成功界面如图8所示。
图8 访客注册成功界面
4.1.2 生成和发送二维码
当访客顺利完成注册后,系统信息库将保存访客的相关信息。从库中选择一位访客,如图9所示。点击生成二维码按键,即生成该访客特有的二维码,二维码生成后,点击发送二维码按键即可将二维码发送给对应的访客,生成二维码及发送二维码界面如图10所示。
图9 选择访客界面
图10 生成二维码及发送二维码界面
4.1.3 访客来访记录
当访客收到系统发送的二维码后,可以通过持有的二维码钥匙进入对应的门,每次扫描二维码进入门禁,系统都会自动记录来访人员的二维码持有信息和进入时间。门禁系统的管理者可以随时查看不同门禁的访客来访记录,如图11所示。
图11 访客来访记录界面
访客使用二维码钥匙在摄像头前进行扫码识别,二维码扫码过程如图12所示。当二维码识别成功,OLED显示屏显示“验证成功,允许进入”(图13),打开门锁及门销。若二维码扫描失败,门锁和门销不工作,OLED显示屏显示“验证失败,禁止进入”(图14)。最终经过测试,所有部件都正常工作,整个系统的功能正常。
图12 二维码扫码示意图 图13 二维码识别成功示意图 图14 二维码识别失败示意图
本文设计的新型公司访客门禁解决了传统公司门禁存在的问题,并进行了相应的改善和创新。其一,打破实物的限制,将虚拟的二维码作为开门的钥匙,几乎是无成本,低碳环保;其二,金属钥匙及卡片钥匙携带不便并且容易遗漏,在智能手机十分流行的今天,访客只需要打开手机扫一扫就可以开门;其三,二维码访客门禁系统提供准确的统计数据,公司的门禁管理者能够准确地掌握出入人员信息。二维码访客门禁系统构架简单、部署方便、成本极低。随着互联网技术的进一步发展,二维码公司门禁系统高效智能化、科学化带来的便捷会使得用户数量不断攀升,二维码公司访客门禁系统的市场应用前景将更加可观。