Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

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".

Bouw een Arduino Beveiligings- & Alarmsysteem – Stap-voor-Stap Tutorial

Benodigde componenten

  • Arduino board
  • Ultrasonische sensor (HC-SR04)
  • LCD 16×2
  • Buzzer (PWM-pin)
  • 4×4 Keypad
  • Breadboard & draadbruggen
Bouw een Arduino Beveiligings- & Alarmsysteem – Stap-voor-Stap Tutorial

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.

Bouw een Arduino Beveiligings- & Alarmsysteem – Stap-voor-Stap Tutorial
Bouw een Arduino Beveiligings- & Alarmsysteem – Stap-voor-Stap Tutorial

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.

Bouw een Arduino Beveiligings- & Alarmsysteem – Stap-voor-Stap Tutorial

Dat is alles. Veel succes met bouwen! Vragen in de reacties.

Productieproces

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