This shows you the differences between two versions of the page.
pm:prj2025:vstoica:dragos.dragan1403 [2025/05/30 01:57] dragos.dragan1403 [Descriere generală] |
pm:prj2025:vstoica:dragos.dragan1403 [2025/06/02 12:05] (current) dragos.dragan1403 [Software Design] |
||
---|---|---|---|
Line 20: | Line 20: | ||
* Senzor laser VL53L0X (comunicare I2C) pentru detectarea obstacolelor | * Senzor laser VL53L0X (comunicare I2C) pentru detectarea obstacolelor | ||
* Senzor ultrasonic HC-SR04 | * Senzor ultrasonic HC-SR04 | ||
- | * Buzzer pasiv detectarea obiectelor din jur | + | * Buzzer pasiv - navigare |
* Buzzer pasiv - alarma | * Buzzer pasiv - alarma | ||
* Buton tactil | * Buton tactil | ||
Line 34: | Line 34: | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | ^Component ^Description ^ | + | ^ Componentă ^ Descriere ^ |
- | | Arduino | Microcontroller used to read sensor data and control output | | + | | Arduino | Microcontroler folosit pentru citirea datelor de la senzori și controlul ieșirilor | |
- | | VL53L0X | IR Time-of-Flight Distance Sensor connected via I2C | | + | | VL53L0X | Senzor IR Time-of-Flight conectat prin I2C pentru măsurarea distanței | |
- | | Push Button (4-pin) | Toggle switch to turn buzzer on or off when pressed | | + | | Senzor ultrasonic (HC-SR04) | Detectează distanța până la obstacole folosind unde ultrasonice | |
- | | Passive Buzzer | Outputs PWM-controlled sound, varies pitch based on distance | | + | | Buton push (4 pini) | Comutator pentru activarea/dezactivarea buzzerului | |
- | | Breadboard | Circuit assembly | | + | | Buzzer pasiv (navigare) | Emette sunete controlate prin PWM, intensitatea variază în funcție de distanță (conectat la senzorul ultrasonic) | |
- | | Power Source | Powers the circuit | | + | | 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 | | ||
- | {{ :pm:prj2025:vstoica:schematic_baston.png?600 |}} | + | {{ :pm:prj2025:vstoica:schema_bloc_borseta.png?600 |}} |
===== Software Design ===== | ===== Software Design ===== | ||
+ | == Mediu de dezvoltare: Arduino IDE == | ||
- | <note tip> | + | == Librării și surse 3-rd party: == |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | |
- | * 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 ===== | + | Wire – magistrală I²C pentru senzorul VL53L0X |
- | <note tip> | + | VL53L0X – bibliotecă Pololu pentru senzorul ToF (Time-of-Flight) |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
+ | 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 | ||
+ | - VL53L0X: sunet 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. | ||
+ | |||
+ | == 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: == | ||
+ | |||
+ | {{: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 ===== | ||
- | ===== Download ===== | ||
- | <note warning> | + | 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. |
- | 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**. | + | ===== Partea hardware care este integrată borseta ===== |
- | </note> | + | |
- | ===== Jurnal ===== | ||
- | <note tip> | + | |
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | {{ :pm:prj2025:vstoica:poze_borseta2.png?600 |}} |
- | </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-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | |
- | </note> | + | • 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 | ||
<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> | ||