超高频UHF RFID读写模块R200开发测试

  • 概述
  • 一.使用模块
  • 二.UHF-R200 模块简述
  • 2.1 模块参数
  • 2.2 模块引脚
  • 三.R200-C50 开发板
  • 四.RFID电子标签
  • 4.1 PVC白卡
  • 4.2 超高频UHF纸质电子标签
  • 五.串口指令控制R200收发数据
  • 5.1 单次读取卡号
  • 5.2 群读卡号
  • 5.3 结束群读
  • 5.4 Read读卡内容
  • 5.5 Write写入内容
  • 5.6 设置发射功率
  • 六.搜索2张卡 群读卡号


概述

本文主要是测试R200–C50开发板对RFID标签的读写效果,识别距离以及在多个RFID标签下的识别效果

一.使用模块

1.超高频R200读写模块
2.RTC-50天线
3.R200-C50开发板(26dbm)
4.超高频PVC白卡
5.超高频UHC纸质电子标签

二.UHF-R200 模块简述

2.1 模块参数

RFID读写轴 rfid读写模块_RFID读写轴

UHF-R200 是一款超高频读写模块,体积小,功耗低,最大功率为28dbm,并且功率可调;主要用于典型读距离在 0-30m 以内的应用。该芯片具有低功耗,小尺寸、远距 离的特征,是低成本 RFID 系统的优良解决方案。

模块特点

具体说明

工作电压

3~5 V(建议3.3v)

工作频段

840Mhz – 960Mhz

输出功率

5~28dBm,1dbm 递进,功率可调

适用距离

0-30 米,匹配不同增益天线有不同距离效果

波特率

115200 bps

通讯接口

TTL Uart 接口

模块地址

模块具有唯一物理 ID

支持协议

EPCglobal UHF Class 1 Gen 2 /ISO 18000-6C 标准协议

2.2 模块引脚

RFID读写轴 rfid读写模块_数据_02

引脚

功能

VCC

3.3v(支持5v)

GND

接地

TTL_RXD

UART 串口接收管脚

TTL_TXD

UART 串口发送管脚

ANT

天线,模块射频输出端

GPIO

默认高电平,读到标签输出低电平

EN

使能端

NRST

复位引脚

ICE_DAT

MCU 烧录管脚

ICE_CLK

MCU 烧录管脚

三.R200-C50 开发板

RFID读写轴 rfid读写模块_硬件_03


R200-C50 开发板由R200读写模块和RTC-50天线组成,两者必须配套一起,不带天线R200是搜索不了标签的。

1.R200读写模块

RFID读写轴 rfid读写模块_嵌入式_04


2.RTC-50天线线圈

RFID读写轴 rfid读写模块_射频_05


在R200固定发射功率(默认26dbm)情况下天线线圈决定R200读写RFID标签的最大范围,本文的线圈能识别读取2米内的RFID标签。

四.RFID电子标签

本文用的RFID标签都是UHF超高频电子标签,840MHz~960MHz的

4.1 PVC白卡

RFID读写轴 rfid读写模块_数据_06


一般的电子标签有4个存储区:RFU,USR,EPC以及TID四个数据存储区,而PVC白卡只有EPC存储区,宽度为12个字节,一般存了卡号,就用不了别的地方了。

4.2 超高频UHF纸质电子标签

RFID读写轴 rfid读写模块_嵌入式_07


纸质电子标签只有USR和EPC两个存储区,EPC用于存储12字节卡号,USR存储区可存最大64字节数据,一般利用用户存储区来放需要处理的数据。

五.串口指令控制R200收发数据

5.1 单次读取卡号

Send:BB 00 22 00 00 22 7E
如果读到卡,模块回复:
BB 02 22 00 11 DC 30 00 00 00 00 00 00 00 00 00 00 00 00 00 0D AD FB 7E
BB 02 22 :是包识别符,长度3个字节;
00 11 :是包长度,16进制,0x11表示 17个字节,长度2个字节;
DC:
30 00:PC
00 00 00 00 00 00 00 00 00 00 00 00 00:卡号(EPC),可修改,占12个字节(通过修改EPC来改卡号)
0D AD:卡号的CRC
FB:Checksum;
7E;结束符;
如果读不到卡,或者无卡,模块回复:
BB 01 FF 00 01 15 16 7E
一共8个字节;

5.2 群读卡号

Send:BB 00 27 00 03 22 FF FF 4A 7E
BB 00 27 :帧标志,3个字节;
00 03:数据长度,2个字节;0003表示3个字节;
22:保留字节;
FF FF : 读取次数,连续读取65535次;如果连续读取100次,填入00 64;
4A:Checksum,00 27 00 03 22 FF FF 每个字节都累加起来,得到0x024A;支取低8位 4A;
7E:结束符

Recv: BB 01 FF 00 01 15 16 7E
BB 01 FF 00 01 15 16 7E
.
.
.
BB 02 22 00 11 C8 34 00 E2 00 10 71 00 00 52 9B 09 40 B4 02 16 3D D3 7E
BB 01 FF 00 01 15 16 7E
BB 02 22 00 11 C9 34 00 E2 00 10 71 00 00 52 9B 09 40 B4 02 16 3D D4 7E
BB 02 22 00 11 C0 34 00 E2 00 10 71 00 00 52 9B 09 40 B4 02 16 3D CB 7E
BB 01 FF 00 01 15 16 7E
发出连读读取帧后,会联续的接收到收到两种类型的包。
BB 01 FF 00 01 15 16 7E
这是其中一种,表示读取失败;
BB 02 22 00 11 C0 34 00 E2 00 10 71 00 00 52 9B 09 40 B4 02 16 3D CB 7E
这是另外一种,表示读到卡号:
具体格式与单次读取卡号的回复包相同;
BB 02 22:帧标志,3个字节;
00 11:数据长度,11 表示16进制,实际为17个字节;
C0:信号强度;RSSI,一个字节;
34 00:PC,2个字节;
E2 00 10 71 00 00 52 9B 09 40 B4 02:卡号,12个字节;
16 3D :CRC2个字节;
CB:Checksum,02 ~ 16 3D 累加,取低8位;
7E:结束符;

5.3 结束群读

Send: BB 00 28 00 00 28 7E
由于群读次数多时,操作时间会很长,客户可以发送该指令结束群读指令;
Recv: BB 01 28 00 01 00 2A 7E
模块执行结束群读指令的回复。

5.4 Read读卡内容

Send :BB 00 0C 00 07 23 00 00 00 00 60 00 96 7E (选择命令)
BB 00 39 00 09 00 00 00 00 03 00 00 00 04 49 7E (读命令)
其实是发送了两包数据,第一包是Select Set;第二包是写入包。Select Set的详细信息请参考上面Select Set的帧解析;下面介绍读取包:
BB 00 39 :是包识别符,长度3个字节;
00 09 :是包长度,16进制,0x09表示 9个字节,长度2个字节;
00 00 00 00:是访问密码(默认是00 00 00 00),长度4个字节;
03 : 表示选择用户存储区;
00 00 :表示读取的存储区的地址偏移量,00 00 指从0地址开始写入;
00 04 :表示去读的数据长度,00 04 表示写入4个字(8个字节);
49:Checksum,计算公式是,Checksum字节前面的所有字节,除了第一个字节BB外,每个字节的累加,结果只取低8位;
比如:00 39 00 09 00 00 00 00 03 00 00 00 04 累加的结果是:0x49,所以 Checksum就是0x49;
7E :结束字符;

Recv:BB 01 0C 00 01 00 0E 7E
BB 01 39 00 17 0E 34 00 E2 00 00 16 55 11 02 06 03 90 EA AF 01 02 03 04 05 06 07 08 49 7E
读取成功会接收到其实是2包,第一包是Select Set 的响应包;第二包是读取成功的响应包:
BB 01 39 :是包识别符,表示读取成功,长度3个字节;
00 17 :是包长度,16进制,0x17表示 23个字节,长度2个字节;
0E :PC+卡号的长度,16进制,0x0E表示 14个字节,长度1个字节;
34 00: 是PC值,这里不作解析,可以不处理;
E2 00 ~ EA AF :是成功写入的卡号,一共12个字节;
01 02 03 04 05 06 07 08 : 是读取的具体数据,一共8个字节。
49: Checksum;
7E:结束符;
读取失败会收到:
BB 01 0C 00 01 00 0E 7E
BB 01 FF 00 10 09 0E 34 00 E2 00 10 71 00 00 52 9B 09 40 B4 02 AA 7E
读取失败接收到其实是2包,第一包是Select Set 的响应包;第二包是读取失败的响应包:
BB 01 FF :是包识别符,表示出错,长度3个字节;
00 10 :是包长度,16进制,0x10表示 16个字节,长度2个字节;
09: 错误码: 0x09表示没找到卡;
0x16表示 访问密码错误;
0xA3表示超出读写范围;

5.5 Write写入内容

写入标签数据存储区的数据长度 DT 应不超过 32 个 word,即 64Byte 字节
Send:BB 00 0C 00 07 23 00 00 00 00 60 00 96 7E (选择命令)
BB 00 49 00 11 00 00 00 00 03 00 00 00 04 01 02 03 04 05 06 07 08 85 7E (写命令)
其实是发送了两包数据,第一包是Select Set;第二包是写入包。Select Set的详细信息请参考上面Select Set的帧解析;下面介绍写入包:
BB 00 49 :是包识别符,长度3个字节;
00 11 :是包长度,16进制,0x11表示 17个字节,长度2个字节;
00 00 00 00:是访问密码(默认是00 00 00 00),长度4个字节;
03 : 表示选择用户存储区;
00 00 :表示写入的存储区的地址偏移量,00 00 指从0地址开始写入;
00 04 :表示写入的数据长度,00 04 表示写入4个字(8个字节);
01 02 03 04 05 06 07 08 :是写入的数据;
85:Checksum,计算公式是,Checksum 字节前面的所有字节,除了第一个字节BB外,每个字节的累加,结果只取低8位;
比如:00 49 00 11 00 00 00 00 03 00 00 00 04 01 02 03 04 05 06 07 08 累加的结果是:0x85,所以 Checksum就是85;
7E :结束字符;

Recv:写入成功会收到:
BB 01 0C 00 01 00 0E 7E
BB 01 49 00 10 0E 34 00 E2 00 00 16 55 11 02 06 03 90 EA AF 00 2E 7E
写入成功会接收到其实是2包,第一包是Select Set 的响应包;第二包是写入的响应包:
BB 01 49 :是包识别符,表示写入成功,长度3个字节;
00 10 :是包长度,16进制,0x10表示 16个字节,长度2个字节;
0E :PC+卡号的长度,16进制,0x0E表示 14个字节,长度1个字节;
34 00: 是PC值,这里不作解析,可以不处理;
E2 00 ~ EA AF :是成功写入的卡号,一共12个字节;
00 : 表示操作成功;
2E : Checksum;
7E:结束符;

写入失败会接收到:
  BB 01 0C 00 01 00 0E 7E
  BB 01 FF 00 10 10 0E 34 00 E2 00 00 16 55 11 02 06 03 90 EA AF F4 7E 
  写入失败接收到其实是2包,第一包是Select Set 的响应包;第二包是写入的响应包:
  BB 01 FF :是包识别符,表示出错,长度3个字节;
  00 10 :是包长度,16进制,0x10表示 16个字节,长度2个字节;
  10: 错误码: 0x10表示没找到卡;
       0x16表示 访问密码错误;
       0xB3表示超出读写范围;

5.6 设置发射功率

Send:
BB 00 B6 00 02 04 E2 9E 7E ;设置发射功率为18.5/12.5dBm(R200功率/R200 Lite功率); (0.6m)
BB 00 B6 00 02 05 78 35 7E ;设置发射功率为20/14dBm; (0.8m)
BB 00 B6 00 02 06 0E CC 7E ;设置发射功率为21.5/15.5dBm; (0.9m)
BB 00 B6 00 02 06 A4 62 7E ;设置发射功率为23/17dBm; (1m)
BB 00 B6 00 02 07 3A F9 7E ;设置发射功率为24.5/18.5dBm; (1.15m)
BB 00 B6 00 02 07 D0 8F 7E ;设置发射功率为26/20dBm;(最大发射功率,也是默认设置) (2m)
以上的数据包,选择发送一条;
Recv:
BB 01 B6 00 01 00 B8 7E
发送设置任何发射功率,设置成功后,均回复该数据包。
## 五.串口指令控制R200收发数据

六.搜索2张卡 群读卡号

RFID读写轴 rfid读写模块_射频_08


RFID读写轴 rfid读写模块_数据_09


划红线的就是卡号,搜索到两种卡号,证明搜索到附近的两张RFID标签了