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 14:52]
dragos.dragan1403 [Hardware Design]
pm:prj2025:vstoica:dragos.dragan1403 [2025/06/02 12:05] (current)
dragos.dragan1403 [Software Design]
Line 46: Line 46:
  
  
-{{ :​pm:​prj2025:​vstoica:​schema_bloc_borseta.png |}}+{{ :​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)  ​
 +
 +- **Senzori:​** VL53L0X (ToF), HC-SR04 (ultrasunete)  ​
 +
 +- **Actuatori:​** 2 buzzere pasive (pini 8, 9)  ​
 +
 +- **I/O:** buton push-button (pin 2, pull-up), LED opțional ​
 + 
 +- **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 ===== ===== Rezultate Obţinute =====
Line 84: Line 129:
  
 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 ===== 
  
-In curând si imagini/​videoclipuri 🔜+===== Partea hardware care este integrată borseta ===== 
 + 
 + 
 + 
 +{{ :​pm:​prj2025:​vstoica:​poze_borseta2.png?​600 |}} 
 + 
 + 
 +===== Produsul final ===== 
 + 
 + 
 + 
 +{{ :​pm:​prj2025:​vstoica:​poza_borseta1.png?​600 |}}
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
pm/prj2025/vstoica/dragos.dragan1403.1748605962.txt.gz · Last modified: 2025/05/30 14:52 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