NFC + Arduino - Parte 1

  • gmatarrubia gmatarrubia
  • hace 6 años
NFC + Arduino - Parte 1

arduino_nfc_1

¡Hola a todos y todas!

Este es mi primer post por lo que aprovecho para presentarme. Me llamo Gonzalo Matarrubia. Cómo he visto que ya hay varios tutoriales sobre el uso de ciertas tecnologías bajo el control de Arduino, me he animado a crear mi propio tutorial sobre la tecnología NFC que como muchos sabéis significa Near field Communication. Para los pocos que les suene a chino, el NFC es una variante de la tecnología RFID y lo que hace es pasar información utilizando campos magnéticos entre circuitos que estén a poca distancia. Tenéis gran cantidad de información sobre los detalles técnicos del NFC en Internet, yo me voy a centrar sólo en su uso con Arduino.

Para este "hello world" del NFC con Arduino necesitamos:

  • 1 x placa Arduino, en mi caso he usado un Arduino Leonardo.
  • 1 x shield NFC.
  • 1 x etiqueta NFC.
Arduino con shield NFC y llavero Mifare 1k  

La shield que tengo la compré en elecfreaks.com, pero hay muchos otros sitios donde las venden parecidas. La shield viene configurada para una comunicación ISP aunque con unos jumpers podemos usar comunicación UART o I2C. Las librerías que os dejo en el siguiente enlace vienen preparadas para una comunicación ISP por lo que según recibamos la shield podremos utilizar estas librerías.

Librerías NFC ISP

La etiqueta o 'tag' NFC es del tipo Mifare 1k, es el tipo de etiquetas más común y estándar, además es muy fácil de conseguir. Yo la compré en la misma página que la shield. Sobre cómo está estructurada la memoria EEPROM de este tipo de etiquetas os hablaré más adelante, ya que en este tutorial sólo voy a comentar que cada 'tag' tiene un número de identificación único que se obtiene de la forma que veréis en el código a continuación. Por lo tanto, en este primer ejemplo lo único que hago es leer este número de identificación.

Para darle un sentido práctico he pensado poner un ejemplo de aplicación. En este ejemplo queremos llevar un control de asistencia al trabajo. Por lo tanto vamos a hacer un sistema para "fichar" que nos dirá "bienvenido" cuando la persona pase su identificación NFC para entrar a trabajar y que nos dirá "Hasta luego" cuando pasemos la identificación NFC para irnos a casa. Os dejo el código comentado. Comentaros que hay que hacer un programa previo para saber que número de identificación o id tiene tu etiqueta para ello podemos utilizar "Serial.println(id);" y luego ponerla en nuestra macro.
/*
          **************************************************
                       Autor: Gonzalo Matarrubia
          **************************************************             
                       Proyecto: 1er tutorial NFC
                           para Geeky Theory
          **************************************************
          Descripción: Este sketch utiliza el número de 
          identificación único de cada etiqueta NFC para
          "fichar" la entrada o salida de una persona en
          un supuesto puesto de trabajo, etc.
          **************************************************
*/
//Incluimos la librería de la shield NFC
#include <PN532.h>

//Macros
#define SCK         13
#define MOSI        11
#define SS            10
#define MISO        12

#define miTarjeta 254883858
#define fuera 0
#define dentro 1

//Creamos un objeto NFC de clase PN532
PN532 NFC(SCK,MISO,MOSI,SS);

//Creamos variables globales
int persona = fuera;
void setup () {
     Serial.begin(9600);
     if(!Serial) { delay(100); }
     
     //Configuramos el NCF
     NFC.begin();
     NFC.SAMConfig();
}

void loop () {
     /*
     Leemos constantemente el número de identificación mientras no haya
     ninguna etiqueta NFC que leer id valdrá 0
     */
     uint32_t id = NFC.readPassiveTargetID(PN532_MIFARE_ISO14443A);
     
     if( miTarjeta == id) {
          //Comprobamos si la persona estaba fuera o dentro
          if ( persona == fuera ){
               Serial.println("Bienvenido");
               persona=dentro;
               delay(2000);
          }
          else {
               Serial.println("Hasta luego");
               persona=fuera;
               delay(2000);
          }
     }
     
     delay(50);
}
Por último os dejo un vídeo para que veáis el funcionamiento de la práctica en marcha. [youtube http://www.youtube.com/watch?v=-FuSaRBtjeY&w=770] Sólo espero que os haya gustado este tutorial y poder publicar pronto el siguiente que continúe explicando más usos del NFC. ¡Un saludo!
¿Qué opinas?