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:

  • setup() : In functia de setup realizez configurarile necesare: Pins, Servomotor, Lcd
// 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);
}
  • loop() : In functia de loop realizez rotatia servomotorului + masor constant distanta catre obiectul detectat de catre senzorul ultrasonic. In aceasta functie, utilizez functiile measureTime / handleDetection care se ocupa de masurarea timpului si de calcularea distantei. In acelasi timp, cand se masoara distanta folosesc LCD-ul pentru a afisa mesaje sugestive.
// 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");
    }
}
  • alertIntruder() : Functia alertIntruder este folosita strict pentru afisarea pe LCD:
// 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();
}
  • soundBuzzer() : Functia care face trigger la Buzzer cand un obiect a fost detectat in proximitate:
// 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

  • 20.04 → Tema proiectului
  • 13.05 → Implementare Hardware
  • 24.05 → Implementare software
  • 30.05 → Prezentare

Bibliografie/Resurse

pm/prj2023/vstoica/security_system_-_brinzan_darius-ionut.txt · Last modified: 2023/05/27 22:25 by darius.brinzan
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0