Table of Contents

Security System - Brinzan Darius

Introducere

Proiectul este un sistem de securitate care se foloseste de un ultrasonic sensor pentru a detecta obiectele dintr-o anumita raza, la o distanta specifica.

Descriere generala

Schema bloc

Proiectul va avea un ultrasonic sensor care va fi lipit peste un servo motor, astfel acoperind o raza in care sa scaneze imprejurimile. Daca in proximitatea acestuia, la o distanta X se gaseste un obiect, se face trigger la un mesaj sugestiv pe display + sunet sugestiv realizat de catre buzzer.

Senzorul ultrasonic va trimite constant masuratori ale distantei si eventuale obiecte aflate mai aproape decat dorit, catre placuta de Arduino. Servo motorul se roteste constant pana cand se observa un obiect in proximitatea acestuia. In acel moment acesta se opreste, se face trigger la buzzer + mesaj pe display si nu se mai roteste pana cand obiectul detectat nu dispare.

Hardware Design

Piesele folosite in proiect:

  • Arduino UNO
  • Fire colorate
  • Display LCD I2C
  • Buzzer
  • Ultrasonic Sensor HC-SR04
  • Rezistenta de 220
  • Servo motor
  • Breadboard

Software Design

Pentru dezvoltarea software a proiectului, am folosit ArduinoIDE in care am inclus bibliotecile: servo.h, liquidcrystal_i2c.h pentru a folosi Servomotorul si LCD-ul I2C.

Descriere generala a codului:

// Set up the required pins
void configurePins() {
    pinMode(Pins::TrigPin, OUTPUT);
    pinMode(Pins::EchoPin, INPUT);
    pinMode(Pins::BuzzerPin, OUTPUT);
}

// Attach servo to its pin
void configureServo() {
    servo.attach(Pins::ServoPin);
}

// Initialize and light LCD
void configureLCD() {
    lcd.init();
    lcd.backlight();
}

// Set up environment for operation
void setup() {
    configurePins();
    configureServo();
    configureLCD();
    Serial.begin(9600);
}
// Main loop, scanning for intruders
void loop() {
    for (int angle = 0; angle <= 180; angle += 2) {
        servo.write(angle);
        measureTime();
        detectedDistance = pulseDuration * 0.01715;
        handleDetection(detectedDistance);
        delay(100);
    }
}

// Measure time for echo pulse
void measureTime() {
    digitalWrite(Pins::TrigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(Pins::TrigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(Pins::TrigPin, LOW);
    pulseDuration = pulseIn(Pins::EchoPin, HIGH);
}

// Handles detection distance processing
void handleDetection(float distance) {
    if (distance <= MaxScanDistance) {
        alertIntruder(distance);
    } else {
        lcd.clear();
        lcd.print("Start searching");
    }
}
// Alert for detected object
void alertIntruder(float distance) {
    lcd.setBacklight(1);
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Movement seen at: ");
    lcd.setCursor(0, 1);
    lcd.print("    ");
    lcd.print(distance);
    lcd.print(" cm");
    soundBuzzer();
}
// Emit sound alert for detection
void soundBuzzer() {
    digitalWrite(Pins::BuzzerPin, HIGH);
    delay(3000);
    digitalWrite(Pins::BuzzerPin, LOW);
}

Rezultate Obtinute

Concluzii

Pentru prima interactiune cu un proiect Arduino a fost o experienta interesanta, destul de greoaie la inceput, dar overall un sentiment de satisfactie cand a fost terminat. Am fost foarte incantat de prima interactiune cu piesele pe care le-am folosit si sa vad ca acestea au format un 'intreg' la final. De asemenea, am aplicat conceptele pe care le-am invatat in trecut la Electronica / CN intr-un context real in cadrul acestei discipline.

Download

Aici se afla codul integral al proiectului: securitysystem.zip

Jurnal

Bibliografie/Resurse