Monitor de Hidratare
Introducere
Monitor de Hidratare este un dispozitiv compact de monitorizare a consumului zilnic de apa.
Ce face: Sistemul functioneaza ca un cantar inteligent pe care utilizatorul asaza sticla de apa. Dispozitivul masoara in timp real greutatea sticlei si calculeaza automat cantitatea de apa consumata, afisand progresul pe un ecran OLED. Un buzzer emite notificari sonore periodice pentru a reaminti utilizatorului sa bea apa.
Scopul proiectului: Hidratarea corecta este esentiala pentru sanatate, dar majoritatea oamenilor uita sau nu stiu exact cat au baut intr-o zi. Dispozitivul automatizeaza acest proces fara ca utilizatorul sa faca nimic altceva decat sa aseze sticla pe platforma.
Ideea de pornire: Proiectul a pornit de la nevoia personala de a monitoriza consumul de apa intr-un mod pasiv, fara aplicatii de telefon sau introducere manuala a datelor.
Utilitate: Dispozitivul este util oricui doreste sa isi formeze obiceiuri sanatoase de hidratare, in special persoanelor care petrec mult timp la birou sau la calculator.
Descriere generală
Module si interactiuni:
ATmega328PB: unitatea centrala de procesare. Citeste datele de la HX711, calculeaza consumul de apa, actualizeaza display-ul si gestioneaza butoanele si buzzerul.
Load Cell 5kg + HX711: senzorul de greutate trimite un semnal analogic catre HX711, care il amplifica si il converteste la semnal digital pe 24 biti, transmis catre microcontroller prin 2 fire (CLK + DAT).
Display OLED SSD1306: afiseaza informatii despre greutatea curenta, cantitatea de apa consumata si obiectivul zilnic. Comunicare prin I2C.
Butoane: permit utilizatorului sa seteze obiectivul zilnic de hidratare, sa efectueze functia tare (zero) si sa navigheze in meniu.
Buzzer pasiv: emite semnale sonore la intervale regulate (reminder de hidratare) sau la atingerea obiectivului zilnic. Controlat prin semnal PWM.
Laboratoare utilizate
Lab 0 - GPIO — butoanele de navigare si modulul buzzer sunt conectate prin pini GPIO
Lab 2 - Intreruperi — apasarea butoanelor este detectata prin intreruperi externe, nu prin polling
Lab 3 - Timere si PWM — buzzerul pasiv este controlat prin semnal PWM, iar reminderele de hidratare sunt generate cu un timer periodic
Lab 6 - I2C — comunicarea cu display-ul OLED SSD1306 se face prin protocolul I2C
Hardware Design
Lista de piese
| Nr. | Componenta | Cantitate | Rol in proiect |
| 1 | Load Cell 5kg | 1 buc. | Senzorul care simte cat cantareste sticla in fiecare moment |
| 2 | Modul HX711 | 1 buc. | Preia semnalul slab de la load cell si il face utilizabil pentru microcontroller |
| 3 | Ecran OLED SSD1306 0.96” | 1 buc. | Afiseaza progresul de hidratare in timp real |
| 4 | ATmega328PB Xplained Mini | 1 buc. | Creierul intregului sistem, coordoneaza toate celelalte componente |
| 5 | Modul Buzzer Pasiv 5V | 1 buc. | Reaminteste utilizatorului sa bea apa daca trece prea mult timp fara consum |
| 6 | Butoane PCB Mini 6x6x5mm | 3 buc. | Permit setarea obiectivului zilnic si resetarea cantarului |
| 7 | Kit rezistente | 1 set | Rezistente de pull-up pentru butoane |
| 8 | Fire Dupont M-F | 1 set | Leaga modulele externe la placa fara lipire |
| 9 | Fire breadboard M-M | 1 set | Conexiuni rapide intre componente pe breadboard |
| 10 | Breadboard 830 pini | 1 buc. | Permite testarea circuitului fara lipire permanenta |
| 11 | Cablu Micro-USB | 1 buc. | Alimentare si programare placa de la laptop sau power bank |
Circuit
Schema electrica
Pini folositi
| Componenta | Pin componenta | Pin ATmega328PB Xplained Mini | Explicatie |
| HX711 | VCC | 5V | Modulul este alimentat la 5V de la placa |
| HX711 | GND | GND | Toate componentele trebuie sa aiba masa comuna |
| HX711 | DAT / DOUT | PD2 | Pin digital folosit pentru citirea datelor de la HX711 |
| HX711 | CLK / SCK | PD3 | Pin digital folosit pentru semnalul de clock catre HX711 |
| OLED SSD1306 | VDD / VCC | 5V | Display-ul este alimentat de la placa |
| OLED SSD1306 | GND | GND | Masa comuna |
| OLED SSD1306 | SDA | PC4 / SDA | Pinul standard pentru date I2C |
| OLED SSD1306 | SCL | PC5 / SCL | Pinul standard pentru clock I2C |
| Buton UP | semnal | PD4 | Buton pentru navigare in meniu |
| Buton DOWN | semnal | PD5 | Buton pentru navigare in meniu |
| Buton OK/TARE | semnal | PD6 | Buton pentru confirmare si resetarea cantarului |
| Buzzer pasiv | semnal / + | PB1 / OC1A | Pin potrivit pentru PWM, folosit pentru generarea sunetului |
| Buzzer pasiv | GND / - | GND | Masa comuna |
Schema
Butoanele vor fi citite folosind rezistentele interne de pull-up ale microcontrollerului. Asta inseamna ca un pin al butonului merge la pinul digital, iar celalalt merge la GND. Cand butonul este apasat, pinul este tras la 0 logic.
Am ales pinii PC4 si PC5 pentru OLED deoarece acestia sunt pinii dedicati pentru I2C. Pentru buzzer am ales PB1, deoarece poate fi folosit cu PWM. Pentru HX711 am folosit PD2 si PD3 pentru ca modulul are nevoie doar de doua linii digitale: una pentru date si una pentru clock.
Software Design
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
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Concluzii
Download
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.
Jurnal
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
Bibliografie/Resurse
Resurse hardware
Resurse software / scheme