Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Construire un système alarme Arduino : tutoriel étape par étape

Présentation

Projet : système alarme et sécurité Arduino. Activation 10 s après appui bouton A. Détection : capteur ultrason. Déclenchement : buzzer. Arrêt : mot de passe 4 chiffres (défaut 1234, modifiable).

Vidéo ou tutoriel écrit.

Fonctionnement

Activation : Bouton A → bip 200 ms → compte à rebours 9 s → "Alarm Activated!" → mesure distance initiale.

Détection : Ultrason continu. Si distance actuelle + 10 cm < distance initiale → objet détecté → buzzer 1 kHz continu + demande mot de passe.

Désactivation : Saisie 4 chiffres + bouton * (valider). Bon mot de passe → arrêt buzzer, retour écran d'accueil. Mauvais → "Wrong! Try Again" 2 s → réessayer.

Changement mot de passe : Bouton B → saisie mot de passe actuel → si OK → saisie nouveau (4 chiffres) + * → confirmation → retour accueil.

Construire un système alarme Arduino : tutoriel étape par étape

Composants requis

Construire un système alarme Arduino : tutoriel étape par étape

Schéma de câblage


Construire un système alarme Arduino : tutoriel étape par étape

Buzzer : 1 pin PWM. Keypad 4×4 : 8 pins (4 lignes, 4 colonnes). Principe : ligne mise à LOW, colonnes HIGH → appui crée court-circuit → colonne passe LOW. Exemple : ligne 1 LOW, appui '3' → colonne 3 LOW.

Construire un système alarme Arduino : tutoriel étape par étape

Ultrason et LCD : voir tutos détaillés précédents.

Code source Arduino


Librairies : LiquidCrystal.h (standard), Keypad.h (à installer).

Déclarations & Setup

#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;
boolean activateAlarm = false;
boolean alarmActivated = false;
boolean passChangeMode = false;
boolean passChanged = false;

const byte ROWS = 4, COLS = 4;
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); // rs, en, d4, d5, d6, d7

void setup() {
  lcd.begin(16,2);
  pinMode(buzzer, OUTPUT);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

Boucle principale

void loop() {
  // 1. Séquence activation (déclenchée par activateAlarm=true)
  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;
  }
  
  // 2. Surveillance intrusion (si alarme active)
  if (alarmActivated) {
    currentDistance = getDistance() + 10; // Marge 10 cm
    if (currentDistance < initialDistance) {
      tone(buzzer, 1000); // 1 kHz continu
      lcd.clear();
      enterPassword(); // Demande mot de passe
    }
  }
  
  // 3. Écran d'accueil (alarme inactive)
  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;
    }
    char keypressed = myKeypad.getKey();
    if (keypressed == 'A') { tone(buzzer, 1000, 200); activateAlarm = true; }
    else if (keypressed == 'B') { changePassword(); }
  }
}

Fonction enterPassword()

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) {
    char keypressed = myKeypad.getKey();
    if (keypressed != NO_KEY) {
      // Chiffres 0-9
      if (keypressed >= '0' && keypressed <= '9') {
        tempPassword += keypressed;
        lcd.setCursor(k,1); lcd.print("*");
        k++;
      }
    }
    // Reset si >4 chiffres ou #
    if (k > 9 || keypressed == '#') {
      tempPassword = ""; k = 5;
      lcd.clear(); lcd.setCursor(0,0); lcd.print(" *** ALARM *** ");
      lcd.setCursor(0,1); lcd.print("Pass>");
    }
    // Validation *
    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>");
      }
    }
  }
}

Fonction changePassword()

void changePassword() {
  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) {
    char keypressed = myKeypad.getKey();
    if (keypressed != NO_KEY) {
      if (keypressed >= '0' && keypressed <= '9') {
        tempPassword += keypressed;
        lcd.setCursor(i,1); lcd.print("*"); i++;
        tone(buzzer, 2000, 100);
      }
    }
    if (i > 5 || keypressed == '#') { /* reset saisie */ }
    if (keypressed == '*') {
      if (password == tempPassword) { // Ancien OK
        tempPassword = ""; i = 1;
        lcd.clear(); lcd.setCursor(0,0); lcd.print("Set New Password");
        lcd.setCursor(0,1); lcd.print(">");
        while (passChangeMode) { /* saisie nouveau mot de passe, même logique */ }
      }
    }
  }
}

Fonction getDistance() - Ultrason

long getDistance() {
  digitalWrite(trigPin, LOW); delayMicroseconds(2);
  digitalWrite(trigPin, HIGH); delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = duration * 0.034 / 2; // cm
  return distance;
}

Code complet

Disponible ici (toutes fonctions intégrées).

Finitions


Boîtier : boîte électrique plastique, tous composants intégrés et câblés.

Construire un système alarme Arduino : tutoriel étape par étape

Projet terminé ! Questions en commentaires.

Processus de fabrication

  1. Système de pointage RFID fiable avec Arduino et Python (base de données phpMyAdmin)
  2. Créer des animations et jeux sur LCD avec Arduino UNO
  3. SERENA : Système d'Alarme Arduino Mega 2560 Personnalisé avec Écran Tactile TFT LCD
  4. Évaluer la sécurité d'un système d'alarme avec Arduino et modules RF 433 MHz
  5. Détecteur de fréquence audio Arduino — Mesurer le pic sonore avec module haute sensibilité
  6. Construire un système domotique et de sécurité intelligent avec 1Sheeld
  7. Morpion sur matrice LED MAX7219 avec boîtier en carton
  8. Construire un voltmètre DIY avec Arduino et écran Nokia 5110
  9. Construire un minuteur à rebours Arduino fiable avec afficheur 7 segments SparkFun