目前市面上有各种RFID的卡片,主要应用在人员管理、出入库管理等领域。相比与无源RFID,有源RFID的接收距离可以很长,扩展性也很好。但是有源RFID也有一些弊端,比如功耗就是一大问题。有些卡片因为卡片做成防水密封的,不允许更换电池,这也就意味着,只要电池一没电,卡片就报废了。同时,就拿出入库管理为例,RFID卡片真正工作的时间也就进出的时候,其它时候都是在做无用功。

 

目前的主要做法有两种,一种是卡片作为被动接收端,每隔一段时间侦测一下是否有信号;还有一种就是再在卡片上加芯片,如AS3933等,通过外部电磁波来激活卡片,然后让卡片发送2.4G数据。

 

两种方法相比较,后一种的功耗是最低的,因为它只有在有特定电磁波的时候才会工作,其它时候都是在低功耗或掉电模式的。但是它的弊端就在于增加了开发成本,卡片电路中不但要添加外围芯片,工程现场还要去布电磁波线圈等。所以相比较而言,第一种方法的可行性更高一些,但是它对程序控制的要求就有点高。

 

我第一个项目用的就是第一种方法,当时是做车辆进出管理,为了考虑车辆的进出的方向性,所以采用了第一种方法,这样即可以降低功耗,又可以判别车辆是进还是出。当时用的是AS3933芯片,采用125kHzASK载波信号激活,在这个125kHz信号中加入不同的数据编号。在进出的地方布两个线圈。这样就形成了两个电磁波场。只要电磁波载波中的前导码和配置的一样,就可以唤醒芯片。我们碰到的最大的问题不是功耗,而是如何调节线圈信号的发射功率。一开始使用的是电位器,通过改变电位器的阻值来控制通过线圈的电流。但是每次调电位器都需要打开读写器的盒子(我们是通过读写器中的STM32芯片发送信号给线圈的),而且在连续发送信号的时候,驱动芯片基本会烧掉。主要是驱动芯片是用推挽式的mos管,两个mos管信号上升,下降的速度有点差异,导致有那么一小段时间是短路的,导致电流很大。所以后来我们加入了死区控制,这样只要延时几个微秒,电流明显比之前的要小,激活卡片的距离和之前的差不多。然后通过改变125kHz的PWM的占空比,来实现功率的调节。本来接下去是要做卡片距离的自适应的,由于很多原因,没有继续下去,比较遗憾。

 

第一种方式采用的是nRF24LE1,主要考虑到卡片大小。

 

为了使得第一种方式的功耗更加低,采用第二种方法的时候,我常用干簧管来使卡片进入完全休眠,即不用周期性的醒来一次来侦测信号了。可以通过磁铁来控制干簧管的开关来使得工作和休眠状态的切换。同时这还有一个附加的好处。就是卡片初始化配置。

 

因为是RFID,所以没一张卡片就必须编号唯一,对于那些一般的防水的卡片,在量产的时候烧一个通用的程序,需要一张张烧代码,因为一旦封死就无法对其进行修改了。所以很麻烦,但是如果引入干簧管。可以在干簧管的开关上做文章,可以用程序弄出一个类似与工程配置的模式。

 

一般我都是这么定义的,干簧管闭合时,进入休眠模式,打开时为正常工作,同时打开后的10s中是工程配置期,可以在这10s内发送配置请求进入工程配置模式。那么无线配置就完成了。为什么要加入10s这个东西呢?因为一开始量产的时候用一个通用的程序进行烧程序。所有卡片在没配置之前地址信道等参数都是一样的,这时无线配置无法通过卡片号码来确定对应的卡片,所以需要10s这一个概念。

 

第二种方式我用的是MSP430系列单片机作卡片的MCU,CC2500作为RF。如果干簧管闭合就完全关闭RF,MCU进入LMP4,这样功耗能做到最低,几乎就没有消耗。