基于嵌入式和RFID技术的电子门票系统
扫描二维码
随时随地手机看文章
摘 要: 介绍了通过在ARM+μClinux+Web+SQLite平台下扩展CAN总线,并以RFID读卡器作为控制节点而实现的电子门票系统。一方面可以方便持卡者查询门票使用情况、场所路线以及馆内人流量,帮助其更好地选择相关路线;另一方面有助于举办方实时了解各片区的人流情况及追踪目标,以便做出调度和提高安防工作效率。
关键词: RFID;CAN总线;ARM;Web Server;SQLite
由于RFID电子门票具有防伪性能好、可靠性高、适应性强、成本低等特点,已被普遍应用于各种大型公共活动中。本文提出一种经济型、基于嵌入式技术的RFID电子门票系统。
1 RFID的原理
射频识别(RFID)利用射频信号的空间耦合或反射的传输特性,对被识别物体自动识别,是一种非接触式自动识别技术。RFID主要由电子标签(Tag)和阅读器(Reader)两部分组成。电子标签由耦合元件和芯片组成,其工作能量来源于阅读器发出的射频脉冲,通过无线电波与读写设备进行数据交换。阅读器主要由无线收发模块、天线、控制模块和接口电路组成,其主要任务是控制射频模块向电子标签发射读取信号,并接收电子标签的应答,对电子标签的标识信息进行解码,将标识信息及其他相关信息传输到主机以便处理。该系统选用低频(125 kHz)RFID系统,性能不受环境影响,价格低廉,因此适合大规模生产使用。
2 CAN总线技术[1]
CAN是由ISO定义的串行通信总线,具有高位速率、高抗电磁干扰性、高可靠性等特点,而且能够检测到产生的任何错误。CAN在微控制器之间互相通信或微控制器与远程的外围器件互相通信的情况下是一个理想的解决方法。CAN相比于RS485采用了新技术及独特的设计,具有多主节点的网络特性,总线利用率高,数据传输速度快,可扩充性好,通信距离长,具有可靠的错误处理和检错机制,个别节点失效并不影响整个通信网络的运行,实时性好。因此在自动化各个行业,CAN取代RS485将是一种不可逆转的趋势。
3 ARM+μClinux平台下实现动态Web[2]
在μClinux环境下,httpd、thttpd和Boa是三个主要的Web服务器。这里选择非常适合嵌入式系统的Boa Web服务器,它支持认证、CGI等。Boa是一个单任务的http服务器,μClinux代码已经自带了Boa的源码,配置和修改源码后,在配置内核时把Boa选进内核实现入网,通过浏览器就可以访问嵌入式网页。
迄今,实现动态Web页面有CGI、ASP、PHP和JSP四种技术可供选择,由于目前μClinux还不支持ASP、PHP等动态Web页面技术,因此本设计选择CGI。CGI提供Web服务器一个执行外部程序的通道,这种服务端技术使得浏览器和服务器之间具有交互性。CGI程序接收Web浏览器发送给Web服务器的信息,进行处理后执行相应的任务。本系统选择与平台无关的C语言编写CGI程序。
4 嵌入式数据库SQLite及其在μClinux上的移植[3]
4.1 嵌入式数据库SQLite简介
嵌入式数据库SQLite较其他大型数据库的特点是程序直接调用相应的API实现对数据的存取操作,无需独立运行的数据库引擎。SQLite不具有外部依赖性,完全独立,并且提供了对SQL92标准的大多数支持:支持多表和索引、事务、视图、触发和一系列的用户接口及驱动。在嵌入式系统中移植SQLite数据库成为一种很好的解决方案。
4.2 SQLite开发技术
SQLite本身提供了C语言的API接口,使得对数据库的操作十分简单,主要是对3个API函数的调用。
(1)打开数据库
int sqlite3_open(const char*filename,sqlite3**ppDb);
sqlite3_open()用于打开指定的数据库,数据库文件名称由filename参数指定,并通过ppDb参数返回合法的数据库句柄。
(2)执行数据库
int sqlite3_exec(sqlite3*,const char *sql,sqlite_callback, void*,char**errmsg);
第一个参数sqlite3*是前面open函数得到的指针。第二个参数const char*sql是一条SQL语句或多条SQL语句,语句间必须用“;”号隔开,以 结尾。第三个参数是回调,当这条SQL语句执行之后,SQLite3会调用该回调函数。第四个参数void*是传递给回调函数的参数,如果不需要传递指针给回调函数,可以赋NULL给该参数。第五个参数char**errmsg用来保存错误信息。
(3)关闭数据库
int sqlite3_close(sqlite3*db);
参数db就是打开时的结构体,即数据库句柄。
4.3 SQLite应用程序交叉编译
要将嵌有SQLite的CGI程序应用到S3C44b0+μClinux开发平台上,必须对CGI程序进行交叉编译。由于交叉编译要用到romfs格式的libsqlite.a库文件,因此必须先对SQLite源代码进行修改,以便生成静态库文件libsqlite3.a。然后交叉编译生成cgi格式文件,与内核一起编译后下载到开发板。
5 电子门票系统的设计
在S3C44B0+μClinux+Web+SQLite嵌入式平台下,通过CAN总线与RFID读卡器进行通信。整体构架如图1所示。该系统可以分为两个模块:第一部分为各个场所的刷卡点,包括CAN总线和RFID读卡器的设计,该模块的功能是采集数据。第二部分为ARM嵌入式远程控制功能,实现数据的读取、储存以及处理,数据包括CAN总线数据和Web内建表单数据。