This is an old revision of the document!
Proiectul consta in implementarea unui sistem de alarma care detecteaza prezenta unui obiect strain cu ajutorul unor senzori de distanta si de miscare.
Acesta functioneaza dupa urmatoarea logica : cand este detectata miscarea unui obiect si este determinata distanta acestuia fata de sistem trebuie sa vedem in ce interval se claseaza distanta respectiva. In intervalul [3m, 5m] se coloreaza ledul in galben. In intervalul [1m, 3m] ledul se coloreaza in portocaliu, iar persoana conectata la sistem va primi un mesaj pe telefon. In intervalul [5cm, 1m] ledul se coloreaza in rosu si este activata o alarma cu ajutorul unui buzzer. In tot acest timp pe ecranul LCD va fi afisata distanta fata de obiect. Daca nu este detectata prezenta vreunui obiect, pe ecran este afisata un mesaj “In siguranta” iar ledul are culoarea verde.
Scopul proiectului este de a monitoriza prezenta altor obiecte straine asupra unui bun, pentru a-l putea tine in siguranta.
Lista piese :
Schema eletrica :
Mediu de dezvoltare : Arduino IDE
Librării şi surse 3rd-party :
Implementare software :
La inceputul programului includ bibliotecile necesare pentru utilizarea anumitor componente, acestea fiind “WiFiEsp.h”, “SoftwareSerial.h”, “LiquidCrystal_I2C.h” si creez cate un obiect pentru fiecare bibiloteca. Pentru serial1 apelez folosindu-ma de pinii RX si Tx pentru a configura comunicarea seriala pentru modulul wifi. Realizez initializari pentru modului wifi, incluzand numele retelei la care ca conectez prin wifi, parola, statusul conectarii la retea, numele serverului unde o sa trimit o cerere pentru a primi un email de alerta.
Realizez asocierea pentru fiecare component cu cate un pin:
Digitali Pin trig (2) Pin echo (3) Pin senzor PIR (4) Buzzer(5) Pin led B(6) Pin led G (7) Pin led R (8) RX, TX(10, 9) Analogici Pin SCL -> A5 Pin SDA -> A4
Declar variabile globale ajutatoare.
Functia setup : Configurez LCD-ul. Setez pinii digitali pe INPUT sau OUPUT in functie de caz. Setez baud rate-ul pentru serial si serial1 ca fiind 115200. Incep initializarile pentru wifi.
Functia setup_wifi: Incerc sa ma conectez la retea de wifi folosind credentialele(nume, parola). Fac asta intr-un loop pana cand statusul devine connected si afisez mesaj de succes.
Functia loop: Citesc valoarea senzorului PIR, iar daca aceasta este pe HIGH inseamna ca s-a detectat miscare si setez flag-ul flagDistance pe 1. Daca este pe LOW inseamna ca nu s-a detectat miscare si apelez functia printMessage care afiseaza un mesaj pe LCD “Nu s-a detectat miscare”. (Am observat ca nu intra niciodata pe ramura aceasta de else pentru ca senzorul detecteaza mereu miscare).
Daca flagDistance este pe 1, incep sa masor distante dintre senzor si obiect cu ajutorul pinilor Echo si Trig. Daca distanta este mai mica decat 25cm (aproximativ) astept ca clientul WifiEsp pentru a putea trimite un HTTP request catre server. Apelez functiile toggleLed si printDistance pentru a schimba culoarea ledului in functie de distanta si pentru a printa pe ecranul lcd distanta fata de obiect.
makeHttpRequest(): Incerc sa ma conectez la serverul ifttt pe portul 80. Daca conectare functioneaza, afisez mesaj pe seriala si fac o cerere HTTP de tip POST prin intermediul careia imi va trimite un email de alerta ca s-a detectat un obiect la mai putin de 25cm fata de sistem.
toggleLed(): In functie de intervalul in care se afla distanta perceputa fata de obiect, fac urmatoarele actiuni astfel: [75cm, ..] → ledul ramane verde
[50cm, 75cm] → ledul se coloreaza in albastru
[25cm, 50cm] → ledul se coloreaza in portocaliu si este apelata functia soundOn() care porneste buzzerul
[0,25cm] → led-ul se coloreaza in rosu si este apelata functia soundOn() care porneste buzzerul (si voi primi si email datorita codului din loop)
printDistance(): Setez cursorul la inceputul primei linii(0,0) si printez pe acesta “MISCARE DETECTATA!”. Setez cursorul la inceputul celei de-a doua linii(1,1) si si afisez distanta perceputa fata de obiect.
printMessage(): Setez cursorul la inceputul primei linii(0,0) si printez pe acesta “Nu s-a detectat”. Setez cursorul la inceputul celei de-a doua linii(1,1) si si afisez ” miscare! ”.
soundOn(): Ma folosesc de functia Tone pentru a seta diferite frecvente pentru a produce un sunet de alarma pe buzzer. Opresc sunetul folosind functia noTone.
25.04.2023 : Alegere tema documentatie
1.05 - 5.05.2023 : Am ales ce piese folosesc si am decis logica implementarii
8.05 - 14.05.2023 : Am ansamblat piesele si terminat partea hardware
15.05. - 21.05.2023 : Am inceput implementarea software
22.05 - 26.05.2023 : Am terminat partea software
27.05. - 29.05.2023 : Ultimele retusuri + realizat designul sistemului + finalizat documentatia