Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:vstoica:dragos.dragan1403 [2025/05/30 02:09]
dragos.dragan1403 [Concluzii]
pm:prj2025:vstoica:dragos.dragan1403 [2025/06/02 12:05] (current)
dragos.dragan1403 [Software Design]
Line 46: Line 46:
  
  
-{{ :​pm:​prj2025:​vstoica:​schematic_baston.png?600 |}}+{{ :​pm:​prj2025:​vstoica:​schema_bloc_borseta.png?600 |}}
  
  
 ===== Software Design ===== ===== Software Design =====
  
-Aplicația a fost dezvoltată în Arduino IDE, folosind limbajul C/C++, pe microcontrolerul Arduino Uno. Comunicarea UART a fost implementată direct, fără utilizarea funcțiilor de nivel înalt precum Serial.begin(),​ ci prin accesul direct la registrele hardware ale microcontrolerului (USART0), oferind un control precis asupra transmisiei de date seriale.+== Mediu de dezvoltare: ​Arduino IDE ==
  
-Librării ​externe utilizate +== Librării ​și surse 3-rd party==
-  +
-• Wire.h – pentru comunicarea I2C cu senzorul VL53L0X+
  
-• VL53L0X.h ​– librărie oficială Adafruit ​pentru ​controlul senzorului de distanță ​VL53L0X+Wire – magistrală I²C pentru ​senzorul ​VL53L0X ​ 
  
 +VL53L0X – bibliotecă Pololu pentru senzorul ToF (Time-of-Flight)  ​
  
-**__Funcționalități implementate__**+tone() / noTone() – API Arduino pentru generarea semnalului pe buzzere - (Headere AVR standard folosite pentru control low-level: <​avr/​io.h>,​ <​avr/​interrupt.h>,​ <​util/​delay.h>​).
  
-Proiectul integrează doi senzori de distanță (VL53L0X și HC-SR04) și două buzzere pasive controlate în funcție de distanțele măsurate. De asemenea, este utilizat un buton fizic (cu întrerupere hardware) pentru a comuta între modurile de funcționare ale buzzerelor (navigare, alarmă, off).+== Algoritmi principali: ==
  
-Structura firmware-ului este modulară, împărțind clar:+Inițializare periferice – USART (115 200 baud), I²C, pinii HC-SR04, buzzere, buton și întrerupere externă.   
 +- Măsurare distanță VL53L0X – citire la 200 msfiltrare timeout, interpretare alarmă sub 500 mm.   
 +- Măsurare distanță HC-SR04 – puls triggerează senzorul, conversie durată → cm, filtrare timeout. ​  
 +- Gestionare alarme audio   
 +  - VL53L0Xsunet ciclic (4 pași) dacă distanța < 500 mm.   
 +  - HC-SR04: frecvență buzzer variabilă în funcție de distanță (≤ 20 cm → 3 kHz, … ≤ 100 cm → 800 Hz).   
 +- Comutare moduri buzzer prin buton (ISR) cu debounce 300 ms:   
 +  1. Dezactivează doar buzzerul HC-SR04. ​  
 +  2. Dezactivează ambele buzzere. ​  
 +  3. Reactivează ambele buzzere.  ​
  
-• Inițializarea perifericelor (USART, I2C, pini)+== Funcții implementate:​ ==
  
-• Rutine de tratare a întreruperilor ​(ISR pentru buton)+| Funcție ​                             | Rol                                                                                | Fragmente cheie                                    | 
 +| **USART_Init()** ​                    | Configurează USART0 @ 115 200 baud, 8N1, doar TX                                   | setează UBRR0x, UCSRx                              | 
 +| **USART_SendChar/​String/​Unsigned/​Int()** | Rutine de transmitere serială ​                                                    | conversie manuală zecimală pentru `unsigned long`  | 
 +| **toggleBuzzer()** *(ISR INT0)* ​     | Rulează la apăsarea butonului; comută logica `buzzerEnabled` / `ultrasonicBuzzerEnabled` | verifică `millis()` ​pentru ​debounce ​               | 
 +| **playAlarmSound()** ​                | Generează secvența de 4 note (2 500 Hz ↔ 1 200 Hz) la 200 ms                       | folosește `tone(BUZZER_PIN1,​ f)`                   | 
 +| **readUltrasonicDistance()** ​        | Trimite puls către HC-SR04 și calculează distanța în cm                            | timeout 30 000 µs; conversie `dur*0.034/​2` ​        | 
 +| **handleUltrasonicBuzzer(d)** ​       | Selectează frecvența buzzerului 2 în funcție de `d`                                | tabele prag ≤ 20/50/100 cm                         | 
 +| **setup()** ​                         | Inițializează toate modulele, setează ISR buton                                    | `attachInterrupt(FALLING)`                         | 
 +| **loop()** ​                          | Ciclu principal: • citește VL53L0X → alarmă / semnal continuu • citește HC-SR04 → frecvență buzzer variabilă • transmite date prin UART | 100 ms delay |
  
-• Măsurători de distanță (atât I2C cât și ultrasonic)+== Diagrame / flux ==
  
-• Controlul buzzerelor în funcție de distanță+            +-----------+ ​          ​+-------------+ 
 +            |  VL53L0X ​ | I²C  ---> |  Dist(mm) ​  | 
 +            +-----------+ ​         /​+-------------+ 
 +                                   | <​500? ​       | 
 +                                   ​| ​  yes -> playAlarmSound() 
 +                                   ​| ​  ​no ​ -> freq = f(dist) 
 +                                   ​+-------------+
  
-• Alarme bazate pe pattern sonor gradual pentru senzorul IR (VL53L0X)+== Resurse hardware: ==
  
 +- **MCU:** ATmega328P (Arduino Uno/​Nano)  ​
  
-<note tip> +- **Senzori:** VL53L0X ​(ToF), HC-SR04 (ultrasunete)  ​
-Descrierea codului aplicaţiei (firmware): +
-  ​mediu de dezvoltare ​(if any(e.g. AVR StudioCodeVisionAVR) +
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+- **Actuatori:​** 2 buzzere pasive (pini 8, 9)  ​
  
-<note tip> +- **I/O:** buton push-button (pin 2, pull-up), LED opțional ​ 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +  
-</​note>​+- **Interfață:​** UART-USB pentru monitorizare la 115 200 baud  ​
  
 +== Timpi critici și performanță:​ ==
 +
 +- Loop la ~10 Hz (100 ms) → suficient pentru feedback acustic. ​
 + 
 +- ISR buton + debounce software de 300 ms.  ​
 +
 +- Timeout citire VL53L0X: 500 ms; budget măsurare: 200 ms.  ​
 +
 +- Timeout puls HC-SR04: 30 ms → acoperă până la ~5 m.  ​
 +
 +== Codul sursa: ==
 +
 +{{:​pm:​prj2025:​vstoica:​proiect_pm.ino.zip|}}
 +
 +===== Rezultate Obţinute =====
 +
 +Senzorul ultrasonic măsoară distanțele cu acuratețe, iar buzzerul reacționează corespunzător în funcție de apropierea unui obiect. De asemenea, senzorul VL53L0X cu infraroșu detectează în mod eficient prezența unui corp străin aflat în apropiere, iar semnalul sonor emis de buzzer oferă un feedback intuitiv, sugerând o posibilă amenințare. Funcționalitatea generală corespunde cerințelor propuse.
 ===== Concluzii ===== ===== Concluzii =====
  
  
 Produsul final permite detectarea facilă a obiectelor din proximitate,​ oferind un feedback auditiv clar. Ca direcții de îmbunătățire,​ intenționez să adaug un motor cu vibrații, pentru a oferi un feedback tactil suplimentar în prezența obstacolelor. De asemenea, pot extinde aria de detecție prin integrarea a încă trei senzori de distanță, montați pe celelalte laturi ale dispozitivului,​ obținând astfel o acoperire de 360° în jurul utilizatorului. Produsul final permite detectarea facilă a obiectelor din proximitate,​ oferind un feedback auditiv clar. Ca direcții de îmbunătățire,​ intenționez să adaug un motor cu vibrații, pentru a oferi un feedback tactil suplimentar în prezența obstacolelor. De asemenea, pot extinde aria de detecție prin integrarea a încă trei senzori de distanță, montați pe celelalte laturi ale dispozitivului,​ obținând astfel o acoperire de 360° în jurul utilizatorului.
-===== Download ===== 
  
-<note warning>​ +===== Partea hardware care este integrată borseta =====
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+
  
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. 
-</​note>​ 
  
-===== Jurnal ===== 
  
-<note tip> +{{ :​pm:​prj2025:​vstoica:​poze_borseta2.png?600 |}} 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului+ 
-</​note>​+ 
 +===== Produsul final ===== 
 + 
 + 
 + 
 +{{ :​pm:​prj2025:​vstoica:​poza_borseta1.png?​600 |}}
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +• Arduino – Documentație oficială și exemple de utilizare 
-Listă cu documente, datasheet-uriresurse Internet folosite, eventual grupate pe **Resurse Software** ş**Resurse Hardware**. + 
-</​note>​+• Optimus Digital – Magazin de componente și sursă de informații tehnice 
 + 
 +• Datasheet-urile componentelor – Consultate în special pentru senzorul IRpentru înțelegerea corectă a tensiunii de alimentare șa semnalului de ieșire 
 + 
 +• YouTube – Tutoriale video și demonstrații practice legate de utilizarea senzorilor și a buzzerelor în proiecte embedded
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2025/vstoica/dragos.dragan1403.1748560156.txt.gz · Last modified: 2025/05/30 02:09 by dragos.dragan1403
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