概述
UHF RFID MODULE-RS485 远距离RFID标签读卡器模块是一款非接触式超高频远距离IC卡读写模块。广泛地运用于车辆监控、遥控、家庭防盗系统、无线抄表、门禁系统、小区传呼、工业数据采集系统、无线标签、身份识别、非接触RF智能卡、小型无线数据终端、安全防火系统、无线遥控系统、生物信号采集、水文气象监控、机器人控制、等领域中。
DFRobot推出的这款UHF RFID MODULE-RS485 远距离RFID标签读卡器模块能很方便的融入到现有无线网络中去,同时模块有另一拥有UART接口的版本,创客们可以通过UART接口进行通信,使用方便。
技术指标
- 模块接口:RS485
- 工作电流:最大200mA
- 输出功率:最大24dBm
- 读卡距离: 0~30cm,最远可达50cm(有效距离与天线、电子标签及工作环境有关)
- 灵 敏 度:典型-102dBm最差-98dBm
- 支持波特率:9600、19200、38400、57600、115200(单位kbps)
- 支持协议:ISO18000-6C(EPC G2)
- 识别时间:读每8字节小于10ms,写每字节小于20ms
- 环境温度:-20℃~+65℃
- 模块尺寸:155mm*100mm
接口定义
- 红色线:模块电源输入端7V/2A
- 黑色线:模块GND
- 绿色线:接RS485的A端
- 黄绿色线:接RS485的B端
UHF RFID MODULE-UART的使用
UHF RFID MODULE-UART远距离RFID标签读卡器模块的读写方式采用固定的数据传输格式,根据发送端的不同(主机或从机)具有不同的数据格式,有如下三种类型:
命令帧 是主机操作读写器得数据帧,数据流通方向由 主机到从机 ,则主机需发送如下数据:
PacketType | Length | Command Code | Device Number | Command Data | ... | Command Data | Command Data | Checksum |
---|---|---|---|---|---|---|---|---|
0xa0 | n+3 | 1 byte | 1 byte | Byte 1 | Byte n-1 | Byte n | cc |
Packet Type | 数据包类型域,命令帧包类型固定为0xa0 |
Length | 数据包长域,表示Length域后帧中字节数 |
Command Code | 命令码域 |
Device Number | 设备号域,当设备号usercode为00时,表示群发 |
Command Data | 命令帧中的参数域 |
Checksum | 校验和域,规定校验范围是从包类型域到参数域最后一个字节为所有字节的校验和,读写器接受到命令帧后需要计算校验和来检错 |
命令完成响应帧 是一种固定长度的数据帧,当读写器接收到主机发来的命令并完成后,读写器会返回命令完成响应帧。数据流通方向由 从机到主机 ,其格式如下表所示:
PacketType | Length | Command Code | Device Number | Status | Checksum |
---|---|---|---|---|---|
0xe4 | 0x04 | 1 byte | 1 byte | 1 byte | cc |
Status是状态域,状态域表明读写器完成PC机命令后读写器状态或执行命令后的结果,其规定如下表所示;
序号 | 值 | 名称 | 描述 |
---|---|---|---|
1 | 0x00 | ERR_NONE | 命令成功完成 |
2 | 0x02 | CRC_ERROR | CRC校验错误 |
3 | 0x10 | COMMMAND_ERROR | 非法命令 |
4 | 0x01 | OTHER_ERROR | 其他错误 |
信息帧 是读写器返回给主机的数据帧,比如,用于发送标签给主机,数据流通方向由 从机到主机 ,其格式定义如下表所示
PacketType | Length | Response Code | Device Number | Response Data | ... | Response Data | Checksum |
---|---|---|---|---|---|---|---|
0xe0 | n+3 | 1 byte | 1 byte | Byte 1 | Byte n | cc |
Response Code是信息码域,取值表示信息的类型;
Response Data是信息帧中的参数域;
下面将列举一些常用主机命令,更多内容与更详细的说明请参考UHF RFID MODULE技术文档
标签读取 | 标签销毁 | 停止读取 | 重新识别标签 | 控制BUZZER |
---|---|---|---|---|
A0 06 80 00 01 02 01 D6 | A0 08 86 00 00 12 34 56 78 BE | A0 03 50 00 0D | A0 03 FC 00 61 | A0 04 B0 00 00(关闭) AC / A0 04 B0 00 01(开启) AB |
在给UHF RFID MODULE-UART 远距离RFID标签读卡器模块上电后,模块会发出短暂的“嘟”声,且模块处于连续读卡模式,把电子标签置于模块上方,模块开始读卡,通过串口给模块发送停止读卡命令可以停止读卡(停止读卡命令为A0 03 50 00 0D),如果操作成功,返回数据位E4 04 50 00 00 C8,如果操作失败,返回数据位E4 04 50 00 (其他值) C8。
⚠特别注意,模块具有销毁、锁定等特殊功能,如果电子标签一旦被销毁,则此电子标签就废了,请慎用销毁功能!
教程
示例
我们先试着让读卡器与arduino主控板进行通信,只需要通过RS485/TTL转接器(例如:Multiplexer 多功能转换器(SKU:TEL0070))连接两者就可以实现信息互传。连线图如下:
代码
//本示例演示:由arduino控制关闭读取与重置配置的状态切换
unsigned char StopReadCode[5] = {0xa0, 0x03, 0xa8, 0x00, 0xb5}; //Stop reading the label code
unsigned char ResetCode[5] = {0xa0, 0x03, 0x65, 0x00, 0xf8}; //Reset code
unsigned char StopReadCodeCB[6] = {0xe0, 0x04, 0xa8, 0x00, 0x00, 0x74}; //Stop reading code success and return the value
unsigned char ResetCodeCB[6] = {0xe4, 0x04, 0x65, 0x00, 0x00, 0xb3}; //Reset code success and return the value
unsigned char data[6] = {};
void setup()
{
Serial.begin(9600);
}
void loop()
{
int i;
int n = 1;
delay(2000);
while (n)
{
Serial.write(StopReadCode, 5);
delay(200);
if (Serial.available())
{
for (i = 0; i < 6; i++)
{
data[i] = Serial.read();
delay(1);
}
for (i = 0; i < 6; i++)
{
if (data[i] == StopReadCodeCB[i])
n = 0;
else
n = 1;
}
}
delay(500);
}
n = 1;
while (n)
{
Serial.write(ResetCode, 5);
delay(200);
if (Serial.available())
{
for (i = 0; i < 6; i++)
{
data[i] = Serial.read();
delay(1);
}
for (i = 0; i < 6; i++)
{
if (data[i] == ResetCodeCB[i])
n = 0;
else
n = 1;
}
}
delay(500);
}
}
使用实例
该读写器使用RS485接口,演示中我们使用Multiplexer 多功能转换器(SKU:TEL0070)将RS485接口转接成USB接口,方便数据观察与调试。在听到“嘀”的一声激活蜂鸣后,读卡器就正式开始工作了。
应用中,我们使用串口助手来帮助我们更方便地发送与接收命令。通过读取tag命令,可以看到远距离RFID标签读卡器做出了回应,返回了读取的标签名。之后我们继续尝试其他指令,如下图所示。
图中左侧为主机发送的命令帧及其对应说明,右侧为读卡器返回的信息帧以及命令完成响应帧其对应说明。
购买RoMeo UHF RFID MODULE-RS485 远距离RFID标签读卡器 (SKU:TEL0081)