Arduino-Sicherheits- & Alarmanlage bauen: Schritt-für-Schritt-Tutorial
In diesem Projekt bauen wir eine Arduino-Sicherheits- und Alarmanlage. Video oder schriftliche Anleitung unten. 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). 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“. Arduino Board, Ultraschallsensor, LCD-Display (16×2), Summer (Buzzer), 4×4-Tastenfeld (Keypad). Links zu Bezugsquellen unten. 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. Ultraschallsensor & LCD: Siehe meine separaten Tutorials. Code in Abschnitten erklärt, am Ende komplett. Bibliotheken: LiquidCrystal (Standard), Keypad (zusätzlich installieren). Pins, Variablen, Keymap, Keypad- & LCD-Objekte definieren. 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, Alarm aktiv: Ultraschall misst kontinuierlich. Aktuelle Distanz + 10 cm Korrektur < initiale Distanz → Objekt erkannt → Summer Dauerton, Passwort ändern (Taste B): Ähnlich, aber zuerst aktuelles Passwort abfragen, dann neues setzen. Alles in ein Kunststoff-Elektrogehäuse einbauen, verkabeln, fertig. Das war's. Viel Spaß beim Nachbauen! Fragen in den Kommentaren.Überblick

Benötigte Bauteile

Schaltplan


Arduino-Alarmanlagen-Code
#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);
}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;
}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>");
}
}
}
}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

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