Outils pour utilisateurs

Outils du site


id-12la

ID12LA

ID-12LA fonctionne jusqu'à environ 2.5 cm de distance. Le rafraîchissement des données se fait à environ 8Hz.

Liens :

http://bildr.org/2011/02/rfid-arduino/ https://hcgilje.wordpress.com/resources/rfid_id12_tagreader/ Raspberry

Datasheet :

http://cdn.sparkfun.com/datasheets/Sensors/ID/ID-2LA,%20ID-12LA,%20ID-20LA2013-4-10.pdf

Attention au conflit de port sur l'entrée RX 0. Il faut débrancher le port 0 pour téléverser le programme. Pour cette raison, j'ai utilisé la librairie SoftwareSerial pour éviter ce problème.

Si 2 tags sont en même temps cela ne fonctionne pas !

/*
 * Author : http://bildr.org/2011/02/rfid-arduino/  and Colin Bouvry
 */
 
#include <SoftwareSerial.h>
 
// ID12LA
const int RFIDResetPin = 13;
const int MAXCHARACTER = 10;
char tagString[MAXCHARACTER];
unsigned long timeElapsedMs;
 
// software serial #2: RX = digital pin 8, TX = digital pin 9
// on the Mega, use other pins instead, since 8 and 9 don't work on the Mega
SoftwareSerial portId12LA(8, 9);
 
void setup(){
  Serial.begin(9600);
 
  // ID12LA
  portId12LA.begin(9600);
  pinMode(RFIDResetPin, OUTPUT);
  digitalWrite(RFIDResetPin, HIGH);
}
 
void loop(){
 
 // ID12LA
 
  if(millis() - timeElapsedMs > 150)
  {
    timeElapsedMs = millis();
 
    int index = 0;
    boolean bReading = false;
    boolean bNewTag = false;
    portId12LA.listen();
    while(portId12LA.available()){
 
      int readByte = portId12LA.read(); //read next available byte
 
      if(readByte == 2) 
      {
        bReading = true; //begining of tag
        index = 0;
      }
      if(readByte == 3) 
      {
        bReading = false; //end of tag
        bNewTag = true;
      }
 
      if(bReading && readByte != 2 && readByte != 10 && readByte != 13){
        //store the tag
        if(index < MAXCHARACTER)
          tagString[index] = readByte;
        index ++;
      }
    }
 
    if(bNewTag)
      sendTag(tagString); //Send tag
 
    clearTag(tagString); //Clear the char of all value
    resetReader(); //Reset the RFID reader
  }
}
 
 
void sendTag(char tag[]){
///////////////////////////////////
//Check the read tag against known tags
///////////////////////////////////
  if(strlen(tag) == 0) 
     return; //empty, no need to contunue
  Serial.println(tag); //read out any unknown tag
}
 
void resetReader(){
///////////////////////////////////
//Reset the RFID reader to read again.
///////////////////////////////////
  digitalWrite(RFIDResetPin, LOW);
  digitalWrite(RFIDResetPin, HIGH);
  //delay(150); //150
}
 
void clearTag(char one[]){
///////////////////////////////////
//clear the char array by filling with null - ASCII 0
//Will think same tag has been read otherwise
///////////////////////////////////
  for(int i = 0; i < strlen(one); i++){
    one[i] = 0;
  }
}

id-12la.txt · Dernière modification: 2018/05/26 03:14 par colin