Aleix Bel Gisbert Sistema de comunicacions NFC per plataformes...

79
Aleix Bel Gisbert Sistema de comunicacions NFC per plataformes Arduino TREBALL DE FI DE GRAU dirigit pel Prof. Antoni Lázaro Guillén Grau d’Enginyeria Elèctrica Tarragona 2016

Transcript of Aleix Bel Gisbert Sistema de comunicacions NFC per plataformes...

Aleix Bel Gisbert

Sistema de comunicacions NFC per plataformes Arduino

TREBALL DE FI DE GRAU

dirigit pel Prof. Antoni Lázaro Guillén

Grau d’Enginyeria Elèctrica

Tarragona

2016

Universitat Rovira i Virgili

Pàg. 1

0. Agraïments

Aquest treball de fi de grau és la culminació de molts anys de sacrificis i esforços tant per part de la meva família com per la meva.

Tot això no hauria estat possible sense l’esforç incondicional que he rebut de la família i de la parella, ja que durant els moments difícils i crucials al llarg del grau i, concretament, del procés de realització del present treball, sempre m’han encoratjat i m’han sabut animar amb els seus consells.

A més a més, també vull donar les gràcies al Dr. Antonio Ramon Lázaro Guillén per tot el suport tècnic proporcionat durant la realització del treball de fi de grau.

Universitat Rovira i Virgili

Pàg. 2

1. Llistat d’acrònims i definicions.

NFC: Near Field Communication (Comunicació per camp proper)

RFID: Radio Frequency Identification (Identificació per radiofreqüència)

SPI: Serial Peripheral Interface

RTC: Real Time Clock (Dispositiu que permet obtenir l’hora a temps real)

ASK: Amplitude-Shift Keying (Tipus concret de modulació)

BPSK: Binary Shift Keying (Tipus concret de modulació)

ECMA: European Computer Manufacturers Association

LLCP: Logical Link Control Protocol

NFCIP: Near-Field Communication Interface and Protocol

ISO/IEC: International Organization for Standardization / International Electrotechnical Commission

JIS: Japanese Industrial Standard

NDEF: NFC Data Exchange Format

RTD: Record Type Definition

NRZ-L: No Return to Zero-Level (Tipus concret de codificació utilitzada amb NFC)

UART: Universal Asincron Reception and Transmition. És una interfície de comunicació la funció principal de la qual és convertir les dades rebudes al bus del PC amb un format paral·lel a un format sèrie; també realitza el procés a la inversa, transforma les dades rebudes de l’exterior de format sèrie a paral·lel.

RSA: Dels creadors del sistema: Ron Rivest, Adi Shamir i Leonard Adleman. És un algorisme que s’utilitza per xifrar les dades abans de ser enviades, això dificulta l’obtenció

Universitat Rovira i Virgili

Pàg. 3

de les dades per part del atacant.

AES: Advanced Encryption Standard. És un criptograma simètric com 3DES. AES és molt més robust que 3DES degut a que disposa de 128, 192 I 256 bytes per a la mida de la clau. AES és molt més robust que 3DES.

DES: Data Encryption Standard

3DES: Triple Data Encryption Standard. És un criptograma que realitza un xifratge amb bloc. Tot i que es més segur que el criptograma DES, no és aconsellable el seu ús degut a què és relativament vulnerable.

PWM: Pulse Width Modulation

PICC: Proximity Inductive Coupling Card (Tarja d’acoblament inductiu per proximitat)

PCD: Proximity Coupling Device (Dispositiu d’acoblament per proximitat)

WPAN: Wireless Personal Area Network (Xarxa sense fils d’Àrea Personal, és una xarxa petita per a la comunicació de computadores)

CMOS: Complementary Metal–Oxide–Semiconductor. És una de les famílies lògiques utilitzades en la fabricació de circuits integrats. La seva principal característica és la utilització conjunta de transistors tipus pMOS i nMOS configurats de tal forma que en estat de repòs el consum es mínim.

TDMA: Time Division Multiple Acces. És una tècnica que permet la transmissió de senyals digitals. L’idea fonamental consisteix en ocupar tot el canal de transmissió durant un període de temps, d’aquesta manera s’aprofita millor el medi de transmissió.

GFSK: Gaussian Frequency Shift Keying. És un tipus de modulació on un ‘1’ lògic és representat mitjançant una desviació positiva i un ‘0’ lògic amb una desviació negativa.

Diffie-Hellmann: És un algorisme que s’empra per l’intercanvi de les claus que s’utilitzaran per enviar les dades entre el node mestre i l’esclau.

EEPROM: Electrically Erasable Programmable Read-Only Memory. És un tipus de memòria no volàtil usada per emmagatzemar dades.

Memòria Flash: És una evolució de la memòria EEPROM que permet escriure y llegir al

Universitat Rovira i Virgili

Pàg. 4

mateix temps. Permet velocitats de funcionament més altes que la tecnologia EEPROM.

SRAM: Static Random Acces Memory

Polling device: El Polling device és el dispositiu que emet el senyal, com per exemple el lector NFC.

Listening device: El Listening device és el dispositiu que rep el senyal, com podria ser el tag NFC.

Backscattering: És la forma amb que les ones són reflectides. Les partícules o senyals són reflectides amb la direcció d’on provenen.

Detecció de la portadora (Carrier Sense): En els mecanismes d’accés al medi amb detecció de portadora com ara CSMA (Carrier Sense Multiple Access), un node que vol transmetre escolta la línia per detectar si un altre node està transmetent. Si el canal o medi està lliure, llavors transmet. En cas contrari, s’haurà d’esperar un temps de guarda.

Universitat Rovira i Virgili

Pàg. 5

Índex

0. Agraïments 1 1. Llistat d’acrònims i definicions 2

Capítol 1. Previs

2. Objectius del treball de fi de grau 8 3. Justificació 9

Capítol 2. Tecnologia NFC

4. Que és Near Field Comunication (NFC) 10 5. Estàndards i protocols més importants 12 6. Funcionament de la tecnologia NFC 15

6.1. Mode actiu i passiu 15 6.2. Modulació del senyal 17 6.3. Codificació del senyal 18 6.4. Mecanismes anticol·lisió 19

7. Principis físics 21 7.1. Acoblament inductiu 21 7.2. Camp magnètic 21 7.3. Inductància mútua 22

8. Comparació entre NFC i Bluetooth 23 9. Tipus de tags NFC 24 10. Xip PN532 25

10.1. Seqüència de missatges en la transmissió de dades 26 11. Antena típica per a la comunicació NFC 27 12. Protocols de comunicació I2C i SPI 31

12.1. I2C 31 12.2. SPI 32

13. Seguretat en la tecnologia NFC 35 13.1. Solucions i recomanacions 35 13.2. Canal segur per NFC 35

Capítol 3. Plataforma Arduino

14. Què és Arduino 37 15. Perquè s’ha utilitzat la plataforma Arduino 37 16. Tipus d’Arduino i Shields 38 17. Explicació al detall de les Shields utilitzades en l’aplicació 40

17.1. NFC PN532 41 17.2. RTC DS1307 42

Capítol 4. Software Arduino i Matlab

18. Breu introducció de l'aplicació 44 18.1. Funcionament de l’aplicació 44 18.2. Arquitectura de l’aplicació 45

Universitat Rovira i Virgili

Pàg. 6

18.2.1. Connexions Mòdul ArduinoUno - NFC PN532 45 18.2.2. Connexions Mòdul ArduinoUno - RTC DS1308 46

19. Codi Arduino 47 19.1. Estructura d’un codi Arduino 47 19.2. Funcionalitat del programari Arduino 48 19.3. Funcions i mètodes 48

20. Codi Matlab 52 20.1. Funcionalitat del programari Matlab 52 20.2. Codi Matlab 52 20.3. Interfícies gràfiques 53

21. Joc de proves 54 22. Procés seguit per a la implementació de l’aplicació 58 23. Possibles millores de l’aplicació 59

Capítol 5.

24. Conclusions 60 25. Bibliografia 61

Annex 26. Guia de la instal·lació de la llibreria Adafruit_NFCShield_I2 64 27. Guia de la instal·lació de la llibreria RTClib 67 28. Guies d’ús i aprenentatge de les aplicacions NFC Basic 69 29. Lectura i escriptura de tags des de Arduino 75

Índex de taules

Taula 1. Comparació entre NFC i Bluetoth 24 Taula 2. Comparació entre els diferents tipus de tag 25 Taula 3. Llistat dels mòduls Arduino més utilitzats 38 Taula 4. Llistat de dispositius compatibles amb IDE Arduino 39 Taula 5. Llistat amb tots els components del mòdul RTC DS1307 43 Taula 6. Pins de les connexions 47

Índex de Figures

Figura 1.a. Primer exemple mode actiu 15 Figura 1.b. Segon exemple mode actiu 15 Figura 3. Exemple mode passiu 15 Figura 4. Esquema del procés de comunicació entre el lector i el tag 16 Figura 5. Exemple de la modulació ASK 100% 17 Figura 6. Exemple de la modulació ASK 10% 18 Figura 7. Exemple modulació BPSK 18 Figura 8. Comparativa dels tres tipus de codificació utilitzats en NFC 19 Figura 9. Interacció del camp magnètic entre el lector i el tag 22 Figura 10. Procés de l’intercanvi de dades 26 Figura 11. Localització del xip PN532 en la Shield NFC PN532 27 Figura 12. Exemple antena estàndard per a la comunicació NFC 27 Figura 13. Intensitat i distribució del camp magnètic en condicions normals 28 Figura 14. Intensitat i distribució del camp magnètic amb un metall pròxim a l’antena 29 Figura 15. Intensitat i distribució del camp magnètic amb protecció amb ferrita 29

Universitat Rovira i Virgili

Pàg. 7

Figura 16. Circuit d’una antena típica NFC 29 Figura 17. Seqüència d’inici amb el protocol I2C 31 Figura 18. Exemple d’una trama de dades amb el protocol I2C 32 Figura 19. Estat de condició de parada 32 Figura 20. Esquema entre el dispositiu mestre i l’esclau 33 Figura 21. Connexió del dispositiu mestre amb sèrie amb el protocol SPI 34 Figura 22. Connexió del dispositiu mestre amb paral·lel amb el protocol SPI 34 Figura 23. ArduinoUno 40 Figura 24. Shield NFC PN532 41 Figura 25. Shield RTC DS1307 42 Figura 26. Connexions mòdul Arduino amb mòdul RTC DS1307 45 Figura 27. Arquitectura general de l’aplicació 45 Figura 28. Muntatge dels pins a la Shield NFC PN532 46 Figura 29. Pins de la Shield DS1307 46

Figura 30. Arquitectura del codi Arduino 47 Figura 31. Libreries codi Arduino 48 Figura 32. Definició mètodes del codi Arduino 49 Figura 33. Definició de les variables i taula 50 Figura 34. Obtenció del temps real i funcionament del LED (Light-emitting diode) 50 Figura 35. Imprimir per pantalla el dia actual 51 Figura 36. Codi Matlab tipus 52 Figura 37. Pantalla principal de l’aplicació 54 Figura 38. Primera pantalla per enregistrar les dades 54 Figura 39. Pantalla secundaria per enregistrar el nom 55 Figura 40. Pantalla secundaria per enregistrar el telèfon 55 Figura 41. Pantalla principal amb tres registres 55 Figura 42. Ampliació dels tres registres 56 Figura 43. Primera pantalla per comprovar la validesa de les dades 56 Figura 44. Pantalla principal de l’aplicació 57 Figura 45. Pantalla principal de l’aplicació 57

Índex de les figures dels Annexos

Figura 46. Primera pantalla per al procés de descàrrega de la llibreria Adafruit_NFCShield_I2C 64 Figura 47. Pantalla principal del programa Arduino 65 Figura 48. Pantalla de l’escriptori del PC 66 Figura 49. Primera pantalla per al procés de descàrrega de la llibreria RTClib 67 Figura 50. Pantalla de l’escriptori del PC 68 Figura 51. Pantalla principal de l’aplicació NFC Basic 69 Figura 52. Pantalla secundària de l’aplicació NFC Basic 70 Figura 53. Pantalla secundària de l’aplicació NFC Basic 71 Figura 54. Pantalla principal i secundaria de l’exemple 1 72 Figura 55. Pantalles secundàries de l’exemple 1 72 Figura 56. Pantalla principal i secundàries de l’exemple 2 73 Figura 57. Pantalla principal i secundàries de l’exemple 3 74 Figura 58. Codi Arduino per a la lectura de tags 76 Figura 59. Codi Arduino per a l’escriptura de tags 77 Figura 60. Línies de codi font per a l’escriptura de tags 77 Figura 61. Línies de codi lleugerament modificades per a l’escriptura de tags 78 Figura 62. Procés d’escriptura de tags 78 Figura 63. Procés de lectura de tags 78

Universitat Rovira i Virgili

Pàg. 8

Capítol 1. Previs

2. Objectius del treball de fi de grau De forma global, aquest treball de fi de grau té com a objectius desenvolupar un tema d’actualitat en el món de les comunicacions i l’enginyeria.

Aquestes dues tecnologies són NFC i Arduino. Tot i que NFC ja va ser creada fa uns tretze anys, no ha estat fins fa relativament poc que s’ha apropat a la gent; i segurament serà molt més utilitzada en un futur proper. Arduino és una tecnologia relativament nova, que va néixer l’any 2005 i que simplifica molt la feina a l’hora de crear infinitat d’aplicacions i projectes prototipus del món de l’enginyeria.

Com és obvi, un efecte col·lateral del TFG és el de reforçar i ampliar els coneixements impartits tant a les classes magistrals com als laboratoris. Aquests coneixements han estat la base que han permès la realització d’aquest treball.

Un objectiu més específic és el d’implementar una aplicació que es pugui utilitzar en properes pràctiques del grau en Serveis i Tecnologies de Telecomunicació, fent així més entenedora la teoria impartida a les classes teòriques i sobretot intentar apropar l'alumne a la tecnologia Arduino i NFC. Per a la realització d'aquesta aplicació, doncs, els objectius que s'hauran d'assolir són:

� Conèixer la tecnologia NFC

� Estudiar i entendre el funcionament del codi Arduino per poder desenvolupar una aplicació

� Realitzar el muntatge físic del projecte

� Implementar un codi Matlab per tal de fer un tractament de les dades proporcionades del mòdul Arduino

� Realitzar una aplicació que permeti la interacció de tags NFC

Aquest demostrador s’haurà de fer utilitzant un mòdul Arduino UNO, juntament amb una shield NFC que serà l’encarregada de detectar i interactuar amb els camps electromagnètics del voltant i una shield RTC (Real Time Clock) que s’encarregarà de proveir l’hora actual a l’aplicació.

Universitat Rovira i Virgili

Pàg. 9

3. Justificació

Actualment el món gira al voltant de les noves tecnologies i cada cop més ens adonem que són més necessàries i que ens faciliten el nostre dia a dia. L’ésser humà s’ha adaptat completament a aquestes tecnologies i les ha sabut integrar de forma excel·lent per realitzar tot tipus de tasques.

L’home intenta millorar aquestes tecnologies de manera que cada cop siguin més ràpides, eficients i segures. Tots aquests adjectius són els que descriuen la tecnologia NFC desenvolupada per Sony, Philips i Nokia al voltant de l'any 2002.

La tecnologia NFC és creada per a satisfer les necessitats de l' ésser humà pel que fa a avenços tecnològics. NFC permet i de ben segur permetrà durant molts anys comunicar dispositius d'una manera molt més eficient i més segura del que ho estan fent les tecnologies, com per exemple el Wifi o el Bluetooth.

La temàtica d’aquest treball de fi de grau ha estat escollida per tal d’ampliar els meus coneixements referents al NFC, ja que em sembla que serà una de les tècniques pioneres o de referència quant a la transmissió de dades. Crec que disposa d'un potencial grandíssim, ja que permet la comunicació entre dispositius d’una forma molt simple i pot ser utilitzada per infinitat d’aplicacions.

La implementació d'una aplicació amb Arduino fa que es pugui interactuar de forma pràctica amb la tecnologia NFC, de manera que com a resultat obtenim una sinergia entre totes dues tecnologies amb un gran potencial innovador i aplicable en molts àmbits. En l’actualitat la tecnologia Arduino està tenint molt de pes en el desenvolupament de projectes d’enginyeria ja que permet provar sistemes de manera ràpida abans de fer una industrialització final.

Aquesta informació podrà ser utilitzada per aquelles persones expertes en la matèria o simplement per persones que se sentin atretes per aquest nou món que ens obren aquestes dues tecnologies combinades. Espero que aquest projecte de fi de grau, fet amb molt d'entusiasme i il·lusió, pugui servir d'inspiració o de punt de partida a altres persones per seguir desenvolupant-lo.

Universitat Rovira i Virgili

Pàg. 10

Capítol 2. Tecnologia NFC

4. Què és Near Field Comunication (NFC)

En els darrers anys s’ha popularitzat molt l’acrònim NFC (Near Field Comunication) que no és més que un standard de comunicació que dia a dia s'està fent un lloc en les transmissions de dades. No obstant, NFC és va inventar l'any 2002 per Sony i NXP (Philips) per tal d’aconseguir compatibilitat amb les seves tecnologies RFID (identificació per radiofreqüència) en banda de 13.56 MHz, MiFare i FeliCa.

MiFare i FeliCa són tecnologies de RFID que permeten la comunicació sense contacte i han estat la tecnologia prèvia a NFC. Dit d'una altra manera, gràcies a MiFare i/o FeliCa avui en dia podem gaudir de la tecnologia NFC. D’es d'un inici aquestes companyies tenien molt clar que volien crear un sistema capaç d'interactuar entre dispositius d'una forma segura, fàcil i intuïtiva.

NFC és un sistema de transmissió de dades sense fils com pot ser Bluetooth, però en canvi utilitza els principis de comunicació per backscattering com a la tecnologia RFID. Utilitza la inducció dels camps magnètics per tal de transmetre les dades. A més el tag s’alimenta rectificant el senyal de radiofreqüència emesa pel lector, per tant pot ser passiu. No obstant això, aquesta tecnologia ens ofereix avantatges respecte a altres tecnologies RFID, per exemple en banda UHF, ja que la tecnologia RFID UHF, a causa de la mida de les antenes i consum del lectors, no es pot integrar fàcilment a la telefonia mòbil.

L'objectiu d'aquesta tecnologia sense fils és brindar la possibilitat d'interactuar amb ella de forma còmoda, ràpida i eficient. Això es basa en què l'usuari no ha de fer cap configuració prèvia en la transmissió de dades, i a més a més, la transacció dura molt poc temps (segons o inclús alguns mili-segons). Cal fer incís en què NFC està pensada per a l'intercanvi ràpid d'uns pocs bits d'informació, com per exemple números de telèfon mòbil, fotos o inclús algun fitxer MP3 i no per a transmetre grans quantitats d'informació.

Com en tota comunicació és fonamental treballar amb un mecanisme que controli les possibles col·lisions que es puguin produir al llarg del procés de transferència de dades. Segons el mode d'operació, que pot ser actiu o passiu, el dispositiu utilitzarà uns mètodes o uns altres per poder fer front a col·lisions. Per a que aquestes col·lisions no tinguin lloc en el sistema existeixen els denominats mecanismes anticol·lisió els quals integra NFC. És per això que es considera una tecnologia eficient, ja que garanteix que no es produiran col·lisions a l'hora de la comunicació, és a dir, que la transacció es realitzarà un sol cop i sense problemes, i que per tant no s’haurà de tornar a repetir.

Universitat Rovira i Virgili

Pàg. 11

Pel que fa a la transmissió de dades, actualment les velocitats són de 106 Kbps, 212 kbps i 424 kbps, velocitats petites si les comparem amb la de la primera versió de Bluetooth que era d’1Mbps i en canvi, actualment, s’està utilitzant la quarta versió en què la velocitat és de 24 Mbps.

Les parts que intervenen en la comunicació són: d’una banda l’emissor, també anomenat node mestre; i d’altra banda, el receptor, que s’anomena node esclau. Aquesta tecnologia permet transmetre dades molt fàcilment entre aquestes parts únicament apropant-les. La distància adequada per a que es duguin a terme les comunicacions entre dos dispositius, siguin telèfons mòbils o les pròpies tags NFC, ha de ser de menys de 10-15 cm en condicions ideals (sense cap tipus d'atenuació provocada per algun material) entre la targeta i el dispositiu que s'encarrega de detectar-la. Precisament, aquesta és la característica més important d’aquest sistema i que la diferencia de la resta. Encara que en un principi sembli una restricció o un problema, més endavant es veurà que aquest fet fa que aquesta tecnologia sigui relativament segura. A més, si es tracta d'informació sensible o susceptible de ser robada degut a la seva importància, aquesta es xifrarà amb AES. Una aplicació molt utilitzada actualment, per exemple, xifrant la informació per realitzar pagaments. En altres casos, com ara per a l’autenticació, transferència de dades entre dispositius NFC i accés a informació digital, no es necessita cap xifratge de dades.

Universitat Rovira i Virgili

Pàg. 12

5. Estàndards i protocols més importants

La tecnologia NFC es troba estandarditzada i obeeix a protocols formulats per algunes organitzacions com ara l’ECMA International, Forum NFC, ISO/IEC. Els protocols i estàndards més importants de la tecnologia NFC són [12][13]:

1.ISO/IEC 14443: és l’estàndard internacional de la tecnologia NFC i s’encarrega de descriure els paràmetres necessaris per a realitzar la comunicació entre una targeta i un dispositiu d’acoblament. Aquest estàndard està compost per quatre parts.

o Part 1. ISO/IEC 14443-1: descriu les característiques físiques dels tags.

o Part 2. ISO/IEC 14443-2: defineix unes normes referents a la potència emesa i a la senyal interferent que provoca el mateix dispositiu cap a altres dispositius propers. A més, estableix unes regles per a la codificació i formes d’ona utilitzades. Hi ha tres tipus d’estàndards pels quals es regeix la tecnologia NFC:

� ISO/IEC 14443A: aquesta s’aplica en les anomenades targetes de memòria que transmeten les seves credencials i l’autenticació quan ho sol·licita el lector de tags. Aquestes també han de transmetre informació sobre els paràmetres de dades com ara la mida de les trames. A més a més, el lector pot actualitzar el valor emmagatzemat al microxip de manera que es podrà anul·lar o inutilitzar el tag quan es vulgui. Aquest utilitza una modulació 100% ASK amb codificació Miller Modificat.

� ISO/IEC 14443B: aquestes reben energia de forma contínua sempre i quan estiguin en contacte amb el lector. Actualment aquest estàndard és comunament utilitzat a França.

� ISO/IEC 14443F o Japanese Industrial Standard (JIS) X6319-4: fa referència a l’estàndard de comunicació més ràpid, també conegut com FeliCa. Normalment aquest Standard només s’utilitza al Japó.

Els tres estan acceptats encara que per norma general una sola targeta no és compatible amb tots els estàndards a la vegada.

o Part 3. ISO/IEC 14443-3: descriu les previsions que han d’haver-hi per a que no hi hagi col·lisió a l’hora d’inicialitzar la comunicació. Aquesta part és centra amb les trames de dades i els mecanismes anticol·lisió que s’usen per a descobrir targetes que hi ha al voltant del dispositiu.

Universitat Rovira i Virgili

Pàg. 13

o Part 4. ISO/IEC 14443-4: aquesta part de la normativa ISO/IEC 1443 és centra en definir el protocol (opcional) half-duplex que intervé en la comunicació. Particularment, defineix les seqüències d’activació i desactivació d’aquest, és a dir, descriu l’intercanvi de dades entre el tag i el lector.

2. ISO/IEC 18092 (NFCIP-1) o ECMA 340: Aquest estàndard bàsicament se centra en definir els modes de comunicació de NFC, i en podem trobar tres de diferents.

� Mode lectura/escriptura. Per exemple un dispositiu mòbil que disposi de tecnologia NFC podrà escriure o llegir targetes, sempre que aquestes compleixin uns estàndards que pugui suportar el telèfon mòbil.

� Peer-to-peer. Aquest mode s’anomena d’igual a igual perquè ara s’estableix comunicació entre dos telèfons mòbils, on hi apareix un flux de dades d’un cap a l’altre. Per exemple, per intercanviar l’agenda de contactes, imatges, vídeos, etc.

� Emulació de tags. En aquest mode els telèfons mòbils poden fer la funció de tag. És el que s’utilitza per exemple a l’hora de fer un pagament amb NFC.

3. ISO/IEC 21481 (NFCIP-2) o ECMA 352: determina mecanismes per a seleccionar el mode de comunicació de NFC adequat.

4. ISO/IEC 15963: descriu l’ús de l’identificador de les etiquetes de radiofreqüència i els sistemes disponibles per a la identificació d’aquestes.

5. Protocol LLCP (Logical Link Control Protocol): és un protocol de transport que proveeix un enllaç entre dos dispositius actius habilitats amb tecnologia NFC per a dur a terme el mode d’operació punt a punt. Aquest protocol definit a la capa d’enllaç dóna suport a la comunicació entre dos dispositius NFC, amb la qual es necessària una comunicació bidireccional per poder dur a terme qualsevol operació. Defineix dos tipus de serveis, Connectionless i Connection-oriented que s’organitzen en tres classes de serveis.

� Servei Connectionless: ofereix una configuració senzilla sense oferir cap garantia de fiabilitat en la comunicació, ni disposa de control de flux, tot i que ofereix les mínimes garanties que exposa la ISO/IEC 18092 i ISO/IEC 14443.

Universitat Rovira i Virgili

Pàg. 14

� Servei Connection-oriented: ens dóna garanties de què la comunicació es realitzarà de forma satisfactòria i disposa de control de flux.

� Servei Connectionless i Connection-oriented a la vegada. En funció de la sensibilitat de les dades a transmetre, s’usarà un o l’altre. El dispositiu que enviarà les dades és l’encarregat de decidir quin tipus de servei s’utilitzarà en la transacció.

6. Protocol NDEF (NFC Data Exchange Format): defineix el format estàndard per a l’intercanvi de dades entre dispositius que disposin de tecnologia NFC. Aquest protocol usa el mode de transport Conetion Oriented (Protocol de control LLCP) per a proporcionar un intercanvi de dades fiable.

7. Protocol RTD (Record Type Definition): especifica el format i les condicions que han de complir les dades per construir el tipus de registre basat en el format NDEF. Inclou especificacions per al registre de text, URI (Uniform Resource Identifier, Identificador Uniforme de Recursos). D’aquest protocol hi ha diferents variants o modalitats.

� NFC Text RTD: proporciona una manera eficient d’emmagatzemar Strings en diferents llenguatges utilitzant el mecanisme RTD i el format NDEF.

� NFC URI RTD: proporciona una manera eficient d’emmagatzemar els URI, utilitzant el mecanisme RTD i el format NDEF.

� NFC Smart Poster RTD: descriu la forma d’introduir URL’s, SMS’s o números de telèfon mòbil dintre d’un tag NFC.

� NFC Signature RTD: especifica el format usat en la signatura per un sol o múltiples registres NDEF. També proporciona una llista d’algoritmes i tipus de certificats que poden ser usats a l’hora de crear una signatura digital.

Universitat Rovira i Virgili

Pàg. 15

6. Funcionament de la tecnologia NFC

6.1. Mode actiu i passiu La tecnologia NFC funciona a la freqüència de 13.56 MHz de l’espectre radioelèctric. Com es veurà més endavant, les velocitats de transmissió de les dades son de 106 Kbits/s, 212 Kbps i 424 Kbps/s. En funció del tipus de modulació s’usaran unes velocitats o unes altres.

Hi ha dos tipus de modes: actiu i passiu. S’anomena mode actiu quan els dos dispositius que intervenen en la comunicació disposen d’alimentació pròpia. En canvi, s’anomena mode passiu quan només un dels dispositius disposa d’alimentació pròpia.

En el mode actiu els dos nodes es comuniquen entre si utilitzant el seu camp electromagnètic, ja que els dos dispositius disposen d’una font d’alimentació que els ho permeti. En aquest mode es requereix que els dos dispositius negocien l’intercanvi de dades.

Figura 1.a Primer exemple mode Actiu Figura 1.b Segon exemple mode Actiu En el mode passiu el dispositiu mestre genera el camp electromagnètic i el dispositiu destí (dispositiu passiu) es comunica amb aquest modulant el senyal rebut. En aquest mode, el dispositiu esclau obté l’energia necessària per a funcionar proporcionada pel node actiu o mestre, que cal recordar que és el que està alimentat i el que inicia la comunicació.

Figura 3. Exemple mode passiu

Universitat Rovira i Virgili

Pàg. 16

Com ja s’ha vist en l’apartat anterior, i centrant l’interès en el mode passiu, es disposa de dos elements alhora de la transmissió. Un element que anomenem polling device, que és el master i el listening device, que és l’esclau.

Dins del mode passiu hi podem trobar dues situacions diferents. La transmissió de dades i potència des del polling Device, o node mestre, i la transmissió de dades del listening Device, o node esclau, cap al node mestre.

Transmissió de dades i potència des del polling device El polling device envia el senyal de 13,56 MHz cap a l’altre dispositiu. I el listening device aprofita el senyal de 13,56 MHz procedent del polling device per tal d’alimentar-se, ja que aquest no disposa d’energia pròpia. La transmissió de dades del poller al listener té lloc mitjançant la modulació de l’amplitud del camp per part del poller.

Com és obvi, pel que fa al mode actiu, l’energia requerida serà menor per a la transmissió de les dades, ja que en aquest cas els dos dispositius sí que disposen d’energia per autoabastir-se.

Transmissió de dades des del listening device. Aquesta situació és més complexa; com que aquest dispositiu no disposa d’energia, l’aparició d’atenuacions produïdes per materials metàl·lics i una insuficient potència rebuda per part del lector són les causes més habituals que fan més complexa la comunicació. Es pot donar el cas en què 1. la dificultat de proveir un tag intel·ligent amb la suficient energia la qual pugui operar correctament dins del rang de potència del lector; 2. conseqüentment que sigui bona la recepció de dades per part del lector o polling device i 3. la capacitat per a donar resposta a les dades cap al tag intel·ligent o tag.

Figura 4. Esquema del procés de comunicació entre el lector i el tag

Universitat Rovira i Virgili

Pàg. 17

6.2. Modulació del senyal

La modulació digital és el procés pel qual els símbols digitals es transformen en formes d’ona, que són compatibles amb les característiques físiques del canal. En la transmissió en banda base, les formes d’ona modulades tenen forma de polsos, en modulació pas banda els polsos conformats modulen un senyal sinusoïdal anomenat portadora.

S’entén per modulació pas banda el procés en el qual l’amplitud, la freqüència, la fase de la portadora de radiofreqüència o la combinació de les tres varien en funció de la informació de les dades (bits i símbols) a transmetre de la banda base.

Per tant, el senyal segueix la següent equació:

s(t) = A(t)·cos ( ω(t) + φ(t) ) (1) Aquesta portadora està situada en el canal corresponent de comunicació que assigna cada sistema; en aquest cas, a 13,56 MHz. Les raons més importants per modular són:

1. La mida de l’antena és proporcional a la longitud d’ona.

2. Permet separar els diferents senyals (FDMA) quan més d’un senyal utilitza el mateix canal o medi de transmissió.

La tecnologia NFC disposa de tres tipus de modulació segons el tipus de tag. Dues d’elles són modulacions d’amplitud; i l’altra, de fase [25].

Modulació ASK (Amplitude Shift Keying) 100%

Figura 5. Exemple de la modulació ASK 100%

Tal i com es mostra en la Figura 5, la portadora sinusoïdal pren dos valors d’amplitud, determinats directament pel senyal de dades binari. Normalment el modulador transmet la portadora quan el bit de dades és ‘1’ i la suprimeix completament quan el bit és ‘0’.

Universitat Rovira i Virgili

Pàg. 18

Modulació ASK (Amplitude Shift Keying) 10%

Figura 6. Exemple de la modulació ASK 10%

Tal i com s’observa en la Figura 6, l’única diferència respecte el cas anterior és que quan el bit de dades és ‘0’ el senyal no es suprimit completament. Si ens fixem en l’amplitud d’un pic respecte a l’altre veiem que és un 10% més petit.

Modulació BPSK (Binary Phase Shift Keying)

Per aquest cas, el PSK binari consisteix en variar la fase de l’ona s(t) entre 0° i 180°.

Figura 7. Exemple modulació BPSK

6.3. Codificacions del senyal En la tecnologia NFC s’utilitza NRZ-L, Miller Modificat i Codi Manchester.

NRZ-L

És molt senzill, ja que un estat alt en un temps de bit indica un ‘1’ lògic, i un estat baix indica un ‘0’ lògic.

Miller Modificat Es caracteritza perquè un ‘1’ lògic produeix una transició en el punt mitjà de l’interval i un ‘0’ lògic no produeix cap transició a no ser que vagi seguit d’un altre ‘0’. En qualsevol cas es produeix una transició entre zeros al final del primer interval. Les transicions es realitzen amb una amplitud compresa entre +A i –A.

Universitat Rovira i Virgili

Pàg. 19

Codi Manchester

En la codificació Manchester, cada període de bit es divideix en dos intervals iguals. Un bit binari de valor ‘1’ es transmet com un valor de tensió alt en el primer interval, i un valor baix en el segon. Un bit amb valor ’0’ s’envia al contrari, és a dir, una tensió baixa seguida d’un nivell alt de tensió.

Aquesta codificació assegura que tots els bits presenten una transició en la part mitjana, proporcionant així un excel·lent sincronisme entre l’emissor i el receptor. Un inconvenient és que necessita més amplada de banda que el mètode NRZ-L.

Figura 8. Comparativa dels tres tipus de codificació utilitzats en NFC

6.4. Mecanismes anticol·lisió Com tot sistema de comunicacions és imprescindible controlar les col·lisions que es poden generar durant la comunicació; per tant, és necessària la intervenció de mecanismes que puguin donar més robustesa durant l’intercanvi de dades entre dispositius NFC.

Segons el mode d’operació en què es trobi un dispositiu NFC es realitzaran diferents mètodes per prevenir les possibles col·lisions. És sempre responsabilitat del node master detectar una col·lisió i conseqüentment prendre una decisió al respecte. Així doncs, els nodes esclaus no tindran cap mecanisme per a detectar cap col·lisió.

En funció del mode amb què opera cada dispositiu, el mecanisme treballarà d’una forma o d’una altra.

Mecanisme anticol·lisió per al mode Actiu.

El dispositiu esclau, després de rebre el senyal del dispositiu mestre, haurà d’esperar un temps de guarda (Tg) abans d’enviar la seva resposta. Aquest temps ve donat per la següent formula:

Universitat Rovira i Virgili

Pàg. 20

(2)

On:

n és un número aleatori entre 0 i 3.

fc és la freqüència central [Hz].

Tg és el temps de guarda [s].

Durant aquest temps de guarda, el dispositiu esclau realitza la detecció de la portadora (Carrier Sense) per assegurar-se de què no hi ha altres dispositius utilitzant el mateix canal de comunicació. En cas de què hi hagi algun dispositiu utilitzant el mateix canal,

llavors el temps de guarda passa a ser:

(3)

Per tant, ara el dispositiu esclau s’esperarà un temps superior a 1024/fc abans d’enviar la seva resposta cap al node mestre.

Mecanisme anticol·lisió per al mode Passiu.

Els nodes mestres també utilitzen la mateixa tècnica per minimitzar les col·lisions amb els senyals provinents d’altres dispositius, siguin actius o passius.

El node mestre, abans d’iniciar la comunicació, escolta el canal durant un temps (T). Si detecta un camp magnètic superior o igual al del llindar Hi (treshold Hi) el dispositiu no comença la comunicació. A més, si no detecta cap senyal o si el senyal que detecta està per sota d’aquest llindar durant un temps assumeix que el canal està lliure i que per tant no es produirà cop col·lisió. Llavors, després d’esperar un temps de guarda Tg< 5 ms, el node mestre començarà la transmissió.

T es calcula seguint la següent expressió:

(4)

On:

P és el temps de retard inicial, aquest ha de ser P>4096

n és un número aleatori entre 0 i 3. 0 < n ≤ 3.

Universitat Rovira i Virgili

Pàg. 21

En aquest cas també es pot produir un altre tipus de col·lisió que succeeix quan dos o més dispositius passius s’alimenten al mateix moment del camp magnètic generat pel node mestre. Per tant, també respondran simultàniament provocant una col·lisió. El dispositiu mestre soluciona aquest problema utilitzant un protocol anticol·lisió determinista d’arbre binari (Binary Tree Protocol).

7. Principis físics

7.1. Acoblament inductiu

Dos dispositius NFC establiran la comunicació mitjançant un camp magnètic o camp proper. Per als dispositius que treballen amb el mode d’operació Passiu, aquest camp és fonamental per dur a terme l’acoblament inductiu.

El dispositiu mestre genera un camp magnètic, suficientment intens, per a que aquest pugui generar un corrent elèctric en el node esclau que sigui capaç d’alimentar el circuit del dispositiu passiu i, a més, que el node esclau o passiu sigui capaç de generar un senyal de resposta. Aquest senyal de resposta és el que contindrà les dades guardades a la memòria del dispositiu passiu (tag).

7.2. Camp magnètic Per saber els factors que permeten un acoblament inductiu satisfactori és necessari fer un breu resum d’alguns conceptes d’electromagnetisme.

El camp magnètic generat per un dispositiu NFC depèn de l’antena utilitzada. Les antenes més comunes són espirals quadrades o cilíndriques. El camp magnètic H [A/m] generat per una antena cilíndrica ve donat per la següent expressió.

(5)

On:

I és el corrent que passa per l’espiral [A].

N és el nombre de voltes de l’espiral.

r és el radi de l’espiral [m].

d és la distància des d’on es mesura el camp magnètic (H) en l’eix x [m].

El valor de d sempre compleix el següent i és el límit a partir del qual es considera camp proper o llunyà:

Universitat Rovira i Virgili

Pàg. 22

d < λ< 2 (6)

7.3. Inductància mútua

Quan una segona espiral se situa prop de l’espiral generadora de camp magnètic es veu afectada pel flux magnètic que genera la primera. Aquest flux magnètic generat per una antena tipus espiral ve donada per:

φ = N · Ø = N · μ0 · μr · H · A (7)

On:

Ø és la suma del flux magnètic que hi ha en una superfície A [Wb].

A és l’àrea o superfície de l’espiral [m2].

μ0= A· Ø ·10-7 [H/m]

μr és la permeabilitat relativa, el valor del qual depèn de les propietats magnètiques de l’antena.

H és el camp magnètic [Av/m].

Figura 9. Interacció del camp magnètic entre el lector i el tag

Universitat Rovira i Virgili

Pàg. 23

8. Comparació entre NFC i Bluetooth

Bluetooth és una tecnologia sense fils de curt abast que forma part de les anomenades WPAN (Wireless Personal Area Network), les quals segueixen l’estàndard IEEE 802.15.1, que permet l’intercanvi d’informació entre alguns dispositius.

L’estàndard Bluetooth, de la mateixa manera que el wifi, utilitza la tècnica FHSS (Frequency Hopping Spread Spectrum), que consisteix en dividir la banda de freqüència de 2.402-2.480 GHz en 79 canals d’1 KHz d’amplada de banda cadascun; i després transmet el senyal utilitzant una seqüència coneguda de canals per l’emissor i el receptor. Pel que fa als principis de la comunicació de la tecnologia Bluetooth, cal assenyalar que aquesta es basa en el mode de comunicació mestre/esclau, igual que la tecnologia NFC. El Bluetooth defineix un canal de comunicació de 720 Kbits/s amb un abast d’uns 10 metres. Si es parla de freqüència, aquesta treballa entre el rang de 2,4 i 2,48 GHz amb salts de freqüència de fins a 1600 salts/s. Aquests salts doten al sistema de més seguretat i robustesa.

La potència de sortida necessària per realitzar la comunicació és de 0 dBm (1mW), encara que hi ha transmissors que en consumeixen més i que tenen un major abast. Per a arribar a l’objectiu de consumir poca energia es va idear una solució la qual es pot implementar en un sol xip utilitzant circuits CMOS.

Com a trets generals:

� La freqüència d’operació està dins de la banda des 2.4 GHz.

� Una xarxa de dispositius Bluetooth rep el nom de Piconet i el nombre màxim de dispositius que hi pot tenir connectats és de 8 (1 node mestre i 7 nodes esclaus).

� Altres dispositius, a banda dels 8, poden formar part d’una xarxa més gran; el nom d’aquesta xarxa és Parked.

� Una unitat pot participar en diferents Piconets a través de la tecnologia TDMA (Time Division Multiple Acces).

� El tipus de modulació que utilitza és GFSK (Gausian Fhase Shift Keying).

A continuació es mostra una taula comparativa entre la tecnologia Bluetooth i NFC.

Universitat Rovira i Virgili

Pàg. 24

Taula comparativa NFC Bluetooth Establiment de la

comunicació <0.1 s 6 s

Velocitat de transmissió 424-848 Kbps 24 Mbps (Versió 3) Abast teòric 10 cm 10 m

Freqüència de treball 13.56 MHz 2.4 GHz Tipus de Xarxa Punt a punt WPAN

Seguretat Moderada Alta (xifratge) Configuració No necessita configuració Si necessita configuració

Consum Variable depenent del tipus 15 mA/lectura aprox. Taula 1. Comparació entre NFC i Bluetooth

9. Tipus de tags NFC

Els tags NFC són dispositius passius que s’utilitzen per emmagatzemar dades, ja sigui la URL d’una pàgina web d’interès, un smartposter, etc. Com es podrà veure més endavant, els tags presenten una limitació en quant a la memòria. Aquests tags passius són les encarregats d’interactuar amb els dispositius NFC actius (normalment els lectors de tags NFC).

Actualment la NFC Forum ha establert una classificació en la qual es poden distingir 4 tipus de tags diferents:

� Tag tipus 1: Aquest tags segueix l’estàndard 14443A. Aquestes tags poden ser llegides, escrites i reescrites. Normalment disposen d’una memòria de 96 bytes, memòria més que suficient per emmagatzemar la URL d’alguna pàgina web, encara que aquesta pot ser de fins als 2 Kbyte. La velocitat de transmissió de dades es de 106 Kbit/s. Degut al baix cost i la seva simplicitat, és una tag molt utilitzat.

� Tag tipus 2: Aquest tag també segueix l’estàndard 14443A. Aquests tags, quant a capacitats de lectura i escriptura, tenen les mateixes propietats que les de tipus 1. La memòria d’aquestes és una mica més petita, de 48 bytes però també es ampliable a 2 Kbyte. La velocitat de transmissió també és de 106 Kbit/s.

� Tag tipus 3: Aquest tipus de tag es basa amb el protocol Nipó JIS, més conegut com a FeliCa. Tenen les mateixes capacitats que les anteriors quant a lectura i escriptura però aquestes tenen una memòria d’1 Mbyte. La velocitat de transmissió de les dades és de 212 Kbit/s. A causa de l’encariment del tag només s’utilitzen per a aplicacions més complexes.

Universitat Rovira i Virgili

Pàg. 25

� Tag tipus 4: aquestes tags són compatibles amb els estàndards 14443A i B. Disposen d’una memòria de 32 Kbytes i la velocitat de transmissió va entre 106 i 424 kbit/s.

Tipus

Estàndard

Capacitat memòria

Velocitat de transmissió

Preu

Control anticol·lisió

Tipus 1 14443A 96 bytes. Ampliable fins

a 2 Kbytes

106 Kbit/s Baix No

Tipus 2

14443A

48 bytes. Ampliable fins

a 2 Kbytes

106 Kbit/s

Baix

Si

Tipus 3 FeliCa 1 Mbyte 212 Kbit/s Alt Si Tipus 4 14443A/14443B 32 Kbytes 106 i 424 kbit/s Mitjà/Alt Si

Taula 2. Comparació entre els diferents tipus de tag [11]

NFC Forum: És l’associació per excel·lència de la tecnologia NFC. Va ser creada per Philips, Sony i ara també Nokia amb el propòsit d’avançar amb el desenvolupament de la tecnologia NFC. Aquesta associació bàsicament es dedica a desenvolupar estàndards basats amb especificacions de comunicació del camp proper i també fomenten l’ús d’aquesta tecnologia.

10. Xip PN532

El xip NXP PN532 és el xip integrat de lector NFC més popular que s’utilitza per a la comunicació contactless. Aquest està incrustat en quasi tots els smartphones que disposen d’aquesta tecnologia. Aquest mòdul inclou un microcontrolador basat en un nucli 80C51 amb 40 Kbytes de memòria ROM i 1 Kbyte de memòria RAM.

A continuació s’adjunta informació addicional sobre el xip PN532:

https://cdn-shop.adafruit.com/datasheets/pn532ds.pdf

El xip PN532 suporta diferents modes d’operació:

� Mode lectura/escriptura suportat per l’estàndard ISO 14443A/MIFARE i 14443F (FeliCa).

� Mode de lectura/escriptura suportat només per l’estàndard 14443B.

Utilitza UART per a qualsevol velocitat de transmissió de dades i també és compatible amb els protocols I2C i SPI.

Universitat Rovira i Virgili

Pàg. 26

Especificacions tècniques

- Xipset NXP PN532 NFC/RFID

- Distància màxima lectura/escriptura: 10-15 cm

- Suporta interfícies sèrie: I2C, SPI i UART

- Pot ser utilitzat per gran varietat de tags contactless de 13,56 MHz

- Compatible amb els estàndards ISO 14443A, ISO 14443B i ISO 14443F

- Tensió d’operació: 3, 3-5 V

10.1.Seqüència de missatges en la transmissió de dades

Figura 10. Procés de l’intercanvi de dades

1. El host inicia la comunicació cap al xip PN532.

2. Si tot funciona correctament, el xip respon amb un senyal de conformitat.

3. El xip PN532 executa la tramesa.

4. EL PN532 envia la resposta.

5. De manera opcional l’altre dispositiu pot enviar un senyal de conformitat al xip PN532.

A continuació es mostra una fotografia de la shield PN532 NFC amb una anella de color vermell per a situar el xip en la shield.

Universitat Rovira i Virgili

Pàg. 27

Figura 11.Localització del xip PN532 en la Shield NFC PN532

11. Antena típica per a la comunicació NFC

A continuació s'explica com determinar els valors i paràmetres de l'antena per tal que es pugui realitzar la comunicació. Aquesta té una arquitectura del tipus espiral per augmentar la inductància sense augmentar considerablement l’àrea de l’antena [24].

Es defineix segons les següents característiques:

� Nombre d’espires � Secció de la pista de coure � Amplada i distància entre espires

.

Figura 12. Exemple d’ antena estàndard per a la comunicació NFC

Aquests xips estan compostos per parts metàl·liques, com ara la bateria, el PCB i els components electrònics, fet que fa que s’hagi de tenir molta cura a l’hora d’aïllar bé l’antena de la resta.

Si es col·loca un metall pròxim a l'antena NFC el camp magnètic genera alguns corrents en el metall que s’anomenen corrents de Forcault. Aquests corrents creen un camp magnètic en la direcció oposada, el qual fa que l'antena és desintonitzi a causa del minvament del factor de la inductància. Per tant, és importantíssim protegir-la amb

Universitat Rovira i Virgili

Pàg. 28

ferrita per a un correcte comportament d'aquesta en cas d’utilitzar-lo en entorns metàl·lics.

Les figures següents mostren aquest fenomen basat en el camp magnètic radiat per l'antena.

Per tal de simplificar els resultats, l'antena utilitzada és de tipus circular amb les següents característiques:

� Només té una espira. � Té 1 mm de secció. � Té un radi de 7,5 cm.

La part de la dreta mostra la distribució del camp electromagnètic, i la part de l'esquerra mostra la magnitud de la intensitat del camp magnètic (H) sobre una distància (d).

La intensitat de camp mínima (Hmin) és de 1,5 [A/m], definida per la norma ISO / IEC 14443.

Figura 13. Intensitat i distribució del camp magnètic en condicions normals

En aquesta figura es pot observar clarament l'efecte que produeix un metall pròxim a l'antena.

Universitat Rovira i Virgili

Pàg. 29

Figura 14. Intensitat i distribució del camp magnètic amb un metall pròxim a l’antena

Per últim, s'observa que si es protegeix l'antena amb ferrita, el camp magnètic augmenta.

Figura 15. Intensitat i distribució del camp magnètic amb protecció amb ferrita

A continuació es mostrarà com es modela l’antena a partir dels valors dels components passius com ara les bobines o capacitors.

Figura 16. Circuit d’una antena típica NFC

Universitat Rovira i Virgili

Pàg. 30

Els valors recomanats per a la bobina, condensador i resistència són:

La = 0.3...3 μH

Ca = 3...30 pF

Ra = 0.1...2 Ω

Fra (freqüència de ressonància de l’antena) = 25 MHz o superior.

La capacitància paràsita de l’antena Ca s’ha de mantenir baixa per tal d’aconseguir una freqüència de ressonància superior als 25 MHz. La relació que uneix els dos paràmetres són:

(8)

On:

Ca és el valor que pren el condensador [F].

La és el valor que pren la bobina [H].

Fra és la freqüència de ressonància [Hz].

Un dels paràmetres més importants en antenes és el factor de qualitat que és un paràmetre que mesura la relació entre l'energia reactiva que emmagatzema i l'energia dissipada durant un cicle complet del senyal. Un valor alt de Qa indica una taxa de baixa pèrdua d'energia en relació a l'energia emmagatzemada pel ressonador.

(9)

On:

ω = 2·π·f. On f és la freqüència [Hz].

La és el valor que pren la bobina [H].

Ra és el valor que pren la resistència [Ω].

Finalment s’implementa una xarxa d’adaptació per tal d’adaptar la impedància del xip. Aquesta bàsicament es defineix per tenir una capacitat en paral·lel en el lector (o en el tag) i s’ajusta la ressonància a 13.56 MHz.

Universitat Rovira i Virgili

Pàg. 31

12. Protocols de comunicació I2C i SPI

12.1. I2C

A continuació es descriuran els busos I2C i SPI. Aquests són dos estàndards que faciliten la comunicació entre microcontroladors.

El bus I2C només requereix de dues línies de senyal, juntament amb el comú o massa. Aquest va ser dissenyat per Philips i permet l’intercanvi de dades a una velocitat de 100Kbits/s. Aquestes línies necessiten de resistències de pullup cap a l’alimentació. Aquetes resistències sovint es situen al costat del màster.

La metodologia de comunicació de dades del bus I2C és sèrie i síncrona. Un dels senyals del bus marca el temps clock i l’altra s’utilitza per a l’intercanvi de dades [7].

Els senyals que s’utilitzen són els següents:

� SCL (System Clock): és la línia de polsos de rellotge. � SDA (System Data): és la línia per la qual s’intercanvien les dades. � GND (Massa): Comú a tots els dispositius connectats al bus.

En aquest punt, és important remarcar l’existència de dos tipus de dispositius, els mestres i els esclaus. Només els mestres podran ser els encarregats d’iniciar la comunicació.

Figura 17. Seqüencia d’inici amb el protocol I2C

Es considera que el bus està lliure quan els dos senyals (SCL i SDA) estan en un estat lògic alt. Quan el dispositiu mestre posa en estat baix el senyal de dades (SDA) i manté el senyal de rellotge (SCL) alt, s’inicia la comunicació.

El primer byte que envia el dispositiu mestre consta de 7 bits (A0-A6), aquests són l’adreça del dispositiu amb el qual es vol connectar, l’octau bit correspon al tipus d’operació que es vol realitzar (escriptura o lectura). Si l’adreça que ha enviat el node mestre correspon amb l’adreça d’algun node esclau que està connectat al bus, aquest envia un bit de confirmació (ACK) acceptant la sol·licitud.

Universitat Rovira i Virgili

Pàg. 32

La trama de dades es presenta de la següent manera:

Figura 18.Exemple d’una trama de dades amb el protocol I2C

Si el bit de lectura/escriptura està en un nivell lògic baix voldrà dir que es desitja escriure, en el cas contrari indicarà que es desitja llegir en lloc d’escriure. A continuació es detallen els dos casos:

Cas 1. Lectura El dispositiu mestre genera polsos de rellotge per a que el dispositiu esclau pugui enviar-li les dades. Després, de cada byte rebut el dispositiu mestre genera un pols de confirmació. El dispositiu mestre pot deixar lliure el bus generant una condició de parada.

Figura 19. Estat de condició de parada

Cas 2. Escriptura El dispositiu mestre envia dades al dispositiu esclau. Continuarà enviant dades mentre continuï rebent senyals de reconeixement per part del node esclau. El procés finalitza quan s’han transmès totes les dades.

12.2. SPI

A l’igual que I2C és un protocol síncron, però ara aquest és full-duplex, és a dir, és capaç de rebre i enviar informació al mateix temps. A més, la velocitat de transmissió del bus SPI és major que amb I2C. Per exemple, algunes shieds NFC l’utiltizen quan s’ha de llegir tags NFC a 400 kpbps. De la mateixa manera que en el cas del I2C, hi ha dos tipus de dispositius, el màster i l’esclau.

Quant a senyals, aquest protocol és més complex que l’anterior. A continuació es defineixen els senyals que s’utilitzen:

Universitat Rovira i Virgili

Pàg. 33

� MOSI (Master Out Slave In): és la linia de dades encarregada de transmetre els bits del dispositiu mestre fins a l’esclau.

� MISO (Master In Slave Out): és la línia de dades encarregada de transmetre els bits del dispositiu esclau fins al mestre.

� CLK (Clock): senyal de rellotge que envia el dispositiu mestre per tal de sincronitzar els dispositius.

� SS (Slave Select): és la línia encarregada de seleccionar i donar permisos o habilitar un dispositiu esclau.

Figura 20. Esquema entre el dispositiu mestre i l’esclau

Existeixen quatre modes per enviar informació que depenen de dos paràmetres basats en el senyal de rellotge. El primer és la polaritat; i el segon, la fase.

� Mode 0 CPOL=0 i CPHA=0. Mode en el qual l’estat del rellotge roman en un estat lògic baix i la informació s’envia en cada transmissió d’estat lògic baix-alt.

� Mode 1 CPOL=0 i CPHA=1. Mode en el qual l’estat del rellotge roman en un estat lògic baix i la informació s’envia en cada transmissió d’estat lògic alt-baix.

� Mode 2 CPOL=1 i CPHA=0. Mode en el qual l’estat del rellotge roman en un estat lògic alt i la informació s’envia en cada transmició d’estat lògic baix-alt.

� Mode 3 CPOL=1 i CPHA=1. Mode en el qual l’estat del rellotge roman en un estat lògic alt i la informació s’envia en cada transmició d’estat lògic alt-baix.

A continuació es mostra un esquema amb la interconnexió entre el node mestre i els esclaus.

Universitat Rovira i Virgili

Pàg. 34

Figura 21. Connexió del dispositiu mestre amb sèrie amb el protocol SPI

Aquest protocol també permet la connexió de dispositius en paral·lel, i té el següent format.

Figura 22. Connexió del dispositiu mestre amb paral·lel amb el protocol SPI

Universitat Rovira i Virgili

Pàg. 35

13. Seguretat en la tecnologia NFC Encara que costi de creure, la tecnologia NFC té problemes de seguretat inerents al seu mode de funcionament. Aquests problemes són: l’escolta secreta (Evase droping), l’alteració de la informació transmesa, etc. [9] [21]

1.Evasedroping: En aquest cas, la seguretat radica en què per a poder “escoltar” la conversació entre un dispositiu NFC i un lector teòricament s’ha d’estar molt proper per a poder detectar les dades que es transmeten en la comunicació. Aquesta distància mínima pot estendre’s fins a uns 25 cm utilitzant antenes de major dimensió i guany.

Concretament, s’ha demostrat que és possible detectar la comunicació fins a una distància de 100 metres en tags compatibles amb l’ ISO/IEC 14443A.

2. Modificació de la informació: Donat que la informació es transmet via sense fils, és teòricament possible capturar i modificar la informació que s’ està transmetent.

Denegacions de servei. L’atacant pot ser capaç de generar col·lisions a la comunicació o donar respostes errònies durant la comunicació. D’aquesta manera el lector quedarà emparellat a un tag que no existeix. Conseqüentment el sistema es quedarà inútil.

Aquest atac es pot realitzar transmetent ones electromagnètiques a freqüències adequades i en el moment adequat. Modificació de la informació. Aquest atac és possible però depèn de com estan codificades les dades, ja que la descodificació del senyal és diferent si s’ha utilitzat una modulació ASK 100% o 10%. A més, tenint en compte que el contingut del paquet no es pot canviar per qualsevol altre contingut, sinó que segueix un estàndard, serà complicat realitzar aquest atac, però no impossible.

Inserció d’informació. Es poden generar i enviar paquets erronis per tal d’alterar el funcionament normal de la comunicació.

3.Man-In-the-middle: Aquest atac consisteix en posar-se al mig de la comunicació sense modificar cap dada ni cap valor. Simplement es limita a escoltar la comunicació, només intervé els paquets i els envia a la corresponent destinació sense que l’altre extrem se n’adoni de què hi ha algú enmig de la comunicació.

13.1. Solucions i recomanacions

Corrupció de dades i denegació de servei. Com que els dispositius NFC poden mesurar la quantitat de camp magnètic que és capturat per l’antena, poden detectar un augment d’aquest en el moment en què està rebent una quantitat de camp electromagnètic més elevada.

Inserció de dades. Hi ha dues possibles solucions o millores per combatre l’atac fàcilment:

Universitat Rovira i Virgili

Pàg. 36

1. Configurar el sistema per tal de què hi hagi el mínim retard entre la petició i la resposta. Com més petit sigui aquest temps, més complicat li serà a l’atacant intervenir les dades.

2. La segona millora, a l’igual que amb el cas de Evasedroping és la de realitzar la comunicació a través d’un canal segur.

13.2. Canal segur per NFC Existeix la possibilitat d’establir un canal segur entre dos dispositius NFC; aquesta és la millor solució per tal d’evitar que les dades siguin intervingudes per algun atacant.

Usant un protocol com per exemple Diffie-Hellmann basats en corbes el·líptiques RSA es podria crear una estructura solida per tal de què sigui complicada la usurpació de dades.

També es podria establir un sistema de claus que utilitzés 3DES o AES entre l’emissor i el receptor per tal de proporcionar seguretat en la comunicació.

Universitat Rovira i Virgili

Pàg. 37

Capítol 3. Plataforma Arduino

14. Què és Arduino

Arduino és una plataforma hardware de codi obert, basada en una senzilla placa amb diferents entrades i sortides analògiques i digitals basada en el llenguatge de programació Processing (similar al C o al C++). Arduino simplifica molt el procés de treball amb microcontroladors, ja que la placa ja ve preensamblada de fàbrica. Les possibilitats per a realitzar projectes amb aquesta plataforma tenen com a límit la imaginació de qui l’usa, ja que existeixen multitud de mòduls per poder ser acoblats a la placa.

15. Per què s’ha utilitzat la plataforma Arduino

Actualment s’està usant molt Arduino per diferents motius:

� És econòmic: Les plaques Arduino no són cares. � Multi plataforma: El compilador (IDE) per Arduino pot ser executat des de

Windows, Macintosh i Linux. � Entorn de programació simple i clar: L’entorn de programació és relativament

fàcil d’usar per a usuaris amb coneixements bàsics de programació. � Codi obert: El compilador (IDE) d’Arduino pot ser descarregat de forma gratuïta

de la pàgina web oficial. � Disponibilitat: Cada cop és més accessible per a la gent en tendes especialitzades

o en pàgines web. � Flexibilitat: Totes les plaques són petites i compactes i compten amb un gran

rang de possibilitats, des de controlar un LED fins a controlar el reg automàtic d’un camp de futbol.

� Gran quantitat de documentació: Es disposa de gran quantitat d’informació sobre el seu funcionament.

Universitat Rovira i Virgili

Pàg. 38

16. Tipus Arduino i shields

En l’actualitat hi ha moltíssims tipus de mòduls Arduino. En funció de la complexitat del projecte s’haurà d’escollir un tipus o un altre. En aquest cas s’ha escollit l’Arduino UNO, ja que les prestacions que té són més que suficients per poder desenvolupar el projecte que es proposa, sent a més el més econòmic i estès.

A continuació es mostren alguns dels models que hi ha actualment al mercat:

Nom

Processador

Voltatge (V)

Memòria

Entrades i sortides I/O

Processador

Freqüència (MHz)

Flash (KB)

EEPROM (KB)

SRAM (KB)

I/O Digitals (pins)

I/O Digitals amb PWR (pins)

Entrades analògiques (pins)

ArduinoUn

o

ATmega32

8P

16

5

32

1

2

14

6

6

ArduinoYú

n

ATmega32U4,Atheros AR9331

16/400

5

32/16

1/0

2.5/64

14

6

12

Arduino Leonardo

ATmega32U4

16 5 32 1 2.5 20 7 12

ArduinoDue

ATSAM3X8E

84 3.3 512 0 98 54 12 12

Arduino Zero

ATSAMD21G18A

48 3.3 256 16 32 14 12 6

Arduino Mega 2560

ATmega2560

16

5

256

4

8

54

15

16

Arduino Nano

ATmega328

16 5 46/32 0.5/1 1/2 14 6 6

Arduino Pro

ATmega168 /

ATmega328

16

5/3.3

16/32

0.5/1

1/2

14

6

6

Arduino Pro Mini

ATmega328

8 (3.3V)/16

(5V)

3.3/5

32

1

2

14

6

6

Taula 3. Llistat dels mòduls Arduino més utilitzats [1]

També hi ha dispositius compatibles amb Arduino però que no són de la mateixa marca. No obstant son de la mateixa família lògica ATmega.

Universitat Rovira i Virgili

Pàg. 39

Nom Processador Linduino One ATmega328

Bluno ATmega328

SainSmart UNO ATmega328

SainSmart Mega2560 ATmega2560

Freaduino MEGA2560 ATmega2560

SainSmart UNO R3 ATmega328-AU

ChibiDuino2 ATmega328

Illuminato Genesis ATmega644

InduinoX ATmega168/ATmega328/ATmega8

Taula 4.Llistat de dispositius compatibles amb IDE Arduino [1]

A continuació s’enumeraran alguns dels mòduls o shields Arduino. Aquests mòduls són els que permeten donar-li més funcionalitats als projectes, dotant a l’Arduino de més tecnologia per tal de poder realitzar funcionalitats específiques. Més o menys com en el cas anterior es disposa de moltíssims fabricants com ara Libelium, 4D Systems o SparkFun. Se centrarà l’interès en les shields del fabricant Adafruit, i concretament en dues d’elles.

Algunes de les shields més utilitzades del fabricant Adafruit són les següents:

� TFT Touch Shield: Es podran visualitzar imatges o gràfics, també es podrà utilitzar com una pantalla tàctil.

� Ethernet Shield: Permet connectar l’Arduino a internet via cable RJ45. � GPS Shield: Situa geogràficament el lloc on és. � Logger Shield: Serveix per gestionar l’emmagatzemament de dades, com per

exemple dades del medi ambient. � Wave Shield: Permet la reproducció de cançons prèviament emmagatzemades a

la targeta SD.

Universitat Rovira i Virgili

Pàg. 40

17. Explicació al detall de les shields utilitzades en l’aplicació

Per poder realitzar aquest projecte s’han utilitzat dos mòduls en concret: El mòdul NFC i el mòdul Real Time Clock (RTC). Cada mòdul té la seva funcionalitat particular. Els mòduls són totalment independents l’un de l’altre.

Cal recordar que l’objectiu principal d’aquest projecte és el de la creació d’una aplicació que sigui capaç de gestionar i emmagatzemar dades provinents de l’exterior. Aquestes dades bàsicament són per una banda l’identificador del tag; i per l’altra, l’hora i data del moment en què el tag és passat pel sistema.

L’identificador és un conjunt de bits de mida variable que tenen gravats els tags NFC, aquest identificador és únic per a cada tag, es podria fer el símil amb el DNI o amb la matrícula d’una automòbil.

L’hora i la data s’obtenen del mòdul RTC com un conjunt de bits de mida fixa. Com és obvi, aquesta trama també anirà variant però ara en funció del temps.

Per tant, per a la realització d’aquest projecte hi ha tres parts implicades. Primer de tot, el mòdul Arduino UNO que serà l’eina central del projecte. Les altres dues entitats implicades són el mòdul NFC PN532 i el mòdul RTC (Real Time Clock). Els dos mòduls són del fabricant Adafruit.

Arduino UNO L’Arduino UNO està basat en el microcontrolador ATmega328. Disposa de connexió USB (aquesta és la que va connectada al PC).

Figura 23.Arduino UNO

Aspectes tècnics: -Microcontrolador: ATmega328P

-Voltatge de funcionament: 5 V

-Voltatge recomanat a les entrades: 7-12 V

Universitat Rovira i Virgili

Pàg. 41

-Voltatge límit a les entrades: 6-20 V

-Entrades/Sortides (digitals): 14

-Entrades/Sortides digitals PWM: 6

-Pins analògics: 6

-Memòria flash: 32 KB (ATmega328P) dels quals 0,5 KB són usats pel IDE Arduino

-SRAM: 2 KB (ATmega328P)

-EEPROM: 1 KB (ATmega328P)

-Velocitat de rellotge (freqüència): 16 MHz

-Dimensions: 68,6 x 53,4 mm

-Pes: 25 g A més de totes les entrades i sortides digitals i analògiques l’Arduino UNO disposa de pins addicionals.

Sèrie: 0 (RX) y 1 (TX). S’utilitza per rebre (RX) i transmetre dades en sèrie (TX).

-SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Aquests pins suporten la comunicació SPI, utilitzant la corresponent llibreria.

Per tal de poder programar el codi s’utilitza un software Arduino. Aquest programari pot ser descarregat de forma gratuïta des del portal web oficial:

https://www.arduino.cc/en/Main/Software

17.1. NFC PN532

El mòdul NFC PN532 és un dels mòduls utilitzats en l’aplicació. Aquest mòdul serà l’encarregat de poder llegir els tags NFC quan es passin per damunt de l’antena.

Aquest mòdul és el que permet interactuar amb els tags NFC. Pel fet que es pot fer servir per llegir i escriure (en el nostre cas per llegir l’identificador del tag) es pot fer servir per infinitat d’aplicacions.

Figura 24. Shield NFC PN532

Universitat Rovira i Virgili

Pàg. 42

Característiques del mòdul NFC PN532

� Usa el xip PN532. � Alimentació: 5 V � L’abast de l’antena és d’uns 10 cm aprox. � Nombre d’espires de l’antena: 4 � Usa les dues interfícies I2C i SPI (usa I2C per defecte). � Compatible amb la família UNO, Mega R3, Diecimilia i Duemilanove. � Compatible amb tots els tipus de tag, de l’1 fins al 4.

17.2. RTC DS1307

El mòdul RTC DS1307 és el real time clock més popular de tots. Bàsicament aquest mòdul és un rellotge. Disposa d’una petita bateria que li permet estar sempre a l’hora actual. D’aquesta manera cada cop que passem el tag per damunt del lector podrem obtenir l’hora real en què es passa per sobre del lector.

Aquest xip treballa a una tensió de 5 V i la seva bateria té una autonomia de fins a 5 anys.

Figura 25.Shield RTC DS1307.

El RTC DS1307 només disposa de 5 pins:

� 5V: S’usa per dotar d’alimentació el mòdul RTC. � GND: Pin de massa. � SCL: S’usa en I2C per tal de poder comunicar el mòdul RTC amb l’ Arduino

UNO. � SDA: S’usa en I2C per tal de poder comunicar el mòdul RTC amb l’ Arduino

UNO. � SQW: És opcional (no s’usa).

Universitat Rovira i Virgili

Pàg. 43

A continuació és mostra el llistat de components del mòdul RTC1307:

Fotografia Nom Descripció Quantitat

IC2

Xip Real Time Clock DS1307

1

Q1

32.768 KHz,12.5 pF. Rellotge de

cristall genèric.

1

R1,R2

Resistències. 0.25 W +-5%

2

C1

Capacitor 0.1 uF

1

5 pins (1x5)

Pins mascle

1

Bateria

12 mm 3 V.

Bateria de liti ‘Pila de rellotge’

1

PCB

Circuit integrat Adafruit

1

Taula 5. Llistat amb tots els components del mòdul RTC DS1307

Universitat Rovira i Virgili

Pàg. 44

Capítol 4. Software Arduino i Matlab

18. Breu introducció de l'aplicació En aquest treball de fi de grau s’ha volgut dissenyar un sistema que s’encarregui d’interactuar amb tags NFC. Per això s’ha hagut d’implementar un software Arduino per tal d’interactuar amb tags i un software Matlab per tal de poder tractar les dades obtingudes del programari Arduino. A més, la utilització de programari Matlab ha servit per crear una interfície gràfica per tal de poder manipular l’aplicació i que sigui visualment agradable i intuïtiva per l’usuari.

Ara per ara el programa llegeix targes ISO14443 o MiFare. Estrictament aquestes targes no son compatibles amb l’estàndard NFC, però es poden formatar abans i aleshores ja poden ser utilitzades com a tags NFC.

18.1. Funcionament de l’aplicació Des del punt de vista de l’usuari, l’aplicació és molt senzilla d’utilitzar. Primerament s’haurà de carregar el programari Arduino (iso14443a_uid) dintre de l’Arduino. Un cop realitzada aquesta acció l’usuari només haurà d’executar el programari Matlab (urvnfc) per tal de poder visualitzar la interfície gràfica principal de l’aplicació.

I quan s’hagi arribat a aquest punt, l’usuari només haurà de fer clic als polsadors que apareixen a la pantalla i seguir les instruccions per poder interactuar amb l’aplicació.

Aquestes instruccions són del tipus:

� Passa la tarja.

� Introdueix el teu nom.

� Introdueix el teu número de telèfon.

� Altres...

I rebre informació procedent de l’aplicació, com ara:

� Tarja vàlida

� Tarja no vàlida

� No hi ha tarja

� Altres...

Universitat Rovira i Virgili

Pàg. 45

18.2. Arquitectura de l’aplicació

En el següent esquema de la (Figura 27) es pot observar d’es d’un punt de vista general quina és l’arquitectura de l’aplicació.

Per poder gaudir de l’aplicació és del tot necessari tenir un PC portàtil o de sobretaula amb els programes Arduino i Matlab instal·lats. D’es del PC o ordinador es connectarà l’Arduino UNO amb el cable USB-Port Sèrie.

Només fa falta l’acoblament dels dos mòduls a l’Arduino UNO. A continuació es mostren unes imatges per tal de veure al detall quins són els pins involucrats en la connexió.

Figura 26. Arquitectura general de l’aplicació

18.2.1. Connexions Mòdul Arduino UNO-NFC PN532

Connectar el mòdul NFC PN532 és molt senzill, només fa falta soldar els pins (fletxa groga) al mòdul NFC (fletxes vermelles) i després acoblar-la directament a l’Arduino UNO.

Figura 27. Muntatge dels pins a la Shield NFC PN532

Universitat Rovira i Virgili

Pàg. 46

18.2.2. Connexions Mòdul Arduino UNO-RTC DS1807

La connexió d’aquest mòdul és similar a l’anterior però ara només intervenen quatre pins.

Els pins que intervenen són:

� GND (massa) � 5 V (alimentació) � SDA (System Data) � SCL (System Clock)

Figura 28.Pins Shield DS1307

Aquests quatre pins són els que s’han de connectar al mòdul NFC PN532 de la següent manera:

Figura 29. Connexions mòdul Arduino amb mòdul RTC DS1307

Universitat Rovira i Virgili

Pàg. 47

Pins RTC Pins Arduino

SCL SCL SDA SDA Vcc 5 V

GND (massa) GND (massa) Taula 6. Pins de les connexions

19. Codi Arduino

19.1. Estructura d’un codi Arduino

L’estructura bàsica de codi Arduino és bastant senzilla i està dividida en dues grans parts: el setup i el loop.

El Setup() constitueix la preparació del programa; per exemple, en aquest cas es configuren i es preparen els dos mòduls que s’utilitzaran posteriorment. Aquesta part només s’executa un sol cop i s’utilitza per a configurar el pinMode. S’inicialitza el pin 13 com a sortida.

La funció loop() inclou el codi per ser executat de forma contínua. Aquí és on obté el valor de l’identificador juntament amb el de l’hora i es forma una trama de mida fixa que serà enviada pel port sèrie. Aquesta trama és la que posteriorment es tractarà des del Matlab.

L’estructura del codi Arduino presenta l’arquitectura següent:

Figura 30. Arquitectura del Codi Arduino

Declaració de les llibreries que s’utilitzen en el codi.

Setup() Configuracions/inicialitzacions de cada mòdul. Només s’executa un

cop.

Loop(). Cada cop que es passa el tag s’obté el valor del id. i l’hora. S’executa tants cops com

vegades es passa el tag.

Universitat Rovira i Virgili

Pàg. 48

19.2. Funcionalitat del programari Arduino

La funcionalitat principal d’Arduino és la d’obtenir els valors dels identificadors dels tags juntament amb el del valor de l’hora. Per obtenir els valors dels identificadors s’utilitza el mòdul NFC PN532. I per obtenir el valor del temps s’utilitza el mòdul RTC DS1307 (Real Time clock). Un cop es tenen aquests dos valors es crea una trama de dades que s’envia pel port sèrie cap al PC.

19.3. Funcions i mètodes

A continuació es mostrarà i s’explicarà el codi Arduino més rellevant per a la realització de l’aplicació.

Tal com es mostra a la Figura 31 abans de res s’han de declarar les llibreries que es faran servir posteriorment. Aquestes llibreries són les que permeten utilitzar funcions i mètodes que s’empraran; per exemple, per obtenir l’identificador del tag, configurar el tag en mode passiu, etc.

Figura 31.Libreries codi Arduino

El següent gran bloc de codi és el del setup(). En aquest bloc tal com s’ha dit anteriorment, s’inicialitzen i/o configuren els dos mòduls que s’utilitzaran posteriorment per obtenir l’identificador i la data.

Universitat Rovira i Virgili

Pàg. 49

Figura 32. Definició mètodes del Codi Arduino

A continuació es passarà a explicar breument el significat del codi de la Figura 32. Primer que tot es configura el pin 13 com a sortida. Aquest LED pampallugarà quan es passi una targeta pel lector, d’aquesta manera l’usuari podrà saber si la lectura s’ha realitzat amb èxit o no.

Seguidament s’estableix la velocitat de comunicació amb la comanda nfc.begin(). Després s’intenta obtenir el firmware del mòdul NFC PN532. En el cas que no es pugui obtenir voldrà dir que s’ha produït algun error, pot ser que estigui trencat o que no estigui ben acoblat a l’Arduino UNO.

Contràriament, s’estableix un número màxim de renitents per tal de poder llegir el tag, ja que el sistema no es pot permetre estar llegint indefinidament. Això es possible amb el mètode: nfc.setPassiveActivationRetries(0xFF).Tot seguit es configura el mòdul NFC PN532 per tal de llegir tags amb el mode passiu.

A continuació es configura el mòdul RTC; aquest de manera més senzilla. Simplement el mòdul es fica amb mode actiu amb la data real/actual. Encara que l’aplicació no estigui en mode ‘on’ el mòdul RTC pot estar actiu durant cinc anys. D’aquesta manera pot conservar l’hora en temps real.

Per últim es mostra el codi que està dintre del la part loop(). Aquesta part tal com s’ha explicat abans es va executant de forma reiterativa.

A l’inici del loop es declaren les variables que es faran servir.

Primer, es declara uidLength que serà la mida de la taula. Com és obvi la mida de la taula es més gran que l’identificador del tag que s’està utilitzant. S’han deixat bytes de sobra per a que l’aplicació sigui una mica més funcional. D’aquesta manera també pot funcionar amb tags que tinguin mides d’identificadors superiors. L’altra variable important és la taula de mida uidLength, aquí és on es guardarà l’identificador del tag abans de ser enviat juntament amb la data pel port sèrie.

Universitat Rovira i Virgili

Pàg. 50

Figura 33. Definició de les variables i taula

Amb la comanda Serial.available s’obté el nombre de bytes disponibles en el buffer del PC per poder començar a llegir. Tot seguit s’obté l’hora actual real amb la comanda DateTimenow = rtc.now(). A continuació es llegeix l’identificador del tag. Si s’ha realitzat amb èxit, el boolean succes passa a tenir el valor lògic de vertader. En aquest cas es fa pampallugar el pin número 13 per tal de fer saber a l’usuari que ja s’ha realitzat la lectura i que per tant ja la pot retirar del damunt.

Amb el primer bucle es guarda a la taula uid el id obtingut. Amb el segon bucle el que és fa es omplir la trama de “brossa” per tal de no tenir problemes amb la mida d’aquesta.

Figura 34. Obtenció del temps real i funcionament del LED (Light-Emitting Diode)

Finalment es fa un tractament de l’hora. Aquest tractament consisteix en obtenir sempre la mateixa longitud en la trama de l’hora, ja que no és el mateix que siguin les 3 de la matinada que siguin les 10 del matí pel simple fet que en el primer cas només s’utilitza un dígit i en el segon cas se n’utilitzen dos. El mateix passa amb les hores, minuts i segons. Aquest fet feia que la mida de la trama de l’hora no fos sempre la mateixa. Tal com està implementat ara s’obté una trama de mida fixa per a la data i l’hora.

Universitat Rovira i Virgili

Pàg. 51

Figura 35. Imprimir per pantalla el dia actual

Universitat Rovira i Virgili

Pàg. 52

20. Codi Matlab

20.1. Funcionalitat del programari Matlab

La funcionalitat principal del programari Matlab és la de visualitzar les dades obtingudes procedents de l’Arduino en un entorn agradable per a l’usuari i molt intuïtiu.

A més a més, amb el codi Matlab es podran emmagatzemar les dades, com ara l’identificador, en taules per al posterior tractament d’aquestes.

20.2.Codi Matlab

A continuació, en la Figura 36 es mostra l’esquelet principal que s’utilitza per tal de poder rebre les dades des de l’Arduino per al posterior tractament i visualització per l’interfície gràfica.

Aquesta part de codi és el cos principal de l’aplicació, a partir d’aquest codi font s’han anat realitzat diferents variacions per tal de complir les funcionalitats que es desitgen.

Primerament es realitzen les corresponents inicialitzacions del serial port per tal de poder rebre les dades correctament, a continuació es reben les dades i es passa a realitzar el corresponent tractament. En aquest cas s’obté l’identificador del tag i es guarda a la variable id. Finalment es mostra per pantalla un avís amb el resultat de l’operació.

Universitat Rovira i Virgili

Pàg. 53

Figura 36. Codi Matlab tipus

20.3. Interfícies gràfiques

A continuació es mostra la interfície principal de l’aplicació. Actualment l’aplicació disposa de dues funcionalitats diferents.

El botó New Record situat a la part superior esquerra s’utilitza per donar permisos a diferents targes NFC creant un perfil d’usuari, és a dir, prement el botó i posteriorment passant la tarja s’aconsegueix que la tarja sigui vàlida per a la utilització de l’aplicació. Del cas contrari sortiria un error per pantalla avisant a l’usuari que aquesta tarja no és vàlida. Al mateix moment, l’identificador de la tarja apareixerà a la pantalla de l’esquerra.

Un cop s’ha realitzat aquest pas ja es pot prémer al botó StartReading que contínuament estarà actiu intentant detectar les targes. Si les targes que detecta son vàlides, es mostra per la pantalla de la dreta l’hora quan s’ha passat la tarja, juntament amb l’identificador i la data.

Per parar el procés s’ha de prémer el botó Stop Reading que permetrà finalitzar el procés de forma correcta.

Aquests polsadors es poden veure en la Figura 37, que s’adjunta tot seguit.

Universitat Rovira i Virgili

Pàg. 54

21. Joc de probes A continuació es mostren captures de pantalla de l’aplicació on es prova la funcionalitat principal de l’aplicació.

Figura 37. Pantalla principal de l’aplicació

Un cop es mostra la pantalla principal al nostre PC premem el polsador New Record per gravar algunes targes al sistema. A continuació apareix la Figura 38, la Figura 39 i la Figura 40 successivament .

Figura 38. Primera pantalla per a l’enregistrament de les dades

Universitat Rovira i Virgili

Pàg. 55

Figura 39. Pantalla secundària per enregistrar el nom

Figura 40. Pantalla secundària per enregistrar el telèfon

S’introdueixen les dades de cada usuari i es repeteix l’operació tres cops amb targes diferents. I un cop s’han realitzat aquestes operacions, la pantalla del nostre PC queda de la següent manera, tal i com podem veure en la Figura 41:

Figura 41. Pantalla principal amb tres registres

Universitat Rovira i Virgili

Pàg. 56

A la Figura 42 es veuen clarament els tres identificadors de les targes. La Figura 42 és una ampliació de la Figura 41.

Figura 42. Ampliació dels tres registres

Un cop emmagatzemats els tres identificadors diferents es passa a comprovar si les noves targes que es passen pel lector Arduino son vàlides o no. En aquest cas es donaran per vàlides aquelles targes en que l’identificador apareix a la part esquerra de la Figura 41.

Primerament es passa una tarja que ja hem enregistrat anteriorment. Es comença el procés prement el polsador Start Reading. A continuació s’inicia el procés prement OK de la Figura 43.

Figura 43. Primera pantalla per comprovar la validesa de les dades

Universitat Rovira i Virgili

Pàg. 57

Com la tarja passada és una tarja vàlida apareix a la part dreta de la Figura 41. Aquí es pot observar l’identificador, l’hora i la data del moment en que s’ha passat la tarja pel damunt del lector Arduino.

Figura 44. Pantalla principal de l’aplicació

Si del cas contrari s’intenta passar una quarta tarja no vàlida apareix una pantalla advertint que la tarja passada no és vàlida. Conseqüentment, les dades d’aquesta quarta tarja no s’afegeixen a la pantalla Screen event. Aquest petit avís es pot veure a la Figura 45.

Figura 45. Pantalla principal de l’aplicació

Universitat Rovira i Virgili

Pàg. 58

22. Procés seguit per la implementació de l’aplicació

El desenvolupament del projecte es basa en cinc grans punts que es mostren a continuació:

� Provar i validar tot el material (Arduino UNO, shield NFC PN532, shield RTC DS1307) per separat, juntament amb les llibreries i exemples.

� Integració dels mòduls RTC DS1307 i NFC PN532 en un sol codi Arduino. � Implementació de codi Arduino per tal de satisfer les necessitats. � Desenvolupament del codi Matlab per tal de què les trames enviades des de

l’Arduino passin cap al PC via port sèrie i posterior tractament. � Implementació d’una Guide o interfície gràfica amb Matlab. � Verificació del bon funcionament de l’aplicació.

Seguidament es detalla tot el funcionament:

� Un cop adquirits tant l’Arduino UNO, el mòdul RTC DS1307 i el mòdul NFC PN532 s’havia de verificar que tot funcionés correctament. Per aquest motiu es van descarregar del portal web oficial d’Arduino unes llibreries. En aquest cas se’n van descarregar dues, una llibreria per al mòdul RTC DS1307 i l’altra per al mòdul NFC PN532. El contingut d’aquestes llibreries són codis d’exemple. En aquests codis apareixen algunes de les funcions les quals s’han fet servir posteriorment per a la realització del projecte final.

Un cop executats amb èxit aquests codis, ja es podia assegurar que el funcionament dels dos mòduls era correcte.

� Una vegada provats i validats els mòduls per separat, el següent pas era mirar d’integrar-los en un, és a dir, s’havien d’integrar:

Per una banda, físicament. Connectar els dos mòduls a la placa Arduino UNO i mirar que no hi hagués cap conflicte entre els pins i/o connexions de la placa. D’altra banda, s’havien de fusionar els dos arxius amb codis independents amb un de sol i que realitzés les especificacions demanades.

� Aquests es van haver de modificar per tal de respondre a les especificacions d’aquest projecte en concret. De moment i de forma provisional, les trames que generava l’Arduino a l’hora de passar el tag NFC es mostraven per un monitor sèrie que ja porta incorporat el software d’Arduino. D’aquesta manera ja es podia observar que el resultat obtingut per l’Arduino era el correcte.

� El següent pas va ser el de la implementació d’un codi Matlab el qual pugui rebre les trames del mòdul Arduino pel port sèrie del PC i mostrar-les pel software Matlab. D’aquesta manera tots els valors obtinguts de l’Arduino es visualitzaven pel programari Matlab.

� Per últim, un cop ja funcionava tot de forma correcta es va implementar més codi Matlab per crear una interfície gràfica que manegués l’aplicació d’una forma més senzilla, còmoda i intuïtiva. Un cop creada la guideMatlab (interfície gràfica).

Universitat Rovira i Virgili

Pàg. 59

23. Possibles millores de l’aplicació

A continuació es detallen diferents millores que es poden realitzar al TFG.

1. Actualment el mòdul Arduino UNO, juntament amb els dos mòduls són alimentats amb el cable port-sèrie que va endollat, en aquest cas, al PC. Per aquest cable és per on es transmeten les dades cap a l’ordinador, i on les podem visualitzar per l’aplicació Matlab. Per aquest cable es per on actualment s’alimenta tot el mòdul Arduino, juntament amb les dues shields.

Una de les possibles millores podria ser alimentar l’Arduino UNO de forma independent amb una alimentació externa, per exemple amb un powerbank i integrar un mòdul Bluetooth. Aquest mòdul Bluetooth permetria transmetre dades cap al PC sense la necessitat d’utilitzar cap cable.

2. Com que el consum és relativament alt, una bona millora podria ser la d’implementar un codi que s’encarregui de “despertar” l’Arduino només quan s’aproxima una targeta i no com actualment que està contínuament consumint energia. Mentre no es detecti cap tag l’Arduino podria estar en un mode que s’anomena mode sleep, garantint així que el consum sigui quasi inexistent.

Si es decidís alimentar l’Arduino amb un powerbank s’hauria d’implementar aquest codi a la força, ja que pel contrari s’esgotaria la bateria amb relativament poc temps.

3. Si es desitgés utilitzar aquesta aplicació per a controls d’accessos i no es vulgués afegir un mòdul Bluetooth, s’hauria de dotar l’Arduino amb una memòria EPROM relativament gran per poder emmagatzemar totes les dades per poder-les extreure després.

4. De forma alternativa al punt 3, es podria implementar una base de dades SQL (Structured Query Language) per tal d’emmagatzemar tots els registres en una base de dades que es pogués gestionar des del PC.

Universitat Rovira i Virgili

Pàg. 60

Capítol 5.

24. Conclusions En aquest projecte de fi de grau s’ha realitzat una aplicació NFC amb la plataforma Arduino i amb el suport del programari Matlab. S’ha volgut desenvolupar una aplicació NFC per tal d’enriquir els coneixements sobre aquesta tecnologia emergent. De totes les possibilitats que té NFC, en aquesta aplicació s’ha volgut demostrar una de totes les funcionalitats que es poden realitzar amb NFC.

S’han complert els objectius amb millors resultats dels esperats, ja que a part de realitzar l’aplicació principal, també s’han pogut desenvolupar petits demostradors paral·lels que no estaven contemplats des del principi. Aquests petits demostradors han donat una visió més extensa del que és la tecnologia NFC i de totes les seves possibilitats. D’aquesta manera s’han confirmat la infinitud de projectes prototipus que es poden desenvolupar amb aquestes dues tecnologies.

D’es del punt de vista acadèmic aquest projecte és totalment viable per a properes pràctiques a l’escola, ja que podrà ajudar a l’estudiant a comprendre tot el seu funcionament a més de tenir una visió més extensa sobre NFC i Arduino.

Des del punt de vista de l’aprenentatge, per poder desenvolupar tot el projecte s’ha passat per diferents fases:

� Recopilació i adquisició de la informació sobre la tecnologia NFC i sobre la plataforma Arduino.

� Muntatge físic de la placa Arduino i realització de petites proves. � Desenvolupament del programari NFC per poder llegir els identificadors dels

tags juntament amb l’hora. � Implementació de programari Matlab per poder crear la interfície gràfica. � Comprovació del correcte funcionament de l’aplicació.

Ha sigut un procés llarg i costós, però estic més que satisfet amb els objectius aconseguits. A part de tota la gran quantitat de coneixements adquirits, també m’agradaria destacar que la realització d’aquest projecte m’ha fet créixer a nivell professional i personal, ja que he pogut dur a terme un projecte de certa complexitat de forma madura i constant.

Universitat Rovira i Virgili

Pàg. 61

25. Bibliografia

Portals web

[1] Wikipedia (2016) List of Arduino boards and compatible systems. Consultat el dia 20 de Agost de 2015.

https://en.wikipedia.org/wiki/List_of_Arduino_boards_and_compatible_systems

[2] Silicon (2012) NFC, mucho más que el pago a través del móvil. Consultat el dia 20 de Agost de 2015.

http://www.siliconweek.es/mobility/nfc-mucho-mas-que-el-pago-a-traves-del-movil-29302

[3] Xataka.com (2011). Javier Penalva. NFC: qué es y para qué sirve. Consultat el dia 24 de Agost de 2015.

http://www.xataka.com/moviles/nfc-que-es-y-para-que-sirve

[4] Xatakamovil.com (2013). Javier Pastor. Siete cosas que puedes hacer gracias a la tecnología NFC. Consultat el dia 24 de Agost de 2015.

http://www.xatakamovil.com/futuro/7-cosas-que-puedes-hacer-gracias-a-la-tecnologia-nfc

[5] Tr3sDland (2011). Tresdeland - Tu mundo 3D. Consultat el dia 5 de Setembre de 2015.

http://www.tr3sdland.com/2011/11/que-es-arduino/

[6] Hipertextual (2013). JJ. Velasco.10 proyectos y usos creativos de Arduino. Consultat el dia 14 de Setembre de 2015.

http://hipertextual.com/2013/04/usos-creativos-de-arduino

[7] Es.slideshare.net (2011). Jonathan Garibay. Comunicación I2C y SPI. Consultat el dia 23 de Setembre de 2015.

http://es.slideshare.net/JonathanRuizdeGaribay/09bcomunicacin-i2-cyspi-9769471

[8] Cortoc.com (2016). Julio Cardona. Corto Circuito: Introducción a Arduino. Consultat el dia 1 de Gener de 2016.

http://www.cortoc.com/2011/12/introduccion-arduino.html

[9] Ccn-cert.cni.es (2016). Defensa frente a las ciber amenazas. Consultat el dia 9 de Gener de 2016.

Universitat Rovira i Virgili

Pàg. 62

https://www.ccn-cert.cni.es/pdf/informes-de-ciberseguridad-ccn-cert/informes-ccn-cert-publicos/1378-ccn-cert-ia-05-16-comunicacion-de-campo-cercano-near-field-communication-nfc-vulnerabilidades/file.html

[10] NFC Forum (2016). NFC Forum. Consultat el dia 22 de Febrer de 2016.

http://nfc-forum.org/

[11] Nfc.cc (2016).NFC Tag Types NFC Development & Consulting. Consultat el dia 22 de Febrer de 2016.

http://www.nfc.cc/technology/nfc-tag-types/

[12] Members.nfc-forum.org (2016). NFC Forum: Technical Specification. Consultat el dia 25 de Febrer de 2016.

http://members.nfc-forum.org/specs/spec_list/

[13] NFC Forum (2016). Protocol Technical Specifications - NFC Forum. Consultat el dia 27 de Febrer de 2016.

http://nfc-forum.org/our-work/specifications-and-application-documents/specifications/protocol-technical-specifications/

Articles de revista i treballs

[14] Research in Computing Science 77 (2014) La tecnología NFC en teléfonos celulares, sus retos y aplicaciones. Consultat el dia 20 de Agost de 2015.

http://www.micai.org

[15] Aplicación de evaluación basada en NFC (2016) Natalia Sànchez Moreno. Consultat el dia 30 de Agost de 2015.

http://e-archivo.uc3m.es/bitstream/handle/10016/7487/PFC_Natalia_Sanchez_Moreno.pdf?sequence=1

[16] Apclicaciones practicas de NFC (2012) Juan Segui Moreno. Consultat el dia 1 de Setembre de 2015.

http://www.3ciencias.com/wp-content/uploads/2013/01/NFC.pdf

[17] Arduino para dummies. (2016). John Nussey. Consultat el dia 16 de Setembre de 2015.

https://download.e-bookshelf.de/download/0000/8046/52/L-X-0000804652-0002181633.XHTML/index.xhtml

Universitat Rovira i Virgili

Pàg. 63

[18] Adafruit PN532 RFID/NFC Breakout and Shield (2016). Consultat el dia 30 de Setembre de 2015.

http://learn.adafruit.com/downloads/pdf/adafruit-pn532-rfid-nfc.pdf

[19] Señales NFC normalizadas y definibles hasta el último detalle con solo pulsar un botón (2016). Bertram Fesl. Consultat el dia 10 de Febrer de 2016.

http://cdn.rohde-schwarz.com/pws/dl_downloads/dl_common_library/dl_news_from_rs/208/NEWS_208_spanish_SMx-K89.pdf

[20] Docplayer.es (2016). Andrés Francisco Murillo Peñafiel. Diseño y desarrollo de in sistema de información turistica y transporte urbano mediante tecnologia NFC y código QR. Consultat el dia 17 de Febrer de 2016.

http://docplayer.es/11905821-Universidad-politecnica-salesiana.html

[21] International Journal of cientific and technology research (2014). Vulnerability Analysis And Security System For NFC-Enabled Mobile Phone. Consultat el dia 19 de Febrer de 2016.

http://www.ijstr.org/final-print/june2014/Vulnerability-Analysis-And-Security-System-For-Nfc-enabled-Mobile-Phones.pdf

[22] Google books (2016). NFC for Dummies. Consultat el dia 20 de Febrer de 2016.

https://books.google.es/books?id=4VqzCgAAQBAJ&pg=PA204&lpg=PA204&dq=Rohde+%26+Schwarz+nfc&source=bl&ots=LXKB9OSXwk&sig=LYtpTNgXuFmEg23gPZspaU_goj8&hl=en&sa=X&ved=0ahUKEwj34eK416XOAhUJmBoKHYdHAmcQ6AEITDAI#v=onepage&q=Rohde%20%26%20Schwarz%20nfc&f=false

[23] Anon (2016). Vulnerability Analysis And Security System For NFC-Enabled Mobile Phone. Consultat el dia 25 de Febrer de 2016.

http://www.nxp.com/documents/application_note/AN11535.pdf

[24] NXP Semiconductors (2016). PN7120 Antenna Design and Matching Guide. Consultat el dia 25 de Febrer de 2016.

http://www.nxp.com/documents/application_note/AN11564.pdf

[25] Rohde-schwarz (2016). Near Field Communication (NFC) Technology and Measurements. Consultat el 3 de Març de 2016. https://cdn.rohdeschwarz.com/pws/dl_downloads/dl_application/application_notes/1ma182/1MA182_5E_NFC_WHITE_PAPER.pdf

Universitat Rovira i Virgili

Pàg. 64

Annex

26. Guia instal·lació de la llibreria Adafruit_NFCShield_I2C

Un cop tinguem instal·lat al nostre PC el IDE Arduino, s’han d’instal·lar les llibreries corresponents per poder realitzar satisfactòriament les proves i el posterior desenvolupament de l’aplicació. A continuació es detalla pas per pas el procediment a seguir.

Primer de tot s'hauria de descarregar la llibreria al nostre PC. La llibreria és gratuïta i es pot trobar en el següent enllaç:

https://github.com/adafruit/Adafruit_NFCShield_I2C

Un cop entrem en l’enllaç ens apareix un portal com el que hi ha a continuació:

Figura 46. Primera pantalla per al procés de descàrrega de la llibreria Adafruit_NFCShield_I2C

Universitat Rovira i Virgili

Pàg. 65

Per descarregar la llibreria s'hauria de fer un clic en la part inferior dreta, on hi ha el botó Download ZIP. Com el seu nom indica es descarregarà un arxiu comprimit (.zip) que té com a nom: Adafruit_NFCShield_I2C-master.

A continuació s'hauria d’obrir el IDE Arduino per tal d’introduir-hi la llibreria que hem acabat de descarregar.

Figura 47. Pantalla principal del programa Arduino

Universitat Rovira i Virgili

Pàg. 66

Tal com es mostra en la captura de `pantalla anterior, i un cop obert el programari Arduino ens hem de dirigir a “Programa”�”IncludeLibrary”�”Add .ZIP Library…”.

Per últim ens apareixerà una pantalla com la que es mostra a continuació:

Figura 48. Pantalla del escriptori del PC

Aquí l’únic que haurem de fer és buscar on està la llibreria que s'ha descarregat. Si hem seguit la guia al peu de la lletra, hauria d’estar a “Descarregues”. Un cop l’haguem trobat només s’ha de fer clic en “Aceptar” i ja es tindrà la llibreria inclosa en el IDE Arduino.

Universitat Rovira i Virgili

Pàg. 67

27. Guia instal·lació de la llibreria RTClib

De forma idèntica a l'explicada anteriorment també s'hauria de fer el mateix amb la llibreria Real Time Clock.

Es pot descarregar en el següent enllaç: https://github.com/adafruit/RTClib

Hi podrem observar la següent imatge:

Figura 49. Primera pantalla per al procés de descàrrega de la llibreria RTClib

Per descarregar la llibreria s'hauria de clicar en la part inferior dreta, on està el botó que “Download ZIP”. Com el seu nom indica es descarregarà un arxiu comprimit (.zip) que té el nom: RTClib-master.zip

De nou obrirem el nostre IDE Arduino, que ja s'haurà descarregat prèviament i de la mateixa manera que abans farem clic a Programa �IncludeLibrary�Add.ZIP.Library.

Apareixerà una captura de pantalla similar a aquesta:

Universitat Rovira i Virgili

Pàg. 68

Figura 50. Pantalla del escriptori del PC

Només farà falta buscar en el PC on s'ha descarregat la llibreria, fer clic i acceptar. D'aquesta manera ja estarà la llibreria instal·lada correctament per poder fer funcionar el nostre mòdul RTC.

Universitat Rovira i Virgili

Pàg. 69

28. Guia d’ús i aprenentatge de les aplicacions NFC Basic

A continuació s’expliquen detalladament les funcionalitats de l’aplicació NFC Basic. L’aplicació és compatible amb Android. Aquesta aplicació ha estat desenvolupada per interactuar amb tags NFC. L’aplicació és d’ús gratuït i es pot descarregar directament des de GooglePlay.

NFCBasic: https://play.google.com/store/apps/details?id=com.dpizarro.nfc.basic&hl=es

Figura 51. Pantalla principal de l’aplicació NFC Basic

� Què és?

NFC Basic és una aplicació capaç d’interactuar amb tags NFC d’una forma molt senzilla i intuïtiva. A continuació es mostra una llarga llista amb totes les possibilitats que té aquesta aplicació.

- Escriptura de l’URL: Escriptura de paths o rutes de pàgines web d’interès.

- Escriptura de text: Possibilitat d’escriure curts missatges de text (de dimensió variable en funció del tipus de tag).

- Escriptura de contactes (vCard): Escriptura de contactes amb el format estàndard vCard.

- Escriptura de telèfons

- Escriptura de SmartPoster

-Possibilitat d’obrir una aplicació prèviament ja instal·lada el telèfon mòbil

- Escriptura de mapes: Es pot guardar una localització al tag.

Universitat Rovira i Virgili

Pàg. 70

- Clonar un tag.

- Esborrar el contingut del tag per donar-li un altre ús posteriorment.

Figura 52. Pantalla secundaria de l’aplicació NFC Basic

Permet programar les tasques pròpies d’Android, com ara:

- Activar/Desactivar Wifi. - Activar/Desactivar 3G.

- Activar/Desactivar Bluetooth.

- Mostrar informació de la bateria del telèfon mòbil (estat, tipus, voltatge…).

- Mostra la bujola.

- Activar el perfil de silenci.

- Ficar el dispositiu a vibrar.

- Afegir elements al calendari.

- Canviar el temps que la pantalla està encesa.

- Canviar la brillantor de la pantalla del dispositiu.

- Obrir el reproductor de música en mode aleatori.

Universitat Rovira i Virgili

Pàg. 71

Figura 53. Pantalla secundaria de l’aplicació NFC Basic

A més, permet la creació de perfils. A l’apartat d’exemples i procediments es mostrarà un exemple.

Material necessari.

El material necessari per tal de poder començar a gaudir de l’aplicació NFCBasic es un telèfon mòbil compatible amb Android que tingui lector de tags NFC i un tag NFC.

Exemples i procediment.

A continuació es mostren diferents exemples:

1. Del primer apartat de l’aplicació (“Escriure Estàndard”), es gravarà l’URL de Google.

2. Del segon apartat (“Escriure tasca”), es mostrarà l’estat de la bateria del telèfon mòbil.

3. Del tercer apartat (“Escriure perfil”), crearem un perfil que l’anomenarem Casa.

Exemple 1 Passos a seguir: Primer obrir l’aplicació NFCBasic�Escriure Estàndard�Url. A continuació s’ha d’indicar quina vols que sigui la pàgina web que vols obrir. Seguidament se li ha de donar al botó ‘Acceptar’. Després has d’aproximar el telèfon mòbil al tag i esperar que el telèfon mòbil la detecti. Per finalitzar has de sortir de l’aplicació i aproximar el telèfon mòbil al tag que prèviament ha sigut escrita, i ja s’obre la pàgina web desitjada, en aquest cas el portal de Google.

Universitat Rovira i Virgili

Pàg. 72

Figura 54. Pantalla principal i secundaria de l’exemple 1

Figura 55. Pantalles secundàries de l’exemple 1

Exemple 2 Passos a seguir: Primer obrir l’aplicació NFCBasic�Escriure tramesa�Informació de la bateria. Després has d’aproximar el telèfon mòbil al tag i esperar que el telèfon mòbil la detecti. Per finalitzar s’ha de sortir de l’aplicació, has d’aproximar el telèfon mòbil al tag que prèviament ha sigut escrit. I com es pot veure a la fotografia que segueix, s’observa l’estat i prestacions de la bateria del telèfon mòbil.

Universitat Rovira i Virgili

Pàg. 73

Figura 56. Pantalla principal i secundàries de l’exemple 2

Exemple 3 Passos a seguir: Primer, has d’obrir l’aplicació NFCBasic�Escriure Perfil�Afegir Perfil. A continuació, has d’indicar el nom i les característiques del perfil. Seguidament li has de donar al botó “Acceptar”. També es pot escollir un “logotip” per tal de personalitzar el perfil. Després has d’aproximar el telèfon mòbil al tag i esperar que el telèfon mòbil la detecti i per a gravar-hi el contingut. Per finalitzar, s’ha de que sortir de l’aplicació i aproximar el telèfon mòbil al tag que prèviament ha sigut escrit.

Com es mostra a sota, es configura el perfil Casa de tal manera que s’activi el wifi i el Bluetooth i es desactivi el 3G/4G. També es pot vincular una aplicació instal·lada al mòbil per tal d’obrir-la en el moment que es detecta el tag.

Com es pot veure, el telèfon mòbil detecta el tag i conseqüentment el perfil es posa a funcionar.

Universitat Rovira i Virgili

Pàg. 74

Figura 57. Pantalla principal i secundaries de l’exemple 3

*Totes les proves han sigut realitzades amb un Huawei P8 Lite

Universitat Rovira i Virgili

Pàg. 75

29. Lectura i escriptura de tags des d’Arduino

En aquest últim punt es vol mostrar al lector una de les altres funcionalitats d’Arduino, juntament amb la tecnologia NFC. Fins ara, tota la feina realitzada ha sigut per la creació d’una aplicació que sigui capaç de donar permisos.

Aprofitant que ja disposem de les eines necessàries, es creu oportú mostrar un petit demostrador que sigui capaç d’escriure i llegir tags NFC. Per això només és necessari disposar d’un Arduino. En aquest cas, Arduino UNO, tags amb chip ultralight, un pc i el software corresponent per a l’escriptura i la lectura dels tags.

El xip ultralight és un tipus de xip més nou que per exemple el xip Mifare Classic, Els xips ultralight són els que normalment s’utilitzen per a escriure petites quantitats de text, ja que disposen d’una memòria de tan sols 46 bytes. Però aquesta memòria pot ser ampliada, ja que si la informació que es vol emmagatzemar és massa gran, llavors es guarda en el bloc consecutiu.

Com s’ha anomenat en el paràgraf anterior, necessitem un software compatible amb Arduino que sigui capaç de llegit i escriure tags amb xip ultralight.

Aquest software es pot descarregar des de la següent adreça:

https://github.com/nurun/arduino_NFC

S’haurà d’instal·lar al programa Arduino, tal com es mostra als punts 26 i 27. Una volta estigui instal·lada, s’ha d’anar al programari Arduino:

Archivo�ZProyecto�libràries�arduino_NFC-master�read_mifare.

Archivo�Proyecto>libràries�arduino_NFC-master�write_mifare.

Ja estarà tot preparat per poder començar a fer proves.

Universitat Rovira i Virgili

Pàg. 76

Figura 58. Codi Arduino per a la lectura de tags

Universitat Rovira i Virgili

Pàg. 77

Figura 59. Codi Arduino per a l’escriptura de tags

Un cop hem obert els exemples només farà falta executar el codi d’escriptura i passar el tag per sobre de l’Arduino. Posteriorment s’haurà d’executar l’altre codi, el de lectura i passar el tag per sobre de l’Arduino per tal de poder veure què és el que s’ha escrit anteriorment.

Per l’escriptura, el programa té valors predeterminats, per defecte hi ha "this is some text". El que es pot fer és canviar aquests valors de la següent manera:

Figura 60. Línies de codi font per a l’escriptura de tags

Universitat Rovira i Virgili

Pàg. 78

Només fa falta canviar el valor. En el meu exemple posaré “NFC_2016”. També s’ha de tenir en compte de canviar el valor 17 pel nombre de lletres o espais que vols escriure.

Figura 61. Línies de codi principals per a l’escriptura de tags

Un cop fetes aquestes modificacions ja es pot provar el codi. Primer el d’escriptura i després el de lectura per verificar que s’ha gravat la tarja correctament.

Figura 62. Procés d’escriptura de tags

Figura 63. Procés de lectura de tags