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.
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.
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); }
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.