用单片机自制一款RFID读卡器,RFID CARD READER
关键字:ATtiny13,ATtiny2313,射频读卡电路图
作者:樊文辉
也可以用微处理器ATtiny2313制作RFID读卡器,可以随意的从EM4102中读取数据,其中包括从软件下载的数据。这个制作更有趣的部分是向我们展示如何随心所欲的做你自己的RFID标签。我们接着看到如何将传感器连接到标签,并且与读卡器的传感器读卡器建立通信传递数据。这些传感器在电气上是绝缘的并且能在空间自由移动。
一、能量传递
EM41022型号的电子标签的能量获得是需要通过频率为125kHz时的电感耦合来实现的,作者认为这个设备能胜任的,自制RFID标签就不成问题。此外,通过EM4102提供的数据速率不是很高,简单的微型控制器都适用。
EM41022型号的电子标签的能量获得是需要通过频率为125kHz时的电感耦合来实现的,作者认为这个设备能胜任的,自制RFID标签就不成问题。此外,通过EM4102提供的数据速率不是很高,简单的微型控制器都适用。
下图中电路是用来确定从接收线圈传递来的能力有多大。RFID读卡器适用下列推荐数据:电感L=750μH,直径为0.25mm,线圈匝数为85匝,漆包线直径为0.25mm,线圈直径为50mm。
接收线圈(L1)为95匝、1mH,并联于L1的谐振电容C1调谐与125KHz。发送和接收线圈的位置高于其他元件,且相距20mm。电流和电压的曲线通过调节R测出如下图示。下图(a)是测量电压与电流的函数关系,而下图(b)显示的是传输在负载上功率曲线。三条曲线分别显示调谐于200pF、远大于,远小于200pF的情况,以示失谐情况的影响。下图中可以看到在输出3V电压时它能耦合数十毫瓦的能量。一个ATtiny微型控制器在时钟频率为1MHz,电压为3V的情况下电流大概为2mA;在125kHz的情况下电流是低于O.1mA。因此看起来提供微型控制器运行所需的足够功率不是难题。
RFID集成电路EM4102通过调制读卡器负载来传送ID。每个数据位传递需要占据125kHz载波的64个时钟周期,折合为波特率为1953.125BPS。一个完整的数据包32.768ms内完成传输。使用125kHz信号作为RFID控制器的时钟是可以的。这种自动化确保位时钟与读卡器同步,由于上述时钟的慢摆动,电流消耗是非常低的。也意味着CPU只需要计数64个时钟周期才转移到下一位:这就是对CPU(ATtiny3)进行汇编编程的原因。
下图显示制作的电子标签的完整电路图。通过L1和C1形成的谐振回路提供微型控制器时钟。同时125kHz的AC信号经过二极管整流提供给CPU电源(或功率)。NMOS管T1的导通使谐振电路加上R3负载使振荡幅度减小,并且它通过调制信号实现微型控制器传输数据。但是,信号幅度必须不能过度减少,否则微型控制器因时钟失步而造成出错。
本制作的印制电路板的电路如下图(略)。线圈并联在C1,并且焊接在C1引线脚的两侧相邻近的焊点上。
AVR/GCC)嵌入。读卡器的最佳设计是元器件使用SMD封装,本制作使用C(AVR/GCC)编程并烧录芯片。
读卡器的电路如下下图示,是非常简单的并且很容易手工绘制电路板。但是按翻拍会使制作PCB更简单,装有EM4095的4号板与5号板通过接口K3连接。在电路板上连接点为ANT1和ANT2外接线圈,其电感量为750μH,这并不严格,由于EM4095内部有一个锁相环会自动调节频率。
从RFID标签的数据串是通过EM4095解码]然后以曼彻斯特码流方式传给微型控制器。微型控制器的第一项工作是提取数据位。这项工作是在中断服务程序中实施的,每秒要进行31250中断,(8MHz/256=31250)。1个完整的数据位占16个中断周期见下下图示。(注:一个数据位占64个125kHz/8μS脉冲,即512μS:定时器一个中断间隔为1S/31250=32μS,两者相除512/32=16。可见连续16个低电平则为数据O,连续16个高电平为数据1)。
以上为曼彻斯特码的代码片断。码长测量由接口PIND.4的电平实现:只有输入数据串的位数与原来的位数相同时电平是稳定的。当电平改变时,原有位数添入了一个或者两个半位。根据测量持续时间,一个或者两个半位储存在一个先进先出队列中供后续处理。
解码程序本身占FIFO队列的半位。第一个任务是识别数据包的起始位:为了实现这个目的,程序沿着移位寄存器逐个移动半位直到同步序列被找到。后续的数据串被解码并且在RS232端口输出(19200波特,8N1格式)。不断有新的半位数据到达并且在FIFO队列等待主程序处理,确保没有丢失数据。RFID读卡器能读取任何标准的RFID标签且与EM4102兼容。
电感其中d是导线的直径,D是线圈的直径,N是线圈的圈数。
下表的第4列是根据公式计算的电感量,第5列是用电感测量仪实测的电感量,可以看出,后者比前者偏小且不超过10%,实际制作时根据公式计算的值已经足以使用,也可以根据实测电感找出制作参数来。
三、RFID软件
根据时钟速率为125KHz,半个数据位持续32个时钟周期,为了避免复杂的计算,可以使用定时器0的PWM功能。
根据时钟速率为125KHz,半个数据位持续32个时钟周期,为了避免复杂的计算,可以使用定时器0的PWM功能。
设置计时器O计数64就溢出,返回O重新计数,(通过软件设置OCROA为64-1=63),并设置了PWM值为50%(软件设置OCROB为32)。定时器0的PWM发生器每到计数值到达32时,可以安插在高至低的跳变(如图8最左边箭头示).也可以安插在低至高的跳变。上图中上面一排是5位曼彻斯特码流值,下右侧标注定时器计数值。
因此,只需通过改变PWM发生器的寄存器堆的一位,我们就可以产生符合曼彻斯特码编码的一个0或1。这一过程在中断服务程序实现。
寄存器IntBit包括了被传输的数据位,并且将IntMail设置为1作为应答,表示确认该位已被接收。主程序只是逐位传输数据及产生校验码,确保系统在一个不稳定的电源电压系统下能稳定工作,将欠压检测阈值设置为1.8V且启动看门狗。
四、数据包和有效载荷
一个完整的数据包,形成如下表所示。
一个完整的数据包,形成如下表所示。
数据包包括9个部分。前导的同步码连续9个1不能出现在数据包的其他地方,因此可以用来识别它的开始。正确的数据位和有效荷载在前同步码的后面。有效载荷由十组4位二进制数或半字节组成。前两个半字节是客户ID后面是8位半字节数据跟随。先发送一个半字节列校验位(每列10个二进制数中有奇数个1为1否则为0),紧随其后的是一个0。所以总的数据包包含9(起始)+10×(4+1)(有效载荷)+4(列校)+1(最后位0)=64bits。每位持续64位的125kHz的时钟周期,所以比特率是1935.125BPS。故一个完整的数据包需要32.768mS传输。
使用此协议的RFID标签,内部含有有8个半字节数据和两个半字节ID码,总共有10位十六进制数字或40位二进制数。这足以传输大量信息。如果需要进一步扩展,也可照此类推。
因为本制作中RFID标签已经写入用户码,做一个新的RFID标签就需要修改程序重新写入。
在印制电路板上的插头Kl可以用来连接开关、电位器和通过读卡器进行无线访问的其它线圈。
线圈可旋转或移动尽可能实现读标签,同理还可以在高压环境进行电气隔离。在液态物质中线圈操作暂停,在干燥的情况下又可以恢复。
六、动态ID和状态请求
第一个例子,我们认为一个RFID标签可以经过编程在两个ID代码之间进行切换,这个思路可以用来制作来一把RFID钥匙开多把RFID锁。
第一个例子,我们认为一个RFID标签可以经过编程在两个ID代码之间进行切换,这个思路可以用来制作来一把RFID钥匙开多把RFID锁。
第一个方案是使用一个开关在两种代码之间来选择。有两种实施办法:遥控改变开关的位置,或通过按钮改变标签的ID。此开关是连接接口B.4(ATtiny13的第3脚)和GND之间的端口。
第二个方案多数字输入量的采集。自从RFID标签使用了微控制器,实现这一目标有很宽范围的选项。设计者必须始终考虑电流消耗,因为标签所有的能量最终均来自传输线圈。一个简单的选项用移位寄存器来实现并行到串行的转换。如下图所示,8个开关的状态串行通过PB4经过K1接口连接到RFID的主板上。
该软件包中包括实现两路A/D转换的程序,将模拟量转换为8位数字量,并且将这些数字量通过ID代码方式返回至读卡器。A/D转换的参考电压取自ATtiny13的供电的电压,这有一定的好处也有缺点:例如,如果有必要去读取的两个电位器的位置时,它们可以轻易地与ATtiny13的电源连接,滑动片接模拟输入端。其结果是,转换的结果与电源电压无关,被测电压高低只是与电源电压‘比例’在变化:称之为比例转换。所以被测传感器必需与ATtiny13同电源供电。如MMA7260加速度测量传感器。测量两路加速度经过比例转换,结果只与加速度有关而与电源电压无关。如果不是电位器而是独立电源的话,结果就不是这样。这种情况下,用Zener二极管或微型3.3V稳压器用来为微控制器和传感器提供电源稳压。用来测量绝对电压。也就是供应RFID标签的电压等于A/D转换参考电压,此电压一定要大于3.3V或更高。这就取决于标签与读卡器的距离。还有另一种设计方案是使用如LM385低功耗参考电压源(如2.5伏)给一路A/D转换器输入,另一路则是被测电压的比例转换,并以此来校准电源电压的影响。经过精确的测量和校准,然后才能算出被测电压。
八、RFID温度传感器
Dallas/MaximDS1820的温度传感器通过它的单总线接口的连接。这个接口很容易在软件中实现,尽管它速度相对缓慢。当访问DS1820的温度传感器时,RFID标签中的微控制器必须停止对读卡器的响应。
Dallas/MaximDS1820的温度传感器通过它的单总线接口的连接。这个接口很容易在软件中实现,尽管它速度相对缓慢。当访问DS1820的温度传感器时,RFID标签中的微控制器必须停止对读卡器的响应。
这对读卡器来说不是问题,因为它发送起始码期间通常需要等待片刻,经过与传感器IC通信完成,温度值转换为十进制值,然后被转为ID代码格式。因此,RFID传感器提供的温度值几乎为“纯文本”。下图显示了如何将DS1820连接至RFID主板。原则上,软件可以处理若干温度传感器或其他单总线集成电路。
九、RFID传感器调试
我们前面讨论的例子展示它是如何建立自己的RFID标签。当你测试自己的应用程序开发和调试必须始终牢记。最简单的方法是使用ISP接口技术。然而,靠来自线圈的能量不足以维持标签的微控制器编程需要,并为此开发了如下图的适配器接口。可以通过ISP的接口对包含了RFID和传感器的软件的ATtiny13进行编程,而且像RFID主板上的K1一样,同样的传感器可以连接到K3的这块板上。适配器上的插座K2与读卡器上的K4连接,然后读卡器提供给ATtiny13125KHz时钟,通过它在PB1口进行数据流输出。这种方法可以很方便的测试新的RFID传感器软件。
我们前面讨论的例子展示它是如何建立自己的RFID标签。当你测试自己的应用程序开发和调试必须始终牢记。最简单的方法是使用ISP接口技术。然而,靠来自线圈的能量不足以维持标签的微控制器编程需要,并为此开发了如下图的适配器接口。可以通过ISP的接口对包含了RFID和传感器的软件的ATtiny13进行编程,而且像RFID主板上的K1一样,同样的传感器可以连接到K3的这块板上。适配器上的插座K2与读卡器上的K4连接,然后读卡器提供给ATtiny13125KHz时钟,通过它在PB1口进行数据流输出。这种方法可以很方便的测试新的RFID传感器软件。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
发布评论请先 登录
相关推荐
RFID手持终端的工作原理
基础 RFID技术是一种利用无线电波进行自动识别和跟踪目标的技术。它通过无线电波在标签(Tag)和阅读器(Reader)之间传输信息。RFID
AGV读卡器在AGV自动搬运小车上应用方案
AGV小车上的AGV读卡器通过读取地面轨道的RFID电子标签信息,做出相应的动作(如改变速度、选择轨道、定位和停车等)。在AGV小车经过站点A处时,AGV读卡器读取A处的电子标签ID号,AGV小车
巴鲁夫rfid读头国产平替版——高频RFID读写器
随着RFID技术的不断发展,国内RFID企业的数量也在不断地变多,国产RFID读写器的质量也越来越高。具有着价格实惠、质量可靠等特点,成为了可平替国外
二代身份证识别仪身份证阅读器读卡器
身份证读卡器通用版 医院社保读卡器 APP集成识别读取身份证 云解码读卡 身份证网络读卡模块 网络身份证模块 IC卡多合一读卡器 NFC
发表于 09-07 15:09
RFID芯片掼蛋牌-你了解多少?
RFID芯片是一种通过无线电波进行数据通信的技术,可以用于追踪、监控和管理各种物品。在掼蛋游戏中,可以被用于制作智能扑克牌,在牌中嵌入RFID芯片,通过读卡器自动识别牌面,使游戏更加智
RFID在汽车制造中的应用如何改变行业
的信息,可通过RFID读卡器读取RFID标签内的信息,再上传到管理系统中进行检验识别通信,或通过特定的RFID手持机进行查看。
IO-Link RFID读卡器系统方案设计与挑战
如图2这个IO-Link RFID传感器的方案,使用了L6364和STM32G0通用电路来支持IO-Link的协议转换,使用ST25R3916来作为NFC的读卡器芯片。
发表于 04-02 10:56
•662次阅读
半导体行业RFID读卡器的常用通信方式详解
JY-V640是一款低频134.2kHz系列的半导体RFID读写器,兼容TI系列的低频玻璃管标签,读取距离0-80mm,符合世界SEMI标准。通信协议采用了SECS(SEMI Equipment
射频识别RFID
设备简单。尤其是随着NFC技术在智能手机上逐渐普及,每个用户的手机都将成为最简单的RFID阅读器。
NYFEA****通用非接触通讯芯片 RF522
产品简介
522 是一款高度集成的工作在
发表于 02-28 11:31
评论