This shows you the differences between two versions of the page.
pm:prj2025:apredescu:anca.radu2411 [2025/05/28 12:03] anca.radu2411 [Hardware Design] |
pm:prj2025:apredescu:anca.radu2411 [2025/05/28 12:38] (current) anca.radu2411 [Descriere generală] |
||
---|---|---|---|
Line 48: | Line 48: | ||
* 🔋 Alimentare 5V (USB sau power bank) – pentru toate modulel | * 🔋 Alimentare 5V (USB sau power bank) – pentru toate modulel | ||
- | {{:pm:prj2025:apredescu:diagarama_ancaradu_new.png?200|}} | + | {{:pm:prj2025:apredescu:diagrama_finala_ancaradu.png?300|}} |
**Interacțiuni între module** | **Interacțiuni între module** | ||
Line 139: | Line 139: | ||
** Componentele Hardware conectate ** | ** Componentele Hardware conectate ** | ||
- | {{:pm:prj2025:apredescu:imagine_proiect_ancaradu.jpg?300|}} | + | {{:pm:prj2025:apredescu:hardware_ancaradu.jpg?200|}} |
+ | {{:pm:prj2025:apredescu:design_ancaradu.jpg?300|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | **Mediul de dezvoltare** | ||
- | **Mediu de dezvoltare** | + | * **Arduino IDE** – pentru programarea microcontrollerului ATmega328P. |
+ | * **Python 3** – pentru prelucrarea datelor primite prin Bluetooth și gestionarea bazelor de date + trimitere email. | ||
- | ''Arduino IDE'' | + | ---- |
+ | |||
+ | **Librării și surse 3rd-party** | ||
+ | |||
+ | ➤ Pe partea de Arduino: | ||
+ | |||
+ | * SPI.h – pentru comunicarea SPI cu modulul SD card | ||
+ | * SD.h – pentru logare fișiere text pe card microSD | ||
+ | * DHT.h – pentru citirea temperaturii și umidității de la senzorul DHT22 | ||
+ | * SoftwareSerial.h – pentru comunicarea cu modulul Bluetooth HC-05 pe pini digitali | ||
+ | |||
+ | Toate aceste librării sunt standard sau pot fi adăugate ușor prin Library Manager în Arduino IDE. | ||
- | -> Platformă de dezvoltare compatibilă cu Arduino UNO (ATmega328P) | + | ➤ Pe partea de Python: |
+ | * serial (pyserial) – pentru citirea datelor prin Bluetooth | ||
+ | * sqlite3 – pentru salvarea datelor în fișiere .db locale | ||
+ | * smtplib și email.message – pentru trimiterea automată a emailurilor când se detectează zgomot excesiv | ||
---- | ---- | ||
+ | **Algoritmi și structuri implementate** | ||
- | **Librării și surse 3rd-party** | + | ➤ În microcontroller (Arduino): |
- | ''SPI.h'' — pentru comunicare SPI cu modulul SD | + | Se citesc: |
- | ''SD.h'' — pentru lucrul cu fișiere pe cardul microSD | + | * valoarea analogică a zgomotului (analogRead(A0)) |
+ | * temperatura și umiditatea prin DHT22 | ||
- | -> Ambele librării sunt standard în Arduino IDE și nu necesită instalare externă. | + | Dacă sunetul depășește un prag (> 100): |
- | ---- | + | * se aprinde LED-ul |
+ | *se salvează valorile într-un fișier log.txt pe cardul SD | ||
- | **Algoritmi și structuri implementate** | + | La interval de 5 secunde, se trimit prin Bluetooth valorile actuale |
- | * Se citește valoarea analogică de la microfon (prin ''analogRead(A0)''). | + | ➤ În scriptul Python (PC/laptop): |
- | * Valoarea este comparată cu un prag stabilit pentru a decide dacă este considerat zgomot relevant. | + | |
- | * Dacă valoarea depășește pragul și nu a mai fost deja înregistrat un eveniment: | + | Se deschid două baze de date SQLite: |
- | * Se aprinde LED-ul (conectat la pinul D8) | + | |
- | * Se salvează un mesaj în fișierul ''log.txt'' de pe cardul SD (conținând valoarea și momentul detectării). | + | * masuratori.db – pentru salvarea temperaturii și umidității |
- | * Este utilizat un flag logic (''evenimentInregistra''t) pentru a preveni logări multiple cât timp semnalul rămâne peste prag. | + | * complaints.db – pentru evenimentele de tip „noise complaint” |
+ | |||
+ | Se analizează fluxul de date din Bluetooth | ||
+ | Dacă în decurs de 60 secunde se primesc 3 mesaje cu zgomot > prag: | ||
+ | |||
+ | * se loghează evenimentul într-o bază separată | ||
+ | *se trimite automat un email de avertizare | ||
---- | ---- | ||
**Surse și funcții implementate** | **Surse și funcții implementate** | ||
+ | |||
+ | ➤ Arduino: | ||
''setup()'': | ''setup()'': | ||
- | * inițializează pinul LED | + | * configurează pini I/O |
- | * începe comunicația serială | + | * inițializează senzorii, Bluetooth-ul și cardul SD |
- | * inițializează cardul SD și verifică funcționalitatea | + | |
''loop()'': | ''loop()'': | ||
- | * monitorizează continuu semnalul audio | + | * citește continuu datele și trimite periodic valorile prin Bluetooth |
- | * controlează LED-ul și decide când să logheze evenimente | + | * detectează evenimente de zgomot și le salvează pe SD |
- | ''logSunet(int valoare)'': | + | ''logPeCard()'': |
- | * deschide fișierul log.txt pe cardul SD | + | |
- | * scrie un mesaj de forma: ''Sunet detectat: 248 la 15204'' | + | |
- | * mesajul include valoarea analogică a sunetului și timpul în milisecunde | + | |
- | ===== Rezultate Obţinute ===== | + | |
- | În urma implementării proiectului, a fost realizat un sistem funcțional de monitorizare a nivelului de zgomot, bazat pe microcontrollerul ATmega328P. Sistemul: | + | * creează/loghează într-un fișier text cu sunet, temperatură și umiditate |
- | * detectează în timp real sunetele cu ajutorul unui modul de microfon analogic; | + | ➤ Python: |
- | * aprinde un LED de semnalizare atunci când intensitatea sunetului depășește un prag definit în cod; | + | |
- | * salvează evenimentele de depășire a pragului într-un fișier (log.txt) pe un card microSD; | + | |
- | * fiecare înregistrare include valoarea semnalului și momentul apariției (în milisecunde de la pornirea sistemului). | + | |
- | Proiectul a fost testat cu succes și a reacționat corect la zgomote (ex: bătăi din palme, voce, lovituri), atât în funcția de semnalizare vizuală, cât și în cea de logare pe cardul SD. | + | ''trimite_email()'': |
+ | |||
+ | * trimite notificare pe mail folosind contul Gmail configurat | ||
+ | |||
+ | ''while True'': | ||
+ | |||
+ | * citește datele primite | ||
+ | * salvează în baza masuratori.db | ||
+ | * dacă se depășește pragul sonor de 3 ori în 60 secunde, salvează în complaints.db și trimite email | ||
+ | |||
+ | |||
+ | ===== Rezultate Obţinute ===== | ||
+ | |||
+ | În urma implementării și testării proiectului, a fost realizat un sistem complet funcțional de monitorizare ambientală, capabil să: | ||
+ | |||
+ | * **Detecteze și semnalizeze zgomotul**: | ||
+ | |||
+ | Modulul de microfon analogic detectează nivelul de sunet din încăpere. | ||
+ | |||
+ | Când se depășește un prag predefinit, un LED de alertă se aprinde și evenimentul este salvat pe cardul microSD, împreună cu temperatura și umiditatea curente. | ||
+ | |||
+ | * **Salveze date local pe card microSD**: | ||
+ | |||
+ | Sistemul înregistrează valorile măsurate în fișierul ''log.txt''. | ||
+ | |||
+ | Informațiile salvate includ: valoarea semnalului sonor, temperatura, umiditatea și momentul detectării (în milisecunde de la pornire). | ||
+ | |||
+ | * **Transmită datele în timp real prin Bluetooth**: | ||
+ | |||
+ | La fiecare 5 secunde, dispozitivul trimite date către un laptop sau alt dispozitiv conectat prin Bluetooth (HC-05). | ||
+ | |||
+ | Datele includ nivelul sunetului, temperatura și umiditatea. | ||
+ | |||
+ | * **Proceseze și analizeze datele în Python**: | ||
+ | Pe laptop, un script Python preia datele prin Bluetooth și le salvează într-o bază de date locală (masuratori.db). | ||
+ | |||
+ | La detectarea a 3 niveluri ridicate de zgomot într-un interval de 60 de secunde, sistemul: | ||
+ | |||
+ | * salvează evenimentul într-o bază separată (complaints.db); | ||
+ | * trimite automat un email de alertă către recepție (ex. ancutza@gmail.com, crinutza@gmail.com), notificând depășirile. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ==== Validare ==== | ||
+ | |||
+ | Sistemul a fost testat cu succes în condiții reale. | ||
+ | |||
+ | LED-ul se aprinde corect în funcție de zgomot, datele sunt salvate corect pe cardul SD, valorile sunt transmise prin Bluetooth, iar emailurile de alertă se trimit automat conform regulii definite. | ||
- | Prin intermediul acestui sistem, pot fi monitorizate și înregistrate evenimente sonore într-un mediu interior, cum ar fi o cameră de hotel sau o sală de studiu, oferind o soluție simplă pentru verificarea nivelului de zgomot în absența supravegherii directe. | ||
===== Download ===== | ===== Download ===== | ||