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/

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>
 
const int RFIDResetPin = 13;
// 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);
 
  portId12LA.begin(9600);
 
  pinMode(RFIDResetPin, OUTPUT);
  digitalWrite(RFIDResetPin, HIGH);
}
 
void loop(){
 
  char tagString[13];
  int index = 0;
  boolean reading = false;
 
  portId12LA.listen();
  while(portId12LA.available()){
 
    int readByte = portId12LA.read(); //read next available byte
 
    if(readByte == 2) reading = true; //begining of tag
    if(readByte == 3) reading = false; //end of tag
 
    if(reading && readByte != 2 && readByte != 10 && readByte != 13){
      //store the tag
      tagString[index] = readByte;
      index ++;
    }
  }
 
  checkTag(tagString); //Check if it is a match
  clearTag(tagString); //Clear the char of all value
  resetReader(); //eset the RFID reader
}
 
void checkTag(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);
}
 
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: 2016/05/23 15:59 par colin