Construye un Sistema de Seguridad y Alarma con Arduino: Tutorial Paso a Paso
En este proyecto aprenderemos a hacer un Sistema de Seguridad y Alarma con Arduino. Ver video o leer tutorial abajo. La alarma se activa 10 segundos tras pulsar botón A. Detecta objetos con sensor ultrasónico; si detecta algo, buzzer suena. Para parar: introducir contraseña 4 dígitos. Contraseña por defecto: 1234, pero se puede cambiar. Botón B: menú cambio contraseña. Primero pide contraseña actual, luego nueva de 4 dígitos. Tras cambiar, alarma solo se desactiva con nueva contraseña. Si fallas: "Wrong! Try Again". Arduino, sensor ultrasónico, LCD, buzzer, keypad 4×4. Buzzer: 1 pin PWM. Keypad 4×4: 8 pines (4 filas, 4 columnas). Cada botón = pulsador que cierra fila-columna. Ejemplo: fila 1 LOW, columnas HIGH → pulsar '3' → columna 3 LOW → detectado. Ultrasónico y LCD: ver mis tutoriales detallados previos. Código en secciones para mejor entendimiento. Completo al final. Librerías: LiquidCrystal (estándar) y Keypad (instalar adicional). Definir pines buzzer, ultrasónico, variables, teclas keypad, objetos keypad y LCD. Setup: solo inicializar LCD y pines buzzer/ultrasónico. Loop: comprobamos si alarma activada. Si no: pantalla inicio con opciones A (activar) y B (cambiar pass). Si Si Cambio contraseña (tecla 'B'): similar. Primero pide contraseña actual. Si correcta → "Set New Password" → guarda nueva en Caja eléctrica plástica para meter todos los componentes y conectarlos. ¡Eso es todo! Espero que disfrutaras el proyecto. Preguntas en comentarios.Resumen

Componentes Necesarios

Esquema de Circuito Alarma Arduino


Código Fuente Alarma Arduino
#include <LiquidCrystal.h> #include <Keypad.h>
#define buzzer 8 #define trigPin 9 #define echoPin 10
long duration; int distance, initialDistance, currentDistance, i;
int screenOffMsg = 0;
String password = "1234"; String tempPassword;
boolean activated = false, isActivated, activateAlarm = false;
boolean alarmActivated = false, enteredPassword;
boolean passChangeMode = false, passChanged = false;
const byte ROWS = 4, COLS = 4;
char keypressed;
char keyMap[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {14, 15, 16, 17};
byte colPins[COLS] = {18, 19, 20, 21};
Keypad myKeypad = Keypad(makeKeymap(keyMap), rowPins, colPins, ROWS, COLS);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7);
void setup() {
lcd.begin(16,2);
pinMode(buzzer, OUTPUT);
pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT);
}myKeypad.getKey() lee tecla. Si 'A': beep 200ms, activateAlarm = true.if (!alarmActivated) {
if (screenOffMsg == 0) {
lcd.clear(); lcd.setCursor(0,0); lcd.print("A - Activate");
lcd.setCursor(0,1); lcd.print("B - Change Pass");
screenOffMsg = 1;
}
keypressed = myKeypad.getKey();
if (keypressed == 'A') {
tone(buzzer, 1000, 200); activateAlarm = true;
}
}activateAlarm: cuenta regresiva 9 seg en LCD, beep cada segundo. Luego "Alarm Activated!", mide distancia inicial, flags activados.if (activateAlarm) {
lcd.clear(); lcd.setCursor(0,0); lcd.print("Alarm will be");
lcd.setCursor(0,1); lcd.print("activated in");
int countdown = 9;
while (countdown != 0) {
lcd.setCursor(13,1); lcd.print(countdown);
countdown--; tone(buzzer, 700, 100); delay(1000);
}
lcd.clear(); lcd.setCursor(0,0); lcd.print("Alarm Activated!");
initialDistance = getDistance();
activateAlarm = false; alarmActivated = true;
}alarmActivated: ultrasónico mide continuamente. Si distancia actual + 10cm < distancia inicial → objeto detectado → buzzer 1kHz + enterPassword().if (alarmActivated) {
currentDistance = getDistance() + 10;
if (currentDistance < initialDistance) {
tone(buzzer, 1000); lcd.clear(); enterPassword();
}
}enterPassword(): imprime "*** ALARM ***" y "Pass>". Bucle while lee teclas, acumula en tempPassword (muestra *). >4 dígitos o '#' → limpia. '*' → compara con password. Si igual: desactiva alarma, para buzzer, vuelve a inicio. Si distinta: "Wrong! Try Again" 2seg, reintenta.void enterPassword() {
int k=5; tempPassword=""; activated=true;
lcd.clear(); lcd.setCursor(0,0); lcd.print(" *** ALARM *** ");
lcd.setCursor(0,1); lcd.print("Pass>");
while(activated) {
keypressed = myKeypad.getKey();
if (keypressed != NO_KEY) {
if (keypressed >= '0' && keypressed <= '9') {
tempPassword += keypressed; lcd.setCursor(k,1); lcd.print("*"); k++;
}
}
if (k > 9 || keypressed == '#') { /* reset */ }
if (keypressed == '*') {
if (tempPassword == password) {
activated = false; alarmActivated = false; noTone(buzzer); screenOffMsg = 0;
} else {
lcd.setCursor(0,1); lcd.print("Wrong! Try Again"); delay(2000);
lcd.clear(); lcd.setCursor(0,0); lcd.print(" *** ALARM *** ");
lcd.setCursor(0,1); lcd.print("Pass>");
}
}
}
}password.else if (keypressed == 'B') { /* ... lógica cambio pass ... */ }Código Completo del Sistema Alarma Arduino
/* Arduino Security and Alarm System by Dejan Nedelkovski, www.HowToMechatronics.com */
#include <LiquidCrystal.h> #include <Keypad.h>
#define buzzer 8 #define trigPin 9 #define echoPin 10
// ... variables ...
void setup() { /* ... */ }
void loop() { /* ... lógica completa: activateAlarm, alarmActivated, enterPassword, cambio pass ... */ }
void enterPassword() { /* ... */ }
long getDistance() {
digitalWrite(trigPin, LOW); delayMicroseconds(2);
digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
return distance;
}Toque Final

Proceso de manufactura
- Sistema de Asistencia RFID Fiable con Arduino y Python
- Crea Animaciones y Juegos en LCD 16×2 con Arduino UNO
- SERENA: Sistema de Alarma Personalizado Arduino Mega 2560 con Pantalla TFT LCD Táctil
- Evaluación de seguridad de sistemas de alarma con Arduino y módulos RF 433 MHz
- Detector de frecuencia de audio con Arduino – Mide los picos de sonido más intensos
- Construye un sistema de automatización y seguridad del hogar inteligente con 1Sheeld
- Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
- Construye un voltímetro DIY con Arduino y pantalla Nokia 5110 – Guía paso a paso
- Construye un Temporizador Regresivo Fiable con Arduino y Pantalla de 7 Segmentos SparkFun
- Sistema de Ventilación Inteligente para Sótanos: Control de Humedad con Arduino
- Control Arduino UNO desde Python 3 – Envío de Comandos y Demo LED