Differences

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

Link to this comparison view

pm:prj2026:bianca.popa1106:miruna.iliescu [2026/05/15 20:39]
miruna.iliescu
pm:prj2026:bianca.popa1106:miruna.iliescu [2026/05/24 20:36] (current)
miruna.iliescu [Hardware Design]
Line 37: Line 37:
 **Modul manual (MANUAL):** utilizatorul poate controla pompa prin apăsarea succesivă a **Modul manual (MANUAL):** utilizatorul poate controla pompa prin apăsarea succesivă a
 butonului. Prima apăsare comută sistemul în modul manual (pompa oprită). A doua apăsare butonului. Prima apăsare comută sistemul în modul manual (pompa oprită). A doua apăsare
-pornește un ciclu de udare format din mai multe pulsuri scurte, cu pauze între ele — pauze+pornește un ciclu de udare format din mai multe pulsuri scurte, cu pauze între elepauze
 în care butonul rămâne activ, permițând oprirea de urgență. A treia apăsare revine la în care butonul rămâne activ, permițând oprirea de urgență. A treia apăsare revine la
 modul automat. modul automat.
Line 89: Line 89:
   * Fire de legătură   * Fire de legătură
  
-{{ :​pm:​prj2026:​bianca.popa1106:​miruna.iliescu:​schema_hardware.png?​700 |Schema hardware }}+{{ :​pm:​prj2026:​bianca.popa1106:​miruna.iliescu:​schema_hardware.png?​800 |Schema hardware }}
  
 Placa Arduino-compatible reprezintă unitatea centrală de control a sistemului. Aceasta Placa Arduino-compatible reprezintă unitatea centrală de control a sistemului. Aceasta
Line 101: Line 101:
 Pompa de apă este controlată prin modulul releu (pinul D7). Releul permite pornirea și Pompa de apă este controlată prin modulul releu (pinul D7). Releul permite pornirea și
 oprirea pompei fără ca aceasta să fie alimentată direct dintr-un pin al microcontrolerului. oprirea pompei fără ca aceasta să fie alimentată direct dintr-un pin al microcontrolerului.
-Pompa este alimentată separat de la suportul cu 4 baterii AA (aproximativ ​6V). Dioda+Pompa este alimentată separat de la suportul cu 4 baterii AA (6V). Dioda
 1N4007, montată în paralel cu terminalele pompei (catodul spre +), elimină spike-urile 1N4007, montată în paralel cu terminalele pompei (catodul spre +), elimină spike-urile
 inductive generate de motorul DC la comutarea releului. inductive generate de motorul DC la comutarea releului.
Line 108: Line 108:
 Modulul PCF8574 realizează conversia de la I2C la interfața paralelă a LCD-ului HD44780. Modulul PCF8574 realizează conversia de la I2C la interfața paralelă a LCD-ului HD44780.
  
-Butonul este conectat pe pinul D2 (INT0), cu pull-up intern ​activat. Întreruperea externă +Butonul este conectat pe pinul D2 (INT0), cu rezistenta ​pull-up intern ​activata. Întreruperea externă 
-se declanșează pe front descrescător ​(1→0), adică la apăsarea butonului.+se declanșează pe frontul ​descrescător,​ adică la apăsarea butonului. 
 + 
 +==== Diagrama de semnal ==== 
 + 
 +{{ :​pm:​prj2026:​bianca.popa1106:​miruna.iliescu:​protectie_emi.png?​1000 |Protectie EMI }} 
 + 
 +{{ :​pm:​prj2026:​bianca.popa1106:​miruna.iliescu:​ciclu_irigare_auto.png?​1000 | Ciclu irigare AUTO }}
  
 ===== Software Design ===== ===== Software Design =====
Line 121: Line 127:
 Timpul este gestionat printr-un contor propriu de milisecunde (uptime_ms()),​ implementat Timpul este gestionat printr-un contor propriu de milisecunde (uptime_ms()),​ implementat
 folosind **Timer1 în mod CTC** cu prescaler 64 și OCR1A = 249, generând o întrerupere la folosind **Timer1 în mod CTC** cu prescaler 64 și OCR1A = 249, generând o întrerupere la
-fiecare 1 ms (pentru F_CPU = 16 MHz).+fiecare 1 ms.
  
 ==== Moduri de funcționare ==== ==== Moduri de funcționare ====
Line 132: Line 138:
 În MODE_AUTO, mașina de stări (irrigation_state_t) parcurge: În MODE_AUTO, mașina de stări (irrigation_state_t) parcurge:
  
-  * **STATE_IDLE**:​ citire senzor la intervale regulatedacă umiditatea < prag → STATE_WATERING +  * **STATE_IDLE**:​ citire senzor la intervale regulatedacă umiditatea < prag -> STATE_WATERING 
-  * **STATE_WATERING**:​ pompă pornită ​pentru ​WATERING_TIME_MSla expirare ​→ STATE_ABSORB_WAIT +  * **STATE_WATERING**:​ pompă pornită ​timp de WATERING_TIME_MSla expirare ​-> STATE_ABSORB_WAIT 
-  * **STATE_ABSORB_WAIT**:​ așteptare ABSORB_TIME_MS pentru absorbția apei → STATE_IDLE+  * **STATE_ABSORB_WAIT**:​ așteptare ABSORB_TIME_MS pentru absorbția apei -> STATE_IDLE
   * **STATE_SAFETY_WAIT**:​ pauză de siguranță după MAX_WATERING_CYCLES cicluri consecutive   * **STATE_SAFETY_WAIT**:​ pauză de siguranță după MAX_WATERING_CYCLES cicluri consecutive
  
Line 165: Line 171:
  
 ===== Rezultate ===== ===== Rezultate =====
 +==== Hardware final proiect ====
 +{{ :​pm:​prj2026:​bianca.popa1106:​miruna.iliescu:​hw2.png?​800 | Hardware final proiect}}
 +{{ :​pm:​prj2026:​bianca.popa1106:​miruna.iliescu:​hw1.png?​800 | Hardware final proiect}}
  
-Această secțiune va fi completată după finalizarea testării sistemului.+==== Senzor de umididate si modulul interfata I2C pentru LCD ==== 
 +{{ :​pm:​prj2026:​bianca.popa1106:​miruna.iliescu:​hw_senzor_lcd.png?​800 | Senzor de umididate si modulul interfata I2C pentru LCD}}
  
-===== Concluzii =====+==== Sistem de irigare finalizat ​==== 
 +{{ :​pm:​prj2026:​bianca.popa1106:​miruna.iliescu:​hw_start.png?​800 | Sistem de irigare }}
  
-Această secțiune va fi completată după finalizarea proiectului.+==== Video demonstrativ al modului de functionare ====
  
-===== Cod sursă și resurse =====+[[https://​youtube.com/​shorts/​-Wmx8Wu8yMY|Video demonstrativ - Sistem Irigare]]
  
-Această secțiune va fi completată după crearea repository-ului pentru codul sursă.+===== Cod sursă ===== 
 + 
 +Codul sursă complet al proiectului este disponibil pe GitHub 
 +[[https://​github.com/​MirunaIliescu21/​Sistem-Irigare | Reposit GitHub - Sistem Irigare]] 
 + 
 +Proiectul este structurat ca un proiect **PlatformIO** și se compilează direct din VS Code. 
 +Toate modulele software (I2C, LCD, USART, ADC, releu, buton, timer, RGB LED) sunt implementate în C pur, fără framework Arduino.
  
 ===== Jurnal ===== ===== Jurnal =====
Line 183: Line 200:
  
   * Milestone 3: Implementare completă software: mașină de stări non-blocantă,​ mod AUTO cu cicluri de udare și absorbție, mod MANUAL cu pulsuri, protecție EMI pentru buton, driver I2C și LCD propriu.   * Milestone 3: Implementare completă software: mașină de stări non-blocantă,​ mod AUTO cu cicluri de udare și absorbție, mod MANUAL cu pulsuri, protecție EMI pentru buton, driver I2C și LCD propriu.
 +
 +  * Uterior, am devin independenta de laptop, din punctul de vedere al sursei de alimentare. Placuta Arduino este alimentata la o baterie de 9V prin barrel jack. Intern, placa are un regulator de tensiune care coboară la 5V pentru ATmega și restul componentelor.
 +
  
 ===== Bibliografie / Resurse ===== ===== Bibliografie / Resurse =====
Line 188: Line 208:
   * Template proiect PM: https://​ocw.cs.pub.ro/​courses/​pm/​pm/​prj2021/​template   * Template proiect PM: https://​ocw.cs.pub.ro/​courses/​pm/​pm/​prj2021/​template
   * Datasheet ATmega328P: https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf   * Datasheet ATmega328P: https://​ww1.microchip.com/​downloads/​en/​DeviceDoc/​Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf
-  * Datasheet PCF8574 (I2C LCD expander): https://​www.ti.com/​lit/​ds/​symlink/​pcf8574.pdf+  ​* Placă de dezvoltare: Arduino Uno R3 (kit Plusivo) https://​store.arduino.cc/​products/​arduino-uno-rev3 
 +  ​* Datasheet PCF8574 (modul interfata ​I2C LCD 1602): https://​www.ti.com/​lit/​ds/​symlink/​pcf8574.pdf
   * Documentație senzor umiditate sol FC-28   * Documentație senzor umiditate sol FC-28
   * Documentație LCD 1602 HD44780   * Documentație LCD 1602 HD44780
 +  * Documentație modul releu
 +  * Datasheet diodă protecție 1N4007
 +  * PlatformIO IDE: https://​platformio.org
 +  * Laboratoare OCW: https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab3-2023-2024
 +
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
  
pm/prj2026/bianca.popa1106/miruna.iliescu.1778866774.txt.gz · Last modified: 2026/05/15 20:39 by miruna.iliescu
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