Este proyecto tiene como objetivo crear una alarma sencilla que se activa cuando una puerta se abre. Utilizaremos un sensor magnético de puerta para detectar el estado de la puerta y un buzzer para emitir una alarma sonora. Opcionalmente, un LED también se encenderá para indicar visualmente que la alarma está activa. Este sistema es ideal para alertar sobre la apertura de una puerta en lugares como casas, oficinas o almacenes.
¿Qué podés hacer con este sistema?
- Detectar Aperturas de Puerta: El sistema usa un sensor magnético para monitorear si la puerta está abierta o cerrada.
- Activar Alarma Sonora: Cuando se detecta que la puerta está abierta, el buzzer emite un sonido fuerte para alertar sobre el acceso no autorizado.
- Notificaciones Remotas (Opcional): Si se integra un módulo de comunicación, como un GSM o Wi-Fi, puedes recibir alertas en tu teléfono móvil o enviar notificaciones por correo electrónico.
Materiales necesarios:
- Arduino Uno
- Sensor de puerta (Interruptor magnético o reed switch)
- Buzzer o sirena de 5V
- Resistencia de 10k ohmios
- LED (opcional para indicación visual)
- Módulo de comunicación (como un módulo GSM o Wi-Fi, opcional)
- Cables y protoboard
- Fuente de alimentación para el Arduino
Código Ejemplo para Arduino:
const int sensorPin = 2; // Pin al que está conectado el sensor
const int buzzerPin = 8; // Pin al que está conectado el buzzer
const int ledPin = 13; // Pin al que está conectado el LED (opcional)
void setup() {
pinMode(sensorPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
void loop() {
int sensorState = digitalRead(sensorPin);
if (sensorState == HIGH) {
digitalWrite(buzzerPin, HIGH); // Activar alarma
digitalWrite(ledPin, HIGH); // Encender LED (opcional)
Serial.println(“¡Puerta abierta!”);
} else {
digitalWrite(buzzerPin, LOW); // Desactivar alarma
digitalWrite(ledPin, LOW); // Apagar LED (opcional)
Serial.println(“Puerta cerrada.”);
}
delay(100);
}
Paso 1: Añadir un Módulo de Comunicación (Notificaciones Remotas)
- Componente: Módulo GSM (como SIM900) o módulo Wi-Fi (como ESP8266).
- Funcionalidad: Recibir alertas SMS o notificaciones por correo electrónico cuando se activa la alarma.
- Código Adicional: Añadir comandos AT para enviar mensajes SMS con el módulo GSM.
Paso 2: Incorporar una Pantalla LCD para Información
- Componente: Pantalla LCD 16×2 o 20×4 con I2C.
- Funcionalidad: Mostrar mensajes como “Puerta Cerrada”, “Puerta Abierta”, “Alarma Activa”, etc.
- Código Adicional: Implementar librerías como LiquidCrystal_I2C para controlar la pantalla.
Paso 3: Añadir un Teclado Matricial para Activar/Desactivar la Alarma
- Componente: Teclado matricial 4×4.
- Funcionalidad: Usar un código PIN para armar o desarmar la alarma.
- Código Adicional: Integrar la librería Keypad y lógica para manejar el PIN.
Paso 4: Implementar un Sensor PIR para Detectar Movimiento
- Componente: Sensor PIR (sensor de movimiento).
- Funcionalidad: Activar la alarma si se detecta movimiento, incluso si la puerta no se abre.
- Código Adicional: Lógica para leer el sensor PIR y activar la alarma en consecuencia.
Paso 5: Agregar un Registro de Eventos en una Tarjeta SD
- Componente: Módulo lector de tarjetas SD.
- Funcionalidad: Registrar cada evento (puerta abierta, alarma activada) en una tarjeta SD.
- Código Adicional: Uso de la librería SD para manejar archivos en la tarjeta SD.
Paso 6: Optimización del Código
- Debouncing para el Sensor de Puerta: Usar debouncing para evitar falsas alarmas por ruido eléctrico.
- Modo Sleep: Implementar modos de ahorro de energía cuando no se detecte actividad.
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <SoftwareSerial.h>
// Definiciones para componentes
const int sensorPin = 2;
const int buzzerPin = 8;
const int pirPin = 7; // Sensor PIR
const int sdCardPin = 10; // Módulo SD (pin CS)
LiquidCrystal_I2C lcd(0x27, 16, 2);
SoftwareSerial gsmSerial(9, 10); // Pines para el módulo GSM
// Definiciones para el teclado matricial
const byte rows = 4;
const byte cols = 4;
char keys[rows][cols] = {
{‘1′,’2′,’3′,’A’},
{‘4′,’5′,’6′,’B’},
{‘7′,’8′,’9′,’C’},
{‘*’,’0′,’#’,’D’}
};
byte rowPins[rows] = {9, 8, 7, 6};
byte colPins[cols] = {5, 4, 3, 2};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, rows, cols);
// Variables de estado
bool alarmArmed = false;
String inputCode = “”;
void setup() {
pinMode(sensorPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(pirPin, INPUT);
lcd.begin();
gsmSerial.begin(9600); // Configuración para el módulo GSM
Serial.begin(9600);
lcd.print(“Sistema de Alarma”);
delay(2000);
}
void loop() {
char key = keypad.getKey();
if (key) {
if (key == ‘#’) {
if (inputCode == “1234”) {
alarmArmed = !alarmArmed;
lcd.clear();
lcd.print(alarmArmed ? “Alarma Armado” : “Alarma Desarmado”);
}
inputCode = “”;
} else {
inputCode += key;
}
}
if (alarmArmed) {
int sensorState = digitalRead(sensorPin);
int pirState = digitalRead(pirPin);
if (sensorState == HIGH || pirState == HIGH) {
digitalWrite(buzzerPin, HIGH);
lcd.clear();
lcd.print(“ALERTA! Puerta/PIR”);
gsmSerial.println(“AT+CMGF=1”);
delay(100);
gsmSerial.println(“AT+CMGS=\”+1234567890\””);
delay(100);
gsmSerial.print(“Alarma activada!”);
gsmSerial.write(26); // Enviar mensaje
} else {
digitalWrite(buzzerPin, LOW);
lcd.clear();
lcd.print(“Sistema Normal”);
}
}
}
Encontrá en nuestra web todo lo que buscás para tus proyectos, desde componentes hasta kits completos. ¡Conseguí lo necesario para transformar tus ideas en realidad!
No te pierdas nuestras próximas notas, donde vamos a presentar otros proyectos Arduino innovadores. ¡Seguí nuestras publicaciones y descubrí nuevas ideas cada semana!
Hasta la próxima.
