Arduino mega驱动UHF RFID读取RSSI值

sky5932734   2011-10-17 17:26 楼主

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

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复