ESP8266 Control de Acceso RFID


ESP8266 Control de Acceso RFID para evitar tocar chapas (Cerradura) o puertas con las manos, abre puertas sin contacto, sin usar las manos y así evitar transmisión de virus.
El código programado funciona también con #Arduino o NodeMCU #ESP8266 usando Identificación por Radiofrecuencia, el modulo RFID-RC522 conectado al microcontralor puede activar o desactivar ya sea un Relé con un Electroimán, un pasador electromagnético o cualquier carga como un bombillo siempre y cuando el Relé soporte la corriente de carga.

Tutorial completo para implementar control de accesos de puertas en cuartos como herramientas, oficinas o casas.


CIRCUITO PARA CONTROL DE ACCESO CON RFID USANDO ESP8266 PARA ABRIR PUERTAS SIN TOCAR LA CERRADURA O CHAPA


Circuito ESP8266 Control de Acceso RFID


CÓDIGO ESP8266 O ARDUINO PARA EL CONTROL DE ACCESOS CON RFID PARA ABRIR PUERTAS SIN TOCAR LA CHAPA, CERRADURA O PUERTA

/*
PINOUT:
RC522 MODULE    Uno/Nano     MEGA
SDA             D10          D9
SCK             D13          D52
MOSI            D11          D51
MISO            D12          D50
IRQ             N/A          N/A
GND             GND          GND
RST             A0           D8
3.3V            3.3V         3.3V
*/

#include <SPI.h>
#include <RFID.h>
//#include <Wire.h>

#define SDA_DIO 15
#define RESET_DIO 5

RFID RC522(SDA_DIO, RESET_DIO);

#define USERS 2
byte validKey1[USERS][5] = {{0x25,0x86,0x4B,0xA8,0x40},{0x5B,0x84,0x57,0x0,0x88}};
                            
char* names[USERS]={"Alex7 Tutoriales","Invitado"}; 

int LedRojo=0;
int LedVerde=4;
int Rele=16;

void setup()
  //Wire.begin();

  Serial.begin(9600);
  /* Enable the SPI interface */
  SPI.begin(); 
  /* Initialise the RFID reader */
  RC522.init();

  pinMode(LedRojo, OUTPUT);  //Inicializacion de pines
  pinMode(LedVerde, OUTPUT);
  pinMode(Rele, OUTPUT);
  digitalWrite(LedRojo, LOW);
  digitalWrite(LedVerde, LOW);
  digitalWrite(Rele, LOW);

}

void loop()
{

  if (RC522.isCard()) /* Card Exist? */
  {
    RC522.readCardSerial();   /* Get serial number Card*/
    //Serial.println("CONTROL DE ACCESO");

    //imprimir codigo de tarjeta
    for(int i=0;i<5;i++)
    {
    //Serial.println(RC522.serNum[i],DEC);
      Serial.println(RC522.serNum[i],HEX); //Card in Hexadecimal
    }
    //----------------------------------------------
     if(checkAuthorization(RC522.serNum))
    { 
      Serial.println("Acceso: Autorizado");
      digitalWrite(LedRojo, LOW);
      digitalWrite(LedVerde, HIGH);
      digitalWrite(Rele, HIGH);
      delay(1000);
      digitalWrite(LedRojo, LOW);
      digitalWrite(LedVerde, LOW);
      digitalWrite(Rele, LOW);
    }
    else
    {
      Serial.println("Acceso: Denegado");
      digitalWrite(LedRojo, HIGH);
      digitalWrite(LedVerde, LOW);
      digitalWrite(Rele, LOW);
      delay(1000);
      digitalWrite(LedRojo, LOW);
      digitalWrite(LedVerde, LOW);
      digitalWrite(Rele, LOW);
          
    }
    Serial.println();
    Serial.println();
  }

  delay(20);
  
}


bool checkAuthorization(byte *data) //Verify Access
{
    for(int i = 0; i<USERS; i++)
    {
      if(checkData(data,validKey1[i],5))
      {
        Serial.print("Usuario: ");
        Serial.println(names[i]);

        return true;
      }
    }
   return false;
}

bool checkData(byte* arrayA, byte* arrayB, int length) //compare two Array
{
  for (int index = 0; index < length; index++)
  {
    if (arrayA[index] != arrayB[index]) return false;
  }
  return true;
}


Espero les sea útil, es un pequeño aporte de mi parte en esta situación que estamos viviendo con el Coronavirus (COVID-19) y ojala ayude a prevenir la transmisión del virus usando este tipo de sistemas.

Si aún no estas suscrito a mi canal te invito a que te pases por el y te suscribas para más contenido.... saludos



Alex7 Tutoriales

Tutoriales que en algún momento te pueden ser útiles.... Suscribete!

3 Comentarios

Publicar un comentario
Artículo Anterior Artículo Siguiente