This is an old revision of the document!
Proiectul constă în realizarea unui instrument de măsură 2-în-1, portabil, bazat pe un microcontroller ATmega328P standalone. Dispozitivul combină funcționalitatea unei rulete digitale (măsurarea distanței fără contact) cu cea a unei nivele electronice (boloboc digital pentru determinarea gradului de înclinare), oferind date în timp real pe un afișaj LCD și feedback sonor.
Sistemul obține date de la două module senzoriale:
- Senzorul Ultrasonic HC-SR04 - folosit pentru a măsura timpul de zbor al sunetului și a calcula distanța până la un obstacol.
- Senzorul Inerțial MPU-6050 - un modul cu accelerometru și giroscop care comunică prin protocolul I2C, folosit pentru a calcula unghiul de înclinare pe axele X și Y.
Utilizatorul primește informațiile vizual, pe un ecran LCD text 16×2, și auditiv, printr-un buzzer pasiv. Sistemul sonor este dinamic: emite bip-uri a căror frecvență se modifică pe măsură ce dispozitivul se apropie de unghiul de 0 grade (orizontala perfectă), transformându-se într-un ton continuu la nivelare optimă.
Ideea a pornit de la necesitatea de a avea o unealtă de măsură multifuncțională pentru proiecte de bricolaj (DIY), demonstrând totodată capacitatea de a prelucra date brute de la senzori diferiți și de a le transforma în mărimi fizice reale (centimetri și grade).
Laboratoare folosite: GPIO, Timere, PWM, I2C.
1. Flux de funcționare - Modul Ruletă:
ATmega328P trimite un impuls scurt (10µs) pe pinul Trig al HC-SR04.
Senzorul emite un tren de impulsuri ultrasonice și ridică pinul Echo.
Microcontrollerul măsoară lățimea impulsului Echo folosind un Timer/Întrerupere.
Distanța este calculată și actualizată pe ecranul LCD.
2. Flux de funcționare - Modul Nivelă:
Microcontrollerul interoghează constant senzorul MPU-6050 prin magistrala I2C.
Datele brute de accelerație pe axele X, Y, Z sunt preluate și trecute printr-o funcție trigonometrică (atan2) pentru a afla unghiul de înclinare.
Valoarea este afișată pe rândul doi al LCD-ului.
Modulul PWM controlează buzzer-ul pasiv: dacă unghiul este 0°, buzzer-ul emite un semnal continuu; altfel, generează pulsuri cu pauze proporționale cu unghiul de înclinare.
| Componenta | Link | Descriere |
|---|---|---|
| Placă dezvoltare ATmega328P-XMINI | - | Microcontroller principal |
| Senzor ultrasonic HC-SR04+ | din kit Plusivo | Măsurare distanță (funcția ruletă) |
| Modul MPU-6050 (Giroscop/Accel) | Magazin | Măsurare înclinare (funcția nivelă) pe I2C |
| Display LCD 16×2 cu modul I2C | Magazin | Afișaj interfață utilizator |
| Buzzer Pasiv | din kit Plusivo | Feedback sonor dinamic prin semnal PWM |
| 2x Butoane tactile | din kit Plusivo | Schimbare mod afișare și măsurare în mod ruletă |
| Sursă alimentare breadboard HW-131 | din kit Plusivo | Coboară tensiunea bateriei la 5V constanți |
| Baterie 9V + Mufă DC | din kit Plusivo | Alimentare sistem portabil |
| Breadboard 830 puncte + fire | din kit Plusivo | Montaj prototipare |
| Componentă | Pin ATmega328P | Funcție |
|---|---|---|
| LCD (SDA) | PC4 | Linie de date I2C |
| LCD (SCL) | PC5 | Linie de ceas I2C |
| MPU-6050 (SDA) | PC4 | Același bus I2C (paralel cu LCD) |
| MPU-6050 (SCL) | PC5 | Același bus I2C (paralel cu LCD) |
| HC-SR04 (Trig) | PD2 | Semnal de declanșare ultrasonic |
| HC-SR04 (Echo) | PD3 | Măsurare timp de zbor |
| Buzzer | PB1 | Semnal PWM pentru ton variabil |
| Buton 1 | PD4 | Schimbare mod afișare |
| Buton 2 | PD5 | Măsurare în mod ruletă |
LCD-ul și MPU-6050 împart același bus I2C (PC4/PC5) deoarece protocolul I2C permite mai multe dispozitive pe aceleași fire, fiecare identificat printr-o adresă unică (LCD: 0x27, MPU-6050: 0x68). Buzzer-ul este conectat la PB1 deoarece acesta suportă ieșire PWM hardware prin Timer1 (OC1A), permițând generarea de tonuri fără să blocheze procesorul. Butoanele folosesc pull-up intern activat din software, deci nu necesită rezistențe externe.
La momentul actual au fost testate și confirmate funcționale următoarele componente:
Toate componentele active sunt conectate simultan și funcționează fără conflicte pe același breadboard.
Se poate observa că butoanele și display-ul funcționează. Testarea a fost făcută cu un cod simplu
care afișează un mesaj pe display când unul din butoane e observat ca fiind apăsat.
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.