This is an old revision of the document!


Sistem de alarma

  • Student : Șuiu Ana Maria
  • Grupa : 332CC

Introducere

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, este determinata distanta acestuia fata de sistem. Urmeaza sa vedem in ce interval se claseaza distanta respectiva. La o distanta mai mare de 75cm se coloreaza ledul ramane verde. In intervalul [50cm, 75cm] ledul se coloreaza in albastru. In intervalul [25cm, 50cm] ledul se coloreaza in galben si este activata o alarma cu ajutorul unui buzzer. In intervalul [0 cm, 25cm] ledul se coloreaza in rosu,este activata o alarma cu ajutorul buzzerului si persoana conectata la sistem va primi un email. 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 “Nu s-a detectat miscare!” 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.

Descriere generală

Hardware Design

Lista piese :

  • Placa Arduino Uno
  • Breadboard
  • Senzor PIR HC-SR501
  • Senzor ultrasonic HC-SR04
  • Led RGB
  • Buzzer
  • Modul LCD 1602
  • Modul I2C PCF8574T
  • Modul WI-FI ESP8266
  • Rezistente
  • Fire

Schema eletrica :

Software Design

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 galben 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.

Rezultate Obţinute

Concluzii

Per total a fost un proiect interesant si destul de reusit. Cea mai grea partea a fost lucrul cu modulul wifi deoarece nu mergea intotdeauna conectarea la server.

Download

Jurnal

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

Bibliografie/Resurse

pm/prj2023/dene/sistemdealarma.1685388404.txt.gz · Last modified: 2023/05/29 22:26 by ana_maria.suiu
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