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
Gracias por la ayuda.
ResponderEliminarQue libreria usas?
ResponderEliminar¿Hola que tal que tipo libreria usas?
ResponderEliminar