This is an old revision of the document!
Proiectul consta in realizarea unui sistem automatizat care permite dozarea precisa si sigura a unui lichid, punand accent pe controlul exact al volumului si prevenirea risipei.
Scopul: Construirea unui produs fizic util, care imbina elemente de electronica, senzoristica si programare.
Ipoteza: Credem ca efectuarea dozarii pe baza de timere precise incorporate in microcontroller va asigura dozarea exacta a cantitatii selectate de utilizator (ex. 50ml, 100ml) si o functionare mult mai fiabila a sistemului, eliminand erorile umane si complexitatea mecanica a unui senzor de greutate.
Elemente de noutate: Integrarea unui senzor laser Time-of-Flight (ToF) pentru a preveni turnarea accidentala si o interfata grafica interactiva pe ecran OLED pentru selectia volumului de lichid.
Metrici si tinte de performanta:
- Timpul de reactie al interfetei (la apasarea butoanelor) trebuie sa fie de sub 50 milisecunde.
- Eroarea de dozare a lichidelor trebuie sa fie mai mica de 5% din cantitatea ceruta.
- Rata de fals-pozitiv pentru senzorul de prezenta a paharului sa fie 0%.
Arhitectura sistemului se bazeaza pe o placa de dezvoltare ESP32. Utilizatorul interactioneaza cu dispozitivul folosind 3 butoane de control (Sus, Jos, Selectare) pentru a naviga printr-un meniu afisat pe un ecran OLED.
Odata ce o bautura este selectata, sistemul verifica starea senzorului Time-of-Flight (VL53L0X) de la baza suportului. Daca un pahar este prezent la distanta corecta, ESP32 calculeaza timpul necesar de functionare pe baza volumului selectat din meniu si actioneaza pompa peristaltica folosind un modul cu relee. Cand timpul expira, pompa se opreste automat, iar pe ecran este afisat un mesaj de finalizare. {{:pm:prj2026:img-20260516-wa0010.jpeg?300|}
Am separat circuitul de putere (12V) de logica de control (5V si 3.3V).
Lista de componente:
- Placa de dezvoltare ESP32 (Microcontrollerul principal).
- 1x Pompa Peristaltica Kamoer (12V DC): Model de precizie folosit pentru a muta lichidul fara ca acesta sa atinga mecanismul intern.
- Modul cu 4 Relee (5V logic): Actioneaza ca niste intrerupatoare controlate electronic pentru a porni/opri pompa de 12V. S-a optat pentru varianta cu 4 canale pentru a asigura scalabilitatea hardware a proiectului in cazul adaugarii ulterioare de noi actuatoare (future-proofing).
- Display OLED 0.96 (I2C): Periferic pentru interfata vizuala.
- Senzor de distanta Time-of-Flight VL53L0X: Periferic inteligent de siguranta montat sub pahar care masoara cu exactitate milimetrica distanta.
- 3x Butoane de tip Push-button: Periferice pentru navigarea meniului.
- Sursa de alimentare 12V (3A): Pentru asigurarea curentului necesar motorului in conditii optime.
- Modul Step-Down LM2596 (3 canale): Coboara tensiunea de la 12V la 5V pentru a alimenta placa ESP32 si logica releelor. S-a ales o varianta cu mai multe canale tot din considerente de scalabilitate.
Codul integreaza functionalitati din 4 laboratoare studiate:
- I2C: Utilizat ca o magistrala comuna de comunicatie (shared bus) atat pentru a transmite structura meniului catre display-ul OLED, cat si pentru a citi valorile de la senzorul VL53L0X. Acest lucru eficientizeaza numarul de pini folositi de pe ESP32.
- Intreruperi: Apasarea celor 3 butoane declanseaza intreruperi hardware (atasate pe pinii GPIO corespunzatori). Aceasta abordare a fost aleasa pentru a nu bloca procesorul prin citirea continua a starii pinilor si include debouncing software.
- Timere: Esentiale pentru acuratetea dozarii. Functionarea pompei este controlata prin timere hardware pentru a masura exact milisecundele necesare turnarii volumului specificat de utilizator.
- GPIO: Setarea starii HIGH/LOW pentru activarea releului asociat pompei.
Sistemul a fost evaluat prin monitorizarea seriala pentru a ne asigura ca bucla principala are un timp de executie sub 10ms si ca functiile de turnare nu blocheaza microcontrollerul. Mai mult, starea de POURING este intrerupta instantaneu (sistem fail-safe) daca senzorul I2C detecteaza ca paharul a fost indepartat accidental in timpul procesului de dozare, prevenind astfel varsarea lichidului.