原创 Arduino mega驱动UHF RFID读取RSSI值

2011-10-9 16:45 4814 2 3 分类: 通信

Arduino mega驱动UHF RFID读取RSSI值
RSSI(Received Signal Strength Indicator)是接收信号的强度指示,它的实现是在反向通道基带接收滤波器之后进行的。RSSI技术是通过接收到的信号强弱测定信号点与接收点的距离,进而根据相应数据进行定位计算的一种定位技术。现在通过代码得到RSSI值。

硬件:
      1、soliddigi Uart TTL UHF RFID module
      2、902~928MHz 5dBi RFID Antenna
      3、soliddigi Arduino mega



读取RSSI使用Uart RFID控制指令集中的Command Inventory with RSSI指令,
Arduino代码如下:

  1. //RFID reads the tag by Arduino mega
  2. unsigned int status = 0;
  3. unsigned char val,RSSI,Tag_num,I,Q;
  4. unsigned char SCMD[] = {0x43,0x03,0x01};
  5. unsigned char Rcard[12];
  6. unsigned char Freq[3];

  7. void setup()
  8. {
  9.   Serial.begin(115200);
  10.   Serial1.begin(115200);
  11. }

  12. void loop()
  13. {
  14. if (status == 0)  
  15.      Serial1.write(SCMD,3);
  16.   delay(500);

  17.        if (Serial1.available() > 0) {
  18.             val = Serial1.read();
  19.             
  20.             switch(status) {
  21.               case 0:  // parse 0x44
  22.                    if (val == 0x44)
  23.                           {status = 1; /*Serial.print(val);*/}
  24.                    break;
  25.               case 1:   //parse 0x16
  26.                    if (val == 0x16)
  27.                           {status = 2; /*Serial.print(val);*/}
  28.                        else if (val == 0x05)  
  29.                            {Serial.println("No Tag read");
  30.                           status = 22; /*Serial.print(val);*/}
  31.                     break;
  32.               case 2:
  33.                    if (val > 0)
  34.                           {status = 3; Tag_num = val;
  35.                                Serial.print("Tag_num = ");
  36.                                Serial.println(Tag_num,HEX);}
  37.                    break;
  38.               case 3:
  39.                    RSSI = val; I = (val&0x0F)*2; Q = (val>>4)*2;
  40.                    Serial.print("RSSI = ");
  41.                    Serial.println(RSSI,HEX);
  42.                    status = 4;
  43.                    break;
  44.               case 4:
  45.               case 5:
  46.               case 6:
  47.                   Freq[status - 4] = val;
  48.                   status ++;
  49.                  // Serial.print(val);
  50.                   break;
  51.               case 7:
  52.                   if (val == 0x0E)
  53.                      {status = 8; /*Serial.print(val);*/}
  54.                   break;
  55.               case 8:
  56.                   if (val == 0x30)
  57.                      {status = 9; /*Serial.print(val);*/}
  58.                   break;
  59.               case 9:
  60.                   if (val == 0x00)
  61.                      {status = 10;/* Serial.print(val);*/}
  62.                   break;
  63.               case 10:
  64.               case 11:
  65.               case 12:
  66.               case 13:
  67.               case 14:
  68.               case 15:
  69.               case 16:
  70.               case 17:
  71.               case 18:
  72.               case 19:
  73.               case 20:
  74.               case 21:
  75.                   Rcard[status - 10] = val;
  76.                   status ++;
  77.                  // Serial.print(val);
  78.                   if (status == 22)  status = 0;
  79.                   break;
  80.      
  81.               case 22:
  82.                   if (val == 0x00) {status = 23; /*Serial.print(val);*/}
  83.                   break;
  84.               case 23:
  85.                   if (val == 0x00) {status = 24; /*Serial.print(val);*/}
  86.                   break;
  87.               case 24:
  88.                   if (val == 0x00) {status = 0; /*Serial.print(val);*/}
  89.                   break;  
  90.               default:
  91.                   break;
  92.               }
  93.           }
  94. }
复制代码
RSSI值赋给一个变量,从Arduino的serial port可见:


更多操作指令,请参考 Uart RFID 控制指令集:
TTL UART/USB Long Range UHF RFID reader Module (ISO18000-6C EPC G2) UART Protocol

http://www.soliddigi.com/download/showdownload.php?id=54&lang=en
PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户377235 2015-10-18 19:02

你的文章写的很好,很受用我们认识一下有商谈qq744077432
相关推荐阅读
用户380732 2011-10-26 15:47
超高频RFID读写器读写电子标签的详解
超高频RFID读写器读写电子标签的详解本文主要针对UHF RFID读标签数据和写标签数据功能,进行实现和总结。硬件部分:1) [url=http://www.soliddepot.com/index....
用户380732 2011-10-12 17:26
Spruce和UHF RFID 构建Ethernet(RJ45)接口以太网通讯
Spruce + UHF RFID 构建 Ethernet 接口通讯硬件列表:1 、 soliddigi TTL UART UHF RFID reader module 2 、 Soliddigi S...
用户380732 2011-10-10 16:42
RJ45 接口 Ethernet通信UHF RFID 读写系统解决方案
系统框图如下:1 、 soliddigi Spruce ( STM32F103VET6 Cortex-M3 ARM Dev-Board )通过 Uart 接口和 soliddigi UHF RFID ...
用户380732 2011-09-28 14:03
BMP085气压传感器基于arduino平台教程
BMP085是一款高精度、超低能耗的压力传感器,可以应用在移动设备中。它的性能卓越,绝对精度最低可以达到0.03hPa,并且耗电极低,只有3μA。BMP085采用强大的8-pin陶瓷无引线芯片承载(...
用户380732 2011-09-27 10:00
FPGA与RFID通讯
大家应该熟悉FPGA跟PC机通讯的原理,PC机通过串口发送指令给FPGA,FPGA接收指令,再把我们设定的指令回发给PC机。FPGA跟RFID<先发送指令给RFID,比如读标签指令,RFID读...
EE直播间
更多
我要评论
1
2
关闭 站长推荐上一条 /3 下一条