PCF7931 Guida Completa Allo Sniffing

April 27, 2017 | Author: stephupr | Category: N/A
Share Embed Donate


Short Description

Guida Completa Allo Sniffing delle chiavette PCF7931...

Description

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.

1

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.

2

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.

3

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.

4

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.

5

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.

6

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.

7

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.

8

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.

Bobina del writer Bobina di ascolto Supporto plastico

Al demodulatore JB125 Transponder PCF7931

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!).

©Copyright 2005 -Tutti i diritti sono riservati.

9

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.

10

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 (RL). 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 RL =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/ RL 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.

11

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? 12 ©Copyright 2005 -Tutti i diritti sono riservati.

Ecco la veloce formuletta approssimata: C=1/((2πf res)2L)

Prima formula inversa della risonanza.

Ricordando che L=63uH e fres=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: fres=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.

13

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/m2 (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.

14

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.

15

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 powermeter 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.

16

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.

17

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 90KHz 100KHz 110KHz 120KHz

1.75Vdc 1.88Vdc 1.95Vdc 1.85Vdc 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)2C)

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.

18

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.

19

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.

20

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.

21

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 ‘ out DTR 4 20 ‘ in DSR 6 6 ‘ in CTS 8 5 ‘ GND 5 7 comport=3f8h

(bit 1) (bit 0) (bit 5) (bit 4)

‘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.

22

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-

©Copyright 2005 -Tutti i diritti sono riservati.

23

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF