tutoriales.com

Control de Acceso Seguro con Arduino: Implementando un Sistema de Cerradura Electrónica RFID

Este tutorial te guiará paso a paso en la creación de un sistema de cerradura electrónica basado en tecnología RFID y Arduino. Explorarás los componentes necesarios, el montaje del circuito y la programación para implementar un control de acceso seguro y eficiente.

Intermedio15 min de lectura24 views12 de marzo de 2026Reportar error

Control de Acceso Seguro con Arduino: Implementando un Sistema de Cerradura Electrónica RFID 🔒

¿Alguna vez has soñado con tener un sistema de control de acceso avanzado en tu hogar u oficina? ¿Olvidarte de las llaves tradicionales y acceder con una simple tarjeta o llavero? ¡Estás en el lugar correcto! En este tutorial, te embarcarás en un emocionante viaje para construir tu propia cerradura electrónica inteligente utilizando Arduino y la versátil tecnología RFID.

La identificación por radiofrecuencia (RFID) es una tecnología fascinante que permite la comunicación inalámbrica a corta distancia entre un lector y una etiqueta. Combinada con la flexibilidad de Arduino, podemos crear soluciones de seguridad robustas y personalizadas, desde sistemas de acceso para habitaciones hasta prototipos para aplicaciones industriales. ¡Prepárate para darle un toque de futuro a tu seguridad!

🎯 Objetivos del Tutorial

Al finalizar este tutorial, serás capaz de:

  • Comprender los principios básicos de la tecnología RFID y cómo funciona con Arduino.
  • Identificar y conectar correctamente los componentes necesarios para el sistema.
  • Programar tu Arduino para leer etiquetas RFID y tomar decisiones de acceso.
  • Integrar un servo motor para simular el mecanismo de apertura/cierre de una cerradura.
  • Construir un prototipo funcional de un sistema de cerradura electrónica RFID.

🛠️ Materiales Necesarios

Para embarcarte en este proyecto, necesitarás los siguientes componentes:

ComponenteCantidadDescripciónPrecio EstimadoLink de Compra (Ejemplo)
Placa Arduino Uno (o similar)1El cerebro de nuestro proyecto.€10-€20Arduino Uno
Módulo Lector RFID RC5221Permite leer las etiquetas y tarjetas RFID. Incluye una tarjeta y un llavero.€5-€10RC522 Module
Servo Motor (SG90 o similar)1Simulará el mecanismo de la cerradura.€3-€5Servo SG90
Protoboard1Para realizar las conexiones sin soldar.€2-€5Protoboard
Cables Jumper (Macho-Macho y Macho-Hembra)1 setPara interconectar los componentes.€5-€10Cables Jumper
LED (verde y rojo)2Indicadores visuales de acceso.€1-€2LEDs
Resistencias (220 ohmios)2Para proteger los LEDs.€1-€2Resistencias
Fuente de Alimentación Externa (opcional)1Para proyectos más complejos o si el servo necesita más corriente.€5-€15Fuente DC
💡 Consejo: Es recomendable tener un kit básico de electrónica para Arduino, ya que muchos de estos componentes vienen incluidos y te serán útiles para futuros proyectos.

📖 Fundamentos de RFID

Antes de sumergirnos en el cableado y la programación, entendamos un poco más sobre la magia detrás de RFID.

RFID, o Radio-Frequency Identification, es una tecnología que utiliza ondas de radio para identificar objetos o personas. Un sistema RFID básico consta de tres componentes principales:

  1. Etiqueta RFID (Tag): Un pequeño dispositivo que contiene un microchip y una antena. Almacena un identificador único. Pueden ser pasivas (sin batería, se alimentan de la señal del lector) o activas (con batería, emiten su propia señal).
  2. Lector RFID (Reader): Un dispositivo que emite ondas de radio y recibe las señales de las etiquetas. Interpreta la información contenida en la etiqueta.
  3. Antena: Puede estar integrada en el lector o ser externa, y es la encargada de transmitir y recibir las señales de radio.

En nuestro caso, el módulo RC522 actuará como el lector, y las tarjetas o llaveros que vienen con él serán las etiquetas. Estos son típicamente etiquetas pasivas que operan en la frecuencia de 13.56 MHz.

📌 Nota: Cada etiqueta RFID tiene un **UID (Unique Identifier)**, que es una secuencia de bytes que la identifica de manera única. Este UID es lo que utilizaremos para conceder o denegar el acceso.

Aquí tienes un diagrama simplificado del flujo de comunicación RFID:

Lector RFID Etiqueta RFID Señal de Radio (13.56MHz) Arduino (Procesamiento) Datos Comando

--- 

## 🔌 Conexiones Eléctricas: El Cerebro del Sistema

¡Es hora de poner manos a la obra con el hardware! La conexión correcta de los componentes es crucial para el éxito de nuestro proyecto. Sigue este esquema detallado con atención.

### Módulo RFID RC522 a Arduino

El módulo RC522 se comunica con Arduino usando el protocolo SPI (Serial Peripheral Interface), que requiere varios pines específicos.

| Pin RC522 | Pin Arduino | Descripción                  |
| :-------- | :---------- | :--------------------------- |
| VCC       | 3.3V        | Alimentación (3.3V)          |
| RST       | Digital 9   | Reset (se puede cambiar)     |
| GND       | GND         | Tierra                       |
| MISO      | Digital 12  | Master In, Slave Out         |
| MOSI      | Digital 11  | Master Out, Slave In         |
| SCK       | Digital 13  | Serial Clock                 |
| SS (SDA)  | Digital 10  | Slave Select (se puede cambiar) |
| IRQ       | N/C         | No se usa en este proyecto   |

<div class="callout warning">⚠️ <strong>Advertencia:</strong> El módulo RC522 funciona a 3.3V. **NO** lo conectes directamente a 5V, ya que podrías dañarlo. Arduino Uno tiene un pin de 3.3V.</div>

### Servo Motor a Arduino

El servo motor es sencillo de conectar:

*   **Cable Marrón/Negro:** GND (Tierra) a GND de Arduino.
*   **Cable Rojo:** VCC (Alimentación) a 5V de Arduino.
*   **Cable Naranja/Amarillo:** Señal a un pin PWM de Arduino (por ejemplo, Digital 6).

### LEDs a Arduino

Los LEDs nos darán una indicación visual del estado del sistema (acceso concedido/denegado).

*   **LED Verde (Acceso Concedido):** Ánodo (pata larga) a Resistencia de 220Ω, luego al pin Digital 7 de Arduino. Cátodo (pata corta) a GND.
*   **LED Rojo (Acceso Denegado):** Ánodo (pata larga) a Resistencia de 220Ω, luego al pin Digital 8 de Arduino. Cátodo (pata corta) a GND.

<div class="callout tip">💡 <strong>Consejo:</strong> Asegúrate de usar las resistencias para proteger tus LEDs. Sin ellas, el exceso de corriente podría quemarlos.</div>

### Diagrama de Conexión (Esquemático)

Aquí tienes un diagrama visual que resume todas las conexiones:

```html
Arduino Uno 3.3V 5V GND GND RST DIO9 DIO10 (SS) DIO11 (MOSI) DIO12 (MISO) DIO13 (SCK) DIO6 (PWM) DIO7 DIO8 RC522 RFID VCC RST GND MISO MOSI SCK SS Servo SG90 GND VCC Signal LED Verde 220Ω LED Rojo 220Ω

--- 

## 💻 Programación Arduino: El Código de la Cerradura

Con el hardware conectado, es momento de darle vida a nuestro sistema con el código de Arduino. Necesitarás instalar una librería para el módulo RC522.

### 1. Instalación de Librerías

Para trabajar con el módulo RC522, utilizaremos la librería `MFRC522` de Miguel Balboa. Puedes instalarla fácilmente desde el **Administrador de Librerías** del IDE de Arduino:

1.  Abre el IDE de Arduino.
2.  Ve a `Programa` > `Incluir Librería` > `Administrar Librerías...`.
3.  En la barra de búsqueda, escribe `MFRC522`.
4.  Busca la librería `MFRC522` de Miguel Balboa e instálala.

También necesitarás la librería `Servo.h` que generalmente ya viene incluida con el IDE de Arduino. Si no la tienes, búscala de la misma manera.

### 2. Estructura del Código

El programa seguirá los siguientes pasos:

1.  **Incluir librerías:** Cargar `SPI.h`, `MFRC522.h` y `Servo.h`.
2.  **Definir pines:** Asignar los pines de Arduino a los componentes (RC522, Servo, LEDs).
3.  **Configurar RFID:** Inicializar el lector RFID.
4.  **Definir UIDs autorizados:** Almacenar los identificadores de las tarjetas que tendrán acceso.
5.  **Rutina de lectura:** Leer la tarjeta RFID cuando se presente.
6.  **Verificación de acceso:** Comparar el UID leído con los UIDs autorizados.
7.  **Control del servo y LEDs:** Activar el servo y los LEDs según el resultado de la verificación.

### 3. Código Completo

```cpp
#include <SPI.h>       // Librería para el protocolo SPI
#include <MFRC522.h>   // Librería para el módulo RC522
#include <Servo.h>     // Librería para controlar el servo motor

// Definición de pines para el módulo RC522
#define SS_PIN 10  // Pin SDA/SS del RC522 conectado al pin digital 10 de Arduino
#define RST_PIN 9  // Pin RST del RC522 conectado al pin digital 9 de Arduino

MFRC522 mfrc522(SS_PIN, RST_PIN); // Crear una instancia del objeto MFRC522

// Definición de pines para LEDs
const int ledVerde = 7; // LED para acceso concedido
const int ledRojo = 8;  // LED para acceso denegado

// Definición de pin para el servo motor
const int servoPin = 6;
Servo miServo; // Crear una instancia del objeto Servo

// UID de las tarjetas/llaveros autorizados
// Puedes añadir tantos UIDs como necesites en este array.
// Para obtener el UID de tu tarjeta, sube el código y desliza la tarjeta. El UID aparecerá en el Monitor Serie.
byte masterCard[4] = {0xDE, 0xAD, 0xBE, 0xEF}; // ¡REEMPLAZA ESTO CON EL UID DE TU TARJETA MAESTRA! 
// Ejemplo: byte masterCard[4] = {0xD3, 0x1F, 0x51, 0x7A}; 

// Si tienes múltiples tarjetas, puedes definirlas así:
// byte tarjeta2[4] = {0xXX, 0xXX, 0xXX, 0xXX};
// byte tarjeta3[4] = {0xYY, 0xYY, 0xYY, 0xYY};

void setup() {
  Serial.begin(9600); // Iniciar comunicación serial para depuración
  SPI.begin();        // Iniciar el bus SPI
  mfrc522.PCD_Init(); // Iniciar el módulo RC522

  Serial.println("Sistema de Cerradura RFID Iniciado");
  Serial.println("Acerca una tarjeta/llavero RFID...");

  // Configurar pines de los LEDs como SALIDA
  pinMode(ledVerde, OUTPUT);
  pinMode(ledRojo, OUTPUT);

  // Adjuntar el servo al pin y establecer la posición inicial (cerrado)
  miServo.attach(servoPin);
  cerrarCerradura(); // Asegúrate de que la cerradura esté cerrada al iniciar
}

void loop() {
  // Buscar nuevas tarjetas
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

  // Seleccionar una de las tarjetas
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }

  Serial.print("UID de la tarjeta leída: ");
  String uidLeido = "";
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    if (mfrc522.uid.uidByte[i] < 0x10) {
      Serial.print(" 0");
      uidLeido += "0";
    }
    Serial.print(mfrc522.uid.uidByte[i], HEX);
    uidLeido += String(mfrc522.uid.uidByte[i], HEX);
  }
  Serial.println();

  // Comparar el UID leído con las tarjetas autorizadas
  if (compareUIDs(mfrc522.uid.uidByte, masterCard)) {
    Serial.println("Acceso Concedido!");
    digitalWrite(ledVerde, HIGH);
    digitalWrite(ledRojo, LOW);
    abrirCerradura();
    delay(3000); // La puerta permanece abierta por 3 segundos
    cerrarCerradura();
    digitalWrite(ledVerde, LOW);
  } else {
    Serial.println("Acceso Denegado.");
    digitalWrite(ledRojo, HIGH);
    digitalWrite(ledVerde, LOW);
    delay(1000); // El LED rojo se enciende por 1 segundo
    digitalWrite(ledRojo, LOW);
  }

  mfrc522.PICC_HaltA();      // Detener la comunicación con la tarjeta actual
  mfrc522.PCD_StopCrypto1(); // Detener el cifrado en el PCD
}

// Función para comparar dos UIDs
bool compareUIDs(byte* uid1, byte* uid2) {
  for (byte i = 0; i < 4; i++) {
    if (uid1[i] != uid2[i]) {
      return false;
    }
  }
  return true;
}

// Funciones para controlar el servo motor
void abrirCerradura() {
  // Ajusta este valor según la posición de "abierto" de tu servo
  // Prueba con valores entre 0 y 180
  miServo.write(90); // Posición para abrir (ejemplo: 90 grados)
  Serial.println("Cerradura Abierta");
}

void cerrarCerradura() {
  // Ajusta este valor según la posición de "cerrado" de tu servo
  // Prueba con valores entre 0 y 180
  miServo.write(0); // Posición para cerrar (ejemplo: 0 grados)
  Serial.println("Cerradura Cerrada");
}
🔥 Importante: Debes reemplazar el UID de `masterCard` con el UID real de una de tus tarjetas RFID. Para encontrar el UID, sube el código a tu Arduino, abre el **Monitor Serie** (Herramientas > Monitor Serie) y acerca una tarjeta al lector. El UID se mostrará en el monitor. Anótalo y actualiza el código.

4. Cómo encontrar el UID de tu tarjeta

  1. Sube el código anterior a tu placa Arduino.
  2. Abre el Monitor Serie en el IDE de Arduino (icono de lupa en la esquina superior derecha o Herramientas > Monitor Serie).
  3. Asegúrate de que la velocidad de baudios esté configurada a 9600.
  4. Acerca tu tarjeta o llavero RFID al módulo RC522.
  5. Verás algo como UID de la tarjeta leída: D3 1F 51 7A en el Monitor Serie. Estos son los bytes hexadecimales que necesitas. Anótalos y úsalos para actualizar la línea byte masterCard[4] = {0xDE, 0xAD, 0xBE, 0xEF}; en tu código.

✅ Montaje y Prueba Final

Una vez que hayas cargado el código con tu UID personalizado, es hora de probar el sistema.

Pasos para la Prueba:

  1. Asegúrate de que todas las conexiones sean correctas y estén firmes.
  2. Abre el Monitor Serie en el IDE de Arduino.
  3. Verifica que el servo motor esté en una posición de

Tutoriales relacionados

Comentarios (0)

Aún no hay comentarios. ¡Sé el primero!