Introducción
En este tutorial explicaremos como hacer uso de la tecnología RFID, simulando el permiso de entrada a una empresa. Se debe utilizar una tarjeta RFID y acercarla al lector, en caso de ser una tarjeta válida para el sistema, permitirá la apertura de la puerta, en caso contrario, se observara el encendido de un LED Azul, de igual manera por medio de un display se podrá visualizar si el acceso está permitido o negado.
Para entender un poco de que trata la tecnología RFID, en español identificación por radiofrecuencia, es un sistema de almacenamiento y recuperación de datos remotos que usa dispositivos denominados etiquetas, tarjetas, transponedor o tags RFID. El propósito fundamental de la tecnología RFID es transmitir la identidad de un objeto (similar a un número de serie único) mediante ondas de radio.
Lo que haremos en nuestro proyecto es conectar la tarjeta Access Control Shield sobre la PICARO, allí a la salida del Relé, se conectara el Solenoide el cual será energizado por una fuente externa de 36Vdc, este dispositivo simulara la apertura de la puerta, los pines digitales 2 y 4 estarán conectados a los LED rojo y azul, donde podremos visualizar si la tarjeta está permitida en la empresa y a través del pin TX transmitiremos de manera serial a la Serial Backpack V2, para mostrar en la LCD uno de los siguientes mensajes: “Acceso permitido” o “Acceso Negado”. Debido a que los pines del lector RFID ID-20 son muy pequeños y no se puede colocar en la Protoboard, se debe conectar el lector ID-20 a una tarjeta adaptadora llamada Breakout, donde soldamos los cables y estos irán directamente al conector lector RFID. En caso de querer soldar directamente los pines del lector ID-20 al cable, puedes observar aquí el esquema de la conexión.
Así como conectamos un solenoide a la salida del relé, puedes conectar lo que que desees y puedes generar la aplicación que quieras haciendo uso del lector RFID, el control de acceso es solo una idea de las tantos usos que le puedes dar a esta tecnología.
Pasos a seguir:

Código:
#includeSoftwareSerial rfid (5,3 ); int RFIDResetPin = 13; //Registra tus RFID char tag1[13] = "45003C3F783E"; char tag2[13] = "45003C074B35"; void setup(){ Serial.begin(9600); //Inicia puerto Serial rfid.begin(9600); //Inicia puerto Serial selectLineOne(); Serial.print("MCI Electronics"); //Muestra en la LCD pinMode(RFIDResetPin, OUTPUT); digitalWrite(RFIDResetPin, HIGH); pinMode(2, OUTPUT); //LED Rojo pinMode(4, OUTPUT); //LED Azul pinMode(7, OUTPUT); //Rele } void loop(){ char tagString[13]; int index = 0; boolean reading = false; while(rfid.available()){ int readByte = rfid.read(); //leer siguiente byte disponible if(readByte == 2) reading = true; //Inicio de la etiqueta de control if(readByte == 3) reading = false; //fin de la etiqueta if(reading && readByte != 2 && readByte != 10 && readByte != 13){ //Almacena la etiqueta en la vriable tagString[index] = readByte; index ++; } } checkTag(tagString); //Verifica si hay coincidencia clearTag(tagString); //Limpia las variables resetReader(); //Resetea el lector RFID } void checkTag(char tag[]){ if(strlen(tag) == 0) return; //Si esta vacio, no continua if(compareTag(tag, tag1)){ // Si coincide con tag1 lightLED(2); }else if(compareTag(tag, tag2)){ // Si coincide con tag2 lightLED(2); }else { //Si no coincide con los tag almacenados selectLineTwo(); Serial.print(tag); //Muestra la eqtiqueta de control de la tarjeta digitalWrite(4, HIGH); //Enciende LED Azul selectLineOne(); Serial.print("Acceso Negado"); //Escribimos delay(2000); digitalWrite(4, LOW); //Apaga led Azul clearLCD(); //Limpia la LCD } } void lightLED(int pin){ //Si encuentra coincidencia digitalWrite(pin, HIGH); //Enciende el LED Rojo digitalWrite(7,HIGH); //Activa el Rele, que abre la puerta selectLineOne(); Serial.print("Acceso Permitido"); //Escribimos delay(2000); digitalWrite(pin, LOW); //Apaga el LED digitalWrite(7,LOW); //Desactiva el Rele clearLCD(); //Limpia la LCD } void resetReader(){ digitalWrite(RFIDResetPin, LOW); digitalWrite(RFIDResetPin, HIGH); delay(150); } void clearTag(char one[]){ //Limpia el String donde se encuentra almacenado el tag for(int i = 0; i < strlen(one); i++){ one[i] = 0; } } boolean compareTag(char one[], char two[]){ //Compara las aetiquetas if(strlen(one) == 0) return false; //Si El string alamacenado es igual a 0, esta vacio for(int i = 0; i < 12; i++){ //Se crea un ciclo if(one[i] != two[i]) return false; //Si el valor almacena coincide en cada posicion con el que se recibio } return true; //no hay coincidencia } //--------Funciones para mostrar en la la LCD por medio de la Serial LCD Backpack V2------------------------------------ void selectLineOne(){ //pone el cursor en la linea 1 Serial.write(0xFE); //comando para iniciar Serial.write(128); //indica la posición delay(10); } void selectLineTwo(){ //pone el cursor en la linea 2 Serial.write(0xFE); //comando para iniciar Serial.write(192); //indica la posición delay(10); } void clearLCD(){ Serial.write(0xFE); //comando para iniciar Serial.write(0x01); //comando para limpiar delay(5); }
Demostración
¿En busca del Kit PICARO?
Con el PICARO Starter Kit podrás realizar estos ejemplos ¡y mucho más!
Producto Chileno. Encuéntralo en MCI Electronics.
Contacto

Direccion Luis Thayer Ojeda 0115 Of. 1105, Providencia, Santiago, Chile.
Phone: +56 2 2333 9579 / +56 2 2231 9268
Horario Lunes a Viernes de 8:00 a 18:00
Nosotros
En MCI Electronics, estamos aquí para mantener la industria en movimiento. Nuestro objetivo es difundir y hacer accesible el uso de la electrónica a todo aquel que tenga el interés. Para ello nos esforzamos para traer los mejores componentes y módulos de manera que puedas aprender desarrollando tus propios proyectos.
Somos tu aliado en electrónica.