RFID阅读器的驱动程序撰写
本文将介绍如何以MCU简单的设计一个RFID的阅读器,所示范的的程序模块是采用HOLTEK MCU HT49R50A-1的汇编语言,希望透过程序模块的分享以达到共同讨论的目的。
RFID是英文“Radio Frequency Identification”的缩写,中文名称为「无线射频身份识别」是为目前相当受到重用的感应式电子芯片或是近接卡、感应卡、非接触卡...等等,非接触式自动识别技术的一种。是一种内建有无线电技术的芯片,芯片中还可纪录一系列信息,如产品别、位置、日期等,最大的好处是能提高物品管理效率。
目前市面上以使用条形码,将物品的相关信息多记录在条形码上,而再以扫描仪扫瞄条形码取得信息,而RFID只需在一定范围内感应,并可一次读取大量讯息。射频识别系统(RFID)最早在1948年即被提出,利用无线电波传送识别数据,达到身分识别的目的。无须接触即可自动读取及收集资料的一种科技,乃属于自动资料搜集(Automated Data Collection, ADC)技术之一种,可无线读取卷标信息。传输频率分为低频(LF:125~134KHz),高频(HF:13.56MHz),超高频 (UHF: 400~ 1000MHz),微波(Microwave; 1GHz以上),其中以超高频之技术较先进且其稳定度与应用效果较佳。
于本文将介绍如何以MCU简单的设计一个RFID的接收器,所使用的是为高频(13.56 MHz)的频域,于本文中的程序模块是采用Holtek MCU HT49R50A-1的汇编语言来撰写,希望透过程序模块的分享以达到共同讨论的目的。
RFID的特性
条形码是一种只读式的、需要对准标的、一次只能读一个、且容易破损;而RFID是可擦写的、使用时不需对准标的、同时可读取多个、坚固全天候使用,可不需人力介入操作。RFID具有许多条形码所难以达成的下列特性:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
(一) 数据的读写(Read Write)机能:只要通过RFID Reader即可不需接触,直接读取讯息至数据库内,且可一次处理多个标签,并可以将物流处理的状态写入标签,供下一阶段物流处理的读取判断之用。
(二) 容易小型化和多样化的形状:RFID在读取上并不受尺寸大小与形状之限制,不需为了读取精确度而配合纸张的固定尺寸和印刷品质。此外,RFID TAG更可往小型化与多样型态发展,以应用在不同产品。
(三) 耐环境性:纸张一受到脏污就会看不到,但RFID对水、油和药品等物质却有强力的抗污性。RFID在黑暗或脏污的环境之中,也可以读取数据。
(四) 可重复使用:由于RFID为电子数据,可以反复被覆写,因此可以回收标签重复使用。如被动式RFID,不需要电池就可以使用,没有维护保养的需要。
(五) 穿透性:RFID若被纸张、木材和塑料等非金属或非透明的材质包覆的话,也可以进行穿透性通讯。不过如果是铁质金属的话,就无法进行通讯。
(六) 数据的记忆容量大:数据容量会随着记忆规格的发展而扩大,未来物品所需携带的资料量愈来愈大,对卷标所能扩充容量的需求也增加,对此RFID不会受到限制。为期
RFID所使用的频率介绍
为避免各国无线电频率使用标准不一,造成使用上的混乱与困扰,国际上大多遵守国际电信联合会(ITU)的规范。目前RFID使用的频率有6种,分别为135KHz以下、13.56MHz、433.92MHz、860M~930MHz(即UHF)、2.45GHz以及5.8GHz,其各有特色和缺陷。135KHz以下传输距离短约10公分左右,通讯速度慢。此频段在绝大多数的国家属于开放,不涉及法规开放和执照申请的问题,因此使用最广,主要使用在宠物、门禁管制和防盗追踪。 13.56MHz薄化的效果最佳传输距离为1公尺以下,代表性应用为会员卡、识别证、飞机机票和建筑物出入管理,通讯距离10公分左右的近距离非接触式IC卡发展快速。
RFID系统的基本架构
RFID的基本组成组件及其主要的功能为:
•读取器:负责读/写电子卷标上的数据。
• 电子卷标/卡(Transponder; Tag):分为被动与主动两种结构如图1所示,如表1所示主要负责除存被识别物的相关资料,如品号,品名,规格等等,可以藉由读取器来侦测,另外于表2所示则为频率与Tag的关系及被使用的特性。
•计算机:负责系统平台的操作,将RFID的读取器与计算机系统整合就可以侦测到物品的移动状况和信息。
图1 Tag的基本结构
等级(Class) |
内存 |
电源 |
特性 |
应用领域 |
Class 0 |
无 |
被动式的感应偶合 |
1位的Tag |
EAS商品防窃 |
Class 1 |
只读式 |
被动式的感应偶合 |
只能写入一次 |
EPC识别码 |
Class 2 |
读/写式 |
被动式的感应偶合 |
可编密码 |
EPC识别码 |
Class 3 |
读/写式 |
半被动式内建有电源 |
接收能量才读写 |
环境感应型 |
Class 4 |
读/写式 |
主动式内建有电源 |
多任务Tag读写 |
智能型 |
Class 5 |
读/写式 |
主动式内建有电源 |
具有上述的综合 |
远距无线网络 |
表1 Tag的等级分类表
|
低频(LF 125 KHz) |
高频 |
超高频(UHF; 860-930 MHz) |
微波(2.45- 5.8 MHz) | |||
性统型态 |
被动式 |
14443 |
15693 |
被动式 |
主动式 |
被动式 |
主动式 |
读取距离 |
<0.5m |
<0.5m |
<1.5m |
3-10m |
>10m |
3-10m |
>10m |
内存bytes |
64-1k |
8k-128k |
256k-512k |
64k-512k |
- |
16k-64k |
- |
传输功率 |
72dBμA/m |
42dBμA/m |
10mW-4W |
4W(USA),0.5W | |||
读取方法 |
感应线圈 |
感应线圈 |
电容式电场效应 |
电容式电场效应 | |||
读取速度 |
慢 ←→ 快 | ||||||
环境适应性 |
佳 ←→ 差 | ||||||
尺寸 |
大 ←→ 小 |
表2 Tag与频率的关系
RFID的应用领域
RFID之应用相当广泛,最常见的应用为:
* 门禁管制:人员出入门禁监控、管制及上下班人事管理
* 回收资产:栈板、货柜、台车、笼车等可回收容器管理
* 货物管理:航空运输的行李识别,存货、物流运输管理
* 物料处理:工厂的物料清点、物料控制系统
* 废物处理:垃圾回收处理、废弃物管控系统
* 医疗应用:医院的病历系统、危险或管制之生化物品管理
* 交通运输:高速公路的收费系统
* 防盗应用:超市的防盗、图书馆或书店的防盗管理
* 动物监控:畜牧动物管理、宠物识别、野生动物生态的追踪
* 自动控制:汽车、家电、电子业之组装生产
* 联合票证:联合多种用途的智能型储值卡、红利积点卡
以下对几个应用作深入的介绍说明:
一般消费品
实务应用:从仓储到商品架的有效管理长久以来,消费品制造商一直苦于如何将适切的产品,在适当的时间运交给适当的零售商。而藉由 RFID 解决方案,制造商可以有效追踪货品,管理库存水准,并维持适当的库存量以满足零售商的需求。导入 RFID 解决方案后,工厂内的货品栈板无需人工检视可直接运出,取货疏失的情形减少,退货管理的效率提升,又免了实际的存货盘点作业,厂商可以降低人事成本。
零售业
实务应用:协助提升获利能力,在零售业,竞争惨烈、资本成本高,消费者的反复无常也是众所周知,想要维持获利率,特别艰难。从增加销售额、改善促销活动到降低失窃率,零售业者必须全心全力寻找创新的方式才能提升利润。
制药业
实务应用:在严格管制的环境中提高生产效率,制药业者除了在发展及配销药品等方面。
物流业
实务应用:发挥货运及配送流程的最高效率除了仓储,货柜场也可以利用 RFID 方案来建立高效率的配送及货运流程。将商品从消费性产品业者运交到零售商的流程,是供应链中绝不可缺少的一环。
运输业
实务应用:密切监控运输中的资产,RFID 可用来追踪载货卡车与轨道车辆的位置,也可以收集在特定地点的货运车辆上最新存货数字。实际出货期间,RFID
可以根据货车所在的最新地点追踪商品,并监督这些货运车辆所载送的商品明细
实务应用:密切监控运输中的资产,RFID 可用来追踪载货卡车与轨道车辆的位置,也可以收集在特定地点的货运车辆上最新存货数字。实际出货期间,RFID 可以根据货车所在的最新地点追踪商品,并监督这些货运车辆所载送的商品明细。
接收器的制作及程序
于图2所示为RFID接收器的结构图,是由Holtek MCU HT49R50A-1所控制,由于RFID的技术目前尚处于商业保密期,故于短时间内可能无法公开时感抱歉,有关系统的程序模块,主要有三大部分所成如图3所示,分别为主程序是为负责:键的扫描,LCD显示,声响,LED指示,以及RFID中的Tag数据的核对。外部中断子程序为负责计数的管理;最后主中断子程序的控制主要负责计数移位,数据接收等工作。相关的处和语言的详列及说明如图4。
图2 RFID 接收器的实际电路图
图3 程序流程图
于图2所示为本文中所举RFID接收器范例的实际电路图,程序使用一组Timer及一组External Interrupt来搭配接收RFID Data,其中应特别注意的是所使用的外部Clock Sounce需要精准,以达到接收数据的稳定性及正确性。于图3所示为程序的设计流程,所设计的程序如图4所示。 .
ODE .SECTION AT 00H 'CODE'
;------------------
;--- START 开始副程式 ---
ORG 00H
JMP START
;------------------
;--- INT0 中断0副程式 ---
ORG 04H
JMP EXTERNAL_INTERRUPT0
;------------------
;--- INT1 中断1副程式---
ORG 08H
JMP EXTERNAL_INTERRUPT1
;------------------
;--- TIMER 0 计时器0副程式 ---
ORG 0CH
JMP TIMER0_INT
;------------------
;--- TIMER 1 计时器1副程式 ---
ORG 010H
JMP TIMER1_INT
;------------------
;--- TB ---
ORG 014H
RETI
;------------------
;--- RTC ---
ORG 018H
RETI
ORG 020H
;================================
;=
;= INT PROGRAM
;=
;===============================
;=
;= TIMER 0 INTERRUPT 100uS
;=
;===============================
TIMER0_INT:
MOV S_ACC,A ;SAVE ACC&STATUS TO MEMORY
MOV A,STATUS ;push pop
MOV S_STA,A
;---------------------------
RL M_DATA_BUFFER ;EVERY 100uS SHIFT LEFT ONCE
SNZ P_RFID_DATA
JMP RFIDGETDATA0
RFIDGETDATA1:
CLR M_DATA_BUFFER.0 ;RECEIVER DATA "1"
JMP CHECK_RFID_LEADING_CODE
RFIDGETDATA0:
SET M_DATA_BUFFER.0 ;RECEIVER DATA "0"
CHECK_RFID_LEADING_CODE:
SZ F_RFID_1ST_OK
JMP BIT8_RECEIVER
MOV A,098H ;FIRST ID 98H
XOR A,M_DATA_BUFFER ;CHECK LEAD CODE
SNZ Z
JMP RESET_TIMER0
SET F_RFID_1ST_OK
MOV A,12
MOV M_RFID_BYTES_COUNT,A ;TOTAL DATA 12 BYTES
MOV A,0F3H
MOV MP0,A
SAVE_RF_ID_DATA:
INC MP0
MOV A,M_DATA_BUFFER
MOV R0,A
CLR M_DATA_BUFFER
SDZ M_RFID_BYTES_COUNT
JMP RESET_TIMER0
CLR F_RFID_1ST_OK
;
CALL CRC_CHECK_PROCESS ;CHECK CRC
SNZ ACC.0 ;ACC=FFH DATA OK
JMP TIMER0_INT_END
SET F_RFID_RX_OK
JMP TIMER0_INT_END
BIT8_RECEIVER:
SDZ M_ROTATE_COUNT
JMP RESET_TIMER0
MOV A,08
MOV M_ROTATE_COUNT,A
JMP SAVE_RF_ID_DATA
;
RESET_TIMER0:
CLR TMR0C.4 ;TIMER0 COUNTING 100uS
MOV A,154 ;TIMR0 100uS TIMEOUT FOR RFID
MOV TMR0,A
;---------------------------
TIMER0_INT_END:
MOV A,S_STA ;RELOAD ACC&STATUS
MOV STATUS,A ;Pop acc Status Regiter
MOV A,S_ACC
RETI
;===============================
;=
;= EXTERNAL_INTERRUPT 0
;=
;===============================
EXTERNAL_INTERRUPT0:
SNZ F_RFID_RX_OK
SET TMR0C.4 ;Enable TIMER0 START COUNTING 100uS
RETI
;=============================================================
;=
;= MAIN PROGRAM
;=
;=============================================================
START:
;--- POWER ON RESET ---
MOV A,11111111B ;I/O port initial
MOV PA,A
MOV A,11111111B
MOV PB,A
MOV A,11111111B
MOV PC,A
;--- TIMER 0 ---
MOV A,159 ;Initial TIMR0 100uS TIMEOUT FOR RFID Receiver
MOV TMR0,A
MOV A,10100000B
MOV TMR0C,A
;--- TIMER 1 ---
MOV A,56 ;TIMR1 FOR MAIN LOOP
MOV TMR1,A
MOV A,10110000B
MOV TMR1C,A
;--- INT 0,1 ---
MOV A,00001001B
MOV INTC0,A ;Enable Mcu interrupt founction
MOV A,00000101B
MOV INTC1,A
;--------------------------------------------------
;---- CLEAR WORK RAM ----
CALL CLEAR_RAM ;CLEAR MCU RAM
;==========================
;= MAIN
;==========================
MAIN:
;------- MAIN LOOP 20MS ---------
SNZ F_20MSTIMEOUT
JMP MAIN
CLR F_20MSTIMEOUT ;MAIN LOOP 20MS FOR CYCLE
;*********************************
;----- Make some function --------
;ex:
; CALL KEY_SCAN
; CALL SHOW_LCD
; CALL BEEP_SOUND
; CALL SHOW_LED
JMP MAIN
;===============================================
图4系统程序语言
结语
整体看来,RFID无线射频身份识别系统在未来的发展在很多的产业都是相当被看好的,虽然目前该技术有一些潜在问题,但科技的发达日新月异,相信要克服RFID的种种隐忧,所需要的也只是时间上的问题而已。举例说隐私权问题,现正研发自毁型卷标或消磁型卷标来解决这问题;配合奈米技术所研发适用于特殊物品的超小型标签;还有WhereNet新版物流管理软件可支持物流业者使用RFID系统。因此我们可以预见RFID将会促使相当多产业产生一场大的变革。然而RFID对印刷产业有多大的影响呢?是否会为印刷产业带来重大的商机吗?从上述文章的内容,相信在可预见的未来,不论是各式产品包装盒、食物外包装或是图书杂志里,只要是目前有条形码标签的印刷品上,将来就会有RFID的身影,甚至没有条形码标签的也可能会有RFID。所以不论是印制包装外盒的业者(厚纸)或是印制书籍杂志的业者(薄纸)都应会产生影响,尤其是对目前专门印制条形码卷标或是条形码报表的业者所产生的影响更大。目前使用的RFID的天线部份,都是使用铜片制作,黏贴在一般自黏标签上,再转贴到所需的位置上。希望将来RFID的天线部份以印刷方式印上,就如同目前印制条形码一般。