基于CAN和2.4G的RFID收费系统
1 引言
RFID(Radio Frequency IDentification)技术,即射频识别技术,是一种通信技术,目前广泛应用于各种收费场合,例如:公共交通收费系统,停车场收费系统等等。目前使用RFID 技术的系统通常使用RS-485 和PC 端进行数据交互,但是RS-485 使用单主节点,采用轮询方式,因此存在实时性较低和通讯效率低的问题。
随着计算机科学水平的不断飞跃和工业发展的需要,工业控制系统经历了基地式仪表控制系统、集中式数字控制系统、集散控制系统到现在广泛使用的现场总线控制系统的转变。CAN(Controller Area Net)总线是一种基于串行通信网络的现场总线。CAN 总线采用多主工作方式,网络上的任意节点可以在任意时刻向网络上的其他节点发送信息。同时,CAN 总线采用非破坏性仲裁技术,当两个或者更多的节点同时向网络上传送数据,优先级低的节点将停止发送,直到优先级高的节点发送完数据后再发送,这样有效地避免了总线竞争。CAN 通信距离最远可达10km/5kbps,通信速率最高可大1Mbps.CAN 的每帧数据都有CRC校验或者其它检测方式,保证了数据通信的可靠性。
当一个CAN 节点发生严重错误时,该节点会自动关闭,从而不影响其它节点的正常工作。因此,CAN 总线具有可靠性强,实时性高和效率高等优势,完全能够取代RS 485 总线。
考虑到在实际应用环境中,为了减少大量的布线工作,使用2.4G 无线网络作为数据从RFID 到CAN总线之间传输的中转站。无线技术具有成本低、灵活性高、可靠性高和安装时间短等特点。本次设计使用选用nRF24L01 组建无线通信网络,该芯片支持多点通信,在接受模式下可以接收6 路不同通道的数据。
也就是无线网络的接收端可以接收6 个不同发送端的数据,发送端的数据是通过RFID 模块获得。
基于以上的讨论,本文将给出一种基于CAN 总线和2.4G 无线网络的新型RFID 收费系统。
2 硬件系统设计
2.1 系统拓扑结构和系统组成
2.1.1 系统拓扑结构。
如图1 所示,RFID 设备的相关数据将通过无线网络传送至CAN 收发器,后者再将数据通过CAN 总线传送至PC 机,PC 机采用带有CAN 接口的PCI-E 扩展卡。此外,无线通讯芯片nRF24L01 在接受模式下可以接收6 路不同通道的数据,以此来实现一个CAN节点最多控制6 个RFID 终端设备的数据传送。在6个RFID 收费终端不能满足需求的情况下,可以添加更多的节点,所有节点挂载在CAN 总线上,通过CAN总线,每个节点将数据传送至PC 端。
2.1.2 系统组成。
本系统(CAN 节点)有两个子系统组成。B 子系统由单片机、RFID 模块、无线模块、看门狗、液晶屏、时钟模块、按键和EEPROM 组成。微控制器(MCU)控制RFID 模块对Mifare 1 卡进行读写操作,无线模块将有关的数据发送给A 子系统。A 子系统由单片机、无线模块、看门狗和CAN 模块组成。MCU 将经由无线模块接收到的数据通过CAN 模块发送至PC 端。由于一个节点最多可以控制6 个RFID 设备终端,因此在一个完整的系统里,A 子系统只有1 个,而B 子系统最多可以有6 个。
2.2 微控制器
微控制器选用STC89LE58RD+,它具有4 个8 位并行I/O 端口P0~P3,1 个4 位并行端口P4,32KB FLASHROM,1280 字节RAM,3 个定时器,8 个中断源和4个中断优先级的中断系统。其性能完全满足设计所需。
2.3 CAN 模块
CAN 总线的硬件实现选用飞利浦公司的SJA1000和PCA82C250.
2.3.1 SJA1000 芯片介绍。
SJA1000 是一个独立的 CAN 控制器。它支持PeliCAN 模式扩展功能(采用CAN2.0B 协议),具有11 位或 29 位标识符,64 字节的接收FIFO,具有仲裁机制和强大的检错能力等。
2.3.2 PCA82C250 芯片介绍。
PCA82C250 是CAN 总线收发器,它主要是为汽车中高速通讯(高达 1Mbps)应用而设计。它可以抗宽范围的工模干扰和电磁干扰(EMI),降低射频干扰(RFI),具有热保护功能。最多可以连接110 个节点。
2.3.3 硬件接口连接。
如图4 所示,P1 口作为复用的地址/数据总线连接SJA1000 的AD 口,P2.0 和SJA1000 的片选段CS 相连,使得SJA1000 作为单片机外围存储器映射的I/O器件。此外,SJA1000 的RX0、TX0 和PCA82C250的RXD、TXD 相连。
2.4 无线模块
2.4.1 nRF24L01 芯片介绍。
无线芯片选用nRF24L01.它是2.4GHz 无线射频收发芯片,传送速率高达2Mbps,支持125 个可选工作频率,具有地址和CRC 校验功能,提供SPI 接口。
有专用的中断管脚,支持3 个中断源,可向MCU 发出中断信号。具有自动应答功能,在确认收到数据后记录地址,并以此地址为目标地址发送应答信号。支持ShockBurstTM 模式,在此模式下,nRF24L01 可以与低速MCU 相连。nRF24L01 在接收模式下可以接收6 路不同通道的数据。
2.4.2 nRF24L01 硬件接口连接。
如图5 所示,单片机通过模拟SPI 总线时序和nRF24L01 进行通信。其外部中断管脚IRQ 和单片机的P3.2(外部中断0)相连。
2.5 RFID 模块
2.5.1 MF RC500 芯片介绍。
RFID 模块选用飞利浦公司的MF RC500,它是目前广泛使用的RFID 芯片之一。MF RC500 支持ISO14443A协议,支持MIFARE 双接口卡,内部有高集成度模拟电路用于应答卡的解调和解码,具有64 字节收发FIFO 缓冲区和非易失性密钥存储器。此外,有专用的中断管脚,支持6 个中断源,可向MCU 发出中断信号。
2.5.2 MF RC500 硬件接口连接。
由图6 所示, MCU 将MF RC500 中的寄存器作为外部RAM进行访问。INT 管脚悬空,不使用中断功能。
3 软件系统设计
在初始化单片机程序中,子系统A 外部中断设置为低电平触发,子系统A 的中断信号源由nRF24L01提供,当nRF24L01 收到数据后产生中断信号,通知MCU 来读取数据。子系统B 不使用中断功能。
在初始化nRF24L01 程序中,子系统B 配置为发送模式,使用16 位CRC 校验。使用自动应答功能,数据通道0 被设置为接收应答信号,其数据通道0 的接收地址必须与发送端的地址相等,以此来保证能正确的收到应答信号。一个系统最多可以有六个子系统A 组成,这6 个子系统的发送地址不能重复。子系统A 配置为接收模式,使用16 位CRC 校验,最多接收6 个通道的数据。这6 个接收地址和各子系统B 中的发送地址相等。
在初试化SJA1000 中,使用PliCAN 模式,波特率125Kbps,禁止接受和发送中断;输出控制寄存器配置如下:正常模式,TX 下拉,输出控制极性。此外,需正确配置验收代码寄存器和验收屏蔽寄存器,此配置用于CAN 总线仲裁功能的实现。
在初始化MF RC500 中,其主要设置如下:TX1和TX2 的输出配置为13.56MHz 能量载波;解码器的输入源为内部解调器;使用Q 时钟作为接收器时钟;禁止发送和接收中断;设置RxThreshold 寄存器值为0xFF,BitPhase 寄存器值为0xAD 等。
复位请求函数将在天线的有效范围内搜索Mifare1 卡,如果有卡存在,将建立通信连接并读取卡上的卡片类型号TAGTYPE.防碰撞函数使MF RC500 在多张Mifare 1 卡选择其中的一张。卡选择函数能够和已知序列号的卡进行通信。认证函数将Mifare 1 卡上的密码和MF RC500 的EEPROM 中的密钥进行匹配。
只有匹配正确后,才能进行对卡的读写操作。发送停机指令设置Mifare 1 卡为HALT MODE.
CAN 函数用于将有关数据发送至PC 机。本次设计采用查询方式以确保数据已经发送。通过查询状态寄存器中的标志位TBS、TCS 和TS 即可确认是否数据发送完毕。类似的,在无线函数中为确保数据已经发送,通过查询状态寄存器中的TX_DS 即可。
4 系统测试
首先,对RFID 模块进行了测试。将MIFARE 1卡放入天线有效范围内,对该卡进行读写操作,并将相关数据显示在液晶屏上。经过该测试,RFID 模块读写正常。 随后,测试该系统传输网络的实时性,本文以温度数据的无线传输进行测试。测量温度的装置为DS18B20 单线温度传感器。将该温度传感器连接至子系统B 中,温度传感器每隔一秒对室内温度采样一次,微控制器读取温度数据并通过无线网络发送给A 子系统,A 子系统接收数据并通过CAN 总线发送至PC 端。
PC 端使用Visual Basic 6.0 编写上位机程序,上位机将温度数据绘制成曲线并写入文本。温度曲线如图8 所示,其中温度值的精度为1 摄氏度。通过对温度曲线图和文本数据的对比观察,发现温度数据无异常, 数据没有出现丢失情况。
5 结语
本文利用了CAN 总线取代RS-485 总线,克服了后者存在的缺点。同时还使用了无线技术,在减少大量布线工作的同时,充分利用了nRF24L01 多点通讯的功能。在系统搭建完成后,笔者对系统进行了长时间测试。测试结果表明:数据传输稳定,可靠,实时性高,克服了传统基于RS485 总线设计的RFID 收费系统的缺陷,具有较强的使用价值。