Andrea Angelotti
RFID
Tutorials -
Lunedì 09 Agosto 2010 23:38
Scritto da Andrea Angelotti

Inanzi tutto, cos'è un RFID?

Semplice! Un sistema di IDentificazione a Frequenze Radio (in inglese: Radio Frequency IDentification).
Cioè?
Detto in parole povere un sistema composto da un transponder (o TAG) ed un lettore di transponder, il TAG contiene determinate informazioni salvate su un microchip ed una bobina (una normalissima antenna), il lettore interroga e legge questi dati.

Cosa c'è di così unico ed utile nei sistemi RFID?

Il TAG nella maggior parte dei casi (quando le informazioni da trasmettere sono contenute o quando non è necessario riscrivere sul chip) è passivo, cioè non richiede alimentazione propria, ma sarà il lettore a fornirgliela, eccitando il microchip con un segnale radio a frequenze medie, prima della lettura.
Quindi il lettore invia un segnale radio, per induzione eccita il TAG, che invia i dati contenuti nel chip al lettore; tutto questo senza contatto e quindi con la possibilità di lasciare il TAG in una tasca o nel portafoglio.
La distanza di lettura dipende quasi esclusivamente dai diversi tipi di lettori.

Questo è un sistema RFID.

Arriviamo alla parte che interessa noi amanti e possessori di Arduino.

In realtà interfacciarsi con un lettore RFID è davvero facile, fin troppo, considerando le potenzialità smisurate di questa tecnologia.

Prendiamo per esempio un lettore ID-12 della Id Innovation, che ha antenna incorporata, output in formato ASCII ed un range di lettura di circa 10cm.
Ed ecco a voi uno schema dei piedini da collegare (per maggiori dettagli controllate il datasheet allegato):

Ora un codice base per verificare che la stringa letta in un TAG sia uguale ad una salvata in memoria (il codice è privo della parte loop(), per averlo completo leggete il file allegato "RFID sketch"):

const int ledPin = 13;
int count=1;
int str_count=0;
char code[11], string[10];
char check_str[10]={'1','2','3','4','A','B','C','5','D','0'};
char val = 0;

void setup() {
 Serial.begin(9600); // Si connette alla porta seriale
 pinMode(ledPin, OUTPUT);
}

// Funzione che controlla che la stringa letta sia uguale a quella salvata
void func_check(char *string){
 // Controlla la stringa carattere per carattere (l'ID del TAG ha 10 caratteri)
 for(int i=0;i<10;i++){
   if(string[i]==check_str[i]){
     if(i==9){
       Serial.println("Check Passed!!");
       for(int j=0;j<3;j++){
         digitalWrite(ledPin, HIGH);delay(500);
         digitalWrite(ledPin, LOW);delay(500);
       }
     }
   }
   else{
     Serial.println("Check not passed.");
     break;
   }
 }
}
 

Gioblu Robotics © 2010 - 2012 · Sitemap · privacy

gioscarab@gmail.com

Gioblu BOTServer è online dal 10 Aprile 2010 - 319.232 Visite - 1.027.175 Pagine visualizzate - 182.309 Visitatori unici - 536 utenti attivi