Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Cerradura sin llave segura basada en Arduino con pantalla LCD y teclado 4x4

Componentes y suministros

Arduino UNO 1
Teclado matriz 4x4 compatible con LED (SparkFun Button Pad) 1
Pantalla LCD estándar 16x2 Blanco sobre Azul (Adafruit) 1
Relé (genérico) 1
Batería 9V (genérica) 1
Potenciómetro monovuelta 10 kΩ 1
Resistencia 10 kΩ 1

Aplicaciones y servicios en línea

Sobre el proyecto

Sistema de cerradura sin llave Arduino con teclado y LCD

Por Ali Hamza

En este proyecto, vamos a hacer un sistema de cerradura sin llave que usa un teclado 4x4 para introducir la contraseña y una cerradura DC para abrir o cerrar la puerta. Se usará una pantalla LCD 16x2 para visualización.

Componentes requeridos

¿Cómo funciona?

Cada vez que se presionan teclas, se comparan con la contraseña ya almacenada. Si las teclas presionadas coinciden con la contraseña inicial guardada en la EEPROM ('1234'), la cerradura se abre. Si la contraseña no coincide, se muestra "acceso denegado" en el LCD.

Si se pulsa la tecla '#', se pedirá introducir la contraseña actual y, si coincide, se pedirá la nueva contraseña y esta se cambiará.

Diagrama de circuito

Primero, conecta el teclado 4x4 al Arduino: conecta los primeros seis pines del teclado con los pines A0 a A5 del Arduino. Luego conecta los dos últimos pines del módulo teclado a los pines digitales 3 y 2 del Arduino.

Después, conecta el LCD al Arduino. Las conexiones son:

Por último, conectamos la cerradura DC con Arduino. La cerradura funciona a 7-12V, así que no podemos conectarla directamente al Arduino. Necesitamos un relé y una batería.

Conecta el pin de señal del relé al pin 10 Arduino y el VCC y GND de la cerradura a 5V y GND Arduino. En el otro lado del relé, conecta el negativo de la batería al común del relé y el NO (Normalmente abierto) a un lado de la cerradura. Luego conecta el otro lado de la cerradura al positivo de la batería.

Cerradura sin llave segura basada en Arduino con pantalla LCD y teclado 4x4

Código Arduino para cerradura con teclado

La contraseña inicial es 1234.

#include 
#include 
#include 

LiquidCrystal liquid_crystal_display(9,8,7,6,5,4);
char password[4];
char initial_password[4], new_password[4];
int i = 0;
int relay_pin = 10;
char key_pressed = 0;
const byte rows = 4;
const byte columns = 4;

char hexaKeys[rows][columns] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte row_pins[rows] = {A0, A1, A2, A3};
byte column_pins[columns] = {A4, A5, 3, 2};

Keypad keypad_key = Keypad(makeKeymap(hexaKeys), row_pins, column_pins, rows, columns);

void setup() {
  pinMode(relay_pin, OUTPUT);
  liquid_crystal_display.begin(16,2);
  liquid_crystal_display.print(" DIYhacking.com");
  liquid_crystal_display.setCursor(0,1);
  liquid_crystal_display.print("Electronic Lock ");
  delay(2000);
  liquid_crystal_display.clear();
  liquid_crystal_display.print("Enter Password");
  liquid_crystal_display.setCursor(0,1);
  initialpassword();
}

void loop() {
  digitalWrite(relay_pin, HIGH);
  key_pressed = keypad_key.getKey();
  if(key_pressed == '#') change();
  
  if (key_pressed) {
    password[i++] = key_pressed;
    liquid_crystal_display.print(key_pressed);
  }
  
  if(i == 4) {
    delay(200);
    for(int j = 0; j < 4; j++)
      initial_password[j] = EEPROM.read(j);
    
    if(!(strncmp(password, initial_password, 4))) {
      liquid_crystal_display.clear();
      liquid_crystal_display.print("Pass Accepted");
      digitalWrite(relay_pin, LOW);
      delay(2000);
      liquid_crystal_display.setCursor(0,1);
      liquid_crystal_display.print("Pres # to change");
      delay(2000);
      liquid_crystal_display.clear();
      liquid_crystal_display.print("Enter Password:");
      liquid_crystal_display.setCursor(0,1);
      i = 0;
    } else {
      digitalWrite(relay_pin, HIGH);
      liquid_crystal_display.clear();
      liquid_crystal_display.print("Wrong Password");
      liquid_crystal_display.setCursor(0,1);
      liquid_crystal_display.print("Pres # to Change");
      delay(2000);
      liquid_crystal_display.clear();
      liquid_crystal_display.print("Enter Password");
      liquid_crystal_display.setCursor(0,1);
      i = 0;
    }
  }
}

void change() {
  int j = 0;
  liquid_crystal_display.clear();
  liquid_crystal_display.print("Current Password");
  liquid_crystal_display.setCursor(0,1);
  
  while(j < 4) {
    char key = keypad_key.getKey();
    if(key) {
      new_password[j++] = key;
      liquid_crystal_display.print(key);
    }
    key = 0;
  }
  delay(500);
  
  if((strncmp(new_password, initial_password, 4))) {
    liquid_crystal_display.clear();
    liquid_crystal_display.print("Wrong Password");
    liquid_crystal_display.setCursor(0,1);
    liquid_crystal_display.print("Try Again");
    delay(1000);
  } else {
    j = 0;
    liquid_crystal_display.clear();
    liquid_crystal_display.print("New Password:");
    liquid_crystal_display.setCursor(0,1);
    while(j < 4) {
      char key = keypad_key.getKey();
      if(key) {
        initial_password[j] = key;
        liquid_crystal_display.print(key);
        EEPROM.write(j, key);
        j++;
      }
    }
    liquid_crystal_display.print("Pass Changed");
    delay(1000);
  }
  
  liquid_crystal_display.clear();
  liquid_crystal_display.print("Enter Password");
  liquid_crystal_display.setCursor(0,1);
  key_pressed = 0;
}

void initialpassword() {
  for(int j = 0; j < 4; j++)
    EEPROM.write(j, j + 49); // '1','2','3','4'
  for(int j = 0; j < 4; j++)
    initial_password[j] = EEPROM.read(j);
}

Explicación del código

Primero incluimos las librerías para teclado 4x4, LCD y almacenamiento de contraseña. La librería EEPROM guarda la contraseña. La contraseña por defecto es '1234'.

#include 
#include 
#include 

En la función loop, la tecla pulsada se guarda en 'key_pressed' y se compara. Si es '#', se llama a la función change() para cambiar contraseña.

key_pressed = keypad_key.getKey();
if(key_pressed == '#') change();

Las teclas pulsadas se almacenan en 'password' y se muestran en el LCD. Luego se comparan con la contraseña inicial en EEPROM. Si coinciden, la cerradura se abre y se muestra "Pass Accepted". Si no, pide volver a introducir la contraseña.

if (key_pressed) {
  password[i++] = key_pressed;
  liquid_crystal_display.print(key_pressed);
}
if(i == 4) {
  delay(200);
  for(int j = 0; j < 4; j++)
    initial_password[j] = EEPROM.read(j);
  if(!(strncmp(password, initial_password, 4))) {
    liquid_crystal_display.clear();
    liquid_crystal_display.print("Pass Accepted");
    digitalWrite(relay_pin, LOW);
    delay(2000);
    // ...
  }
}

Si se pulsa '#', se llama a change(). En esta función, pide la contraseña actual. Si es correcta, pide la nueva y la guarda en EEPROM.

void change() {
  int j = 0;
  liquid_crystal_display.clear();
  liquid_crystal_display.print("Current Password");
  liquid_crystal_display.setCursor(0,1);
  while(j < 4) {
    char key = keypad_key.getKey();
    if(key) {
      new_password[j++] = key;
      liquid_crystal_display.print(key);
    }
    key = 0;
  }
  delay(500);
  // ... (resto de la función)
}

Etiquetas: Teclado 4x4, Arduino, Cerradura DC, Cerradura, Teclado, LCD, Lock

Esquemáticos

Usa un Arduino para controlar una cerradura de solenoide que se abre con la combinación correcta de teclas.
Cerradura sin llave segura basada en Arduino con pantalla LCD y teclado 4x4

Proceso de manufactura

  1. Construye un Juego Giroscópico en Tiempo Real con Arduino Nano y Sensor MPU-6050
  2. Sistema de Asistencia RFID Fiable con Arduino y Python
  3. Proyecto Sensor DHT11 Temperatura y Humedad con Indicadores LED y Altavoz Piezo
  4. Crea Animaciones y Juegos en LCD 16×2 con Arduino UNO
  5. Unopad: Controlador MIDI Arduino para Ableton Live sin complicaciones
  6. Registrador de Temperatura y Humedad con Arduino, DHT11 y Ethernet Shield
  7. Sensor de obstáculos IR casero con Arduino – Tutorial fácil con LED IR y fotodiodo
  8. Construye un Cubo LED 4x4x4 con Arduino Uno y 1Sheeld – Proyecto LED Interactivo
  9. Tacómetro Arduino de Alta Velocidad – Algoritmo "Single-Shot" para RPM Preciso
  10. Sistema de control de asistencia RFID en tiempo real con Arduino y Google Sheets
  11. Cerradura Inteligente Sin Llave: Arduino y Android con Bluetooth y Contraseña