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