1 系统的整体构成
公交车远卡自动收费系统总体分为两大部分:公交卡和车载系统。公交卡主要由nRF24LEl射频模块和唤醒电路组成;车载系统主要由主处理器STM32、GPS定位模块、液晶显示电路、存储电路、语音报站电路、唤醒电路等构成。系统总体结构如图1所示。
当乘客携带公交卡上车经过车载系统时,公交卡的ATA5283唤醒电路接收到车载系统读卡器端ATA5276芯片发送的125 kHz电磁波后,激活处在睡眠模式下的公交卡,公交卡进入发送模式,将自己的ID号、卡内金额发送给车载系统。车载系统给公交卡发送信息,蜂鸣器响一下表示刷卡成功,并在液晶屏显示成功信息。同时,车载系统将此公交卡的ID号、金额、上车位置保存在AT24C512存储器里,当乘客要下车将公交卡再次靠近读卡器时,公交卡再次被唤醒并向车载系统发送数据。车载系统的处理器根据此公交卡的ID号找到上车时刷卡的信息来计算所需要扣费的金额,并向公交卡发送扣费数据;同时,会将本次乘车信息保存在数据库中,以备查询使用。公交车到达终点站后将会进行复位操作,如果有乘客下车时未能感应上,则按照到达终点站的路程进行扣费。
2 系统主要部分硬件实现
2.1 公交卡的硬件设计
采用nRF24LE1作为标签芯片,ATA5283作为唤醒芯片组成公交卡的硬件电路。nRF24LE1是一款带有处理器的2.4 GHz收发芯片,在一个很小的芯片上集成了51内核和nRF24L0 1收发内核,与nRF24L01采用相同的内嵌协议和GFSK调制方式,具有串口、SPI、I2C、PWM发生器、随机函数发生器等丰富的外设资源,该芯片功耗极低且具有非易失性数据存储器。
ATA5283是一款检测灵敏度高和功耗超低的125kHz无线唤醒芯片,具有1 mV的灵敏度,在待机侦听125kHz数据状态时,功耗仅为1~2μA,在接收125 kHz数据的过程中,功耗为2~4μA。在接收125 kHz数据时,至少检测到125 kHz载波持续时间为5.64 ms才进入正常工作模式。其中,前1.54 ms的载波周期的时间用于唤醒此芯片,后4.1 ms的载波周期用于进行自增益调整,把接收信号的放大增益调整到合适的值。两者再加上纽扣电池等外围电路构成了有源式公交卡,能实现远距离的信号发射与接收。公交卡硬件电路如图2所示。
在没有检测到125 kHz信号时,ATA5283芯片以非常低的功耗处于待机模式。在此模式下,COIL引脚的天线端一直在检测是否有载波信号到来,N_DATA和N_WAKEUP引脚为高电平,复位引脚RESET处在低电平状态。当COIL引脚的天线端接收至少704个载波序列后,ATA5283芯片进入工作模式,N_DATA开始接收载波数据,N_WAKEUP变为低电平,唤醒nRF24L E1。由于只需要唤醒功能,无需有效的载波数据传输,因此,只需将N_WAKEUP与nRF24LE1的P0.6引脚相连。最后,nRF24LE1的P0.0引脚给ATA5283的RESET引脚一个高电平,使ATA5283复位,让芯片重新回到待机监听模式。
2.2 车载系统射频模块电路设计
采用的nRF24L01射频模块与nRF24LE1的射频部分是相互兼容的,也工作在2.4GHz频率段,是通用ISM频段的无线收发芯片。内置射频发送接收器、数据缓冲器、GFSK调制/解调器、增强模式控制单元及与处理器连接的SPI接口。nRF24L01采用SPI总线方式与处理器通信,STM32处理器自带SPI接口。
本设计将时钟控制信号SCK、串行数据输出MISO、串行数据输入MOSI、芯片使能引脚CSN、中断信号IRQ、射频使能引脚CE分别与处理器的PA5、PA6、PA7、PC4、PB0、PC5引脚直接相连,具体电路如图3所示。同时,该芯片的增强模式具有自动重发和自动应答功能,中断信号IRQ用来告诉处理器其接收和发送数据的状态,使处理器及时根据状态来做出相应的处理,这些功能大大减少了MCU的工作量。
2.3 车载系统低频唤醒发射电路设计
采用不断发射低频125 kHz电磁波的形式去激活有源标签,发射芯片采用ATA5276,它能发射频率为125kHz的信号,该芯片驱动天线线圈的峰值电流是可调的,输出的最大峰值电流可以达到1.5 A,调制方式是ASK调制,波特率可达4Kps,芯片工作电压范围为8~24 V。处在待机模式时电流消耗小于50 μA,传输的125 kHz电磁波传给相应的接收器,通过STM32的PD0引脚可以控制该芯片工作。
设置DIO脚与STM32的唧引脚连接,如图4所示,PD0引脚平时处于低电平状态,当PD0发出高电平时,三极管导通,DIO引脚变为低电平,ATA 5276从待机模式转为工作发射模式;此时,DIO为低电平,L1和C4组成的串联谐振电路开始起振,125 kHz能量通过电感以磁场的形式传播出去,当DIO引脚检测到低电平时停止谐振。
3 系统软件实现
软件设计主要包括车载系统程序设计和公交卡程序设计,车载系统程序包括舡24C512存储器的I2C总线程序、GPS的串口通信程序、nRF24L01和ISD4004的SPI总线程序以及CD 12864的并口程序设计。公交卡程序主要包括nRF24LE1低功耗和防碰撞程序设计,采用的编程语言为C语言,灵活方便。软件开发平台是MDK,其集成度高,具有在线仿真和调试功能,非常适合嵌入式开发。
3.1 公交卡软件设计
公交卡软件设计要确保标签信息准确及时地发送出去,并及时接收读卡器处理完的数据。主要包括三部分:标签的发射与接收、低功耗设计、防碰撞算法的设计。软件流程如图5所示。
3.2 车载系统射频模块软件设计
车载系统射频模块nRF24L01的功能是:接收卡片的数据信息,交给处理器处理。与STM32通信采用SPI总线协议,STM32带SPI口,并且使用STM32库函数开发,大大简化了程序设计,只要对接口函数做出相应配置,就可以操作SPI寄存器。nRF24L01有多种工作模式,本设计主要使用基本的发送和接收模式,为了实现自动应答、自动处理字头和CRC校验码,采用 Enhanced ShockBurstTM 增强型的模式,这样简化了程序设计,减小了处理器的负担,而且使接收和发送数据更及时准确。软件实现流程如图6所示。
结语
本设计的车载系统需要在前门和后门各设置一个感应装置,要求乘客前门上车,后门下车。当前门的读卡器检测到乘客上车时,公交卡发送信息给车载系统,车载系统做出回应并记录公交卡发送来的信息。车辆运行时,不发送125 kHz的唤醒信号,因此公交卡不能被唤醒,只有在车门被打开、乘客靠近读卡器时,才能被唤醒。当乘客下车、被后门感应器检测到时,将接收到的公交卡信息与上次检测到的信息比较,做出相应扣费处理。模拟程序设计是每隔1分钟,站数加1,表示公交车走了1站,扣费标准为每10站扣1元。采用10张公交卡进行了测试。测试结果表明,该系统能及时完成对卡片的数据读取和数据处理。