湖南文理学院物理与电子科学学院 郭育军 王先春
基于STM32多功能充值消费一体机设计
湖南文理学院物理与电子科学学院 郭育军 王先春
设计了一种以STM32微处理器为控制中心,智能IC卡为消息载体,读卡器RC522为通信媒介的多功能充值消费一体机。系统硬件包括:STM32微处理器最小系统、液晶屏显示系统、独立按键、EEPROM存储器、IC卡读写模块;系统驱动(软件)包括:液晶显示、键盘服务、读写IC卡、读写EEPROM等软件模块。经过测试,充值消费一体机系统可以实现系统初始化、注册、查询、充值、消费、挂失与解挂、公交收费功能。
STM32;MF-RC522;射频IC卡;充值消费一体机
射频刷卡消费系统是一种使用射频识别技术的绿色消费系统,它能反复使用、操作简单、自动化,可以减少收费过程中的管理成本和节省人力资源,主要用于解决公共场所消费收取现金不便和收费补钱繁琐等问题。
2.1 系统的硬件组成及工作原理
图1 系统的硬件组成框图
系统以微控制器STM32为控制中心,处理整个系统的命令和数据。读写器RC522应用射频识别技术发送和接收射频信号,建立系统与射频卡通信的桥梁,第二小节我们将对RFID技术进行介绍。当用户使用键盘对系统功能进行操作时,微处理器会发送相应命令与数据控制读写器内部发送器驱动读写器天线与射频卡通信以及内部接收器对射频信号进行解调和译码,从而对射频卡进行读/写、对射频卡内值块进行加值和减值等操作。射频卡本来是与系统分离的,单独使用没有任何意义,但当射频卡在系统注册后,它会成为系统用户的凭证,系统会把射频卡的用户信息(卡号、用户号、消费记录)记录在外设EEPROM存储器,下次使用时,系统就能识别注册过的射频卡,只有注册过射频卡才能对卡进行查询、充值、消费、挂失和解挂功能。为提高系统安全性,系统默认有一张管理员卡,管理员卡的信息已经写进系统程序,当使用注册、充值、挂失和解挂、对系统进行系统初始化的系统功能时,要刷管理员卡才能进行操作。
2.2 RFID技术简介
射频识别技术RFID是"RADIO FREQUENCY INENTIFICATION"的缩写,这项技术的组成分为处理与传输数据系统、电子标签、读写器三部分。处理与传输数据系统就是对于标签反射的无线电波进行接收然后对数据进行读取,电子标签存储着被识别物体的相关信息,它锁存储的信息就是通过读写器的非接触方式读/写。读写器就是利用射频技术读/写电子标签信息的设备。读写器读出的标签信息可以通过计算机或微处理器,以及网络系统进行管理和传输。RFID的工作原理如图2所示。
3.1 微处理器主控模块
系统选用ST公司的32位基于ARM核心的STM32zet6微处理器,与传统8051单片机性能比较,其工作频率高,执行速度更快,内部集成11个定时器、13个通信接口(I2C、USART、SPI等)对完成系统设计所需资源绰绰有余。开发方式既可选择传统直接配置寄存器开发,也可选择库函数开发。
3.2 读卡器MF-RC522
MF-RC522 是高度集成的非接触式(13.56MHz)读写卡芯片。此发送模块利用调制和解调的原理,并将它们完全集成到各种非接触式通信方法和协议中(13.56MHz)。MF-RC522的内部发送器部分可驱动读写器天线与 ISO 14443A/MIFARE 卡和应答机的通信,无需其他的电路。接收器部分提供一个功能强大和高效的解调和译码电路,用来处理兼容 ISO 14443A/MIFARE的卡和应答机的信号。
3.2.1 读卡器MF-RC522的功能
MF-RC522发送模块支持具有多种传输速率和调制方法的 ISO 14443A/MIFARE的读写器模式。ISO 14443A/MIFARE的读写器模式是遵循ISO 14443A/MIFARE规范的卡通信的常用读卡器。
3.2.2 微处理器与读卡器通讯
微处理器要对读卡器进行控制,必须建立它们之间的通信。首先进行硬件电路连接,选用SPI接口使能MF-RC522和微处理器之间的高速串行通信。然后根据RC522的SPI通信时序编写微处理器对读卡器读/写数据的软件驱动程序。
3.3 射频卡
3.3.1 射频卡S50简介
S50卡是可以存储1K位EEPROM的非接触式IC卡,读写距离为10cm以内(与读写器有关)。介绍如下:(1)S50卡分为16个扇区,每个扇区由4块组成(块0、块1、块2为数据块,块3为控制块),16个扇区的64个块按绝对地址编号为0~63.(2)第0扇区(绝对地址0块)用于存放厂商代码,已经固化,不可更改。(3)每个扇区的块0、块1、块2为数据块,可用于存储数据。数据块有两种应用:1)用作一般数据保存,可以进行读、写操作。2)用作数据值,可以进行初始化值、加值、减值、读值操作。当数据块用作数据值时,程序设计初始化块(共16字节)的格式为:4字节金额 + 4字节金额取反+ 4字节金额 + 1字节块地址 + 1字节块地址取反 + 1字节块地址 + 1字节块地址取反。(4)每个扇区的块3为控制块,包括密码A、存取控制、密码B。(5)每个扇区的密码和存取控制都是独立的,可以根据实际需要设定各自的密码及存取控制。存取控制为4个字节,共32位,扇区中每个块(包括数据块和控制块)的存取条件是有密码和存取控制共同决定的,在存取控制中每个块都有相应的三个控制位,三个控制为以正和反两种形式存在于存取控制字节中,决定该块的访问权限(如:进行减值操作必须验证KEY A,进行加值操作必须验证KEY B,等等)。
3.3.2 读写器与射频卡通讯
读写器与射频卡S50通讯,命令由读写器发出,根据相应区读写条件受数字控制单元的控制。
3.4 存储模块
充值消费一体机系统需存储用户卡的信息和消费数据,所以系统需具备数据存储功能。AT24C02是一个2K位串行CMOS EE-PROM,内部含有256个8位字节,虽然AT24C02存储空间偏小,但不影响系统功能的实现。AT24C02有一个8字节页写缓冲器,该器件通过IIC总线接口通信进行操作,有一个写保护功能,可进行单个字节读写,使用方便,数据存储安全,不易丢失。
3.5 其他模块
键盘实现的功能是输入,系统采用软件设计简单和实时性好的独立式键盘。分布"功能切换","功能确认","0~9"十个数字键,以及"输入确认"键。用户可以通过键盘切换和确认系统功能,输入注册时的用户号以及充值和消费的金额等。显示模块,使用3.2寸彩色液晶显示屏,为用户提供菜单操作界面和显示系统当前状态。
4.1 系统整体功能
图2 系统整体功能框图
4.2 主菜单功能切换与确认程序设计
由4.1可知,系统分为8个功能,当使用系统时,只能从系统中选用一个功能,此时就需要一个主菜单功能的界面程序,可以对功能进行切换和确认,程序流程图如图3所示。
4.3 功能具体实现程序设计
图3 主菜单功能切换与确认程序框图
在主菜单界面选定并确认功能后,进入功能函数,用户根据液晶显示屏的提示进行操作。由于系统功能过多,这里只对系统的查询、注册、充值和消费功能进行分析。
图4 查询功能程序框图
图5 注册功能程序框图
图6 充值功能程序框图
图7 消费功能程序框图
4.4 系统人机交互的数据处理
用户从键盘输入(用户名、充值和消费金额)的是十进制数,存储器AT24C02和射频卡存储的数据是十六进制数组,当系统进行人机交互时,就要对系统内数据进行处理。所需数据转换有:十进制整数转十六进制数组(十进制数 十六进制字符串 十六进制字节数组)和十六进制转十进制整数。
系统测试是检测系统实际功能与预想要实现功能是否一致的途径,通过观察测试结果,才能判断程序程序是否无误。本次系统开发过程中,测试方法是观察显示屏显示的结果和使用串口调试。串口调试对单片机系统开发很重要,它能把看不见摸不着的单片机数据和外设数据通过串口在电脑上输出。下面通过对系统注册功能进行测试,验证一下系统功能,步骤如下:(1)进行串口设置(115200 8-N-1),将PC与系统进行连接。 (2)首先使用系统的系统初始化功能,对EEPROM存储器AT2402中所有数据置零。(3)使用系统的注册功能,注册时使用RFID卡号30 5E 3B 16的卡片,注册用户名为111,注册成功后EEPROM读出的数据如图8所示,对射频卡进行查询,系统实物显示屏输出结果如图9所示。
图8 卡注册成功图
图9 查询刚注册射频卡实物图
数据解释:EEPROM第0个字节01代表的是系统所有注册的卡个数;第1到第4个字节是RFID卡的卡号(30 5E 3B 16);第5个到第8个字节是十六进制数(00 00 00 6F),转换为十进制数是111;第9个字节是解挂和挂失的标志位,当数据为0是解挂状态,卡可以正常使用,当数据为1是挂失状态,只能进行查询,不能使用其他功能;第10个字节是判断当前卡是否有效的标志位,1为有效卡,0为无效卡。
虽然系统功能基本完成,但程序设计一定会存在不足,每一个不注意的细节都会产生bug,影响系统稳定性。IC卡消费系统存在问题还有以下几个方面:(1)由于缺乏IC的读写设计经验,对IC卡操作的理解比较浅,本次设计并未对IC卡消费系统进行加密设计,而实用系统必须具备加密,才能保证充值和消费的安全性。(2)系统刷卡反应稍慢,刷卡速度有待优化,需删减一些重复或无用的程序操作。
[1]MF-RC522非接触式读写卡芯片中文简介[J]。广州周立功单片机发展有限公司,2007,3.
[2]康华光。电子信息技术基础模拟部分(第五版)[N]。北京:高等教育出版社,2006.1
[3]康华光。电子信息技术基础数字部分(第五版)[N]。北京:高等教育出版社,2006.1
[4]谢维成,杨加国。单片机原理与应用及C51程序设计(第2版)[N]。北京:清华大学出版社,2009,7.
[5]刘火亮,杨森。STM32库开发实战指南[N]。北京:机械工业出版社,2013,5.
[6]MF-RC522 Contactless Reader IC[J]。 Philips Semiconductors, 2007,1-2.
[7]李峰,谢中科。C语言程序设计[N]。上海:复旦大学出版社,2012,7.
[8][美]Stephen Prata著,云巅工作室译。C Primer Plus(第五版)中文版[N]。北京:人民邮电出版社,2005,2.
王先春。
国家自然科学基金青年项目(41304098);湖南省光电信息技术校企合作创新创业教育基地资助项目(湘教通〔2016〕394号);湖南文理学院教研项目 (JGYB1314)。