This is an old revision of the document!
Dozator Inteligent de Apă
Introducere
Proiectul constă într-un sistem automatizat pentru dozarea apei, cu posibilitatea alegerii cantității prin telecomandă. Am pornit de la ideea de a crea un dispozitiv util în medii aglomerate (birouri, laboratoare, etc.) unde dozarea apei poate fi repetitivă și anevoioasă.
Scopul este de a oferi un mod hands-free, rapid și sigur de a umple pahare cu apă, cu verificarea automată a disponibilității apei și a recipientului. Considerăm că un astfel de dispozitiv poate avea aplicabilitate practică.
Descriere generală
Sistemul este compus din mai multe module hardware și software care colaborează pentru a permite dozarea controlată a apei. Utilizatorul selectează cantitatea dorită folosind o telecomandă IR. Un senzor ultrasonic detectează prezența unui pahar, iar un al doilea senzor verifică nivelul apei în rezervor. Dacă oricare dintre condiții nu este îndeplinită, utilizatorul este informat printr-un mesaj pe LCD și un semnal sonor. Dacă totul este în regulă, o pompă este activată pentru a doza cantitatea corespunzătoare.
Hardware Design
Lista componentelor:
Arduino UNO
Senzor ultrasonic HC-SR04 x2 (pentru nivel apă și detecție pahar)
Display LCD 1602 cu I2C
Modul Releu 5V
Pompă de apă submersibilă
Receptor IR
Telecomandă IR standard
Buzzer pasiv
Fire de conectare, breadboard și sursă de alimentare
Schema electrică și diagrame de semnal vor fi atașate mai jos.
Software Design
Codul implementat pentru acest proiect controlează întregul proces de dozare automată a apei, fiind scris pentru platforma Arduino UNO. Funcționează cu o telecomandă IR pentru inputul utilizatorului, iar feedback-ul vizual este oferit de un ecran LCD 1602 cu I2C. Sistemul se bazează pe doi senzori ultrasonic HC-SR04 pentru a evalua atât nivelul apei din rezervor, cât și prezența unui pahar la punctul de umplere. Acțiunile sunt coordonate în funcție de comenzile IR și de starea senzorilor.
🔧 Biblioteci utilizate
- `Wire.h`: pentru comunicația I2C necesară LCD-ului
- `LiquidCrystal_I2C.h`: controlul afișajului LCD
- `IRremote.h`: pentru decodarea semnalelor de la telecomandă
📌 Configurarea componentelor
- LCD 1602 I2C: adresa `0x27`, dimensiune 16×2
- Receptor IR: conectat la pinul `IRPIN`
- Senzori ultrasonic:
`TRIG_PIN1` & `ECHO_PIN1`: nivelul apei
`TRIG_PIN2` & `ECHO_PIN2`: detecția paharului
- Releu: conectat la `RELAY_PIN`, comandă pompa
- Buzzer: pe `BUZZER_PIN`, avertizare sonoră
- Coduri IR:
`BUTTON_LEFT`: selectează pahar mic
`BUTTON_RIGHT`: selectează pahar mare
`BUTTON_OK`: confirmă selecția
🧮 Variabile și constante
- `pourTime`: durata de activare a pompei
- `MAX_WATER_LEVEL`, `MIN_WATER_LEVEL`: praguri nivel apă
- `MAX_GLASS_DISTANCE`: distanță maximă pentru detectarea paharului
- `SMALL_GLASS`, `BIG_GLASS`: timpi prestabiliți de turnare
🔄 Structura codului
setup():
Inițializează componentele hardware
Configurează pinii și pornește comunicarea cu LCD și IR
loop():
Citește datele de la senzori și le trimite prin serial
Așteaptă comenzi IR:
Selectează tipul de pahar
Afișează informația pe LCD
La apăsarea OK:
Verifică paharul și nivelul apei
Dacă sunt condiții ok → se activează pompa
Altfel → avertizare cu buzzer și mesaj pe LCD
🧩 Funcții auxiliare
- `beep()`: activează buzzer-ul pentru avertizare
- `pourWater()`: comandă releul pentru o durată prestabilită
- `isWater()`: verifică dacă rezervorul are apă suficientă
- `isGlass()`: verifică prezența unui pahar
- `readWaterLevel()`: returnează distanța până la nivelul apei
- `readGlassDistance()`: returnează distanța față de pahar
🔁 Fluxul general de utilizare
1. Utilizatorul alege dimensiunea paharului prin telecomandă
2. Codul IR este decodificat și interpretat
3. La apăsarea OK:
Se verifică prezența unui pahar și nivelul apei
Dacă ambele sunt valabile → se activează pompa
Dacă nu → sistemul avertizează și nu pornește pompa
Download
Fișierele proiectului (schemă, cod sursă, documentație) vor fi atașate în acest spațiu.