Iniciar sesión en tu computadora ahora no pudo ser más fácil que hacer sólo un movimiento con tu mano. Utilizando un Tag NFC, o mucho más práctico, un anillo NFC, un lector y una tarjeta Arduino LEONARDO para que el sistema introduzca la contraseña por ti como un teclado normal lo haría. El lector que e utilizará es el PN532 Adafruit NFC RFID Shield para Arduino.
Cómo funciona el RFID y los Tags
Se explica brevemente cómo funciona la tecnología RFID. Utilizando Tags pasivos y lector RFID. Para ver un tutorial completo de cómo hacer tu propio sistema lector RFID visita esta guía completa http://learn.tiendadeelectronica.mx/pn532-adafruit-nfc-rfid-shield-para-arduino-contrasena-pc/
Antes de comenzar te recomendamos echar un vistazo a los siguientes links.
Adafruit PN532 RFID y NFC.
Adafruit Guía para soldar adecuadamente.
Cómo leer un Tag con PN532 Adafruit NFC RFID Shield para Arduino. Iniciamos con el tutorial.
[nextpage title=»Lista de Materiales.»]Para este proyecto vamos a utilizar la siguiente lista de materiales.
Arduino LEONARDO.
Shield Adafruit PN532 RFID y NFC.
Etiqueta RFID/NFC o Anillo.
Kit de herramientas básicas para Soldar.
Cable Micro USB.
[nextpage title=»Montar el circuito.»]
Soldar los pines al PN532 Adafruit NFC RFID Shield para Arduino.
Lo primero que debemos hacer es cortar las tiras de pines de acuerdo al tamaño exacto para que entren en los orificios del Arduino LEONARDO. Los pines más largos de las tiras son los que van dentro del Arduino LEONARDO.
Una vez introducidas todas las tiras correspondientes dentro del Arduino LEONARDO se monta encima el Shield Adafruit PN532 haciendo que coincidan los pines a los orificios de la tarjeta.
En seguida soldar cada uno de los pines.
Debería verse algo como la siguiente imagen.
NOTA IMPORTANTE.
Si se va a utilizar el Arduino LEONARDO o el Arduino YUN con el Shield Adafruit PN532 es necesario hacer lo siguiente en el Shield:
De fábrica, el pin IRQ está unido con el pin Digital #2 en el Shield. Si embargo, en el Arduino LEONARDO o Arduino YUN el pin digital #2 se usa para el protocolo I2C por lo que si se deja así no funcionará. En este tutorial se va a utilizar el Arduino LEONARDO por lo tanto se debe cortar la pista que une el pin IRG y el pin Digital #2 y soldar un cable que vaya del pin IRQ al pin Digital #4 o superior.
Se tendría que hacer algo como las siguientes imágenes de ejemplo.
Cortar la pista cuidadosamente con una navaja o cuter.
Soldar un pequeño cable que una el pin IRQ al pin #6.
[nextpage title=»Código.»]
Cargar el siguiente programa a la tarjeta Arduino LEONARDO y posteriormente abrir el Monitor Serial del IDE Arduino para escanear el Tag NFC o el anillo. El código de identificación del Tag NFC o del anillo se va a imprimir en el monitor, después vamos a copiar y pegar este código obtenido para actualizar nuestro programa y de esta manera se pueda identificar nuestro Tag.
También es necesario actualizar la contraseña dentro del programa. La contraseña debe ser la que utilizas para iniciar sesión en tu computadora. Si no se actualiza simplemente no va a funcionar.
Una vez actualizado el programa con los datos antes mencionados vamos a cargarlo nuevamente a la tarjeta Arduino LEONARDO.
Si podemos observar el programa a detalle, al terminar los caracteres de la contraseña tiene un «retorno de carro» (Símbolo: \n), el cuál hace que automáticamente se genere un «ENTER» del teclado. Aquí se debe tener cuidad de que no se genere ninguna lectura por accidente del Tag NFC en algún campo al estar trabajando en tu computadora, y que por accidente envíes o muestres tu contraseña a personas no deseadas.
Recomendamos poner el lector en un lugar accesible pero que no sea fácil generar lecturas innecesarias
[code language=»java»]
//Largely based on Lewis Callaway’s Instructable code:
// http://www.instructables.com/id/NFC-Computer-Unlocker
#include <Adafruit_PN532.h>
#include <Wire.h>
#include <SPI.h>
#define IRQ 6 // this trace must be cut and rewired to work on Leonardo
#define RESET 8
Adafruit_PN532 nfc(IRQ, RESET);
void setup() {
Serial.begin(9600);
nfc.begin();
uint32_t versiondata = nfc.getFirmwareVersion();
if (! versiondata) {
Serial.print(«Didn’t find PN53x board»);
while (1); // halt
}
// Got ok data, print it out!
Serial.print(«Found chip PN5»); Serial.println((versiondata>>24) & 0xFF, HEX);
Serial.print(«Firmware ver. «); Serial.print((versiondata>>16) & 0xFF, DEC);
Serial.print(‘.’); Serial.println((versiondata>>8) & 0xFF, DEC);
// configure board to read RFID tags
nfc.SAMConfig();
Keyboard.begin(); //initiate the keyboard
}
unsigned digit = 0;
void loop() {
uint8_t success;
uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // Buffer to store the returned UID
uint8_t uidLength; // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
// wait for RFID card to show up!
Serial.println(«Waiting for an ISO14443A Card …»);
// Wait for an ISO14443A type cards (Mifare, etc.). When one is found
// ‘uid’ will be populated with the UID, and uidLength will indicate
// if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
uint32_t cardidentifier = 0;
if (success) {
// Found a card!
Serial.print(«Card detected #»);
// turn the four byte UID of a mifare classic into a single variable #
cardidentifier = uid[3];
cardidentifier <<= 8; cardidentifier |= uid[2];
cardidentifier <<= 8; cardidentifier |= uid[1];
cardidentifier <<= 8; cardidentifier |= uid[0];
Serial.println(cardidentifier);
if (cardidentifier == 170923268) { //AQUI actualizar el código identificaros de tu Tag RFID
Keyboard.write(‘m’); //Actualizar aquí los caracteres de tu contraseña!
Keyboard.write(‘y’);
Keyboard.write(‘p’);
Keyboard.write(‘a’);
Keyboard.write(‘s’);
Keyboard.write(‘s’);
Keyboard.write(‘w’);
Keyboard.write(‘o’);
Keyboard.write(‘r’);
Keyboard.write(‘d’);
Keyboard.write(‘\n’); // Retorno de Carro (tecla ENTER), quitar si no se quiere automático
delay(5000); //makes sure the password isn’t repeated
}
}
}
[/code]
[nextpage title=»Usando tu sistema.»]
Puedes utilizar los orificios del PN532 Adafruit NFC RFID Shield para Arduino para montarlo y atornillarlo.
También puede funcionar una pequeña sección de velcro y cinta doble cara como la siguiente imagen.
Recuerda que el NFC cuanta con un pequeño rango de detección, no podría funcionar si tu mesa o escritorio es demasiado grueso o si es de metal. Coloca bien tu cable USB conectado a algún puerto de tu computadora y haz algunas pruebas de detección de tu Tag NFC sobre la antena del lector.
Aquí una prueba de funcionamiento de tu nuevo sistema de inicio de sesión automático con PN532 Adafruit NFC RFID Shield para Arduino.