Esperimenti con il lettore Innovations RFID ID-12.
L’identificazione a frequenza (RFID) è un sistema molto interessante che permette, appunto, di identificare gli oggetti a distanza, in modo automatico. Questa tecnologia si basa sull’uso di transponder, definiti tag, che permettono di trasmettere al lettore (nel nostro caso il reader RFID ID-12), tramite onde radio, i dati contenuti al loro interno.
Possiamo pensare a questa tecnologia come un’evoluzione dei codici a barre, ma che presenta notevoli vantaggi come, la lettura simultanea di tag (anche 200 tag al secondo), una maggiore resistenza all’usura e la capacità di memorizzare diverse informazioni nel loro chip integrato.
I tag presenti in commercio sono di diverso tipo e si presentano spesso come smart card, portachiavi e bande adesive. La figura seguente mostra come è strutturato un tag RFID
Le parti principali che lo compongono sono l’antenna è il microchip. L’antenna ha il compito di alimentare il microchip sfruttando il campo elettromagnetico generato dal lettore, e di veicolare verso il lettore il segnale del microchip.
In commercio esistono vari dispositivi evoluti che permettono con poca spesa di creare il proprio sistema RFID. Il dispositivo ID-12 con cui ho avuto esperienza è prodotto dalla Innovations, ha un costo di circa 25-30€ è il suo impiego risulta semplice ed intuitivo. Di seguito la pin function del dispositivo:
Nel lettore ID-12 abbiamo un’antenna integrata che genera un segnale capace di fornire l’alimentazione al tag. Quando avviciniamo il tag al lettore, il microchip viene alimentato ed invia il suo identificativo.
Per lavorare con il lettore possiamo collegare l’ID-12 in questo modo
L’alimentazione di 5Vdc viene fornita tramite i pin 11 e la massa tramite il pin1. Il pin2 (Reset) viene collegato alla 5Vdc, ponendolo a massa otteniamo il reset dell’ID-12.
Il pin10 (LED/Beeper) viene utilizzato per pilotare un bepper(cicalino); questa funzione è molto interessante poiché il segnale viene generato solo quando il tag è letto correttamente.
Il pin7 (Format Selector) gestisce il formato del dato in uscita al pin10; nel mio caso collegandolo a massa ottengo un uscita ASCII (gli altri formati supportati sono Magnet Emulation, collegando il pin7 al pin10 e Wiegand26 collegando il pin7 alla 5Vdc)
Sul pin9 (data pin D0) è disponibile il segnale TTL contenente il dato memorizzato nel tag. Il pin8 (data pin D1) fornisce lo stesso dato ma il segnale è RS232 compatibile, ed quindi possibile collegare questo pin direttamente alla porta seriale del pc.
La portata dell’antenna integrata dell’ID-12 è di qualche centimetro, sufficiente per il nostro esperimento (ma è possibile portare il range di lettura a circa 10-12 cm collegando un’antenna esterna sui pin 3 e 4).
Lo schema successivo mostra i collegamenti da effettuare con il Netduino:
Il circuito è identico allo schema base visto precedentemente, l’uscita dell’ID-12 (pin9) è collegata al pin0 (UART RX) del Netduino.
Alimentiamo il Netduino e proviamo ad avvicinare un tag al dispositivo per verificare che il led sul pin10 si accenda, dandoci conferma della corretta lettura del tag.
Il formato ASCII del dato restituito dal lettore ID-12 è composto da 16 byte ed è rappresentato in figura:
- Il primo byte rappresenta lo Start TX e vale 0x02
- Data è composto da 10 byte che rappresentano l’ID del tag
- Checksum vale 2 byte e si ottiene ponendo in XOR i 10 byte di dati
- Il byte 14 è un Carrier Return e vale 0x13
- il byte 15 è un Line Feed e vale 0x10
- il byte 16 rappresenta l’End TX e vale 0x03
Ora passiamo scrivere il codice C# per questo circuito
Int32 Ciclo = 0; //Creao un oggetto per lavorare con //la porta seriale SerialPort sp = new SerialPort("COM1", 9600, Parity.None, 8); //Apro la porta sp.Open(); while (true) { //Attesa di 200 millisecondi Thread.Sleep(200); //aspetto la lettura di tutti i 16 byte if (sp.BytesToRead == 16) { //creo un buffer di 16 byte Byte[] b = new Byte[sp.BytesToRead]; //leggo dalla seriale i dati inviati dall'ID-12 sp.Read(b, 0, b.Length); //eseguo un ciclo che mi printa tutti i singoli //byte del buffer for (Ciclo = 0; Ciclo < b.Length; Ciclo++) { Debug.Print(b[Ciclo].ToString()); } } }
Il codice precedente ha evidenziato come leggere i dati provenienti dal lettore ID-12. L’esempio è molto semplice e non ha bisogno di grosse descrizioni.
In questo modo possiamo realizzare qualsiasi applicazione basata sulla tecnologia RFID.
Related posts
2 Comments
Lascia un commento Annulla risposta
Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.
Articoli popolari
Sorry. No data so far.
.Net micro framework Arduino Arduino Webserver Domotica Flyport I2C IOT Netduino OpenPicus raspberry RTC Speed Test
Ciao Marco! Intanto complimenti per il sito e i tuoi articoli!
Che TAG hai usato? Per programmarli cosa hai usato?
Quando si comprano sono vergini o hanno già un codice associato?
Ciao Giulio
grazie dei complimenti!!
ho utilizzato questo tag (http://www.coolcomponents.co.uk/catalog/rfid-125khz-p-648.html) sono già programmati. Solitamente il codice è univoco è molto difficile avere tag con codici uguali. Per programmarli devi usare dei tag scrivibili che costano decisamente molto di più di quelli già pronti, inoltre ti devi procurare un lettore/scrittore.
Diciamo che per applicazioni standard, che non hanno bisogno di elevati standard di sicurezza puoi usare quelli già programmati.
a presto
Marco