Integrare velocemente un dispositivo NFC

Sul blog di Elettronica Open Source puoi leggere non solo tutti gli articoli Premium riservati agli abbonati Platinum 2.0 e inseriti nella rivista Firmware 2.0 (insieme ad articoli tecnici, progetti, approfondimenti sulle tecnologie emergenti, news, tutorial a puntate, e molto altro) ma anche gli articoli della Rubrica Firmware Reload. In questa Rubrica del blog abbiamo raccolto gli articoli tecnici della vecchia rivista cartacea Firmware, che contengono argomenti e temi evergreen per Professionisti, Makers, Hobbisti e Appassionati di elettronica. Prendendo spunto da un articolo precedente (Firmware 109) che ci mostrava come fosse possibile arrivare ad ottenere un dispositivo NFC in maniera rapida ed efficace, in questo proseguimento affrontiamo la realizzazione pratica di una interfaccia NFC, passando dalle parole ai fatti.

Nell’articolo precedente abbiamo visto come, utilizzando un interessante chip prodotto da AMS, sia possibile facilmente dotare un qualsiasi dispositivo di un'interfaccia NFC. Il chip in questione è l’AS3953, esponente principale della famiglia NFiC di AMS. Ora dopo averne descritto caratteristiche e benefici proviamo a realizzare una semplice applicazione che sfrutti questo chip.

PANORAMICA SULL’APPLICAZIONE

Per creare un'interfaccia NFC partiamo dalle board dimostrative che AMS mette a disposizione degli utenti per valutare le caratteristiche e le funzionalità del chip. In particolare, utilizziamo la “AS3953 Evaluation Board” che come si può vedere dalla Figura 1 integra già l’antenna necessaria sul circuito stampato.

Figura 1: Kit AS3953 Evaluation Board

Per gestire l’altro lato del collegamento SPI utilizziamo una controller board sempre disponibile da AMS, che grazie all’interfaccia USB si può collegare ad un qualsiasi Personal Computer. Ovviamente, sul PC sarà necessario installare del software per gestire attraverso il microcontrollore l’interfaccia NFiC, perciò includiamo simbolicamente nel kit anche una penna USB equipaggiata con tutto il software necessario. Una panoramica del kit è mostrata in Figura 1. Oltre al dispositivo NFC realizzato come detto in precedenza è indispensabile anche una controparte con cui il dispositivo deve dialogare: a tal fine è possibile utilizzare la AS3911 GP demonstrator board, sempre disponibile da AMS, oppure utilizzare un semplice smartphone equipaggiato con Android e dotato di interfaccia NFC. Volendo realizzare almeno un esempio con entrambe le possibilità le tre attività che ci proponiamo di fare sono:

  1. Effettuare un trasferimento file utilizzando la AS3911 GP demonstrator board.
  2. Effettuare la programmazione di una EEPROM attraverso un campo RF sulla AS3911 GP demonstrator board. L’EEPROM potrà poi essere successivamente letta quando la scheda sarà collegata e alimentata.
  3. Effettuare un trasferimento file e URL con un telefono dotato di NFC. Il kit AS3953 Evaluation Board consente di essere alimentato attraverso la porta USB senza la necessità di alimentatori o batterie supplementari.

HARDWARE

Il kit AS3953 Evaluation Board è composto da 2 schede (vedi Figura 2), la scheda TAG analogica e la scheda controller. Sulla scheda TAG analogica sono presenti l’AS3953 e un condensatore (C13 in Figura 2) per fare l’accordo dell’antenna. Questa scheda TAG non alimentata lavora come un tag standard ISO 14443-4. Sulla scheda TAG analogica sono presenti anche due connettori che danno la possibilità di misurare la tensione generata. La scheda controller invece è equipaggiata con un microcontrollore PIC della Microchip. Si tratta del PIC27FJ64GB002 con il suo quarzo a 8MHz. Sulla scheda è presente una porta USB che è utile per alimentare la scheda controller. Lo schema elettrico della TAG board è mostrato in Figura 2.

Figura 2: Schema elettrico della TAG board

E’ interessante osservare anche il layout del PCB visibile in Figura 3, si tratta di una scheda a 2 strati, la zona dedicata all’antenna è sgombra da componenti, e sotto all’AS3953 c’è un riempimento di massa.

Figura 3: Layout del PCB della TAG board

Complessivamente lo sbroglio è abbastanza semplice, visto il numero ridotto di componenti. In Figura 4 è possibile invece vedere lo schema elettrico della controller board.

Figura 4: Schema elettrico della scheda controller

Per chi non avesse già una piattaforma hardware prestabilita, può essere un ottimo punto di partenza con la possibilità di sfruttare anche il software messo a disposizione da AMS. Come si può vedere dalla Figura 4 lo schema elettrico è diviso in 3 sezioni, nella prima dedicata all’alimentazione è presente il regolatore lineare AS1360, in grado di generare una tensione di 3,3V a partire da quella della linea USB, con una corrente massima di 250mA che è più che sufficiente per questo tipo di applicazione. La seconda parte dello schema è dedicata ai 4 LED di segnalazione alimentati anch’essi a 3,3V e pilotati direttamente dal microcontrollore presente nel terzo riquadro di Figura 4. Il PIC27FJ64GB002, usato come microcontrollore, ha bisogno di veramente poca componentistica esterna; nello schema si vede infatti un collegamento diretto alle varie piazzole e connettori presenti sulla scheda, al più con qualche resistenza in serie. Si vede il quarzo da 8 MHz e i segnali USB che hanno solo in serie una resistenza di adattamento di 27 ohm. In Figura 5 è riportato invece il layout della scheda controller, utile per chi volesse prendere spunto da una soluzione sicuramente funzionante.

Figura 5: WPR1516-schema a blocchi

SOFTWARE

Per quel che riguarda il software ci appoggiamo a quello che AMS ci mette a disposizione. In particolare, abbiamo una interfaccia grafica quando cerchiamo la comunicazione con la “General purpose reader board AS3911”, e allo stesso modo abbiamo una interfaccia grafica per comunicare con la scheda controller e con l’AS3959. Entrambe le GUI sono scaricabili dai riferimenti indicati a fondo articolo come [3] e [4]. Il codice sorgente della scheda controller è scaricabile dal sito AMS dal riferimento [5].

ESEMPI DIMOSTRATIVI

Partiamo con l’intento di realizzare un trasferimento di un file tra la nostra applicazione con AS3953 e un generico reader come l’AS3911 general purpose (AS3911 GP). Per prima cosa colleghiamo sia la scheda controller che la AS3911 GP al PC. Facciamo partire le rispettive interfacce grafiche. In Figura 6 è possibile osservare la GUI per la AS3911 GP (notare che la versione del firmware deve essere maggiore o uguale alla 1.5.10).

Figura 6: Trasmettitore a singola spira

La versione si può trovare nell’angolo in basso a destra della interfaccia grafica. A questo punto, sempre sulla GUI, per la AS3911 GP clicchiamo in sequenza su “Demo Board Check”, poi “Adjust Regulator” e infine “Calibrate Antenna”. A questo punto il lettore è pronto e possiamo andare alla sezione dedicata all’AS3953. In Figura 7 è invece visualizzata la GUI AS3953, verifichiamo innanzitutto che la versione firmware dell’AS3953 sia maggiore o uguale della 1.3.1 e che la versione della GUI sia superiore o uguale alla 1.2.4 (Figura 8).

Figura 7: MWCT1012-schema a blocchi

 

Figura 8: AS3953 GUI Version

A questo punto proviamo una trasmissione dalla AS3911 verso la scheda con l’AS3953. Dalla GUI AS3911 selezionare “file transfer”, selezionare una immagine, poi selezionare “speed settings” e cliccare su “write to card” per far partire il trasferimento. Ovviamente, perché il processo si concluda, le antenne devono essere avvicinate. Et voilà! Il file è stato trasferito! Proviamo ora un trasferimento inverso dalla scheda con AS3953 verso il lettore AS3911 GP. Partiamo dalla AS3953 GUI, selezioniamo l’immagine, selezioniamo “speed settings” e poi “Read from card” e il trasferimento di file avviene con successo. Proviamo ora a realizzare il secondo obbiettivo, ossia quello di arrivare a fare operazioni di lettura e scrittura sulla EEPROM. Queste operazioni possono essere fatte solamente sulla scheda TAG, quindi possiamo rimuoverla dal controller. La scheda TAG a questo punto non è alimentata, mettiamola a contatto con il lettore AS3911 GP sovrapponendo le antenne. Dalla AS3911 GUI, nel tab AS3953, selezioniamo EEPROM e chiediamo di effettuare la lettura della EEPROM. Vedremo a questo punto che i dati cambiano come in Figura 9.

Figura 9: Accesso alla EEPROM dalla AS3911 GUI

Se si vuole modificare qualche valore lo si può fare e semplicemente da questa finestra. Ovviamente fate attenzione nel caso in cui si cambino i dati all’indirizzo 3 e 4 (ossia la configuration word e la write lock). Se ora ricolleghiamo la TAG board alla scheda controller e tramite la AS3953 GUI tentiamo una lettura della EEPROM, ci ritroveremo i dati modificati. Il terzo obbiettivo che ci eravamo proposti è quello di mettere in comunicazione un telefono equipaggiato con interfaccia NFC alla scheda con AS3953. Il firmware caricato sulla scheda controller è già in grado di inviare dei messaggi NDEF, ossia quelli che i telefonini usano per scambiarsi informazioni attraverso l’interfaccia NFC, quindi non sarebbe necessario installare una app. In ogni caso, AMS ha messo a disposizione una app per Android per inviare le informazioni dallo smartphone alle nostre schede demo. Dall’AS3953 GUI, se ci si sposta sulla scheda NFC dovrebbe essere possibile installare l'app sul telefono. Noi abbiamo utilizzato un Galaxy Nexus. L’app è scaricabile anche dal Play store cercando “amsNFC”. Sempre dalla GUI, selezioniamo cosa vogliamo trasmettere: un url oppure un'immagine. A questo punto nella parte destra della GUI apparirà il contenuto che vogliamo inviare. Ora prendiamo lo smartphone, con NFC abilitato, sblocchiamolo e mettiamolo in contatto con l’antenna della TAG board e vedremo che il trasferimento si realizza. Nella parte bassa della GUI possiamo vedere lo stato del trasferimento con le informazioni aggiuntive. In Figura 10 viene mostrata la GUI durante il trasferimento di un’immagine.

Figura 10: Trasferimento NFC verso uno smartphone dalla AS3953 GUI

Per effettuare l’operazione inversa, ossia trasferire un file o un url dallo smartphone al nostro demo kit, è necessario partire dalla app Android installata. Dalla pagina principale dell’app (Figura 11) selezionare cosa si vuole trasferire, per esempio un'immagine.

Figura 11: Finestra principale dell'app NFC per Android

Collocare il telefono sull'antenna della tag board ed ecco che nella finestra della AS3953 GUI appare l’immagine trasferita, come in Figura 12.

Figura 12: Trasferimento NFC da uno smartphone alla AS3953 GUI

NOTE SUL FORMATO NDEF

Il formato NFC Data Exchange Format (NDEF) è un formato standardizzato che può essere utilizzato per scambiare informazioni tra un device dotato di interfaccia NFC e un altro device NFC, oppure un TAG. Lo standard è mantenuto dall’NFC forum ed è liberamente consultabile dietro approvazione di una licenza. Il formato NDEF è utilizzato per memorizzare e scambiare informazioni come URI, testo e immagini utilizzando un formato conosciuto e prestabilito. I TAG NFC come le Mifare Classic cards possono essere configurati come TAG NDEF e i dati scritti all’interno da un dispositivo NFC possono essere accessibili a qualsiasi altro dispositivo NFC compatibile con il protocollo NDEF. I messaggi NDEF possono essere utilizzati anche per scambiare dati tra due device attivi NFC, in modalità peer-to-peer. Rispettando lo standard NDEF, dispositivi che non hanno conoscenza dei rispettivi linguaggi e funzioni possono scambiarsi i dati in maniera organizzata e mutuamente comprensibile. Per approfondire l’argomento è possibile cercare su Google i seguenti riferimenti:

  • NFC Data Exchange Format (NDEF) Technical Specification (richiede l’accettazione dei termini di licenza)
  • NFC Record Type Definition (RTD) Specification (richiede l’accettazione dei termini di licenza)
  • NXP White Paper - NFC Forum Type Tags. Il formato dei dati è composto da NDEF Messages e NDEF Records, si tratta di un formato pensato per incapsulare uno o più payload in un singolo blocco di messaggio. Il singolo messaggio viene appunto detto NDEF Messages, ognuno di questi è composto da uno o più NDEF Records. Ogni records può portare un payload di tipo arbitrario e fino 2^31 byte di dati. Se il payload è abbondante i record possono essere accodati. La struttura descritta è mostrata in Figura 13.

Figura 13: Struttura del messaggio NDEF

Il primo record del messaggio viene marcato con il flag MB (Message Begin) e l’ultimo record con il flag ME (Message End). La minima lunghezza del record è di uno impostando nello stesso entrambi i flag. Questi flag sono contenuti in un header mostrato nella struttura del record di Figura 14.

Figura 14: Struttura del record NDEF

I messaggi non possono essere innestati, è necessario attendere la fine del precedente prima di inviare il successivo. I vari record devono essere ricevuti in sequenza, all’interno non hanno un indice che permette di riordinarli. L’NDEF record ha una lunghezza variabile ed è composto come in Figura 14. Nell’header sono contenuti i campi fondamentali per poi ricostruire eventualmente una informazione composta da più record. Esiste un campo lunghezza del payload che serve per sapere quanti dati saranno contenuti nel payload che segue, ma soprattutto sono importanti il campo TNF (Type Name Format) che specifica il tipo di informazione contenuto nel payload, il campo TYPE ed il campo ID che ulteriormente estendono la definizione del tipo di informazione. Giusto per fare un esempio se si vuole trasmettere un url di una pagina web come per esempio http://www.nfc.com, il TNF dovrà essere 0x01 ossia “Well-Known Record”, questo perché il tipo di informazione è standardizzata. Il campo TYPE dovrà riportare che l’informazione standardizzata è di tipo URI, quindi 0x55, e tra i vari URI che possiamo trasmettere un url del tipo “http://www.” ha ID pari a 0x01 . Il risultato finale è quello di Figura 15. Se avessimo voluto trasmettere un record relativo ad un numero di telefono l’unica cosa che sarebbe cambiata era l’ID, che sarebbe diventato 0x05.

Figura 15: Struttura del record NDEF per la trasmissione dell’url “http://www.nfc.com”

CONCLUSIONI

Utilizzando le demo board messe a disposizione da AMS e le interfacce grafiche già pronte, siamo riusciti velocemente a verificare la fattibilità di un trasferimento NFC utilizzando l’AS3953. Per chi volesse cimentarsi con una interfaccia diversa dalla scheda demo, è possibile prendere spunto dai sorgenti software per il PIC che AMS pubblica all’indirizzo [5].

Articolo della rivista cartacea Firmware Anno 2015 - Numero 114-115

Scarica subito una copia gratis

Scrivi un commento

Send this to a friend