Drăgan Dragoș - Borseta pentru nevăzători

Introducere

Proiectul constă într-o borseta pentru nevăzători care detectează obstacole prin senzori și oferă feedback prin sunete.

Scopul principal este îmbunătățirea mobilității și siguranței persoanelor cu deficiențe vizuale, permițându-le să navigheze mai ușor în medii diverse.

Ideea a pornit de la limitările bastonului tradițional, care detectează obstacolele doar prin contact fizic direct la nivelul solului.

Soluția noastră permite identificarea timpurie a obstacolelor la diferite înălțimi, oferind utilizatorului timp de reacție și prevenind potențialele accidente.

Utilitatea proiectului constă în creșterea autonomiei și încrederii persoanelor nevăzătoare, ajutându-le să se deplaseze independent în medii urbane și interioare.

Descriere generală

Borseta este dotată cu un senzor ultrasonic care permite detectarea obstacolelor din mediul înconjurător. Pentru a oferi feedback utilizatorului, este integrat un buzzer pasiv ce emite semnale sonore cu intensitate variabilă, în funcție de distanța față de obiectele detectate. În plus, borseta include un al doilea buzzer ascuns și un senzor cu infraroșu, care detectează prezența persoanelor din apropiere. Atunci când senzorul detectează o posibilă amenințare, se activează automat o alarmă de securitate.

Sistemul este centrat în jurul unui Arduino Nano care coordonează toate componentele și procesează datele.

Hardware-ul include:

  • Senzor laser VL53L0X (comunicare I2C) pentru detectarea obstacolelor
  • Senzor ultrasonic HC-SR04
  • Buzzer pasiv - navigare
  • Buzzer pasiv - alarma
  • Buton tactil
  • Arduino Nano
  • Baterie
  • Breadboard

Interacțiunea dintre componente este concepută pentru a transforma datele brute ale senzorului în informații intuitive și utile pentru utilizator, creând astfel o soluție eficientă pentru navigarea independentă.

Hardware Design

Componentă Descriere
Arduino Microcontroler folosit pentru citirea datelor de la senzori și controlul ieșirilor
VL53L0X Senzor IR Time-of-Flight conectat prin I2C pentru măsurarea distanței
Senzor ultrasonic (HC-SR04) Detectează distanța până la obstacole folosind unde ultrasonice
Buton push (4 pini) Comutator pentru activarea/dezactivarea buzzerului
Buzzer pasiv (navigare) Emette sunete controlate prin PWM, intensitatea variază în funcție de distanță (conectat la senzorul ultrasonic)
Buzzer pasiv (alarmă) Emette sunet puternic când senzorul IR detectează o prezență
Senzor IR (PIR sau IR de proximitate) Detectează prezența persoanelor din jur pentru protecție împotriva furtului
Breadboard (placă de test) Utilizată pentru asamblarea circuitului
Sursă de alimentare Alimentează întregul circuit

Software Design

Mediu de dezvoltare: Arduino IDE
Librării și surse 3-rd party:

Wire – magistrală I²C pentru senzorul VL53L0X

VL53L0X – bibliotecă Pololu pentru senzorul ToF (Time-of-Flight)

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

Algoritmi principali:

- Inițializare periferice – USART (115 200 baud), I²C, pinii HC-SR04, buzzere, buton și întrerupere externă. - Măsurare distanță VL53L0X – citire la 200 ms, filtrare timeout, interpretare alarmă sub 500 mm. - Măsurare distanță HC-SR04 – puls triggerează senzorul, conversie durată → cm, filtrare timeout. - Gestionare alarme audio

  1. VL53L0X: sunet ciclic (4 pași) dacă distanța < 500 mm.
  2. 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.  
Funcții implementate:
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
Diagrame / flux
          +-----------+           +-------------+
          |  VL53L0X  | I²C  ---> |  Dist(mm)   |
          +-----------+          /+-------------+
                                 | <500?        |
                                 |   yes -> playAlarmSound()
                                 |   no  -> freq = f(dist)
                                 +-------------+
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:

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

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.

Partea hardware care este integrată borseta

Produsul final

Bibliografie/Resurse

• Arduino – Documentație oficială și exemple de utilizare

• Optimus Digital – Magazin de componente și sursă de informații tehnice

• Datasheet-urile componentelor – Consultate în special pentru senzorul IR, pentru înțelegerea corectă a tensiunii de alimentare și a semnalului de ieșire

• YouTube – Tutoriale video și demonstrații practice legate de utilizarea senzorilor și a buzzerelor în proiecte embedded

Export to PDF

pm/prj2025/vstoica/dragos.dragan1403.txt · Last modified: 2025/06/02 12:05 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