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

来自ALSROBOT WiKi
跳转至: 导航搜索
(以“<br/> ==概述== :你想了解刷卡考勤系 统的工作原理么?你想了解公共汽车刷卡系统的工作方式 :RFID ...”为内容创建页面)
 
==周边产品推荐
 
(未显示4个用户的10个中间版本)
第1行: 第1行:
 
<br/>
 
<br/>
 
[[文件:xv1.jpg|500px|有框|右]]
 
[[文件:xv1.jpg|500px|有框|右]]
==概述==
+
==产品概述==
:你想了解刷卡考勤系 统的工作原理么?你想了解公共汽车刷卡系统的工作方式
+
你想了解刷卡考勤系统的工作原理么?你想了解公共汽车刷卡系统的工作方式吗?<br/>
:RFID 射频识别是一种非接触式的物体识别技术,它可以通过射频信号自动识别目
+
RFID 射频识别是一种非接触式的物体识别技术,它可以通过射频信号自动识别目标对象并获取相关数据,因此许多互动项目正是借用这一特性来实现对物体的识别的。通常来讲,一个最基本的 RFID 识别系统主要由以下三部分组成: <br/>
标对象并获取相关数据,因此许多互动项目正是借用这一特性来实现对物体的识别的。
+
标签是由耦合元件及芯片组成,每个标签具有唯一的电子编码,附着在物体上标识目标对象<br/>
通常来讲,一个最基本的 RFID 识别系统主要由以下三部分组成:  
+
阅读器(Reader)是读取(有时还可以写入)标签信息的设备,可设计为手持式或固定式<br/>
:标签:由耦合元件及芯片组成,每个标签具有唯一的电子编码,附着在物体上标
+
天线(Antenna)在标签和读取器间传递射频信号。 <br/>
识目标对象;
+
==规格参数==
:阅读器(Reader):读取(有时还可以写入)标签信息的设备,可设计为手持式或
+
固定式;
+
:天线(Antenna):在标签和读取器间传递射频信号。
+
==规格参 数==
+
 
# 产品名称:RFID S hield Module v1.0
 
# 产品名称:RFID S hield Module v1.0
 
# 产品货号:RB-03T019  
 
# 产品货号:RB-03T019  
 
# 工作电压:DC3.3V/DC5V  
 
# 工作电压:DC3.3V/DC5V  
 
# 功率消耗:最小电流:3uA;平均电流:70mA/5V、43mA/3.3V;峰值电流:小于  160mA  
 
# 功率消耗:最小电流:3uA;平均电流:70mA/5V、43mA/3.3V;峰值电流:小于  160mA  
 
 
# 接口类型:UART  
 
# 接口类型:UART  
 
# 数据传输速率:19200bit/s
 
# 数据传输速率:19200bit/s
 
# 读卡距离:0-5cm(取决于天线工作环境和卡的性能)
 
# 读卡距离:0-5cm(取决于天线工作环境和卡的性能)
 
# 产品类型:无线射频通信  
 
# 产品类型:无线射频通信  
 
 
# PCB 工艺:FR4 双面沉金
 
# PCB 工艺:FR4 双面沉金
 
# 固定孔尺寸:3.2mm  
 
# 固定孔尺寸:3.2mm  
第30行: 第24行:
 
# 重量:22g  
 
# 重量:22g  
 
# 产品尺寸:60.96mm x 38.10mm x 8.05mm  
 
# 产品尺寸:60.96mm x 38.10mm x 8.05mm  
# 发货清单:
+
# 包装方式:防静电袋密封<br/>
:RF ID Shield Module v1.0*1  
+
# 选配配件:Arduino UNO 控制器、USB-TTL 模块(FT232)等
:4P 传感器连接线*1  
+
==发货清单==
: 标签(蓝色门禁卡)*1
+
* RFID Shield Module v1.0*1  
# 包装方式:防静电袋密封
+
* 4P 传感器连接线*1  
# 选配配件:Arduino UNO MEGA328 控制器、USB-TTL 模块(FT232)等
+
* 标签(蓝色门禁卡)*1
== UART 接口 通讯协 议==
+
== UART 接口通讯协议==
 
:异步半双工,1 位起始位+8 位数据位+1 位停止位
 
:异步半双工,1 位起始位+8 位数据位+1 位停止位
 
:波特率:19200bps  
 
:波特率:19200bps  
第43行: 第37行:
 
:0x00 以区分命令头但长度字不增加
 
:0x00 以区分命令头但长度字不增加
 
:长度字:指明长度字到数据域最后 1 字节的字节数
 
:长度字:指明长度字到数据域最后 1 字节的字节数
:  
+
:命令字:本条命令的含义
命令字:本条命令的含义
+
 
:数据域:此项可以为空
 
:数据域:此项可以为空
 
:校验字:从长度字到数据域最后 1 字节的逐字节异或值  
 
:校验字:从长度字到数据域最后 1 字节的逐字节异或值  
第50行: 第43行:
 
:失败:命令头+长度字+接收到的命令字取反+校验字
 
:失败:命令头+长度字+接收到的命令字取反+校验字
 
:命令列表
 
:命令列表
 
 
[[文件:xv2.jpg|500px|有框|居中]]
 
[[文件:xv2.jpg|500px|有框|居中]]
==使用方 法==
+
==使用方法==
:如图所示,利用 4P 线将 RFID Shield Module v1.0 USB-TTL 模块连接起来(注
+
===使用硬件===
意:电源、地和信号的正确连接。其中 RFID 模块的 TX 对应连接 US B-TTL 模块的 RX,
+
# [http://www.alsrobot.cn/goods-162.html USB-TTL 模块] * 1个
RF ID 模块的 RX 对应连接 USB-TTL 模块的 TX)。
+
# [http://www.alsrobot.cn/goods-401.html RFID Shield Module v1.0] * 1个
 
+
# [http://www.alsrobot.cn/goods-90.html USB 数据通信线] * 1条
 +
# [http://www.alsrobot.cn/goods-546.html Carduino UNO 控制器] * 1个
 +
# [http://www.alsrobot.cn/goods-147.html Sensor Shield for Arduino v5.0] * 1个
 +
===需要软件===
 +
[http://pan.baidu.com/s/1pJ7WYO7?qq-pf-to=pcqq.c2c FT232 驱动程序下载]<br/>
 +
[http://pan.baidu.com/s/1sjDZi6D AccessPort 串口调试助手下载地址]<br/>
 +
===读取ID===
 +
====连接硬件====
 +
:如图所示,利用4P线将RFID Shield Module v1.0 与 USB-TTL 模块连接起来(注意:电源、地和信号的正确连接。其中RFID模块的TX对应连接USB-TTL模块的RX,
 +
RFID模块的RX对应连接USB-TTL模块的TX)。
 
[[文件:xv3.jpg|500px|有框|居中]]
 
[[文件:xv3.jpg|500px|有框|居中]]
==RF ID S hield  Module 的测 试==
+
:在硬件连接完成后,用串口调试工具打开 Serial Dongle 对应的串口,将波特率设置为 19200,然后以 HEX 格式发送读卡的命令 AA BB 02 20 22(一共 5 个字节):
我们使用 Arduino 控制器来做个测试,首先需要硬件设备如下:
+
# USB-TTL 模块×1
+
# RFID S hield Module v1.0×1
+
# USB 数据通信线×1
+
# Arduino UNO 控制器×1
+
#  S ensor S hield for Arduino v5.0×1
+
:在硬件连接完成后,用串口调试工具打开 Serial Dongle 对应的串口,将波特率设
+
置为 19200,然后以 HEX 格式发送读卡的命令 AA BB 02 20 22(一共 5 个字节):
+
 
[[文件:xv4.jpg|500px|有框|居中]]
 
[[文件:xv4.jpg|500px|有框|居中]]
 
:如果此时没有卡在读卡器的作用范围之内,RFID 模块将通过串口返回 HEX 格式
 
:如果此时没有卡在读卡器的作用范围之内,RFID 模块将通过串口返回 HEX 格式
 
的 AA BB 02 DF DD 0D 0A(7 个字节):  
 
的 AA BB 02 DF DD 0D 0A(7 个字节):  
 
[[文件:xv5.jpg|500px|有框|居中]]
 
[[文件:xv5.jpg|500px|有框|居中]]
:如果此时有卡在读卡器的作用范围之内,RF ID 模块上的红色 LED 会点亮,同时
+
:如果此时有卡在读卡器的作用范围之内,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 值的判断来区分不同的物体的。
通过串口返回 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|500px|有框|居中]]
 
[[文件:xv6.jpg|500px|有框|居中]]
:在得到了相应的标签的 ID 值后,我们就可以在 Arduino 中来进行识别了,硬件连
+
====使用Arduino识别====
接上依然是通过传感器扩展板上的 COM 接口来连接我们的串口 RFID 模块:
+
:在得到了相应的标签的 ID 值后,我们就可以在 Arduino 中来进行识别了,硬件连接上依然是通过传感器扩展板上的 COM 接口来连接我们的串口 RFID 模块:
 
[[文件:xv7.jpg|500px|有框|居中]]
 
[[文件:xv7.jpg|500px|有框|居中]]
:与之对应的 Arduino 代码如下所示,其中我们要检测的标签 ID 是 FE 39 45 F5 51,
+
:与之对应的 Arduino 代码如下所示,其中我们要检测的标签 ID 是 FE 39 45 F5 51,当 Arduino 检测到相应的标签后,会将 13 号数字 I/O 端口上的 LED 点亮 1 秒钟。
Arduino 检测到相应的标签后,会将 13 号数字 I/O 端口上的 LED 点亮 1 秒钟。
+
=====例子程序=====
:Arduino 例程代码如下:
+
<pre style='color:blue'>
<pre style='color:blue'>/************************************************************ 
+
int val = 0;
机器人基地  RobotBase www.robatbase.cn
+
int ledPin = 13;
目      的:  Arduino、RFID Shield Module 互动例程
+
int status = 0;
目标系统:  基于 Arduino UNO 控制器
+
unsigned char searchCMD[] = {0xAA, 0xBB,0x02, 0x20, 0x22};
应用软件:  Arduino 1.0.1
+
unsigned char searchRES[5];
功能描述:  通过对标签卡的检测进行识别判断
+
发布时间:  2012-12-21
+
说      明:  若用于商业用途,请保留此段文字或注明代码来源 </pre>
+
<pre style='color:blue'>哈尔滨奥松机器人科技有限公司保留所有版权
+
************************************************************/ 
+
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);
 +
  Serial.println("->WB Start");
 +
}
  
 +
int searchCard()
 +
{
 +
  Serial.write(searchCMD, 5);
 +
  delay(100);
 +
  status = 0;
 +
  while(true) {
 +
    if (Serial.available()>0) {
 +
      val = Serial.read();
 +
     
 +
      switch (status) {
 +
        case 0: // parse 0xAA
 +
          if (val == 0xAA) status = 1;
 +
          break;
 +
        case 1: // parse 0xBB
 +
          if (val == 0xBB) status = 2;
 +
          else return -1;
 +
          break;
 +
        case 2:
 +
          if (val == 0x06) status = 3;
 +
          else return -1;
 +
          break;
 +
        case 3:
 +
          if (val == 0x20) status = 4;
 +
          else return -1;
 +
          break;
 +
        case 4:
 +
          if (val == 0xFE) status = 5;
 +
          else return -1;
 +
          break;
 +
        case 5:
 +
          if (val == 0x39) status = 6;
 +
          else return -1;
 +
          break;
 +
        case 6:
 +
          if (val == 0x45) status = 7;
 +
          else return -1;
 +
          break;
 +
        case 7:
 +
          if (val == 0xF5) status = 8;
 +
          else return -1;
 +
          break;
 +
        case 8:
 +
          if (val == 0x51) status = 9;
 +
          else return -1;
 +
          break;
 +
        case 9:
 +
          searchRES[status - 4] = val;
 +
          status ++;
 +
          break;
 +
        case 10:
 +
          return 0; // read successfully
 +
          break;
 +
        default:
 +
          return -1;
 +
          break;
 +
      }
 +
     
 +
    }
 +
  }
 +
}
  
void setup()  
+
void loop()
{  
+
{
Serial.begin(19200)
+
  if (searchCard()!= -1) {
pinMode(13, OUTPUT);
+
    if (searchRES[0] == 0xFE && searchRES[1] == 0x39 && searchRES[2] == 0x45 && searchRES[3] == 0xF5 && searchRES[4] == 0x51)
}
+
      digitalWrite(13, HIGH);
//定义串口波特率为 19200
+
//     delay(1000);
//定义数字口 13 为输出引脚
+
    else
 
+
      digitalWrite(13, LOW);
 
+
//    delay(1000);
 
+
}
int searchCard()  
+
}
{
+
Serial.wr ite(searchCMD, 5);
+
delay(100);  
+
status = 0;
+
while(true) {
+
if (Serial.available() > 0) {
+
val = Serial.read(); 
+
//串口写数组 searchCMD
+
//串口读取数据赋值给函数 val
+
 
+
 
</pre>
 
</pre>
<pre style='color:blue'>switch (status) {
+
[[文件:xv8.jpg|500px|有框|居中]]
case 0:   //判断返回值是否为 0xAA,如果是进到下一判断
+
[[文件:xv9.jpg|500px|有框|居中]]
if (val == 0xAA) status = 1;
+
==相关推荐==
break;
+
[[文件:erweima.png|230px|无框|右]]
case 1:   //判断返回值是否为 0xBB,如果是进到下一判断
+
===产品购买地址===
if (val == 0xBB) status = 2;
+
[http://item.taobao.com/item.htm?spm=a1z10.3-c.w4002-3667083713.9.sCmZD6&id=18245895562 Arduino RFID 串口模块 ]<br/>
else return -1;
+
===周边产品推荐===
break;
+
[http://www.alsrobot.cn/goods-162.html USB-TTL模块]<br/>
case 2:   //判断返回值是否为 0x06,如果是进到下一判断
+
[http://www.alsrobot.cn/goods-227.html RS232-TTL转换器]
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;
+
</pre>
+
<pre style='color:blue'>break;
+
case 6:
+
//判断返回值是否为 0x45,如果是进到下一判断
+
  
 +
===相关问题解答===
 +
[http://www.makerspace.cn/forum.php?mod=viewthread&tid=202&highlight=RFID 基于RFID模块与LCD2004液晶屏的Arduino门禁显示器]
  
if (val == 0x45) status = 7;
+
===相关学习资料===
else return -1;
+
[http://www.makerspace.cn/forum.php?mod=viewthread&tid=4263 借助Arduino做一个RFID门禁系统教程]<br/>
break;
+
[http://www.makerspace.cn/portal.php 奥松机器人技术论坛]
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;
+
</pre>
+
<pre style='color:blue'>}
+
 
+
 
+
 
+
}
+
}
+
}
+
 
+
 
+
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]); 
+
</pre>
+
[[文件:xv8.jpg|500px|有框|居中]]
+
[[文件:xv9.jpg|500px|有框|居中]]
+

2015年10月28日 (三) 13:17的最后版本


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
  5. 接口类型:UART
  6. 数据传输速率:19200bit/s
  7. 读卡距离:0-5cm(取决于天线工作环境和卡的性能)
  8. 产品类型:无线射频通信
  9. PCB 工艺:FR4 双面沉金
  10. 固定孔尺寸:3.2mm
  11. 最大固定孔间距:55.88mm
  12. 最小固定孔间距:33.02mm
  13. 对角固定孔间距:64.90mm
  14. 工作温度:-20℃-+70℃
  15. 重量:22g
  16. 产品尺寸:60.96mm x 38.10mm x 8.05mm
  17. 包装方式:防静电袋密封
  18. 选配配件:Arduino UNO 控制器、USB-TTL 模块(FT232)等

发货清单

  • RFID Shield Module v1.0*1
  • 4P 传感器连接线*1
  • 标签(蓝色门禁卡)*1

UART 接口通讯协议

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

使用方法

使用硬件

  1. USB-TTL 模块 * 1个
  2. RFID Shield Module v1.0 * 1个
  3. USB 数据通信线 * 1条
  4. Carduino UNO 控制器 * 1个
  5. Sensor Shield for Arduino v5.0 * 1个

需要软件

FT232 驱动程序下载
AccessPort 串口调试助手下载地址

读取ID

连接硬件

如图所示,利用4P线将RFID Shield Module v1.0 与 USB-TTL 模块连接起来(注意:电源、地和信号的正确连接。其中RFID模块的TX对应连接USB-TTL模块的RX,

RFID模块的RX对应连接USB-TTL模块的TX)。

Xv3.jpg
在硬件连接完成后,用串口调试工具打开 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

使用Arduino识别

在得到了相应的标签的 ID 值后,我们就可以在 Arduino 中来进行识别了,硬件连接上依然是通过传感器扩展板上的 COM 接口来连接我们的串口 RFID 模块:
Xv7.jpg
与之对应的 Arduino 代码如下所示,其中我们要检测的标签 ID 是 FE 39 45 F5 51,当 Arduino 检测到相应的标签后,会将 13 号数字 I/O 端口上的 LED 点亮 1 秒钟。
例子程序
int val = 0;
int ledPin = 13;
int status = 0;
unsigned char searchCMD[] = {0xAA, 0xBB,0x02, 0x20, 0x22};
unsigned char searchRES[5];

void setup()
{
  Serial.begin(19200);
  pinMode(13, OUTPUT);
  Serial.println("->WB Start"); 
}

int searchCard()
{
  Serial.write(searchCMD, 5);
  delay(100);
  status = 0;
  while(true) {
    if (Serial.available()>0) {
      val = Serial.read();
      
      switch (status) {
        case 0: // parse 0xAA
          if (val == 0xAA) status = 1;
          break;
        case 1: // parse 0xBB
          if (val == 0xBB) status = 2;
          else return -1;
          break;
        case 2:
          if (val == 0x06) status = 3;
          else return -1;
          break;
        case 3:
          if (val == 0x20) status = 4;
          else return -1;
          break;
        case 4:
          if (val == 0xFE) status = 5;
          else return -1;
          break;
        case 5:
          if (val == 0x39) status = 6;
          else return -1;
          break;
        case 6:
          if (val == 0x45) status = 7;
          else return -1;
          break;
        case 7:
          if (val == 0xF5) status = 8;
          else return -1;
          break;
        case 8:
          if (val == 0x51) status = 9;
          else return -1;
          break;
        case 9:
          searchRES[status - 4] = val;
          status ++;
          break;
        case 10:
          return 0; // read successfully
          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) 
      digitalWrite(13, HIGH);
//     delay(1000);
    else
      digitalWrite(13, LOW);
//     delay(1000);
}
}
Xv8.jpg
Xv9.jpg

相关推荐

Erweima.png

产品购买地址

Arduino RFID 串口模块

周边产品推荐

USB-TTL模块
RS232-TTL转换器

相关问题解答

基于RFID模块与LCD2004液晶屏的Arduino门禁显示器

相关学习资料

借助Arduino做一个RFID门禁系统教程
奥松机器人技术论坛