Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino-Sicherheits- & Alarmanlage bauen: Schritt-für-Schritt-Tutorial

In diesem Projekt bauen wir eine Arduino-Sicherheits- und Alarmanlage. Video oder schriftliche Anleitung unten.

Überblick

Alarm aktiviert sich 10 Sekunden nach Drücken von Taste A. Erkennung per Ultraschallsensor (HC-SR04). Bei Objekterkennung ertönt Summer. Deaktivierung nur per 4-stelligem Passcode (Standard: 1234, änderbar).

Arduino-Sicherheits- & Alarmanlage bauen: Schritt-für-Schritt-Tutorial

Taste B: Passwort ändern. Erst aktuelles Passwort eingeben, dann neues 4-stelliges Passwort. Danach nur noch neues Passwort gültig. Falsche Eingabe → „Falsch! Nochmal versuchen“.

Benötigte Bauteile

Arduino Board, Ultraschallsensor, LCD-Display (16×2), Summer (Buzzer), 4×4-Tastenfeld (Keypad).

Arduino-Sicherheits- & Alarmanlage bauen: Schritt-für-Schritt-Tutorial

Links zu Bezugsquellen unten.

  • Keypad 4×4
  • LCD 16×2
  • Ultraschallsensor HC-SR04
  • Summer (Buzzer)
  • Arduino Board
  • Breadboard & Jumper-Wires

Schaltplan


Arduino-Sicherheits- & Alarmanlage bauen: Schritt-für-Schritt-Tutorial

Summer an PWM-Pin. Keypad: 8 Pins (4 Zeilen, 4 Spalten). Jeder Taster schließt kurz eine Zeile mit einer Spalte. Beispiel: Zeile 1 auf LOW, alle Spalten HIGH → Taste 3 gedrückt → Spalte 3 wird LOW.

Arduino-Sicherheits- & Alarmanlage bauen: Schritt-für-Schritt-Tutorial

Ultraschallsensor & LCD: Siehe meine separaten Tutorials.

Arduino-Alarmanlagen-Code


Code in Abschnitten erklärt, am Ende komplett.

Bibliotheken: LiquidCrystal (Standard), Keypad (zusätzlich installieren). Pins, Variablen, Keymap, Keypad- & LCD-Objekte definieren.

#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 isActivated;
boolean activateAlarm = false;
boolean alarmActivated = false;
boolean enteredPassword;
boolean passChangeMode = false;
boolean 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);
}

Setup: LCD init, Pin-Modes für Summer & Ultraschall.

Loop: Prüfen ob Alarm aktiv. Falls nicht: Startbildschirm „A - Aktivieren, B - Passwort ändern“. Taste A → Summer piept 200 ms, 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 true: Countdown 9 Sekunden auf LCD, Summer piept jede Sekunde. Dann „Alarm Activated!“, initiale Distanz messen, Flags setzen.

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;
}

Alarm aktiv: Ultraschall misst kontinuierlich. Aktuelle Distanz + 10 cm Korrektur < initiale Distanz → Objekt erkannt → Summer Dauerton, enterPassword() aufrufen.

if (alarmActivated == true) {
  currentDistance = getDistance() + 10;
  if (currentDistance < initialDistance) {
    tone(buzzer, 1000);
    lcd.clear();
    enterPassword();
  }
}

enterPassword(): „*** ALARM *** Pass>“ anzeigen. Tastatureingaben sammeln in tempPassword, Sternchen anzeigen. Mehr als 4 Ziffern oder # → löschen, neu beginnen. * (Stern) drücken: Passwort prüfen. Richtig → Alarm aus, Summer aus, Startbildschirm. Falsch → „Wrong! Try Again“ 2 Sek., dann erneut Eingabe.

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 == '#') {
      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 {
        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>");
      }
    }
  }
}

Passwort ändern (Taste B): Ähnlich, aber zuerst aktuelles Passwort abfragen, dann neues setzen.

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 <= '9') {
        tempPassword += keypressed;
        lcd.setCursor(i,1); lcd.print("*"); i++;
        tone(buzzer, 2000, 100);
      }
    }
    if (i > 5 || keypressed == '#') { /* zurücksetzen */ }
    if (keypressed == '*') {
      if (password == tempPassword) {
        tempPassword = "";
        lcd.clear(); lcd.setCursor(0,0); lcd.print("Set New Password");
        lcd.setCursor(0,1); lcd.print(">");
        while(passChangeMode) {
          // neues Passwort eingeben, * bestätigt
          if (keypressed == '*') {
            password = tempPassword;
            passChangeMode = false; passChanged = false; screenOffMsg = 0;
          }
        }
      }
    }
  }
}

Kompletter Quellcode

/* 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
// ... (alle Variablen & Setup wie oben) ...
void loop() { /* ... wie oben beschrieben ... */ }
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;
}

Fertigstellung


Alles in ein Kunststoff-Elektrogehäuse einbauen, verkabeln, fertig.

Arduino-Sicherheits- & Alarmanlage bauen: Schritt-für-Schritt-Tutorial

Das war's. Viel Spaß beim Nachbauen! Fragen in den Kommentaren.


Herstellungsprozess

  1. RFID-Anwesenheitssystem mit Arduino & Python – Daten direkt in phpMyAdmin (XAMPP) speichern
  2. LCD-Animationen & Spiele mit Arduino UNO erstellen
  3. SERENA: Eigenes Arduino Mega 2560 Alarmsystem mit TFT-LCD-Touchscreen
  4. Sicherheit von Alarmanlagen mit Arduino und 433-MHz-RF-Modulen testen
  5. Arduino Audio-Frequenz-Detektor – Lauteste Schallpeaks mit hochsensiblem Modul messen
  6. Smart Home Automatisierung & Sicherheitssystem mit 1Sheeld
  7. Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
  8. DIY-Voltmeter mit Arduino und Nokia 5110 Display – Schritt-für-Schritt-Anleitung
  9. Zuverlässigen Arduino-Countdown-Timer mit SparkFun 7-Segment-Display bauen
  10. Intelligente Kellerbelüftung: Arduino-gesteuerte Feuchteregelung