Autor: Calin Dragos Stefan - 335CA
Prin acest proiect imi propun sa creez o varianta simplista a unui sistem de protectie antiefractie pentru un sistem de inchidere cu zavor. Utilizatorul va fi notificat printr-o alarma de miscarile din jurul zavorului si va putea comanda deschiderea acestuia prin introducerea unei parole. Avand doua functii, de alarma si de control de la distanta cu o parola, sistemul antiefractie poate fi folosit pentru orice situatie in care se poate utiliza un zavor pentru inchidere: usi, cufere, tarcuri etc.
Proiectul are la baza comunicarea I2C intre 2 placute, ambele fiind atat writer cat si reader.
La nivelul incuietorii se afla o placuta Arduino (master) cu un senzor de miscare, un led RGB, 2 servo-uri si zavorul.
La nivelul alarmei se afla o placuta Arduino (slave) cu un buzzer, un led rosu, un led albastru, un keypad si un buton.
Daca cineva se apropie de zavor si deci si de senzorul de miscare, led-ul RGB trece din albastru (idle) in galben, iar master-ul notifica slave-ul care aprinde led-ul rosu. Daca se apropie si mai mult, led-ul RGB devine rosu, iar slave-ul primeste mesaj sa porneasca buzzer-ul.
La slave este conectat un keypad. Utilizatorul poate introduce o parola prin care opreste buzzer-ul si notifica master-ul ca trebuie sa deschida zavorul. Acesta actioneaza un servo care misca zavorul, si face led-ul RGB verde. Tot la slave exista si un buton care apasat, va notifica master-ul ca trebuie sa actioneze celalalt servo pentru inchiderea zavorului si sistemul trece din nou la starea de alarma cu zavorul inchis.
Led-ul albastru de langa alarma este aprins daca zavorul este deschis si inchis altfel.
Schema bloc
Piesele folosite:
In codul de master (lock), obtin distanta de la senzorul de miscare, si in functie de aceasta, scriu un mesaj catre slave (alarm) si setez elementele din vectorul rgb pentru led. Apoi citesc de la slave un mesaj pentru a vedea daca trebuie sa misc un servo pentru a modifica pozitia zavorului. In variabila unlock retin starea zavorului. Daca aceasta este unu, led-ul RGB e verde.
In codul de slave (alarm), la inceput mapez keypad-ul si setez parola. In loop verific daca a fost introdusa parola corecta (ma folosesc de functia checkPassword), si daca da, aprind led-ul albastru si updatez variabila unlocked la 1.
In functia receiveEvent citesc mesajul de la master si in functie de ce primesc de la acesta si de valoarea variabilei unlocked pornesc buzzer-ul si led-ul rosu
In functia requestEvent trimit catre master un mesaj. Daca parola este corecta ii transmit sa deschida zavorul, iar daca se apasa butonul ii transmit sa inchida zavorul si fac variabila unlocked 0, ceea ce cauzeaza stingerea led-ului albastru.
Am folosit bibliotecile Wire.h pentru I2C, Servo.h pentru servo si Keypad.h de la Mark Stanley si Alexander Brevig pentru keypad.
Led-ul RGB de langa zavor care indica daca esti prea aproape de acesta in functie de distanta:
Sistemul final
Demo: https://youtu.be/58fwCrcxlQg
Realizand acest proiect am reusit sa imi pun in practica si sa aprofundez cunostintele dobandite pe parcursul laboratoarelor de PM. Cel mai interesant mi s-a parut ca partea de debugging software a fost insotita si de debugging hardware.
https://ocw.cs.pub.ro/courses/pm/lab/lab0-2021
https://ocw.cs.pub.ro/courses/pm/lab/lab2-2021
https://ocw.cs.pub.ro/courses/pm/lab/lab3-2021
https://ocw.cs.pub.ro/courses/pm/lab/lab6-2021
https://create.arduino.cc/projecthub/Isaac100/getting-started-with-the-hc-sr04-ultrasonic-sensor-036380?ref=similar&ref_id=172503&offset=0
https://www.instructables.com/Arduino-Servo-Motors
https://arduinogetstarted.com/tutorials/arduino-keypad
https://www.electronicwings.com/arduino/arduino-i2c
https://playground.arduino.cc/Code/Keypad
Sistem Antiefractie