“(SKU:RB-03T019)RFID Serial Module V1.0”的版本间的差异

来自ALSROBOT WiKi
跳转至: 导航搜索
第7行: 第7行:
 
通常来讲,一个最基本的 RFID 识别系统主要由以下三部分组成:  
 
通常来讲,一个最基本的 RFID 识别系统主要由以下三部分组成:  
 
:标签:由耦合元件及芯片组成,每个标签具有唯一的电子编码,附着在物体上标
 
:标签:由耦合元件及芯片组成,每个标签具有唯一的电子编码,附着在物体上标
识目标对象;
+
识目标对象;阅读器(Reader):读取(有时还可以写入)标签信息的设备,可设计为手持式或
:阅读器(Reader):读取(有时还可以写入)标签信息的设备,可设计为手持式或
+
固定式;天线(Antenna):在标签和读取器间传递射频信号。  
固定式;
+
:天线(Antenna):在标签和读取器间传递射频信号。  
+
 
==规格参 数==
 
==规格参 数==
 
# 产品名称:RFID S hield Module v1.0
 
# 产品名称:RFID S hield Module v1.0

2014年10月14日 (二) 09:26的版本


Xv1.jpg

目录

概述

你想了解刷卡考勤系 统的工作原理么?你想了解公共汽车刷卡系统的工作方式
RFID 射频识别是一种非接触式的物体识别技术,它可以通过射频信号自动识别目

标对象并获取相关数据,因此许多互动项目正是借用这一特性来实现对物体的识别的。 通常来讲,一个最基本的 RFID 识别系统主要由以下三部分组成:

标签:由耦合元件及芯片组成,每个标签具有唯一的电子编码,附着在物体上标

识目标对象;阅读器(Reader):读取(有时还可以写入)标签信息的设备,可设计为手持式或 固定式;天线(Antenna):在标签和读取器间传递射频信号。

规格参 数

  1. 产品名称:RFID S hield Module v1.0
  2. 产品货号:RB-03T019
  3. 工作电压:DC3.3V/DC5V
  4. 功率消耗:最小电流:3uA;平均电流:70mA/5V、43mA/3.3V;峰值电流:小于 160mA
  1. 接口类型:UART
  2. 数据传输速率:19200bit/s
  3. 读卡距离:0-5cm(取决于天线工作环境和卡的性能)
  4. 产品类型:无线射频通信
  1. PCB 工艺:FR4 双面沉金
  2. 固定孔尺寸:3.2mm
  3. 最大固定孔间距:55.88mm
  4. 最小固定孔间距:33.02mm
  5. 对角固定孔间距:64.90mm
  6. 工作温度:-20℃-+70℃
  7. 重量:22g
  8. 产品尺寸:60.96mm x 38.10mm x 8.05mm
  9. 发货清单:
RF ID Shield Module v1.0*1
4P 传感器连接线*1
标签(蓝色门禁卡)*1
  1. 包装方式:防静电袋密封
  2. 选配配件:Arduino UNO MEGA328 控制器、USB-TTL 模块(FT232)等

UART 接口 通讯协 议

异步半双工,1 位起始位+8 位数据位+1 位停止位
波特率:19200bps
发送数据格式:命令头+长度字+命令字+数据域+校验字
命令头:0xAA 0xBB,若后续数据中包含 0xAA,则随后补充 1 字节
0x00 以区分命令头但长度字不增加
长度字:指明长度字到数据域最后 1 字节的字节数
命令字:本条命令的含义
数据域:此项可以为空
校验字:从长度字到数据域最后 1 字节的逐字节异或值
成功:命令头+长度字+接收到的命令字+数据域+校验字
失败:命令头+长度字+接收到的命令字取反+校验字
命令列表
Xv2.jpg

使用方 法

如图所示,利用 4P 线将 RFID Shield Module v1.0 与 USB-TTL 模块连接起来(注

意:电源、地和信号的正确连接。其中 RFID 模块的 TX 对应连接 US B-TTL 模块的 RX, RF ID 模块的 RX 对应连接 USB-TTL 模块的 TX)。

Xv3.jpg

RF ID S hield Module 的测 试

我们使用 Arduino 控制器来做个测试,首先需要硬件设备如下:

  1. USB-TTL 模块×1
  2. RFID S hield Module v1.0×1
  3. USB 数据通信线×1
  4. Arduino UNO 控制器×1
  5. S ensor S hield for Arduino v5.0×1
在硬件连接完成后,用串口调试工具打开 Serial Dongle 对应的串口,将波特率设

置为 19200,然后以 HEX 格式发送读卡的命令 AA BB 02 20 22(一共 5 个字节):

Xv4.jpg
如果此时没有卡在读卡器的作用范围之内,RFID 模块将通过串口返回 HEX 格式

的 AA BB 02 DF DD 0D 0A(7 个字节):

Xv5.jpg
如果此时有卡在读卡器的作用范围之内,RF ID 模块上的红色 LED 会点亮,同时

通过串口返回 HEX 格式的 AA BB 06 20 FE 39 45 F5 51 0D 0A(11 个字节),其中 20 之 后开始的 5 个字节 FE 39 45 F5 51 即是标签的 ID,不同的标签返回的 ID 值也是不一样 的,而我们正是通过对该 ID 值的判断来区分不同的物体的。

Xv6.jpg
在得到了相应的标签的 ID 值后,我们就可以在 Arduino 中来进行识别了,硬件连

接上依然是通过传感器扩展板上的 COM 接口来连接我们的串口 RFID 模块:

Xv7.jpg
与之对应的 Arduino 代码如下所示,其中我们要检测的标签 ID 是 FE 39 45 F5 51,

当 Arduino 检测到相应的标签后,会将 13 号数字 I/O 端口上的 LED 点亮 1 秒钟。

Arduino 例程代码如下:
/************************************************************  
机器人基地  RobotBase www.robatbase.cn 
目      的:   Arduino、RFID Shield Module 互动例程 
目标系统:   基于 Arduino UNO 控制器 
应用软件:   Arduino 1.0.1 
功能描述:   通过对标签卡的检测进行识别判断 
发布时间:   2012-12-21 
说      明:   若用于商业用途,请保留此段文字或注明代码来源 
哈尔滨奥松机器人科技有限公司保留所有版权 
************************************************************/  
int val = 0;             //定义变量 val 初值为 0 
int ledPin = 13;       //定义 ledPin 为数字口 13 
int status = 0;        //定义变量 status 初值为 0 
unsigned char searchCMD[] = {0xAA,0xBB,0x02,0x20,0x22}; // 寻卡指令数组 
unsigned char searchRES[5]; 



void setup() 
{ 
Serial.begin(19200);  
pinMode(13, OUTPUT);
} 
//定义串口波特率为 19200 
//定义数字口 13 为输出引脚 



int searchCard() 
{ 
Serial.wr ite(searchCMD, 5);
delay(100); 
status = 0; 
while(true) { 
if (Serial.available() > 0) { 
val = Serial.read();  
//串口写数组 searchCMD 
//串口读取数据赋值给函数 val 

switch (status) { 
case 0:    //判断返回值是否为 0xAA,如果是进到下一判断 
if (val == 0xAA) status = 1; 
break; 
case 1:    //判断返回值是否为 0xBB,如果是进到下一判断 
if (val == 0xBB) status = 2; 
else return -1; 
break; 
case 2:    //判断返回值是否为 0x06,如果是进到下一判断 
if (val == 0x06) status = 3; 
else return -1; 
break; 
case 3:    //判断返回值是否为 0x20,如果是进到下一判断 
if (val == 0x20) status = 4; 
else return -1; 
break; 
case 4:    //判断返回值是否为 0xFE,如果是进到下一判断 
if (val == 0xFE) status = 5; 
else return -1; 
break; 
case 5:    //判断返回值是否为 0x39,如果是进到下一判断 
if (val == 0x39) status = 6; 
else return -1; 
break; 
case 6:
//判断返回值是否为 0x45,如果是进到下一判断 


if (val == 0x45) status = 7; 
else return -1; 
break; 
case 7:    //判断返回值是否为 0XF5,如果是进到下一判断 
if (val == 0xF5) status = 8; 
else return -1; 
break; 
case 8:    //判断返回值是否为 0x51,如果是进到下一判断 
if (val == 0x51) status = 9; 
else return -1; 
break; 
case 9:    //将数组分别赋值给函数 val 
searchRES[status - 5] = val;  
status ++; 
break; 
case 10: 
return 0; //  重新开始判断 
break; 
default : 
return -1;  
break; 
} 



} 
} 
} 


void loop() 
{ 
if (searchCard() != -1) { 
if  (searchRES [0]  == 0xFE  && searchRES[1] == 0x39  && searchRES[2]  == 0x45 
&& searchRES[3] == 0xF5 && searchRES[4] == 0x51) { 
digit alWr ite(13, HIGH);    //如果标签 ID 号一致,则 LED 亮起 
delay(1000);  
digit alWr ite(13, LOW);  
delay(1000);  



} 
} 
} 
S erial.println(searchRES[5]);  
Xv8.jpg
Xv9.jpg