Puerta automática con módulo lector de tarjetas RFID
Introducción
El presente proyecto consiste en la implementación de una puerta automática controlada
mediante tecnología RFID (Identificación por Radiofrecuencia), destinada a simular un
sistema de acceso utilizado en viviendas inteligentes. El sistema permite autorizar o
denegar el acceso mediante tarjetas RFID previamente registradas, mostrando mensajes
informativos en una pantalla LCD y accionando un servomotor que simula la apertura y
cierre de una puerta. Adicionalmente, incorpora un sensor de movimiento para el control
automático de la iluminación interior.
Para el desarrollo del proyecto se seleccionaron diversos componentes electrónicos, cada
uno con una función específica dentro del sistema.
Materiales empleados
• Arduino Nano ATmega328P.
• Módulo RFID RC522.
• Pantalla LCD 16×2 con interfaz I2C.
• Servomotor SG90.
• Sensor de movimiento PIR HC-SR501.
• LED de iluminación interior.
Descripción de los componentes
• Arduino Nano ATmega328P
El Arduino Nano es una placa de desarrollo basada en el microcontrolador ATmega328P,
encargada de ejecutar el programa que controla el funcionamiento general del sistema. Este
dispositivo recibe información de los sensores, procesa los datos obtenidos y genera las
señales necesarias para controlar los actuadores y dispositivos de salida.
La programación del Arduino se realiza principalmente en lenguaje C/C++, utilizando el
entorno de desarrollo Arduino IDE. Además, permite la incorporación de librerías
especializadas que facilitan la comunicación con diversos módulos electrónicos, reduciendo
la complejidad del desarrollo.
Puerta automática con módulo lector de tarjetas RFID
• Módulo RFID RC522
El RC522 es un módulo de identificación por radiofrecuencia (RFID) que opera a una
frecuencia de 13.56 MHz. Su función principal es leer y autenticar tarjetas o llaveros RFID
compatibles con el estándar ISO/IEC 14443 Tipo A.
En este proyecto, el módulo se utiliza para identificar a los usuarios autorizados.
Cuando una tarjeta registrada se aproxima al lector, el sistema verifica su código
único (UID) y, si coincide con alguno de los almacenados, permite la apertura de la
puerta.
• Pantalla LCD 16×2 con interfaz I2C
La pantalla LCD 16×2 permite visualizar información relacionada con el estado del sistema.
Su resolución de 16 columnas por 2 filas posibilita la presentación de hasta 32 caracteres
simultáneamente.
El módulo incorpora una interfaz I2C basada en el circuito integrado PCF8574, un expansor
de entradas y salidas digitales que reduce significativamente la cantidad de pines
necesarios para su conexión con el Arduino. Gracias a esta interfaz, únicamente se
requieren dos líneas de comunicación (SDA y SCL), además de la alimentación eléctrica.
La pantalla muestra mensajes como:
• "Bienvenido".
• "Puerta abierta".
• "Puerta cerrada".
• "Acceso denegado".
• Servomotor SG90
El servomotor SG90 es un actuador electromecánico capaz de posicionarse con precisión
en diferentes ángulos mediante señales PWM (Modulación por Ancho de Pulso).
En este proyecto, el servomotor simula el mecanismo de apertura y cierre de una
puerta. Cuando una tarjeta autorizada es detectada, el servo gira hasta una posición
determinada para representar la apertura de la puerta. Después de un tiempo
establecido, retorna a su posición inicial simulando el cierre.
Puerta automática con módulo lector de tarjetas RFID
• Sensor de movimiento PIR HC-SR501
El sensor PIR (Passive Infrared Receiver) HC-SR501 detecta movimiento mediante la
captación de variaciones en la radiación infrarroja emitida naturalmente por personas y
animales. A diferencia de otros sensores activos, el PIR no emite señales para detectar
objetos, sino que monitorea constantemente los cambios de temperatura dentro de su
campo de visión. Cuando detecta movimiento, genera una señal digital que puede ser
interpretada por el microcontrolador.
Dentro de este proyecto, el sensor se emplea para activar automáticamente la
iluminación interior al detectar la presencia de una persona dentro de la vivienda.
• LED de iluminación interior
El LED actúa como una representación del sistema de iluminación de la vivienda. Cuando
el sensor PIR detecta movimiento, el Arduino activa el LED simulando el encendido
automático de una lámpara o foco interior.
Este elemento permite visualizar de manera sencilla el funcionamiento del sistema
de detección de presencia implementado en el proyecto.
Tabla de conexiones.
CONEXIONES
DISPOSITIVO PIN PIN ARDUINO
SDA D10
SCK D13
MOSI D11
MISO D12
IRQ No se conecta
RC522
GND GND COMUN
RST D9
3.3V (NO a 5V
VCC porque si no se
quema)
VCC 5V
Servomotor GND GND COMUN
SEÑAL D3
VCC 5V
HC-SR501
GND GND COMUN
(PIR)
SEÑAL D2
VCC 5V
GND GND COMUN
LCD 16X2
SDA A4
SCL A5
Terminal más
LED D4
larga
Puerta automática con módulo lector de tarjetas RFID
Funcionamiento General del Sistema
El usuario acerca una tarjeta RFID al módulo RC522, el cual lee el identificador único (UID)
de la tarjeta y lo envía al Arduino Nano para su procesamiento. El microcontrolador compara
el UID leído con los registros almacenados en memoria. Si la tarjeta está autorizada, el
sistema muestra un mensaje de bienvenida en la pantalla LCD y acciona el servomotor para
abrir la puerta. En caso contrario, se muestra un mensaje de acceso denegado y la puerta
permanece cerrada.
De manera independiente, el sensor PIR monitorea continuamente la presencia de
personas dentro del área de detección. Cuando detecta movimiento, envía una señal al
Arduino Nano, el cual activa un LED que representa la iluminación interior de la vivienda.
Apéndice
CODIGO DE FUNCIONAMIENTO.
#include <SPI.h> //-------------------- LCD ----
#include <MFRC522.h> ----------------
#include <Servo.h> LiquidCrystal_I2C lcd(0x27, 16,
#include <Wire.h> 2);
#include <LiquidCrystal_I2C.h>
//============================
//-------------------- RFID --- =====================
----------------- // REEMPLAZA CON EL UID DE TU
#define SS_PIN 10 TARJETA
#define RST_PIN 9 //============================
=====================
MFRC522 rfid(SS_PIN, RST_PIN); byte tarjetaAutorizada[4] =
{0xBB, 0x29, 0x13, 0x00};
//-------------------- Servo -- //============================
------------------ =====================
Servo puerta;
#define SERVO_PIN 3 void setup()
{
//-------------------- PIR ---- [Link](9600);
----------------
#define PIR_PIN 2 [Link]();
rfid.PCD_Init();
//-------------------- LED ----
---------------- [Link](SERVO_PIN);
#define LED_PIN 4 [Link](0);
Puerta automática con módulo lector de tarjetas RFID
pinMode(PIR_PIN, INPUT); }
pinMode(LED_PIN, OUTPUT);
[Link]();
[Link]();
[Link](); if (tarjetaValida())
{
[Link](); accesoPermitido();
[Link](0, 0); }
[Link]("Sistema RFID"); else
{
[Link](0, 1); accesoDenegado();
[Link]("Puerta Cerrada"); }
delay(2000); rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
[Link](); }
[Link](0,0);
[Link]("Acerque tarjeta"); bool tarjetaValida()
} {
for (byte i = 0; i < 4; i++)
void loop() {
{ if ([Link][i] !=
controlarPIR(); tarjetaAutorizada[i])
{
if return false;
(!rfid.PICC_IsNewCardPresent() }
) }
return;
return true;
if }
(!rfid.PICC_ReadCardSerial())
return; void accesoPermitido()
{
[Link]("UID: "); [Link]();
for (byte i = 0; i < [Link](0,0);
[Link]; i++) [Link]("Bienvenido");
{
[Link]([Link] [Link](0,1);
yte[i], HEX); [Link]("Puerta Abierta");
[Link](" ");
Puerta automática con módulo lector de tarjetas RFID
[Link](90); [Link](0,1);
[Link]("Denegado");
delay(5000);
delay(3000);
[Link](0);
[Link]();
[Link]();
[Link](0,0);
[Link](0,0); [Link]("Acerque tarjeta");
[Link]("Puerta Cerrada"); }
delay(2000); void controlarPIR()
{
[Link](); if (digitalRead(PIR_PIN))
[Link]("Acerque tarjeta"); {
} digitalWrite(LED_PIN,
HIGH);
void accesoDenegado() }
{ else
[Link](); {
digitalWrite(LED_PIN, LOW);
[Link](0,0); }
[Link]("Acceso"); }