Proyecto de sistema de alarma y seguridad arduino.

¡Atención a todos los amantes de Arduino y la seguridad! En este artículo, exploraremos un emocionante proyecto de sistema de alarma y seguridad utilizando la popular plataforma de hardware libre, Arduino. Descubriremos cómo puedes crear un sistema de seguridad personalizado y efectivo para proteger tu hogar u oficina. ¡No te pierdas esta emocionante aventura tecnológica!

En este proyecto aprenderemos cómo construir un sistema de alarma y seguridad Arduino. Puede ver el vídeo a continuación o leer el tutorial escrito a continuación.

descripción general

La alarma se activará 10 segundos después de presionar el botón A. Para detectar objetos se utiliza un sensor ultrasónico. Tan pronto como la alarma detecte algo, sonará un timbre. Para detener la alarma necesitamos ingresar una contraseña de 4 dígitos. La contraseña por defecto es 1234, pero también tenemos la opción de cambiarla.

Proyecto de sistema de alarma y seguridad arduino.

Al>

Componentes necesarios

Ahora veamos los componentes necesarios para este proyecto. Por supuesto, necesitamos una placa Arduino, un sensor ultrasónico, una pantalla LCD, un timbre y un teclado 4×4.

Proyecto de sistema de alarma y seguridad arduino.

Puede>

  • Teclado …………………………………….. Amazon / Banggood / AliExpress
  • LCD 16×2 …………………………………. Amazon / Banggood / AliExpress
  • Sensor ultrasónico ……………………… Amazon / Banggood / AliExpress
  • Zumbador………………………………………………… Amazon / Banggood / AliExpress
  • Placa Arduino………………………….. Amazon / Banggood / AliExpress
  • Cables de puente y de placa de pruebas………… Amazon / Banggood / AliExpress

Divulgación: estos son enlaces de afiliados. Como asociado de Amazon, gano con compras que califican.

Diagramas de circuito del sistema de alarma Arduino


Aquí está el diagrama del circuito.

Proyecto de sistema de alarma y seguridad arduino.

Entonces,>

Proyecto de sistema de alarma y seguridad arduino.

Por>

En cuanto a los otros dos componentes de este proyecto, el sensor ultrasónico y la pantalla LCD, puedes consultar mis tutoriales detallados anteriores sobre cómo conectar y usar estos componentes.

Código fuente del sistema de alarma Arduino


A continuación, veamos el código Arduino. Dado que el código es un poco más largo, para una mejor comprensión publicaré el código fuente del programa en secciones con una descripción para cada sección. Y al final de este artículo publicaré el código fuente completo.

Por lo tanto, debemos incluir la biblioteca LiquidCrystal estándar para la pantalla LCD y la biblioteca de teclado, que debe instalarse adicionalmente. Luego necesitamos definir el zumbador y los pines del sensor ultrasónico, definir algunas variables necesarias para el programa, definir los botones del teclado y crear los dos objetos para el teclado y la pantalla LCD.

#include <LiquidCrystal.h> // includes the LiquidCrystal Library 
#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; // State of the alarm
boolean isActivated;
boolean activateAlarm = false;
boolean alarmActivated = false;
boolean enteredPassword; // State of the entered password to stop the alarm
boolean passChangeMode = false;
boolean passChanged = false;

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keypressed;
//define the cymbols on the buttons of the keypads
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}; //Row pinouts of the keypad
byte colPins[COLS] = {18, 19, 20, 21}; //Column pinouts of the keypad

Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, ROWS, COLS); 
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7) 

void setup() { 
  lcd.begin(16,2); 
  pinMode(buzzer, OUTPUT); // Set buzzer as an output
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
}Code language: Arduino (arduino)

En la sección de configuración, todo lo que tenemos que hacer es inicializar la pantalla LCD y definir los modos de pin para el zumbador y el sensor ultrasónico.

En la sección de bucle, primero comprobamos si la alarma está activada o no. Así, si la alarma no está activada, aparecerá en el LCD la pantalla de inicio del programa, que ofrece dos opciones: A para activar la alarma y B para cambiar la contraseña. Luego usamos la función myKeypad.getKey() para leer qué tecla se presionó en el teclado. Si es el botón A, el zumbador emitirá un pitido de 200 milisegundos y la variable enableAlarm se volverá verdadera.

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'){        //If A is pressed, activate the alarm
      tone(buzzer, 1000, 200);
      activateAlarm = true;            
    }Code language: Arduino (arduino)

En este caso, imprimimos el mensaje «La alarma se está activando en» en la pantalla LCD y usamos un bucle while para realizar una cuenta regresiva de 9 segundos antes de que se active la alarma. Luego aparece el mensaje “Alarma activada” y medimos la distancia inicial desde nuestro dispositivo de alarma a los objetos opuestos a él.

if (activateAlarm) {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Alarm will be");
    lcd.setCursor(0,1);
    lcd.print("activated in");
   
    int countdown = 9; // 9 seconds count down before activating the alarm
    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;
  }Code language: Arduino (arduino)

El siguiente paso es que el sensor ultrasónico compruebe constantemente si la distancia medida actualmente es menor que la distancia inicial corregida en un valor de 10 cm. Si esto es cierto, significa que ha aparecido un objeto delante del sensor y la alarma está activada. La función tune() activa el timbre y se llama a la función personalizada enterPassword().

if (alarmActivated == true){
      currentDistance = getDistance() + 10;
      if ( currentDistance < initialDistance) {
        tone(buzzer, 1000); // Send 1KHz sound signal 
        lcd.clear();
        enterPassword();
      }
    }Code language: Arduino (arduino)

Esta función personalizada dará un mensaje de que la alarma está activada y que debemos ingresar una contraseña para detener la alarma. Con el siguiente ciclo while, verificamos constantemente si presionamos una tecla en el teclado y cada pulsación de tecla se agrega a la variable tempPassword. Si ingresamos más de 4 dígitos o presionamos la tecla de cruz, los dígitos ingresados ​​anteriormente se eliminarán para que podamos volver a ingresarlos desde el principio.

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 == '1' || keypressed == '2' || keypressed == '3' ||
            keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' ||
            keypressed == '8' || keypressed == '9' ) {
          tempPassword += keypressed;
          lcd.setCursor(k,1);
          lcd.print("*");
          k++;
        }
      }
      if (k > 9 || keypressed == '#') {
        tempPassword = "";
        k=5;
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print(" *** ALARM *** ");
        lcd.setCursor(0,1);
        lcd.print("Pass>");
      }
      if ( keypressed == '*') {
        if ( tempPassword == password ) {
          activated = false;
          alarmActivated = false;
          noTone(buzzer);
          screenOffMsg = 0; 
        }
        else if (tempPassword != password) {
          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>");
        }
      }    
    }
}Code language: Arduino (arduino)

Si por el contrario pulsamos la tecla asterisco, comprobamos si la contraseña introducida actualmente coincide con la contraseña establecida originalmente. Si es cierto, la alarma se desactivará, el timbre dejará de sonar y volveremos a la pantalla de inicio. Sin embargo, si ingresamos una contraseña incorrecta, aparecerá el mensaje «¡Incorrecto!». ¡Inténtalo de nuevo!» y tenemos que volver a intentar introducir la contraseña correcta.

Para cambiar la contraseña utilizamos un método similar. Aquí primero tenemos que ingresar la contraseña actual para poder establecer una nueva contraseña.

else if (keypressed =='B') {
      lcd.clear();
      int i=1;
      tone(buzzer, 2000, 100);
      tempPassword = "";
      lcd.setCursor(0,0);
      lcd.print("Current Password");
      lcd.setCursor(0,1);
      lcd.print(">");
      passChangeMode = true;
      passChanged = true;   
      while(passChanged) {      
      keypressed = myKeypad.getKey();
      if (keypressed != NO_KEY){
        if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' ||
            keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' ||
            keypressed == '8' || keypressed == '9' ) {
         tempPassword += keypressed;
         lcd.setCursor(i,1);
         lcd.print("*");
         i++;
         tone(buzzer, 2000, 100);
        }
      }
      if (i > 5 || keypressed == '#') {
        tempPassword = "";
        i=1;
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("Current Password");
        lcd.setCursor(0,1);
        lcd.print(">"); 
      }
      if ( keypressed == '*') {
        i=1;
        tone(buzzer, 2000, 100);
        if (password == tempPassword) {
          tempPassword="";
          lcd.clear();
          lcd.setCursor(0,0);
          lcd.print("Set New Password");
          lcd.setCursor(0,1);
          lcd.print(">");
          while(passChangeMode) {
            keypressed = myKeypad.getKey();
            if (keypressed != NO_KEY){
              if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' ||
                  keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' ||
                  keypressed == '8' || keypressed == '9' ) {
                tempPassword += keypressed;
                lcd.setCursor(i,1);
                lcd.print("*");
                i++;
                tone(buzzer, 2000, 100);
              }
            }
            if (i > 5 || keypressed == '#') {
              tempPassword = "";
              i=1;
              tone(buzzer, 2000, 100);
              lcd.clear();
              lcd.setCursor(0,0);
              lcd.print("Set New Password");
              lcd.setCursor(0,1);
              lcd.print(">");
            }
            if ( keypressed == '*') {
              i=1;
              tone(buzzer, 2000, 100);
              password = tempPassword;
              passChangeMode = false;
              passChanged = false;
              screenOffMsg = 0;
            }            
          }
        }
      }
    }
   }Code language: Arduino (arduino)

Aquí está el código fuente completo del sistema de alarma Arduino:

/*
* Arduino Security and Alarm System
*
* by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
*/

#include <LiquidCrystal.h> // includes the LiquidCrystal Library 
#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; // State of the alarm
boolean isActivated;
boolean activateAlarm = false;
boolean alarmActivated = false;
boolean enteredPassword; // State of the entered password to stop the alarm
boolean passChangeMode = false;
boolean passChanged = false;

const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keypressed;
//define the cymbols on the buttons of the keypads
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}; //Row pinouts of the keypad
byte colPins[COLS] = {18, 19, 20, 21}; //Column pinouts of the keypad

Keypad myKeypad = Keypad( makeKeymap(keyMap), rowPins, colPins, ROWS, COLS); 
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7) 

void setup() { 
  lcd.begin(16,2); 
  pinMode(buzzer, OUTPUT); // Set buzzer as an output
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
}

void loop() {
  if (activateAlarm) {
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Alarm will be");
    lcd.setCursor(0,1);
    lcd.print("activated in");
   
    int countdown = 9; // 9 seconds count down before activating the alarm
    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;
  }

  if (alarmActivated == true){
      currentDistance = getDistance() + 10;
      if ( currentDistance < initialDistance) {
        tone(buzzer, 1000); // Send 1KHz sound signal 
        lcd.clear();
        enterPassword();
      }
    }

  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'){        //If A is pressed, activate the alarm
      tone(buzzer, 1000, 200);
      activateAlarm = true;            
    }
    else if (keypressed =='B') {
      lcd.clear();
      int i=1;
      tone(buzzer, 2000, 100);
      tempPassword = "";
      lcd.setCursor(0,0);
      lcd.print("Current Password");
      lcd.setCursor(0,1);
      lcd.print(">");
      passChangeMode = true;
      passChanged = true;   
      while(passChanged) {      
      keypressed = myKeypad.getKey();
      if (keypressed != NO_KEY){
        if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' ||
            keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' ||
            keypressed == '8' || keypressed == '9' ) {
         tempPassword += keypressed;
         lcd.setCursor(i,1);
         lcd.print("*");
         i++;
         tone(buzzer, 2000, 100);
        }
      }
      if (i > 5 || keypressed == '#') {
        tempPassword = "";
        i=1;
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print("Current Password");
        lcd.setCursor(0,1);
        lcd.print(">"); 
      }
      if ( keypressed == '*') {
        i=1;
        tone(buzzer, 2000, 100);
        if (password == tempPassword) {
          tempPassword="";
          lcd.clear();
          lcd.setCursor(0,0);
          lcd.print("Set New Password");
          lcd.setCursor(0,1);
          lcd.print(">");
          while(passChangeMode) {
            keypressed = myKeypad.getKey();
            if (keypressed != NO_KEY){
              if (keypressed == '0' || keypressed == '1' || keypressed == '2' || keypressed == '3' ||
                  keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' ||
                  keypressed == '8' || keypressed == '9' ) {
                tempPassword += keypressed;
                lcd.setCursor(i,1);
                lcd.print("*");
                i++;
                tone(buzzer, 2000, 100);
              }
            }
            if (i > 5 || keypressed == '#') {
              tempPassword = "";
              i=1;
              tone(buzzer, 2000, 100);
              lcd.clear();
              lcd.setCursor(0,0);
              lcd.print("Set New Password");
              lcd.setCursor(0,1);
              lcd.print(">");
            }
            if ( keypressed == '*') {
              i=1;
              tone(buzzer, 2000, 100);
              password = tempPassword;
              passChangeMode = false;
              passChanged = false;
              screenOffMsg = 0;
            }            
          }
        }
      }
    }
   }
 }
}

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 == '1' || keypressed == '2' || keypressed == '3' ||
            keypressed == '4' || keypressed == '5' || keypressed == '6' || keypressed == '7' ||
            keypressed == '8' || keypressed == '9' ) {
          tempPassword += keypressed;
          lcd.setCursor(k,1);
          lcd.print("*");
          k++;
        }
      }
      if (k > 9 || keypressed == '#') {
        tempPassword = "";
        k=5;
        lcd.clear();
        lcd.setCursor(0,0);
        lcd.print(" *** ALARM *** ");
        lcd.setCursor(0,1);
        lcd.print("Pass>");
      }
      if ( keypressed == '*') {
        if ( tempPassword == password ) {
          activated = false;
          alarmActivated = false;
          noTone(buzzer);
          screenOffMsg = 0; 
        }
        else if (tempPassword != password) {
          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>");
        }
      }    
    }
}
// Custom function for the Ultrasonic sensor
long getDistance(){
  //int i=10;
  
  //while( i<=10 ) {
  // Clears the trigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);

  // Sets the trigPin on HIGH state for 10 micro seconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);

  // Calculating the distance
  distance = duration*0.034/2;
  //sumDistance += distance;
  //}
  //int averageDistance= sumDistance/10;
  return distance;

}
Code language: Arduino (arduino)

Toques finales


Para completar el proyecto, utilicé una caja eléctrica de plástico en la que instalé todos los componentes y los conecté.

Proyecto de sistema de alarma y seguridad arduino.

Eso>

Categorías Proyectos
Error 403 The request cannot be completed because you have exceeded your quota. : quotaExceeded

Proyecto de Sistema de Alarma y Seguridad Arduino

En este proyecto aprenderemos cómo hacer un Sistema de Alarma y Seguridad utilizando Arduino. Puedes ver el siguiente video o leer el tutorial escrito a continuación.

Visión General

La alarma se activa en 10 segundos después de presionar el botón A. Para detectar objetos utiliza un sensor ultrasónico, y una vez que la alarma detecta algo, un zumbador comienza a emitir un sonido. Para detener la alarma necesitamos ingresar una contraseña de 4 dígitos. La contraseña preestablecida es 1234, pero también tenemos la posibilidad de cambiarla.

Componentes Requeridos

Veamos los componentes necesarios para este proyecto. Obviamente, necesitamos una placa Arduino, un sensor ultrasónico, una pantalla LCD, un zumbador y un teclado 4×4.

  1. Teclado …………………………………….. Amazon / Banggood / AliExpress
  2. Pantalla LCD 16×2 …………………………………. Amazon / Banggood / AliExpress
  3. Sensor Ultrasónico ……………………… Amazon / Banggood / AliExpress
  4. Zumbador ……………………………………… Amazon / Banggood / AliExpress
  5. Placa Arduino ………………………….. Amazon / Banggood / AliExpress
  6. Protoboard y Cables Puente ……… Amazon / Banggood / AliExpress

Esquemático del Circuito del Sistema de Alarma Arduino

Aquí está el esquemático del circuito.

Código Fuente del Sistema de Alarma Arduino

A continuación, veamos el código Arduino para este proyecto. Dado que el código es un poco largo, lo dividiré en secciones con descripciones para cada una. Al final de este artículo, compartiré el código fuente completo.

¡Espero que disfruten de este proyecto y siéntanse libres de hacer cualquier pregunta en la sección de comentarios a continuación!

4 comentarios en «Proyecto de sistema de alarma y seguridad arduino.»

  1. ¡Me parece una idea muy innovadora y útil! La tecnología de Arduino es muy versátil, y combinarla con seguridad para el hogar es genial. ¡Definitivamente me gustaría aprender más sobre este proyecto! ¡Gracias por la inspiración!

Deja un comentario