Bouw een Arduino Beveiligings- & Alarmsysteem – Stap-voor-Stap Tutorial
Overzicht
Dit Arduino alarmsysteem activeert 10 seconden na indrukken van de A-knop. Een ultrasonische sensor detecteert objecten; bij inbraak gaat een buzzer af. Deactiveren met 4-cijferige pincode (standaard 1234, wijzigbaar). B-knop: wachtwoord wijzigen (eerst huidig wachtwoord, dan nieuw). Fout wachtwoord → "Wrong! Try Again".

Benodigde componenten
- Arduino board
- Ultrasonische sensor (HC-SR04)
- LCD 16×2
- Buzzer (PWM-pin)
- 4×4 Keypad
- Breadboard & draadbruggen

Schakelschema
Buzzer op PWM-pin. Keypad: 8 pinnen (4 rijen, 4 kolommen). Elke knop kortsluit een rij en kolom. Voorbeeld: rij 1 laag, kolommen hoog → knop 3 ingedrukt → kolom 3 laag. Ultrasonische sensor en LCD: zie eerdere tutorials.


Arduino Alarm Systeem Broncode
Bibliotheken: LiquidCrystal.h (standaard), Keypad.h (apart installeren). Pinnen, variabelen, keymap, keypad/LCD objecten.
#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;
const byte 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); // rs, en, d4, d5, d6, d7
void setup() {
lcd.begin(16,2);
pinMode(buzzer, OUTPUT);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
}
Hoofdloop
Als alarm niet actief: startscherm (A=activeren, B=wachtwoord). Knop A → piep, activateAlarm=true. Dan: "Alarm will be activated in" + 9 seconden aftellen (piep per seconde). "Alarm Activated!" → initiële afstand meten. alarmActivated=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;
}
Als actief: continu afstand meten. Huidige afstand + 10 cm marge < initiële afstand → inbraak → buzzer aan (1 kHz), enterPassword() aanroepen.
if (alarmActivated == true) {
currentDistance = getDistance() + 10;
if (currentDistance < initialDistance) {
tone(buzzer, 1000); lcd.clear(); enterPassword();
}
}
Wachtwoord invoeren
Scherm: "*** ALARM *** Pass>". Toetsen verzamelen in tempPassword, sterretjes tonen. >4 cijfers of # → wissen. * → controleren: gelijk aan password? → alarm uit, buzzer uit, startscherm. Ongelijk → "Wrong! Try Again", 2 s wachten, opnieuw.
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>");
}
}
}
}
Wachtwoord wijzigen
Knop B → "Current Password", invoer zoals boven. Correct? → "Set New Password", nieuwe code invoeren, * → opslaan, variabelen resetten, startscherm.
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 == '#') { /* reset invoer */ }
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 <= '9') {
tempPassword += keypressed; lcd.setCursor(i,1); lcd.print("*"); i++; tone(buzzer,2000,100);
}
}
if (i > 5 || keypressed == '#') { /* reset */ }
if (keypressed == '*') {
i=1; tone(buzzer,2000,100);
password = tempPassword;
passChangeMode=false; passChanged=false; screenOffMsg=0;
}
}
}
}
}
}
Complete broncode
De volledige, samengevoegde code (inclusief getDistance() functie voor ultrasonische sensor) staat aan het einde van de originele tutorial.
Afwerking
Alles in een plastic elektriciteitsdoos monteren, componenten passend maken, bekabelen.

Dat is alles. Veel succes met bouwen! Vragen in de reacties.
Productieproces
- Betrouwbaar Arduino RFID Aanwezigheidssysteem Aangedreven door Python
- Bouw Boeiende LCD Animaties & Games met Arduino UNO
- SERENA: Een Aangepast Arduino Mega 2560 Alarmsysteem Met TFT LCD Touchscreen
- Beveiliging van alarmsystemen testen met Arduino en RF-modules
- Arduino Audio Frequentie Detector – Meet de luidste geluidspieken met hoge gevoeligheid
- Slimme huisautomatisering & beveiligingssysteem bouwen met 1Sheeld
- Arduino Boter-Kaas-Eieren met MAX7219 LED Matrix en Kartonnen Behuizing
- Bouw een DIY Voltmeter met Arduino en Nokia 5110 Display – Stap-voor-Stap Handleiding
- Bouw een Betrouwbare Arduino Afteltimer met SparkFun 7‑Segment Display
- Slimme Kelder Ventilatiesysteem: Arduino-gestuurde Vochtcontrole
- Python 3 naar Arduino UNO: Eenvoudige Commando Besturing en LED Demo