Auteur Sujet: rfid arduino  (Lu 66 fois)

Admin

  • PLATON-Y
  • Newbie
  • *******
  • Messages: 30
  • Karma: +3/-0
  • L'avenir appartient à ceux qui dorment peu!
    • W.H.P-Y
rfid arduino
« le: 02 novembre, 2018, 01:53:14 am »

/* Platon-y RFID kit Arduino */

// serial event definis
#define  STX 2
#define  ETX 3
#define  SERIALSTX 0
#define  SERIALETX 1
#define  SERIALRDY 2

// résultats de lecture RFID
 String card_enrolled;   // = 0 carte non enregistrer = 1 carte valide et enregistrer
 String  card_addr;      // si la carte est valide on maintient un index
 String  card_type;      // identifier le type de carte
 String  card_number;    // identifier le numéro de série

byte  serial_state;
String serialinput;
boolean  carddetected=false;



void setup() {
  // port série initialisation :
  Serial.begin(9600);
  pinMode(13,OUTPUT);
  Serial.println("platon-y RFID reader");
  delay(1000);
  Serial.print("\002v0\003");
  delay(500);
  serial_state=SERIALSTX;
  serialinput="";
  check_RFID();
 
}

void loop() {

  if(check_RFID()==true){
   
    /* installez vos codes
    */
   
    // écriture des informations lu
    Serial.print("card enrolled: ");
    Serial.println(card_enrolled);
    Serial.print("card addr: ");
    Serial.println(card_addr);
    Serial.print("card type: ");
    Serial.println(card_type);
    Serial.print("card number: ");
    Serial.println(card_number);
    Serial.println("");
   
    // notification par led broches 13 clignotement
 
    if(card_enrolled.equals("1")){
      Serial.print("validation de votre carte = ");
      Serial.println(card_addr);
      Serial.println("");
      // Flash LED
      digitalWrite(13,HIGH);
      delay(500);
      digitalWrite(13,LOW);
    }
  }

}


/* ne modifier pas ce code sauf par pur onanisme ;) */
 
boolean check_RFID(void){

  int  strindex;
  int  strindexe;
 
      // verifier les données valide de la carte
     if(serial_state==SERIALRDY){
     
      //extraction des données inscrites sur la cartes
      strindex=serialinput.indexOf(",");
      card_enrolled=serialinput.substring(0,strindex);
     
      //extraire addr de la carte
      strindex++;
      strindexe=serialinput.indexOf(",",strindex);
      card_addr=serialinput.substring(strindex,strindexe);
     
      //extraire type de carte
      strindex=strindexe+1;
      strindexe=serialinput.indexOf(",",strindex);
      card_type=serialinput.substring(strindex,strindexe);
     
      //extrait du numéro de carte
      strindex=strindexe+1;
      strindexe=serialinput.indexOf(",",strindex);
      card_number=serialinput.substring(strindex,strindexe);
     
      // effacer la chaîne reçue et préparation à l'inscriptions des nouveaux flux
     serialinput="";
     serial_state=SERIALSTX;
     return(true);
   }
   return(false);  // renvoie false si les données RFID ne sont pas disponibles
}


/* routine Rx pilotée par interruption */

void serialEvent() {
  while (Serial.available()) {
    // obtention du nouvel octet:
    char inChar = (char)Serial.read();
   
    // attendre STX
    if(serial_state==SERIALSTX){
      if(inChar==STX){
        serial_state=SERIALETX;    // Caractère STX détecté, phase suivante
        return;
        }
    }
   
    // Stocker le caractère RX sur l'entrée série jusqu'à la détection d'ETX
    if(serial_state==SERIALETX){
      if(inChar!=ETX){
        serialinput += inChar;
        return;
        }
    }
   
      // indication de données prêtes après detection ETX
      serial_state=SERIALRDY;
    }
  }


voila un petit apercu du gros projet en cours, contacter par MP pour plus de détail ;)
   
by platon-y
L'avenir appartient à ceux qui dorment peu!