NFC + Arduino - Parte 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.
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.
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!