< >
Home » Arduino通信模块 » Arduino通讯模块-UHF RFID MODULE-RS485 远距离RFID标签读卡器

Arduino通讯模块-UHF RFID MODULE-RS485 远距离RFID标签读卡器

外观

外观

概述

  • 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))连接两者就可以实现信息互传。连线图如下:
TEL0081 line2.png

代码

//本示例演示:由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接口,方便数据观察与调试。在听到“嘀”的一声激活蜂鸣后,读卡器就正式开始工作了。

TEL0081 line.png

  • 应用中,我们使用串口助手来帮助我们更方便地发送与接收命令。通过读取tag命令,可以看到远距离RFID标签读卡器做出了回应,返回了读取的标签名。之后我们继续尝试其他指令,如下图所示。

Tag read.png

  • 图中左侧为主机发送的命令帧及其对应说明,右侧为读卡器返回的信息帧以及命令完成响应帧其对应说明。

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: none