一种基于树莓派的门禁系统快速构建方法

2016-11-14 00:43张兴
电子技术与软件工程 2016年18期
关键词:树莓派局域网

张兴

摘 要

利用基于Linux系统树莓派的硬件电路,编写Python脚本操作IC卡读写模块处理M1型IC卡信息,通过在树莓派上搭建PHP服务器显示人员刷卡登记数量及具体信息,最终实现人员门禁管理系统并在某海上移动平台坞修期间得到应用验证。利用该方法可在其他类似硬件上快速构建一套人员安全管理的门禁系统。

【关键词】树莓派 门禁 ISO14443B协议 Python PHP 局域网 IC卡读写模块

近年来,随着电子和信息化技术的不断发展,门禁系统已被广泛应用于人员及物料进出管理、楼宇物业管理、车库管理中。门禁系统作为一种安防措施,能够起到良好的隔离作用,防止外界未授权人员及车辆进入,提升相关区域的安全管理等级。

本文介绍一种快速构建低成本门禁系统的设计方法,该方法基于嵌入式Linux树莓派硬件系统,利用现有的IC卡读写器模块构建门禁系统硬件系统;软件系统则使用Python和PHP脚本语言,经过快捷的二次开发,最终实现门禁软件系统构建与应用。

目前利用该方法构建的门禁系统已成功应用于某石油平台坞修项目的人员管理中。

1 门禁系统硬件构成

一般IC卡芯片都遵循ISO14443技术协议,该协议规定了非接触式IC卡的物理特性、射频能量及接口、防碰撞协议、数据传输协议等内容,如果从零开始设计一套门禁系统,则需花费大量时间、人力、物力,最终成本和效果上会大打折扣。为加快设计应用进度,这里笔者推荐使用IC卡读写器模块开发,目前市场上的IC卡读写器模块有RS232,RS485 ,USB等多种接口形式,这些模块已将IC卡芯片的读写命令封装打包,用户无需开发底层复杂驱动程序,而通过厂家提供的接口协议二次开发使用。

本文中使用YMC150系列IC卡模块,该模块工作电压5V,RS232通讯接口,TTL接口电平,默认波特率9600Bit/s,可直接连接树莓派电路串口,无需电平转换芯片,这样便于设备连接及调试。主要工作模式包括主动读卡号、主动读数据块、主动读取卡号与数据块、命令模式。工作频率为13.56MHz,支持ISO14443A协议,可实现功能读卡号,读数据块,扇区加密,增减值等,本文软件设计基于模块主动读取卡号与数据块信息的工作模式。

树莓派微型电脑最早于2012年3月面市,基于32位ARM芯片设计,外形只有信用卡大小,却具有电脑的所有基本功能,具有USB、以太网、音频、视频接口等,另外还包括GPIO、SPI、I2C、UART等多种扩展接口;其软件系统基于Debian Linux,可安装运行Python、PHP等多种高级编程及脚本语言。

利用树莓派和IC卡模块构建的门禁系统结构示意图如下图1所示。

从图1可见,该门禁系统利用树莓派串口连接YMC150系列读卡器模块,而通过HDMI接口连接一台显示器作为信息输出,从而构建门禁系统,该系统硬件结构简单,利用了树莓派的硬件串口和显示器接口,而1代树莓派还带有RCA电视信号接口,也可直接连接老式电视作为显示器,在一定程度上降低了该门禁系统构建成本。

2 门禁系统软件设计

门禁软件系统利用Python串口模块pySerial读取树莓派串口接收的IC卡信息, 解码人员信息后存放在Sqlite数据库里,利用PHP服务器读取Sqlite数据库并显示在主页上。这部分主要包括:人员信息存储与IC卡信息编解码设计、人员信息处理及显示。

2.1 人员信息存储与编、解码设计

本文中使用标准M1卡存储人员信息,该卡内部芯片遵循ISO14443A协议,其内部存储空间为8092*1b,即1024Bytes,1KB. 内部存储具体又分为16个扇区,每个扇区分为4个块,每个块为16字节。其中第0扇区的块0(绝对地址0块)存储厂家信息,用户不能更改。

除0扇区外,其余扇区都有3个数据块和1个尾块。尾块一般用于加密保护。

这里将某个空闲数据块作为人员信息编码储存区,16位字节做如下图2分配:2字节人员编号+12字节人员姓名拼音编码+2字节单位或部门编码。其中须对人员姓名编码拼音长度约束,否则会出现异常。

这里说明一下16字节数据与ASCII编码的关系。16个字节,1个字节8位,而ASCII码表示的字符正好为1个字节。因此刚好可以将人员姓名信息用ASCII编码来表示。而人员编号和单位部门信息直接用数字表示,无需ASCII编码转换。例如,对人员张三编号,人员编号设置为1001,姓名为zhangsan,单位部门编码为0001,那么经过编码的信息为:10017a68616e6773616e000000000001。其中7a68616e6773616e为zhangsan字符串的ASCII编码。而开头4位1001以及末尾4位0001则分别代表人员编号和部门编码。通过厂家提供demo软件可以将该信息写入到IC卡的空闲数据块内即可完成人员信息存储。

姓名字符串编码使用Python的ord函数直接将字符转换为ASCII码,chr函数可正常解码得到人员姓名拼音。

2.2 人员信息系统处理及实时显示。

上文中人员编码约束了字节数,信息处理时根据人员编码规则对IC卡模块传送的串口信息进行处理即可。树莓派支持Python脚本运行,通过导入pySerial模块来处理串口数据。

通过查阅IC卡模块通讯技术协议(如图3所示),可知IC读卡器模块返回数据包为28个字节数据信息,16字节信息位于11--26位,那么利用Python脚本处理该信息并写入到sqlite数据库里,Python脚本自带sqlite3模块,使用十分便捷。

门禁系统的显示通过搭建PHP脚本服务器实现,具体架构为Linux+Apache+PHP+MySQL。服务器利用PHP脚本来操作sqlite数据库,统计人员信息,并显示在网页上,完成门禁系统的搭建。一旦将该系统接入局域网,可以实现信息局域网内共享。

具体信息处理流程如图4所示。

3 门禁系统整体使用情况

目前,这种门禁管理系统已于2016年3月份成功在某海洋石油平台坞修项目中得到应用和验证,系统完全可用于管理平台修

理期间的上下平台人员。由于平台坞修期间承包商种类及作业人员数量多,作业类型复杂,最高峰时作业人数曾达到280人,为掌控作业人员数量和降低作业风险,必须采用门禁刷卡系统,避免作业人员因为赶工、加班或者违法进入平台作业等因素导致监管丢失而发生意外。

在门禁系统构建完毕后,笔者专门与坞修平台的安全监督、各项目主管梳理项目人员及部门、工种信息,不断完善编码方法,通过对不同单位人员及工种区别编码,充分发挥该门禁系统作用。

由于目前开源硬件系统发展迅速,基于Linux的硬件平台层出不穷,除了树莓派电脑外,还出现了Cubieboard,Nano Pi,Banana Pi,Orange Pi等多种硬件平台,在这些平台上都可以仿照该方法搭建一套门禁管理系统。

4 总结

本文利用树莓派微型电脑的强大功能快速构建并实现了一种门禁系统,并已成功应用,该系统目前可实现人员上下平台信息统计及显示,未来可以通过收集坞修人员的健康信息和特种作业持证信息建立相关数据库,来对人员证件是否在有效期内进行实时监管,一旦证件过期则出现提示和报警,这样可有效防止人员无证上岗。

参考文献

[1]青岛东合信息科技有限公司.RFID开发技术及实践[M].西安.西安电科技大学出版社,2014.

[2] Magnus Lie Hetland.Python基础教程(第2版.修订版)[M].北京.人民邮电出版社,2014.

[3]深圳市昱闵科技有限公司[Z].HF高频读写器系列协议手册V1.0.3

[4]树莓派实验室.在树莓派上搭建LAMP服务[EB].http://shumeipai.nxez.com/2013/10/13/install-and-config-lamp.html

猜你喜欢
树莓派局域网
轨道交通车-地通信无线局域网技术应用
基于VPN的机房局域网远程控制系统
基于802.1Q协议的虚拟局域网技术研究与实现
局域网性能的优化
智能安全防盗探测小车
基于树莓派的高清视频播放器的设计与实现
基于嵌入式技术的农村医疗系统设计