©Copyright 2005 -Tutti i diritti sono riservati.

1
PCF7931: Guida completa allo sniffing.
Autore: TheInsider
Revisione: 1.0.4
Questa approfondita guida è rivolta a tutti coloro che sono affascinati dalla
tecnologia RFID (Radio Frequency Identification) ma che non hanno
competenze specifiche in materia.
Per quanto mi sarà possibile cercherò di utilizzare un linguaggio facilmente
accessibile a chiunque, mi perdoneranno i lettori più esperti se indugierò a
volte nel chiarire nozioni triviali e per molti scontate.
Questa guida mira ad individuare un modo per captare un segnale
elettromagnetico prodotto da una sorgente (uno scrittore RFID) e diretto ad un
ricevitore nelle vicinanze (un transponder RFID).
Per quale motivo dovremmo voler captare questa comunicazione
scrittore/transponder? La risposta è semplice: per capirne il funzionamento e
verificarne i limiti in termini di distanza di lettura e di sicurezza intrinseca del
sistema.
Investireste in un sistema di comunicazione RFID che non offre adeguate
garanzie in termini di protezione dei dati trasmessi e che risulti facilmente
violabile da un qualunque ragazzino curioso? Probabilmente no, ed è per
questo motivo che è necessario vi facciate un’idea precisa dei limiti di tali
sistemi di comunicazione per poter scegliere quello che meglio si adatta alle
vostre esigenze in termini di costo, affidabilità e sicurezza.
Dopo questa necessaria premessa possiamo entrare nel vivo del problema
posto: è così semplice intercettare una comunicazione tra uno scrittore RFID
ed un transponder? La risposta è sì, è abbastanza semplice se si conoscono le
basi della tecnologia RFID e questo capitolo intende fornire non solo le basi
teoriche ma anche elementi pratici di immediata applicazione.
Quando uno scrittore RFID (detto “writer”) invia un messaggio ad un
transponder RFID (detto “tag”) lo fa emettendo un campo magnetico variabile
nel tempo e sfruttando un fenomeno detto di induzione elettromagnetica, lo
stesso fenomeno che si sfrutta nei comuni trasformatori. Grazie a questo
fenomeno, ai capi della bobina del tag (un avvolgimento di filo di rame
smaltato che si trova all’interno del tag), si genera una tensione di ampiezza
proporzionale all’intensità del campo magnetico prodotto dal writer.
In parole povere se ad un certo istante il campo magnetico prodotto dal
writer vale 10 allora la tensione ai capi del tag varrà 10, se il campo magnetico
si annulla allora anche la tensione sul tag si annulla. Se un istante dopo il
campo magnetico diventa 5, anche la tensione sul tag diventa 5 (possiamo
ignorare per ora le unità di misura).
Grazie a questa magica induzione elettromagnetica allora diventa facile
inventarsi un sistema per inviare dati ad un tag, basta stabilire che la presenza
di un campo magnetico variabile corrisponde ad un 1 logico e la sua assenza
corrisponde ad uno 0 logico.
©Copyright 2005 -Tutti i diritti sono riservati.
2
Questo è intuitivo da capire se il tag è alimentato a batteria (tag cosiddetto
“attivo”), ma come è possibile fare in modo che il tag riesca ad autoalimentare
la circuiteria interna (microcontrollore, eeprom, controllo d’accesso) sfruttando
il campo magnetico emesso dal writer?
Questa è la vera meraviglia suscitata dai tag cosiddetti “passivi” come il ben
noto transponder PHILIPS PCF7931, costituito da un minuscolo contenitore in
plastica nera di 12x6mm senza alcun contatto e senza alcuna fonte di
alimentazione esterna.
Come è possibile? E’ presto detto. La tensione che si presenta ai capi della
bobina del tag quando il writer emette un campo magnetico variabile nel
tempo è capace di generare una corrente piccola, dell’ordine dei uA
(microAmpere), ma già sufficiente ad alimentare il microchip contenuto nel tag
e a permetterne il funzionamento.
L’obiezione che può essere posta allora è la seguente: se il writer trasmette
un 1 logico tutto fila liscio perchè il campo magnetico variabile è presente e
dunque il tag si può autoalimentare, ma quando il writer trasmette uno 0
logico (campo magnetico nullo) il tag perde completamente la sua fonte di
nutrimento energetico, come fa ad autoalimentarsi e a registrare
correttamente il dato???
L’obiezione è corretta ma la soluzione è semplice: il tag contiene un
condensatore che si carica durante la fase attiva del campo magnetico e che
funge da riserva energetica nei momenti di assenza di campo magnetico,
permettendogli di sopravvivere. Ovviamente questa riserva energetica è
limitata dalle microscopiche dimensioni del condensatore presente nel tag e
consente di spegnere il campo magnetico solo per poche decine di
microsecondi, pena lo spegnimento del tag.
Dunque per poter mantenere costantemente vivo e ricettivo il tag è
necessario che il writer utilizzi un sistema di codifica dei dati tale da mantenere
attivo il campo magnetico variabile per la stragrande maggioranza del tempo,
limitandosi ad interromperlo solo per brevissimi istanti, detti impulsi di
trasmissione.
Finora ho parlato di un generico campo magnetico variabile come condizione
essenziale per poter generare una tensione ai capi della bobina del tag, ma
esattamente, che aspetto ha questo campo magnetico? E’ presto detto: si
presenta come un’onda sinusoidale detta “portante” di frequenza standard
prestabilita: esattamente 125KHz nel caso del transponder PCF7931.
In Figura 1 è possibile vedere come si presenta il segnale sulla bobina del
transponder PCF7931 che riceve i dati dal writer (segnale ASK). Per generare
tale segnale il writer usa un segnale digitale di controllo (modulante) per
spegnere/accendere un signale sinusoidale a 125KHz (portante) generato
internamente. Il breve istante in cui la portante è assente costituisce l’impulso
di programmazione che il transponder deve interpretare. Siccome la portante
si accende e si spegne completamente si parla di modulazione OOK-ASK (On
Off Keying – Amplitude Shift Keying). Se invece di spegnere completamente la
portante se ne dimezzasse l’ampiezza si parlerebbe di modulazione ASK al
50%, se si riducesse l’ampiezza solo del 10% si parlerebbe di modulazione ASK
©Copyright 2005 -Tutti i diritti sono riservati.
3
al 10% e così via. La modulazione OOK-ASK non è altro che una modulazione
ASK al 100%.
Figura 1.
Modulazione OOK-ASK di una portante a 125KHz.
E’ interessante notare come il transponder PCF7931 usi due differenti tipi di
modulazione ASK a seconda della direzione della comunicazione: per
programmare il tag occorre modulare al 100% (OOK-ASK) la portante, per
ricevere i dati dal tag occorre demodulare un segnale ASK modulato al 10%.
La comunicazione inoltre è sempre half-duplex, ossia non è possibile
trasmettere e ricevere contemporaneamente, il tag o trasmette o riceve, per
usare una metafora automobilistica basti pensare ad un senso unico alternato.
A questo punto dovrebbe essere sufficientemente chiaro come il writer riesca
ad alimentare il PCF7931 e contemporaneamente inviargli impulsi di
comunicazione, ciò che non ho ancora spiegato è come faccia il transponder a
capire se il brevissimo impulso (assenza di campo magnetico) che gli è appena
arrivato sia un 1 oppure uno 0 logico. La risposta a questo quesito è nascosta
in una sigla: “PPM” ossia Pulse Position Modulation. Il PCF7931 adotta proprio
tale codifica che consiste nel mantenere acceso il campo magnetico per la
maggiorparte del tempo, spegnendolo solo per brevissimi istanti la cui
posizione temporale relativa codifica il bit desiderato.
In altri termini è il tempo trascorso dal penultimo impulso che ci è arrivato
che ci fa capire se devo interpretare l’ultimo impulso come uno 0 od un 1
logico. Dunque nella codifica PPM il contenuto informativo è nascosto nella
durata degli intervalli tra un impulso ed il successivo, dove per impulso si
intenda un fugace spegnimento del campo magnetico.
©Copyright 2005 -Tutti i diritti sono riservati.
4
Provo ad esemplificare il concetto. Supponiamo di stabilire la seguente regola
di codifica PPM: se è trascorso 1ms (millisecondo) dal penultimo impulso allora
l’ultimo impulso è uno 0 logico; se sono trascorsi 2ms dal penultimo impulso
allora l’ultimo impulso è un 1 logico.
Adesso supponiamo di essere riusciti a registrare la seguente sequenza
temporale di impulsi inviati dal writer al transponder:

Primo impulso (cioè portante assente);
Pausa di 2ms (cioè portante presente);
Secondo impulso;
Pausa di 1ms;
Terzo impulso;
Pausa di 2ms;
Quarto impulso;
Pausa di 2ms;
Quinto impulso;

Domanda: sulla base della codifica PPM che abbiamo adottato, qual è la
sequenza di bit ricevuti dal tag?
Risposta: il quinto impulso vale 1 perché lo separano 2ms dal precedente, il
quarto impulso vale 1 perché lo separano 2ms dal precedente, il terzo impulso
vale 0, il secondo vale 1 ed il primo impulso allora ??? Quello non fa testo, è
solo un bit di start, un modo per avvertire il tag che stanno arrivando gli
impulsi di programmazione.
Dunque la sequenza di bit inviati dal writer al tag vale “1011”, facile no?
In realtà la codifica PPM adottata dal tag PCF7931 è leggermente più
complessa in quanto si possono discriminare 3 diversi possibili intervalli tra un
impulso e il successivo. Studiando la sequenza di tali intervalli è abbastanza
semplice interpretare il valore dei bit che rappresentano.
Non mi addentrerò in questa guida nei dettagli della codifica PPM adottata dal
PCF7931 per non allontanarci troppo dal topic del capitolo e non appesantire,
chi vuole farlo può consultare direttamente il datasheet.
A questo punto ho introdotto abbastanza nozioni per intuire che per captare il
segnale emesso dal writer in fase di scrittura del transponder non dobbiamo
fare altro che realizzare nientepopodimenochè… un transponder! O meglio,
possiamo semplicemente copiare lo stadio di ricezione del PCF7931 senza
preoccuparci della sua alimentazione, che può essere fornita esternamente
tramite una pila da 9V oppure tramite una tensione fornita per esempio da un
notebook.
©Copyright 2005 -Tutti i diritti sono riservati.
5
Probabilmente qualcuno preso dall’entusiasmo starà pensando di captare il
segnale di programmazione del writer usando qualcosa di simile ad una
radiolina sintonizzata sui 125KHz, comodamente spaparanzato a 10metri di
distanza dal writer. In fondo si tratta pur sempre di onde elettromagnetiche
no? Purtroppo la magia dell’induzione elettromagnetica ha un grosso limite,
che riduce fortemente le distanze utili a poter ricevere un segnale
apprezzabile. Questo limite è dato dal fatto che il campo magnetico generato
dal writer riduce la propria intensità con il cubo della distanza, divenendo
inapprezzabile già a distanza di pochi centimetri se non addirittura millimetri!
Per questo motivo si parla di “effetto di prossimità”, non c’è contatto tra
writer e transponder ma la distanza deve essere molto breve, pena
l’incomunicabilità.
Per capire meglio quanto velocemente il campo magnetico si riduca con
l’aumentare della distanza, immaginiamo di porre il tag a 1cm di distanza dalla
bobina del writer e supponiamo di leggere una tensione di 8Vpp ai capi della
bobina del tag (per chi è a digiuno di elettronica per Vpp si intende la tensione
misurata tra il massimo picco positivo e il massimo picco negativo del segnale
in esame).
Bene, se ora allontaniamo il tag portando la distanza dal writer a 2cm, la
tensione captata dal tag si ridurrà di ben 8 volte portandosi ad appena 1Vpp,
troppo poco per riuscire ad autoalimentare il microchip interno.
Se invece dimezziamo la distanza portandola a 0.5cm, la tensione captata
diverrà circa 8 volte più grande, ben 64Vpp !!!
Dunque occorre avvicinarci il più possibile alla bobina del writer per poter
avere qualche chance di captare un segnale apprezzabile. Inoltre uno sniffer
che si rispetti deve essere discreto e non disturbare la comunicazione tra il
writer e il transponder, deve avvicinarsi in punta di piedi e mettersi in
silenzioso ascolto senza alterare il segnale emesso dal writer, pena
l’interruzione della comunicazione per “rumori sospetti”…
Ma passiamo ora ad analizzare come è fatto il sensore di un transponder per
cercare di replicarlo nel nostro sniffer ideale.
In precedenza ho già accennato al fatto che il campo magnetico emesso dal
writer viene captato da una bobina. Una bobina non è altro che un lungo filo di
rame smaltato avvolto su un supporto. Allora, penserà qualcuno, basta
prendere un filo da trasformatore qualunque, arrotolarlo su un supporto
qualunque facendo un numero di spire qualunque ed il gioco è fatto.
Se siete molto fortunati potreste anche riuscire nell’impresa di raggomitolare
una bobina che abbia un minimo di sensibilità, ma noi preferiamo essere un po’
più scientifici, vogliamo creare una bobina con la massima sensibilità e con il
minimo costo. Per raggiungere questo obiettivo dobbiamo conoscere l’effetto
netto di ogni parametro che caratterizza una bobina per arrivare a forgiare una
bobina allo stato dell’arte e sotto il nostro pieno controllo.
Cominciamo col dire che il parametro più importante che influenza la
sensibilità della nostra bobina è la sua induttanza, che esprimeremo in uH
(microHenry).
©Copyright 2005 -Tutti i diritti sono riservati.
6
Nel nostro caso possiamo pensare all’induttanza come all’attitudine di una
bobina di assorbire il campo magnetico dallo spazio circostante per poterlo
rendere poi sottoforma di tensione ai suoi capi. Più campo magnetico la bobina
è in grado di assorbire e più tensione avremo ai suoi capi e dunque maggior
sensibilità.
Dunque cosa aspettiamo? Perché accontentarci di una bobina da 30uH,
facciamola da 100uH, anzi no, da 200uH. E perché non di più?
Come in tutte le cose occorre cercare il giusto compromesso, perché una
bobina con una grande induttanza è molto sensibile ma presenta un paio di
svantaggi importanti:
a) occorre molto filo e molta pazienza dunque costa di più costruirla;
b) se si avvicina troppo al writer rischia di assorbire talmente tanto campo
magnetico da farsi scoprire esattamente come un elefante che origlia in una
cristalleria;
Allora esploriamo l’estremo opposto: se avvolgiamo una bobina di piccola
induttanza, 10uH, anzi no, solo 5uH, cosa succede? In questo caso avremo una
bobina molto semplice da realizzare, agile e silenziosa come un gatto ma
purtroppo un po’ dura d’orecchi per cui anche se la posizionassimo a pochissimi
millimetri dal writer otterremmo una tensione ai capi molto bassa, dell’ordine
dei 10-100mVpp, valore decisamente noioso da gestire per l’elettronica dello
sniffer, che dovrebbe integrare una precisa sezione di amplificazione,
demodulazione e squadratura con tutte le complicazioni e i costi del caso.
Occorre quindi prendere una prima importante decisione progettuale:
preferiamo adottare una bobina con un discreto udito accoppiata ad un
demodulatore semplice oppure preferiamo adottare una bobina un po’ dura
d’orecchi accoppiata ad un demodulatore più sensibile ma più complesso?
Siccome la mia esperienza pratica per ora è limitata all’utilizzo di un
demodulatore semplice realizzato usando un singolo chip, la scelta operata in
questa guida è abbastanza scontata, ma non è detto che in futuro non si possa
provare ad accoppiare una buona bobina con un demodulatore più complesso
che riesca a captare il segnale anche a 5-6cm di distanza dal writer (speravate
5-6 metri eh?)…
Nel chiarire il concetto di induttanza ho prematuramente accennato ad un
“demodulatore” da accoppiare alla bobina senza spiegare a cosa ci serve. Per
ora consideriamolo come una magica scatola nera in grado di trasformare il
segnale analogico messo gentilmente a disposizione dalla nostra bobina in un
segnale digitale digeribile da una porta di un microcontrollore o da una porta
seriale di un notebook per permetterci di salvare i dati catturati in modo
permanente su una eeprom o su un file.
Ma rimaniamo focalizzati sulla nostra bobina ideale: dobbiamo realizzare una
bobina con una sensibilità sufficiente per poter generare una tensione digeribile
dal chip demodulatore. Del chip in questione, il JB125, si sa abbastanza poco e
©Copyright 2005 -Tutti i diritti sono riservati.
7
pare non trovarsi presso distributori ufficiali, l’unica fonte di
approvvigionamento che ho trovato è costituita da un pugno di sperimentatori
che ha messo in piedi una scarna paginetta su http://tfc.altervista.org e che
distribuisce il chip fino ad esaurimento scorte al prezzo di 15 euro spedizione
compresa. Sullo schema dello sniffer che propongono e che ho fedelmente
replicato viene indicata la sensibilità dell’ingresso del JB125: 2.5Vpp.
Ciò significa che ci basta realizzare una bobina con una sensibilità sufficiente
a produrre almeno 2.5Vpp ai suoi capi quando la posizioniamo molto vicina alla
sorgente del campo magnetico.
Ma che induttanza deve avere la bobina per essere così sensibile? Cercare di
calcolarlo in via teorica è abbastanza complesso perché non conosciamo a
priori l’intensità del campo magnetico indotto dal writer nel punto in cui si
troverà fisicamente la nostra bobina per cui ci affideremo al metodo empirico:
l’induttanza minima è quella che ha dato prova di funzionare, una bobina con
un’induttanza compresa tra 25uH e 70uH pare essere un buon compromesso
in termini di sensibilità, velocità di risposta, intrusività e facilità costruttiva.
Ovviamente si possono provare anche valori superiori al range indicato:
sapendo che il campo magnetico decresce molto velocemente con la distanza è
ovvio che se la distanza dal writer aumenta anche solo di 4-5mm occorre
aumentare un po’ l’induttanza per ottenere un segnale che sia ancora
sufficientemente forte ai capi della bobina.
Per tagliare la testa al toro avvolgete la bobina posizionandola il più vicino
possibile al writer, ogni mm di distanza in più vi fa perdere preziosi Vpp ai capi
della bobina.
Decidiamo dunque di costruire una bobina all’interno del range empirico che
ho definito, il problema che ci si pone ora è: quali fattori costruttivi influenzano
l’induttanza di una bobina? Proverò a rispondere analizzandoli uno ad uno:
Supporto sul quale avvolgiamo la bobina.
Vi sono materiali detti ferromagnetici (leghe di ferro, ferriti) che agiscono da
veri e propri amplificatori magnetici moltiplicando il valore dell’induttanza della
bobina avvolta su di essi. Siccome il loro effetto rischia di creare degli elefanti
in cristalleria producendo induttanze eccessive per i nostri scopi, decidiamo di
avvolgere la bobina esclusivamente su materiali non ferromagnetici quali
materiali plastici, carta, cartoncino, legno. Le bobine realizzate in questo modo
vengono anche chiamate bobine in aria e la loro induttanza risulta essere
molto più predicibile.
Fattore di forma della bobina.
La forma dell’avvolgimento influenza poco l’induttanza della nostra bobina. Un
avvolgimento su un supporto di forma rettangolare produce un’induttanza
lievemente superiore rispetto ad un avvolgimento su un supporto di forma
cilindrica (solenoide) a parità di area. Decidiamo di avvolgere la nostra bobina
su un supporto di forma rettangolare.
©Copyright 2005 -Tutti i diritti sono riservati.
8
Sezione della bobina.
Maggiore è l’area della bobina (sezione) e più grande è l’induttanza. Decidiamo
di avvolgere la bobina su un supporto plastico di sezione 11x5mm.
Numero di spire dell’avvolgimento.
Maggiore è il numero di spire e maggiore è l’induttanza della bobina. Per
realizzare una bobina facilmente riproducibile decidiamo di avvolgere le spire
su un singolo strato (single layer) senza mai sovrapporre le spire.
Decidiamo di avvolgere 130 spire di filo di rame.
Serraggio delle spire e regolarità dell’avvolgimento.
Per garantire un segnale privo di distorsioni è necessario porre particolare cura
nell’avvolgimento che deve presentarsi regolare e senza spazi tra una spira e
l’altra per massimizzare l’induttanza. Per assicurare il massimo numero di spire
per unità di lunghezza serrare con le unghie le spire mano a mano che
vengono avvolte tenendo in tensione il filo smaltato. Usando un filo di diametro
0.1mm l’avvolgimento di 130 spire non deve essere più lungo di 15mm.
Diametro del filo di rame smaltato.
Un diametro piccolo ci permette di massimizzare il numero di spire a parità di
lunghezza dell’avvolgimento e dunque massimizzare l’induttanza a parità di
volume. Ho scelto il più piccolo diametro disponibile, 0.1mm (0.115mm
compreso lo smalto isolante) che ci offre anche un interessante vantaggio che
spiegherò in seguito. Se avete difficoltà a reperirlo potete ordinarne un
rocchetto intero per circa 9 euro su http://www.rs-components.it (Codice 337-7088).
Riepiloghiamo ora le caratteristiche della nostra bobina sperimentale:
- il diametro del filo di rame da usare è di 0.1mm.
- la bobina è avvolta su un supporto plastico di sezione rettangolare di
11x5mm.
- l’avvolgimento della bobina è costituito da 130 spire serrate su un singolo
strato in modo tale da non superare i 15mm di lunghezza complessiva.
Una bobina siffatta è decisamente sensibile senza essere troppo invasiva, certo
occorre una pazienza certosina per avvolgere 130 spire perfettamente serrate,
se sfugge la bobina di mano occorre ricominciare tutto da capo…
Vi suggerisco di tenere a portata di mano dei piccoli rettangoli di sottile scotch
trasparente per fissare gli estremi della bobina al termine dell’avvolgimento e
di ricoprire poi l’intera bobina con un ulteriore strato di scotch protettivo.
Ora che la bobina è pronta è opportuno chiarire come va posizionata rispetto
ai due soggetti comunicanti: il writer e il transponder. Prendiamo ancora in
considerazione il transponder PCF7931.
Usualmente esso è affogato in un supporto plastico che lo protegge e lo rende
maneggiabile. Tale supporto plastico viene di norma introdotto in una cavità
rettangolare o cilindrica al cui interno è contenuta la bobina del writer.
Dunque, dove avvolgiamo la nostra bobina sperimentale? L’idea più brillante
©Copyright 2005 -Tutti i diritti sono riservati.
9
consiste nell’avvolgere la bobina sullo stesso supporto plastico che contiene il
PCF7931 facendo attenzione a non avvolgerla sul PCF7931. Per quale motivo?
Semplicemente perché se noi coprissimo il PCF7931 con la nostra bobina
schermeremmo il transponder impedendo al writer di alimentarlo tramite il
campo magnetico. In altre parole è come se ci frapponessimo tra telecomando
e televisore, il telecomando non riuscirebbe a cambiare canale.
Siccome la nostra bobina di ascolto non deve disturbare la conversazione tra
writer e tag è necessario iniziare l’avvolgimento appena termina il corpo del
transponder (vedi Figura 2). Vale la pena ricordare una regola importante: la
massima induzione elettromagnetica si ottiene ponendo le bobine coinvolte
sullo stesso asse (tratteggiato in figura). Sebbene non venga mostrato in
figura, anche la bobina contenuta all’interno del PCF7931 è coassiale con le
altre due bobine. Se per ipotesi ruotassimo di 90° la nostra bobina di ascolto,
l’effetto di induzione sarebbe pressochè nullo, ossia avremmo tensione nulla
sulla bobina, a prescindere dal valore della sua induttanza.
Figura 2.
Posizionamento della bobina rispetto a writer e tag.
Ai più attenti sarà rimasto un dubbio amletico: come facciamo a conoscere
l’induttanza della bobina che abbiamo appena avvolto con cura certosina?
Misurandola. Qualcuno possiede un induttanzimetro che riesca a misurare con
precisione i microHenry? La maggioranza di voi sicuramente ne è sprovvisto e
dunque occorre aguzzare l’ingegno per scoprire l’induttanza della vostra
bobina. Per ora accontentiamoci del metodo teorico che vado ad illustrare, in
seguito scopriremo come poter misurare l’induttanza in modo indiretto usando
un semplice multimetro (sì, avete capito bene, non ci sarà bisogno
dell’oscilloscopio!).
Transponder PCF7931
Bobina di ascolto
Supporto plastico
Al demodulatore JB125
Bobina del writer
©Copyright 2005 -Tutti i diritti sono riservati.
10
Stima teorica dell’induttanza della bobina.
Vi sono studiosi che hanno dedicato la vita allo sviluppo di funzioni
matematiche complesse in grado di prevedere con grande precisione
l’induttanza di una bobina sulla base delle proprie caratteristiche dimensionali
(lato lungo, lato corto, lunghezza dell’avvolgimento, numero di spire).
Personalmente ho messo a punto un programma DOS che implementa una
delle formule più raffinate in circolazione per stimare l’induttanza di bobine di
sezione rettangolare a singolo strato.
Grazie a questo software vi posso già anticipare che la vostra bobina nuova
fiammante, se avete seguito scrupolosamente le istruzioni, ha un’induttanza di
esattamente 63uH.
Comodo, non è vero? Se volete implementare un programmino simile dovete
procurarvi in biblioteca una copia del testo di F.W.Grover, oppure se siete pigri
e svogliati con 25 euro potete acquistare una copia del mio software di calcolo
che automaticamente calcola induttanza, resistenza DC, fattore di merito e
condensatore di accordo della bobina (Figura 4).
E’ venuto ora il momento di fare un salto di qualità: avrete senz’altro sentito
parlare del fatto che la bobina va “accordata” con un condensatore posto in
parallelo per ottenere la massima tensione ai suoi capi.
Ma come, vi chiederete, non si era appena detto che la nostra bobina era già
pronta per captare con buona sensibilità ogni bisbiglio proveniente dal writer?
Cos’è questa storia del condensatore da aggiungere in parallelo?
In effetti la nostra bobina così come si presenta in Figura 2 è già in grado di
produrre una tensione ai suoi capi in presenza di un campo magnetico variabile
ma se vi dicessi che basta porre in parallelo alla bobina un condensatore di
valore opportuno per amplificare il segnale di 4-5 volte ci sputereste sopra?
Certo se la tensione prodotta dalla sola bobina fosse già sufficiente a scaldare
il cuore del JB125 saremmo già a posto. Ma purtroppo la sola bobina non è
sufficiente, abbiamo bisogno di amplificare un po’ il segnale prima di darlo in
pasto al JB125 e cosa c’è di più veloce ed economico di un amplificatore
costituito da un semplice e banale condensatore ceramico?
A qualcuno questa sembrerà magia, ma si tratta solo di sfruttare un
fenomeno elettrico chiamato “risonanza”. Per usare una metafora possiamo
pensare che il condensatore in parallelo agisca come la cassa di risonanza di
una chitarra o di un tamburo: basta un piccolo tocco sulle corde della chitarra o
sulla pelle di tamburo per produrre suoni di intensità magnificata.
Allo stesso modo il condensatore, se scelto di valore opportuno, agisce sulla
bobina restituendole esattamente la stessa energia che un istante prima la
bobina aveva captato e donato al condensatore. C’è quindi una sorta di
rimpallo energetico tra la bobina (L) ed il condensatore (C), un circolo virtuoso
assimilabile ad un’altalena: una volta avviata basta una piccola spinta per
portarla sempre più in alto ad ogni nuova oscillazione.
Ma veniamo alle questioni pratiche: c’è un limite alle performance di
amplificazione della coppia bobina-condensatore? In altri termini possiamo
©Copyright 2005 -Tutti i diritti sono riservati.
11
riuscire ad amplificare per 5, per 10 o anche per 20 la tensione sulla bobina
semplicemente scegliendo un condensatore di valore opportuno? Dipende.
La risposta risiede nell’individuazione del principale responsabile della
limitazione dell’amplificazione: la resistenza interna della bobina (R
L
).
Dobbiamo infatti pensare che la nostra bobina è costituita da più di 4 metri di
filo di rame smaltato e dunque ha una precisa resistenza DC, facilmente
misurabile con un multimetro. Se avete costruito la bobina correttamente
dovreste misurare una resistenza ai capi della bobina di circa 9 ohm.
Questa resistenza è chiamata resistenza DC perché misurata in corrente
continua ma per un fenomeno detto “effetto pelle” la resistenza effettiva è
destinata ad aumentare con la frequenza del segnale di lavoro.
Fortunatamente alla bassa frequenza di 125KHz l’effetto pelle è
assolutamente trascurabile usando un filo di rame da 0.1mm di diametro,
dunque il multimetro ci fornisce già la resistenza effettiva che ci interessa (i più
curiosi che volessero provare diametri di filo diversi da 0.1mm sappino che
l’effetto pelle comincia a farsi apprezzabile solo con diametri molto maggiori:
considerate che usando un diametro da 0.3mm la resistenza effettiva aumenta
per effetto pelle appena dell’ 1% rispetto alla resistenza DC misurata con il
multimetro).
Come dicevo la nostra bobina ha una resistenza effettiva R
L
=9 ohm.
Tale resistenza ci permetterà ora di calcolare l’amplificazione massima
potenzialmente ottenibile dal nostro circuito LC risonante parallelo.
Il fattore di amplificazione massimo del nostro LC risonante è espresso dal
cosiddetto “fattore di merito” della bobina (Q):
Q= 2πfL/ R
L
dove f è la nostra frequenza di lavoro (125KHz) ed L è l’induttanza della
bobina.
Sapendo che la nostra bobina ha un’induttanza L=63uH, dai calcoli Q=5.5
Dunque ciò significa che se scegliamo il condensatore giusto riusciremo ad
amplificare il segnale fornito dalla sola bobina di ben 5 volte e mezzo! Direi che
vale proprio la pena sfruttare questa magica risonanza, che ne dite?
Sono certo che qualcuno di voi si chiederà: perché allora non sfruttare meglio il
fenomeno della risonanza scegliendo un filo di rame di diametro maggiore per
poter alzare ancora di più il Q della bobina?
In effetti si può fare, usando un filo da 0.15mm di diametro si può
raggiungere un Q di circa 8 con il vantaggio di una maggior facilità di
avvolgimento ma vi è anche il rovescio della medaglia: un filo più grosso
implica un minor numero di spire a parità di lunghezza dell’avvolgimento e
dunque minor induttanza ottenibile. In pratica è vero che l’amplificazione
risulta più vigorosa ma la tensione di partenza che viene amplificata è più
bassa. Vi è anche un altro prezzo da pagare nel scegliere un Q alto: la rapidità
di risposta della bobina diminuisce e noi desideriamo una bobina scattante,
capace di captare impulsi di durata molto breve, ricordate? Per la nostra
applicazione dunque meglio non spingersi oltre Q=10 per non rischiare di
©Copyright 2005 -Tutti i diritti sono riservati.
12
ottenere una bobina troppo lenta nel comunicarci le variazioni del campo
magnetico captato.
Ma la vera ragione che mi ha indotto a preferire il diametro 0.1mm consiste
nella maggior facilità di accordo dell’LC risonante, in altre parole è più facile
centrare al primo colpo il valore giusto del condensatore in modo tale da
lavorare in perfetta risonanza. Ma capirete meglio cosa questo significhi non
appena ci addentreremo nella misteriosa operazione di “accordo” della bobina.
Figura 3.
La risonanza di un LC parallelo con tre diverse bobine.
Si osservi attentamente il grafico di Figura 3. Il grafico contiene tre curve,
ogni curva rappresenta una diversa bobina, caratterizzata da un preciso fattore
di merito Q (che come abbiamo visto dipende da L e da R
L
).
Sulle ascisse troviamo la frequenza di lavoro, l’unità di misura può essere
intesa in centinaia di KHz, sulle ordinate troviamo l’amplificazione subita dal
segnale presente sulla bobina grazie al fenomeno della risonanza. La curva
indicata con Q=5 approssima bene il comportamento della nostra bobina.
Notiamo che tutte le curve sono contraddistinte da una forma a campana che
tende a stringersi e ad alzarsi mano a mano che scegliamo bobine con Q più
grande.
Ora, cosa significa accordare una bobina con un condensatore in parallelo?
Significa trovare quel valore di capacità che permette di centrare la campana
della risonanza esattamente sulla nostra frequenza di lavoro (125KHz).
In altre parole l’effetto di un condensatore posto in parallelo alla bobina
consiste nello shiftare a destra o a sinistra la campana della risonanza di
Figura 3. Più precisamente se alzo il valore di capacità la campana si sposta
verso sinistra, se abbasso il valore di capacità la campana si sposta verso
destra.
Se allora voglio spostare il picco della campana della nostra bobina proprio
sulla frequenza di 125KHz, che condensatore devo usare?
©Copyright 2005 -Tutti i diritti sono riservati.
13
Ecco la veloce formuletta approssimata:
C=1/((2πf
res
)
2
L) Prima formula inversa della risonanza.
Ricordando che L=63uH e f
res
=125KHz ne risulta C=25nF.
Ciò significa che ponendo in parallelo alla bobina un condensatore da 25nF il
nostro circuito LC parallelo va in risonanza alla frequenza di 125KHz, ossia
quando vengono captati segnali a 125KHz verranno amplificati di Q=5.5 volte.
Adesso cominciate a capire perché ho preferito avere un Q della bobina non
troppo elevato? Se io avessi realizzato una bobina con un Q=10 sarebbe stato
decisamente più delicato trovare l’esatto valore del condensatore che centrasse
la campana esattamente sui 125KHz perché in risonanza la campana è molto
stretta e sarebbe bastato qualche nF in più o in meno (considerando anche la
tolleranza di costruzione del condensatore) per ritrovarmi a perdere anche il
10% di amplificazione.
Con un Q=5.5 posso invece permettermi di piazzare un qualunque
condensatore nel range 23-27nF potendomi considerare ancora in risonanza
(cioè nello stato di massima amplificazione per quella particolare bobina).
In pratica usando bobine con un Q basso la risonanza è un cocuzzolo della
montagna comodo e spazioso, quasi un altipiano, usando invece bobine con un
Q alto la risonanza diventa un picco acuminato sul quale è più difficile rimanere
in bilico ed il rischio è quello di cadere facilmente a metà montagna se non si
accorda la bobina con attenzione.
Potreste infine chiedervi quale sarebbe stata la frequenza di risonanza nel caso
avessimo inserito un condensatore di soli 23nF. Per rispondere è sufficiente
utilizzare la seguente formula approssimata:
f
res
=1/(2π√LC) Formula della risonanza.
Dai calcoli risulta una campana il cui picco è centrato sulla frequenza di
risonanza di 132KHz, leggermente superiore a 125KHz ma perfettamente
utilizzabile se il Q della bobina è relativamente basso come nel nostro caso.
Vi faccio ora prendere un po’ di fiato con qualche indicazione di carattere
pratico: il filo di rame smaltato è saldabile, basta scaldarlo ad almeno 350°C
con la punta del saldatore per rimuovere il poliuretano isolante che lo ricopre.
Quando avete individuato il valore teorico di capacità da usare ma non avete
a disposizione un valore standard potete raggiungere il valore desiderato
combinando diversi condensatori in serie o in parallelo. Ricordate che per
sommare due capacità occorre metterle in parallelo, se invece mettiamo in
serie due capacità uguali il valore risultante dimezza.
Nel nostro caso specifico dunque per avvicinarci alla capacità di 25nF che
risulta dai calcoli basta mettere in serie due condensatori standard da 47nF ed
ottenere così 23.5nF, valore che ci permette di lavorare comunque in zona
risonante.
©Copyright 2005 -Tutti i diritti sono riservati.
14
In Figura 4 potete vedere l’output fornito dal software di calcolo cui ho
accennato in precedenza, per semplicità i valori usati nella guida sono stati
arrotondati.
Figura 4.
Il software coil.exe per il calcolo automatico dei parametri della bobina.
Molti di voi avranno sicuramente notato che il software calcola il valore del
condensatore di accordo per due differenti tipologie di bipolo LC risonante:
serie e parallelo. Il valore che ci interessa in questo caso è quello relativo al
bipolo LC parallelo. Noterete che la differenza del condensatore di accordo nelle
due tipologie è minima ed è per questo che in letteratura si tende ad usare la
stessa formula per entrambe le tipologie, formula già mostrata nella pagina
precedente. In realtà tale formula è esatta solo per il bipolo serie mentre per il
bipolo parallelo è una buona approssimazione. Il software calcola per entrambi
i casi le rispettive formule esatte ed è per questo che i condensatori di accordo
si differenziano leggermente. Siccome la differenza è esigua, ai fini pratici si
utilizza comunemente la semplice formula della risonanza per entrambe le
tipologie di bipolo.
Il software inoltre fornisce una stima teorica della sensibilità della bobina
calcolando quanti Vpp essa è in grado di generare se sottoposta ad
un’induzione magnetica di 170 microWeber/m
2
(valore tipico per programmare
un PCF7931). Dalla figura si vede che la sensibilità teorica è alta, la nostra
bobina è capace di generare ai suoi capi ben 10Vpp!
Se avete letto attentamente fino a questo punto ora non solo avete acquisito
una discreta base teorica sulla tecnologia RFID ma avete anche accordato la
vostra prima bobina. Ma… produrrà una tensione sufficiente per il JB125 ?
E’ il momento di scoprirlo costruendo uno strumentino tanto semplice quanto
efficace.
©Copyright 2005 -Tutti i diritti sono riservati.
15
Costruzione di un misuratore di sensibilità della bobina.
Materiale occorrente:
- 4 diodi 1N4148.
- 1 condensatore ceramico da 10nF.
- 1 multimetro con impedenza di ingresso di 1Megaohm.
Lo schematico del nostro misuratore che chiameremo “power-meter” è
riportato in Figura 5.
Per scoprire la sensibilità della nostra bobina è sufficiente avvicinarla il più
possibile al writer per renderci conto se il segnale captato è abbastanza intenso
da poter essere digerito dal demodulatore JB125.
Il multimetro deve essere impostato su VDC in quanto leggeremo un valore di
tensione continuo. Tale valore di tensione non rappresenta il valore di picco del
segnale captato ma ci fornisce comunque una preziosa informazione in quanto
il valore rilevato è proporzionale al valore picco-picco del segnale (Vpp)
presente ai capi della bobina accordata.
Ora, qual è il valore minimo che deve misurare il power-meter per garantirci
che il chip JB125 potrà funzionare correttamente? Dalle prove empiriche
effettuate con un multimetro con impedenza di ingresso da 1 Megaohm, se con
il multimetro misurate almeno 1.2Vdc avete una bobina che vi fornisce un
segnale sufficiente per poter usare il demodulatore JB125 (ciò significa che ai
capi della bobina vi sono almeno 2.5Vpp, valore minimo per poter usare il
JB125, come riportato dalle specifiche).
Figura 5.
Schema del power-meter, misuratore di sensibilità della bobina.
©Copyright 2005 -Tutti i diritti sono riservati.
16
Se addirittura misurate 2-3Vdc o più avete costruito un gioiellino…
Supponiamo che invece misuriate appena 0.8Vdc per esempio, dove può stare
il problema? Vi possono essere diverse ragioni che concorrono a rendere la
vostra bobina poco sensibile, vediamole:
La bobina non lavora in risonanza.
Questo succede se avete accordato male la bobina scegliendo un condensatore
di valore sbagliato o troppo lontano dal valore teorico calcolato. Naturalmente
lo stesso problema si pone se l’induttanza stimata non corrisponde a quella
reale: il condensatore magari è teoricamente giusto, ma calcolato partendo da
un valore sbagliato dell’induttanza. Vedremo fra poco come sfruttare il power-
meter appena costruito per essere certi di aver accordato bene la bobina. In
pratica usando il power-meter saremo in grado di accordare la bobina pur non
conoscendone l’induttanza.
L’induttanza della bobina è troppo bassa.
Pur avendo accordato perfettamente la bobina, l’induttanza della stessa
potrebbe essere troppo bassa per generare un segnale decente. Questo può
accadere se avete avvolto poche spire attorno al supporto e/o se la sezione del
supporto è molto piccola.
La distanza dal writer è eccessiva.
Pur avendo accordato la bobina ad opera d’arte, qualche mm di distanza di
troppo dalla bobina del writer possono rendere vano lo sforzo fatto, ricordate
che il campo magnetico si indebolisce rapidamente con la distanza. Dovete
trovare il modo di diminuire la distanza oppure dovete optare per una bobina di
induttanza maggiore riaccordandola opportunamente.
Il campo magnetico del writer è debole.
Se il campo magnetico del writer è appena sufficiente per programmare il
transponder le cose si fanno più complesse, oltre ad avvicinarvi il più possibile
dovrete aumentare ulteriormente l’induttanza della bobina. Ovviamente la
bobina dovrà essere come sempre perfettamente accordata.
Come ho accennato in precedenza il power-meter appena costruito può
divenire un prezioso strumento nel caso non abbiate un oscilloscopio a portata
di mano o non siete in possesso del software per stimare l’induttanza della
vostra bobina, fra poco vedremo perchè.
Prima di procedere vorrei infine chiarire il motivo per cui non possiamo fare a
meno del power-meter connettendoci alla bobina direttamente con il
multimetro in AC. Se lo faceste molto probabilmente leggereste una tensione
nulla semplicemente perché il vostro multimetro è in grado di misurare la
tensione AC RMS (valore efficace) solo fino ad una frequenza di 10-20KHz
max, difficilmente potrà andare oltre e noi stiamo lavorando a ben 125KHz.
©Copyright 2005 -Tutti i diritti sono riservati.
17
Come accordare una bobina senza usare l’oscilloscopio.
Materiale occorrente:
- un generatore sinusoidale a frequenza variabile da 0 a 300KHz.
- un resistore da 100 ohm ¼W.
- il vostro fido power-meter.
- un multimetro.
Come potete vedere chiaramente dalla Figura 6 il generatore sinusoidale
alimenta tramite un resistore di protezione la bobina di induttanza sconosciuta
a cui è stato posto in parallelo un condensatore ceramico da 47nF.
Il power-meter ai capi della bobina sostituisce l’oscilloscopio fornendoci come
risposta un livello di tensione DC.
Il valore del condensatore ceramico non è molto importante, possiamo
scegliere un valore compreso tra 22nF e 100nF, la cosa veramente importante
è che il valore sia perfettamente conosciuto: usate un condensatore con bassa
tolleranza oppure, meglio ancora, misuratene il valore con un multimetro
dotato della funzione capacimetro.
Figura 6.
Come accordare una bobina facendo a meno dell’oscilloscopio.
©Copyright 2005 -Tutti i diritti sono riservati.
18
Ora, il primo obiettivo consiste nello scoprire l’induttanza della vostra bobina. Il
bipolo LC parallelo che stiamo valutando sarà caratterizzato da una campana
posizionata in un punto a noi sconosciuto lungo l’asse della frequenza (vedi
ancora Figura 3). Se noi scoprissimo a quale frequenza è posizionato il picco
di quella campana avremmo scoperto la frequenza di risonanza di quel
particolare bipolo. Come facciamo a scoprire dove è posizionata in frequenza
la campana?
Semplice, basta agire in frequenza sul generatore sinusoidale fino ad
individuare quella frequenza che rende massimo il valore di tensione misurato
dal power-meter. Ed essendo a forma di campana faremo presto a capire se ci
stiamo allontanando od avvicinando alla risonanza, basta tenere d’occhio il
power-meter. Supponiamo per esempio di misurare queste coppie di valori:
Frequenza Tensione power-meter
80KHz 1.75Vdc
90KHz 1.88Vdc
100KHz 1.95Vdc
110KHz 1.85Vdc
120KHz 1.70Vdc
Avete indovinato dove sta posizionata la campana? Avrà il suo picco di
risonanza tra i 90KHz e i 110KHz, per scoprirlo con maggior precisione basterà
provare le frequenze in questo range con step di 1KHz, così scopriremo qual è
l’esatta frequenza di risonanza del bipolo.
Supponiamo allora di aver scoperto che la frequenza di risonanza del bipolo in
esame vale 94KHz.
Dunque adesso che conosciamo la frequenza di risonanza del bipolo (94KHz) e
il valore del condensatore (47nF), come calcoliamo l’induttanza della nostra
bobina incognita? Ancora una volta con la formula inversa della risonanza:
L=1/((2πf
res
)
2
C) Seconda formula inversa della risonanza.
Dai calcoli risulta L=61uH, la bobina promette bene, adesso che conosciamo
con buona precisione l’induttanza della bobina siamo a cavallo, ci ritroviamo
esattamente nella condizione in cui ci trovavamo quando, consultando
l’oracolo, vi ho rivelato l’induttanza della vostra bobina.
Basta ora ricalcolare il giusto valore del condensatore per far sì che il bipolo
vada in risonanza a 125KHz (vedi prima formula inversa della risonanza data in
precedenza). Dalla formula risulta C=26uH, valore ovviamente molto simile a
quello calcolato per la precedente bobina essendo le induttanze di valore
similare.
Adesso possiamo sostituire al condensatore di test da 47nF il nostro
condensatore di accordo da 26uH e verificare che la bobina sia ora
effettivamente perfettamente accordata sui 125KHz.
©Copyright 2005 -Tutti i diritti sono riservati.
19
Come? Semplicemente spazzolando di nuovo le frequenze con il generatore e
toccando con mano che il valore massimo fornito dal power-meter è guarda
caso proprio nell’intorno dei 125KHz: la bobina dunque non è stata solo
misurata ma è anche stata perfettamente accordata senza fare alcun uso
dell’oscilloscopio!
La procedura può risultare di primo acchito macchinosa ma vi assicuro che se
mandate a memoria le tre formulette basilari della risonanza e tenete a portata
di mano una calcolatrice potete accordare una bobina in pochi minuti.
Naturalmente chi dispone di un oscilloscopio può utilizzarlo al posto del
power-meter per verificare direttamente a quale frequenza il segnale
sinusoidale raggiunge la massima ampiezza picco-picco.
Chi invece non dispone né di un oscilloscopio né di un generatore sinusoidale
non deve fare altro che costruirsi un semplice multivibratore astabile seguendo
le indicazioni che seguono.
Accordare una bobina senza oscilloscopio nè generatore sinusoidale.
Si può riuscire ad accordare la nostra bobina sostituendo il generatore
sinusoidale usato nel metodo precedente con un semplice multivibratore
astabile basato sul comunissimo timer NE555/LM555 come da Figura 7.
Figura 7.
Schema completo per l’accordo della bobina usando solo un multimetro.
©Copyright 2005 -Tutti i diritti sono riservati.
20
Il timer NE555 genera un’onda quadra con dutycycle 50% e frequenza tarabile
con il trimmer multigiri da 50Kohm. Non usare la versione CMOS del timer
(LMC555) in quanto non è in grado di erogare abbastanza corrente.
La tensione di alimentazione del timer può spaziare tipicamente tra 5V e 15V,
suggerisco di usare almeno 12V per avere maggiore sensibilità di misura.
La procedura di taratura è identica a quella descritta in precedenza,
suggerisco di partire con il trimmer settato alla frequenza più alta (circa
200KHz) per poi scendere gradualmente monitorando il power-meter per
scoprire la posizione della campana di risonanza.
L’unica differenza pratica rispetto all’uso di un generatore sinusoidale da
banco consiste nel fatto che essendoci in questo caso un’onda quadra a
stimolare la bobina (invece di una sinusoide), solo in prossimità della
frequenza di risonanza si formerà sulla bobina una sinusoide perfetta, salendo
in frequenza la sinusoide tenderà a trasformarsi in un’onda triangolare di
ampiezza via via inferiore, scendendo in frequenza la sinusoide comincerà a
distorcere con ampiezza via via inferiore fino a diventare irriconoscibile.
La cosa essenziale è comunque individuare quella frequenza che permette di
massimizzare il valore dc misurato dal power-meter, corrispondente alla
frequenza di risonanza del bipolo LC parallelo in esame.
Ci stiamo avviciniamo al termine di questa articolata guida, siete ora padroni
del know-how essenziale per poter procedere ad un livello più elevato di
studio, il prossimo step consiste nel costruire uno sniffer completo connettendo
una bobina perfettamente accordata ad un chip demodulatore come il JB125
oppure ad un demodulatore più complesso che magari voi stessi progetterete.
Figura 8.
La bobina accordata.
In Figura 8 potete finalmente vedere la bobina da 63uH descritta nella guida.
Il condensatore di accordo è stato saldato nella parte terminale del supporto
plastico e protetto dagli urti usando cera a caldo.
©Copyright 2005 -Tutti i diritti sono riservati.
21
Demodulare il segnale captato dalla bobina con un JB125.
Le uniche informazioni che sono riuscito a reperire su questo microchip sono
quelle contenute nello schema cartaceo speditomi insieme al chip che ho
ordinato online. In Figura 9 ho riprodotto lo schematico dello sniffer che viene
proposto, personalizzandolo con la bobina da 63uH che abbiamo appena
progettato.
Figura 9.
Schematico completo dello sniffer.
Rispetto allo schema originale, che sfrutta una linea di uscita (RTS, pin 7)
della porta seriale per alimentare il chip, ho apportato una piccola variante
usando una comune pila transistor da 9V, per il resto lo schema è identico.
Come potete vedere ho inserito la nostra bobina da 63uH accordata con due
condensatori da 47nF posti in serie.
L’uscita del chip finisce direttamente sulla linea di input della porta seriale
detta DSR (sul connettore maschio a 9 poli si tratta del pin 6).
A questo punto abbiamo a disposizione uno sniffer completo che trasforma il
segnale modulato ASK di Figura 1 captato dalla nostra bobina in un segnale
digitale che commuta a livello logico alto se è presente il campo magnetico
variabile, commuta a livello logico basso non appena il campo magnetico si
interrompe. In pratica lo sniffer ricostruisce il segnale “modulante” di Figura 1
(per questo motivo si dice che il chip “demodula” il segnale ASK).
Il segnale che dunque si presenterà all’ingresso DSR quando il writer
comincerà ad inviare dati al PCF7931 sarà costituito da un primo impulso della
durata di 24us (il bit di start) seguito da una sequenza di impulsi della durata
di 48us (i bit della password) codificati usando la modalità PPM così come
abbiamo visto all’inizio della guida.
©Copyright 2005 -Tutti i diritti sono riservati.
22
Da qui in avanti dunque la palla passa finalmente al software il quale dovrà
semplicemente campionare il segnale che giunge sulla porta DSR e salvarlo su
file per una successiva analisi dei dati campionati.
Quella che segue è la routine principale di campionamento dei dati codificata
in linguaggio BASIC a puro scopo esemplificativo. Ognuno potrà implementare
il software di campionamento come meglio crede, usando il linguaggio che
preferisce. Come si vede la routine è decisamente semplice, è sufficiente
eseguire una istruzione IN sulla linea DSR della porta seriale (COM1 o COM2)
accedendo direttamente ai registri di I/O della seriale.
‘Pinout porta seriale del PC.

‘ 9poli_male 25poli_male

‘ out RTS 7 4 (bit 1)
‘ out DTR 4 20 (bit 0)
‘ in DSR 6 6 (bit 5)
‘ in CTS 8 5 (bit 4)
‘ GND 5 7
comport=3f8h ‘indirizzo base porta seriale: COM1=3f8h COM2=2f8h
outport=comport+4 ‘registro di output RTS e DTR.
bitout=1 ‘RTS= bit 1, DTR= bit 0.
out(outport,bitout,1) ‘setta la linea RTS a 1 (+12V) per alimentare il JB125.
inport=comport+6 ‘registro di input DSR e CTS.
bitin=5 ‘DSR=bit 5, CTS= bit 4.
rx$="" ‘stringa destinata a contenere i dati campionati.
buffer=400000 ‘numero di bit da acquisire.
for i=1 to buffer
bit=in(inport,bitin) ‘acquisizione di un bit dalla linea fisica DSR.
rx$=rx$+string$(bit) ‘salvataggio del bit su stringa.
next i
print rx$ ‘stampa dei bit campionati.
Come si vede, nel listato ho inserito anche l’istruzione OUT che permette di
impostare a +12V l’uscita DTR nel caso vogliate alimentare il JB125
direttamente dalla seriale come da schema originale TFC.
Usando la seriale di un notebook la tensione presente sulla linea DTR è
minore di 12V e si aggira sui 6-7V, valore comunque sufficiente per alimentare
il grabber.
Vi suggerisco di operare direttamente da DOS nativo usando un floppy o una
partizione DOS dedicata in quanto i recenti sistemi operativi Win2000 e WinXP
©Copyright 2005 -Tutti i diritti sono riservati.
23
non permettono più di accedere direttamente agli indirizzi di I/O rendendo la
procedura poco efficiente.
L’obiettivo infatti è quello di riuscire a campionare abbastanza velocemente
da non perdere neanche un impulso.
Considerando che il writer invia al transponder unicamente impulsi di durata
24us e 48us è sufficiente riuscire a campionare un sample ogni 5us per essere
certi di non perdere dati preziosi. Questo è facile da ottenere anche su
macchine non recentissime.
Una volta salvati i sample su file non vi resta che armarvi di datasheet e
procedere all’interpretazione degli impulsi codificati in PPM scorrendo il file dei
sample ed annotando manualmente l’intervallo temporale che separa ogni
impulso dal successivo. Non occorre comunque che io entri nei dettagli
sull’organizzazione dei dati inviati in sequenza dal writer (1 bit di start, 1 bit di
password enable, 56 bit di password, ecc…), il datasheet del PCF7931 è la
vostra migliore fonte informativa, fatene tesoro.
Un’ultima chicca prima di lasciarvi, se avete accordato la vostra bobina senza
power-meter, semplicemente monitorando con un oscilloscopio il segnale
sinusoidale presente ai suoi capi, potete finalmente vedere il contenuto
informativo trasmesso ciclicamente dal transponder. E’ infatti sufficiente
posizionare il PCF7931 come in Figura 8 e osservare il segnale che si presenta
sull’oscilloscopio. Noterete che il segnale sinusoidale viene modulato
digitalmente dal PCF7931 (il debole segnale modulato presente agli estremi
della portante ha un’ampiezza attorno ai 200mV). Se avete un oscilloscopio
digitale potete impostare a 10ms la base dei tempi e congelare un intero
blocco di dati (16 bytes) trasmesso dal transponder. In pratica ora disponete di
un rozzo lettore di PCF7931. Cercate di decodificare manualmente la sequenza
digitale catturata stampandola su carta, è un ottimo esercizio didattico prima
di pensare ad una futura decodifica software.
Adesso è davvero tutto, mi auguro che questa guida abbia chiarito molti degli
aspetti oscuri e misteriosi che circondano l’affascinante mondo della tecnologia
RFID.
Fate buon uso del prezioso know-how acquisito fin qui e proseguite nello
studio, l’argomento della prossima guida consisterà nel progettare e costruire
un’interfaccia di programmazione per il transponder PCF7931.
-TheInsider-