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/25 22:30]
andrei_mirel.birtia [Hardware Design]
pm:prj2025:avaduva:andrei_mirel.birtia [2025/05/26 20:11] (current)
andrei_mirel.birtia [Software Design]
Line 61: 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.1748201439.txt.gz · Last modified: 2025/05/25 22:30 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