基于ARM+GPRS的IC卡自动售货机的设计与应用

    基于ARM+GPRS的IC卡自动售货机的设计与应用


    自动售货机方便快捷,可以每天24小时售货,被称为“永不下班的超级营业员”,这种前卫的零售方式在发达国家已经十分普及。我国从90年代初期从国外引进第一台自动售货机到现今国内自主研发或代理国外的自动售货机,已经开始遍布机场,商场等一些公共场所。然而这些售货机终端大都采用CAN总线或采用485总线连接控制主机,由于分布零散等因素造成系统的建设投资大、运营费用高监控维护不及时等缺点,另外这些售货机都存在只接受硬币和小额面值钞票等缺点,直接影响了自动售货机的销售数量,间接制约了其发展速度。针对这种情况现提出采用现代前沿的GPRS无线网络通信技术与非接触式IC卡相结合的方式,由于GPRS网络采用分组交换技术特别适合于间断的、突发性的或频繁的、少量的数据传输,也适用于偶尔的大数据量传输。具有永远在线、信号质量好、快速登录、按流量收费等特点,保证了系统的实时性和稳定性,同时采用IC卡的交易方式对于消费者十分便利,因此研究开发基于这种方式下的各类自动售货机具有明显的现实意义和商用价值。
        1系统网络方案
        从整体角度来看,采用C/S结构来组网。C/S模式主要由客户程序Client、服务器管理程序Server和中间件Middleware 3个部件组成。客户应用程序是系统中用户与数据进行交互的部件。服务器程序负责有效地管理系统资源,C/S的优点主要就是交互性强、提供了安全的存取模式及网络通信量低。基于GPRS移动网络的自动售货机可分为售货机终端、GSM/GPRS网络、INTERNET网络和服务器四大块。如图1所示。

        组网方案:向中国移动申请APN专网业务,分配专用的APN并申请绑定移动内网的固定IP地址。服务器用MODEM拨号上网,得到其公网固定IP;自动售货机直接向服务器发起TCP连接。
        这种方案结构简单,中间环节少,容易实现,利用CRC校验实现数据的安全传输。利用程序设计实现数据的等间隔传输,且实时性完全可以保证,即使发生数据丢失,也可以利用重发的方式来补偿。
        2硬件电路设计
        2.1硬件概述
        刷卡自动售货机工作流程大概如下:首先用户选择所要的商品按下相应的按键之后选择投币或者刷卡,如果用户选择刷卡则自动销售完之后显示用户卡余额,及语音提示物品领取等信息。因此根据售货机的销售特点将硬件分为两大部分:主板模块和驱动模块,驱动模块主要包括所要驱动的控制对象,包括直流电机、电磁开关、硬(纸)币机及液晶显示屏等。主板主要用于用户的刷卡消费及数据的上传以及完成对驱动板的各种控制指令,现主要介绍主板的设计过程。
        设计的目的是要实现自动售货机刷卡消费并将消费信息、交易明细等记录通过GPRS上传,充值列表、黑名单列表等控制信息也通过GPRS下传到售货机。因此按功能分为射频卡读写子模块和GPRS通信子模块。两个模块都直接与自动售货机的主控制器相连,这种设计方案具有硬件实现简单,易于调试另外为软件的编写也提供了很大的便利,这一切应归功于近年来基于ARM7内核的微处理器的广泛应用。另外系统还需有数据存储部分,时钟部分以及电源部分和接口部分电路构成,整体结构见图2。 

        2.2硬件选取与设计
        2.2.1微处理器选型:单片机是整个系统的核心,其性能会直接影响到整个系统的性能。为了满足串口、程序运行的快速性、内带大容量的flash以及调试方便等要求,MCU选为PhilipsLPC2292,LPC2292是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI—STM的CPU,并带有256 k字节(kB)嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行损失很小。包含2个16C550工业标准UART,通过片内boot装载程序实现在系统编程(ISP)和在应用编程(IAP)等优点。在系统中LPC2292主要作用如下。 
        (1) 通过串口1与SIM300C模块相连,通过AT指令完成对SIM300C的初始化以及基于TCP/IP协议的数据收发功能。
        (2) 串口2扩展MAX3232标准串口与驱动板相连,完成对驱动板的控制。
        (3) 扩展刷卡接口完成与刷卡模块之间的相互通信从而控制驱动电路和驱动SIM300C模块进行数据的传输。
        (4) 根据远程控制指令完成其他操作。
        2.2.2 通信模块的设计:通信模块部分选用SIMCOM有限公司提供的SIM300C GPRS模块。具有标准AT指令接口,自动检测SIM卡(包括6脚和8脚SIM卡),可以提供GSM语音、短消息和GPRS上网等业务。与LPC2292之间通过AT指令来通信。该模块体积小,便于安装,另外SIM300C最大的特点在于内嵌TCP/IP协议,特别适合于数据传输方面,方便用户的使用,降低了产品开发成本,缩短开发时间。为提高GPRS模块的稳定性和抗干扰性,应在SIM卡座和SIM300C接口部分敷铜并且两者之间的距离不应超过10 cm,电源和地线采用50 mil走线为好。SIM300C的工作电压在3.4—4.5 V之间,在突然数据传输发生时必须要保证提供给模块2A的尖峰电流,处理好这些问题后SIM300C在点火启动后便可以正常工作。
        2.2.3数据存储及时钟部分设计:数据存储部分用来对消费信息,刷卡数据,黑名单等一些数据保存,防止在GPRS网路故障和突然断电的情况下造成数据的丢失。在此选用了1 M X16大小的CMOS多功能Flash(MPF)芯片SST39VFl60(TSOP封装),此j签片具有10 000个周期的耐用性和大于100年的数据保持时问,编程或擦除的操作电压为2.7—3.6 V,符合1M×16存储器的JEDEC标准的管脚分配。由于自动售货机上传的交易信息中需要有时间信息,因此要设计时钟电路部分来记录详细的事件发生时间,在此选用DALLAS公司的涓流充电芯片,内含一个实时时钟/日历和31字节静态RAM,为了防止外接电池的充电,应该在其正极放置二极管,另外也可以用程序来控制反充电。
        2.2.4接口部分和电源部分的设计:为了调试程序及下载程序的方便,必须拓展ARM7TDMI JTAG调试接口,调试系统包括:调试主机、协议转换器和调试目标。调试主机是一台运行调试软件(如ARM公司开发的ADS调试软件)的计算机。调试主机可以发出一些高层次的调试指令,如设置断点、访问内存等。协议转换器(MULTI-ICE)用来将调试主机发出的高层次调试指令转换成底层的ARM JTAG调试命令。调试目标在此就是指基于ARM7TDMI内核的LPC2292目标开发板。经过协议转换器进行命令解释主机运行的调试软件就可以通过mG接口直接和ARM7TDMI内核对话。极大地方便了程序的调试。
        为方便与驱动板的通信,还必须在主板上拓展一个9针串口,具体电路很简单,在此不做介绍。对于一个系统来说,电源部分是至关重要的,在本系统中模块分别需要5 V,3.3 V以及1.8 V的电压支持。其中5 V电压由开关电源构成,只有得到纯净的5 V电压才能得到其他两种电压,其它两种电压由模拟电源构成。5 V的电压供给刷卡模块、串口等;3.3 V,1.8 V分别供给LPC2292的内核以及I/O口。电源输入端采用(8—40)V的直流电源供电,选用LM2676系列电源芯片来获取5 V电压,选用AMSlll7—3.3 V和AMSlll7—1.8 V来获取3.3 V和1.8 V的电压。各种电压的输出口与地应该接入三个0.1μf的去耦电容。
        2.2.5刷卡模块的设计:由于刷卡模块的重要性需要单独制作一快高频板,刷卡模块的核心芯片为RC500读卡芯片和支持在线编程的STC89LES58RD+单片机。可很好的支持对非接触式Ic的操作。通过主板拓展的5针插口与其通信。
        3软件设计
        软件主要采用C语言编写,除完成对ARM芯片及各个子模块的初始化之外主要编写与服务器之间的通信程序,软件必须保证数据传输得可靠性、安全性以及GPRS通信链路得稳定性等问题。主流程图如图3所示。 
        

        3.1数据处理及错误控制
        自动售货机与服务器问的通信为一种扩展的Client/Server(C/S)模式,Sever作为主,主动向作为Client的售机发送指令,再根据售货机回应进行相应的处理。其相应的错误控制机制如下。发送方只在收到对方的错误应答时才重发,超时未收到对方应答不进行重发,如果超时无应答,发送方即切断当前链路,从而抛弃了原有链路中可能延后到达的垃圾数据,出现此情况时,放弃本次通信任务,向上层返回错误,迫使售货机重建新的链接,使收发双方重新初始化缓冲区并在新链接上重新开始通信,数据报文格式如图4。 
        
        字段简要说明
        报头标志:前三字节固定,后两字节为协议版本号。
        报文长度:表示从报头到校验和的整个报文长度的16进制数。
        报文S.N:接收的数据报文的报文序列号报文类型:接收的数据报文的报文类型
        VM ID:自动售货机编号,10位定长BCD格式数字代码。
        应答字:比如11为应答成功;BitO一7位置0时表示相应处理出错
        附加内容:自定义内容,对不同的报文类型的应答有不同的内容定义。
        CRC交验和:不包括校验和本身的CRC校验和与报文中的CRC校验和相等为正确。
        所有的管理命令报文均为简短的命令,售货机则应立即用简短的应答予以确认,即便是为了实现与售货机的数据交换,也不由管理命令报文本身完成,管理命令只是用于向售货机下达通知,需进行的实际数据交换工作在收到售货机回应命令后在进行处理,对时钟同步命令售货机必须立即执行。图6、图7是GPRS接受数据和发送数据的流程。
         
         3.2软件设计要点
        SIM300C是SIMCOM有限公司开发的支持GPRS上网、GSM语音及支持标准AT指令的模块,因此编程应用很方便。SIM300C也是通过标准的232接口和MCU通信的,具体的指令系统是AT指令集。通常情况下为了简化硬件的设计而采用3线制232接口。也就是是说没有多余的硬件措施来检测SIM300C的串口是否正常工作。然而SIM300C只有在串口功能被打开的情况下才能正常的发出命令,而在有些时候是会关闭串口的,比如电压突然过低(这在搜索网络或拨打电话时有可能出现)或者温度的影响等等。在这些情况下,SIM300C的串口就关闭而不能工作了。如果在这时在等待AT指令的返回,程序很有可能就进入死循环。为此必须加入超时控制的代码来避免这种情况的发生,也就是在发送完一条AT指令后。在规定的时间范围内等待接收SIM300C对该条指令的回应,结合系统实际运行证明这完全是可行的。
        另外在实际应用中发现,一旦由于某种原因SIM300C不工作了,这时候最可靠的方法是重新启动SIM300C,触发点火信号,让其重新工作。
        4结论
        目前,介绍的基于GPRS网络的刷卡自动售货机已投入运行,部分通讯数据还在调试,该系统能够及时将用户的刷卡消费记录、黑名单以及与管理中心之间的通讯数据都能够及时上传和下传,管理中心能够及时了解分布在各点的售货机的运行情况,方便维护,该系统具有成本低廉,功能易于扩展,在即将到来的基于无线的自动售货机市场有广泛的应用前景。