Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2025:avaduva:andrei_mirel.birtia [2025/05/19 22:06]
andrei_mirel.birtia [Descriere generală]
pm:prj2025:avaduva:andrei_mirel.birtia [2025/05/26 20:11] (current)
andrei_mirel.birtia [Software Design]
Line 10: Line 10:
  
 <note tip> <note tip>
-       ​+---------------+ ​           +----------------+ +**Diagrama bloc** 
-       |   ​Display ​    ​| ​           |   LED status ​  | + 
-       |   OLED 0.96"  ​           ​+--------+-------+ +{{:​pm:​prj2025:​avaduva:​diagrama_mirel.png?600|}} 
-       ​+-------+-------+ ​                    | +
-               ​| ​                            v +
-               ​v ​                    ​+-------+-------+ +
-       ​+-------+-------+ ​            ​| ​              | +
-       ​| ​              ​|<​------------+ ATmega328P ​   | +
-       ​| ​ Senzor umid. | I2C/​SPI ​    ​| ​   MCU        | +
-       ​| ​  sol (ADC)   ​| ​            ​+---+---+---+---+ +
-       ​+-------+-------+ ​                ​| ​  ​| ​  | +
-               ​| ​                        ​| ​  ​| ​  ​+--->​ PWM -> Servo + cremalieră +
-               ​| ​                        ​| ​  ​+------->​ GPIO -> Pompa apă +
-               ​| ​                        ​+---------->​ GPIO -> LED indicator +
-               | +
-               v +
-         ​Rezervor apă +
-         ​+
 ATmega328P preia măsurători ale umidității solului prin ADC, procesează valorile și le afișează pe ecranul LED. Când umiditatea scade sub prag, microcontroller-ul activează pompa pentru reumplerea seringii și apoi servo-motorul pentru administrarea precisă a apei pe un interval adaptat nevoilor plantei. ATmega328P preia măsurători ale umidității solului prin ADC, procesează valorile și le afișează pe ecranul LED. Când umiditatea scade sub prag, microcontroller-ul activează pompa pentru reumplerea seringii și apoi servo-motorul pentru administrarea precisă a apei pe un interval adaptat nevoilor plantei.
 </​note>​ </​note>​
Line 47: Line 33:
   * Baterie 9V   * Baterie 9V
   * Buzzer   * Buzzer
 +**3.2 Tabela conexiuni piese**
 +| **Componentă** ​               | **Pin MCU (nume, nr.)** ​              | **Funcție** ​                            |
 +| ----------------------------- | ------------------------------------- | --------------------------------------- |
 +| **Senzor umiditate sol**      | PC0 (ADC0, pin 23)                    | ADC – măsurare umiditate sol            |
 +| **LCD 16×2 I2C (MCP23017)** ​  | PC4 (SDA, pin 27) ↔ PC5 (SCL, pin 28) | I2C – afișare umiditate + stare sol     |
 +| **Servo-motor cu cremalieră** | PB1 (OC1A PWM, pin 13)                | PWM – poziționare piston (buton manual) |
 +| **Pompă de apă (prin releu)** | PB2 (pin 14)                          | GPIO – comutare releu                   |
 +| **Releu pompa** ​              | IN ← PB2 (pin 14), VCC 5V, GND        | Activează pompa manual (cu buton) ​      |
 +| **LED roșu (sol uscat)** ​     | PD5 (pin 9)                           | GPIO – aprins când solul e uscat        |
 +| **LED galben (sol mediu)** ​   | PD6 (pin 10)                          | GPIO – aprins când solul e moderat ​     |
 +| **LED verde (sol umed)** ​     | PD7 (pin 11)                          | GPIO – aprins când solul e umed         |
 +| **Buton Servo – Înainte** ​    | PD2 (INT0, pin 32)                    | Digital input cu pull-up ​               |
 +| **Buton Servo – Înapoi** ​     | PD3 (INT1, pin 1)                     | Digital input cu pull-up ​               |
 +| **Buton Activare pompă** ​     | PD4 (pin 2)                           | Digital input cu pull-up ​               |
 +
 +**3.3 Schematic**
 +
 +{{:​pm:​prj2025:​avaduva:​schematic_pm.png?​600|}}
 +
 +**3.4 Implementarea Hardware**
 +
 +**3.5 Bill of Materials**
 </​note>​ </​note>​
  
Line 53: Line 61:
  
 <note tip> <note tip>
-Arduino ​IDE+**Stadiul actual al implementarii software** 
 +  * Toate functionalitatile de baza au fost implementate si testate: 
 +  * Citirea umiditatii solului cu un senzor analogic 
 +  * Afișarea valorii umiditatii si a starii solului (umed, mediu, uscat) pe un ecran LCD I2C 
 +  * Aprinderea automata a unui LED corespunzator starii solului (rosu, galben sau verde) 
 +  * Controlul manual al unui servo prin doua butoane (impinge/​trage pistonul) 
 +  * Activarea pompei de apa printr-un al treilea buton (pentru umplerea seringii) 
 +  * Pompa este controlata printr-un releu conectat la microcontroller 
 + 
 +**Structura modulara (C++)** 
 + 
 +Proiectul este implementat modular, folosind clase separate pentru fiecare componenta:​ 
 +  * SenzorUmiditate – gestioneaza citirea valorii de la senzorul de umiditate 
 +  * AfisajLCD – gestioneaza initializarea si afisarea pe LCD (valoare + stare sol) 
 +  * ControlServo – controleaza servo-motorul cu pozitii predefinite 
 +  * PompaApa – gestioneaza activarea pompei prin GPIO/​releu 
 +  * LeduriStareSol – gestioneaza cele 3 LED-uri in functie de umiditate 
 + 
 +**Motivatia alegerii bibliotecilor** 
 + 
 +//​LiquidCrystal_I2C//​ 
 +  * Justificare:​ Permite comunicarea cu LCD-ul prin doar 2 fire (SDA/SCL) în loc de 6+ fire 
 +  * Avantaj: Economisește pini digitali pentru alte componente 
 +  * Performanță:​ Protocol I2C stabil și rapid pentru actualizări frecvente 
 +//​Servo.h//​ 
 +  * Justificare:​ Biblioteca standard ​Arduino ​pentru controlul precis al servo-motorului 
 +  * Funcționalitate:​ Generează semnale PWM cu timing exact pentru poziționarea servo-ului 
 +  * Compatibilitate:​ Optimizată pentru ATmega328P 
 + 
 +**Elementul de noutate al proiectului** 
 + 
 +Sistemul permite controlul manual al unei irigari precise folosind o seringa actionata cu cremaliera. Proiectul combina logica manuala si indicatoare vizuale clare (LED-uri, LCD), fiind ideal pentru invatare si prototipare. 
 + 
 +**Utilizarea functionalitatilor din laborator** 
 + 
 +//ADC (Analog-to-Digital Converter)//​ 
 +  * Aplicație: Citirea senzorului de umiditate (pin A0) 
 +  * Implementare:​ analogRead() pentru conversia valorii analogice în digitală 
 +  * Rezoluție: 10-bit (0-1023) pentru precizie mare 
 +//PWM (Pulse Width Modulation)//​ 
 +  * Aplicație: Controlul servo-motorului (pin 9) 
 +  * Implementare:​ Biblioteca Servo generează semnale PWM de 50Hz 
 +  * Funcție: Poziționarea precisă a pistonului seringii 
 +//I2C (Inter-Integrated Circuit)//​ 
 +  * Aplicație: Comunicația cu LCD-ul (pini SDA/SCL) 
 +  * Avantaj: Comunicare serială cu doar 2 fire 
 +  * Eficiență:​ Libereazã pini pentru alte componente 
 +//GPIO (General Purpose Input/​Output)//​ 
 +  * Input: 3 butoane cu pull-up intern 
 +  * Output: Control pompă (releu) și 3 LED-uri indicator 
 +  * Debouncing: Implementat prin delay pentru stabilitate 
 + 
 +**Scheletul proiectului si interactiunea functionalitatilor** 
 + 
 +<​code>​ 
 +void loop() { 
 +  int umiditate = senzor.citeste();​ 
 +  lcd.afiseazaUmiditate(umiditate);​ 
 +  lcd.afiseazaStare(umiditate);​ 
 +  leduri.actualizeaza(umiditate);​ 
 +  if (digitalRead(BUTON_INAINTE) == LOW) { 
 +    servo.impinge();​ 
 +  } 
 +  if (digitalRead(BUTON_INAPOI) == LOW) { 
 +    servo.trage();​ 
 +  } 
 +  if (digitalRead(BUTON_POMPA) == LOW) { 
 +    pompa.porneste();​ 
 +  } else { 
 +    pompa.opreste();​ 
 +  } 
 +  delay(100);​ 
 +
 +</​code>​ 
 +Fluxul de date: 
 +  * Senzor → ADC → Procesare → LCD + LED-uri 
 +  * Butoane → GPIO → Logică control → Servo/​Pompă 
 +  * LCD ← I2C ← Microcontroller → PWM → Servo 
 + 
 +**Calibrarea senzorului de umiditate** 
 +  * Sol uscat: Măsurare în sol complet uscat → valoare ~800-1000 
 +  * Sol umed: Măsurare în sol saturat cu apă → valoare ~200-400 
 +  * Sol moderat: Măsurare în sol normal → valoare ~400-600 
 +//Valoarea citita este afisata si determinata textual + vizual prin LED-uri.//​ 
 + 
 +**Demo** 
 +  * Nu este implementat complet, lipseste mecanismul de impingere al apei cu ajutorul servomotorului si lipseste displayul 
 +  * Link: https://​www.youtube.com/​watch?​v=82IfjY7yO0Q
 </​note>​ </​note>​
  
pm/prj2025/avaduva/andrei_mirel.birtia.1747681564.txt.gz · Last modified: 2025/05/19 22:06 by andrei_mirel.birtia
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0