Differences

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

Link to this comparison view

pm:prj2025:fstancu:cosmin.tonita [2025/05/21 18:46]
cosmin.tonita [Hardware Design]
pm:prj2025:fstancu:cosmin.tonita [2025/05/28 10:38] (current)
cosmin.tonita [Software Design]
Line 56: Line 56:
  ​**Cablaj (Breadboard)**  ​**Cablaj (Breadboard)**
  
 +{{:​pm:​prj2025:​fstancu:​breadboard_tonita_cosmin.jpeg?​400 |}}
  
  
-{{:​pm:​prj2025:​fstancu:​breadboard_tonita_cosmin.jpeg?​400 |}} 
  
 + ​**Cablaj (Protoboard)**
 +
 +
 +
 +{{:​pm:​prj2025:​fstancu:​proto-tonita-cosmin.jpeg?​400|}}
  
 ===== Software Design ===== ===== Software Design =====
  
  
-<note tip> 
 Descrierea codului aplicaţiei (firmware): Descrierea codului aplicaţiei (firmware):
-  * mediu de dezvoltare ​(if any) (e.g. AVR Studio, CodeVisionAVR) +  * Mediu de dezvoltare ​: Arduino IDE 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +  * Librarii externe : 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+- **LiquidCrystal_I2C - Marco Shwartz** - comunicatie I2C cu ecranul LCD
  
-<note tip> +- **ESP Mail Client - Mobizt** - trimitere mail-uri ca notificari 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +   
-</​note>​+ **Functii implementate**:​
  
-===== Concluzii =====+- LCD I2C: 
 +<​code>//​ setup 
 +LiquidCrystal_I2C lcd(0x27, 16, 2); 
 +lcd.init();​ 
 +lcd.backlight();​ 
 +lcd.setCursor(0,​ 0); 
 +lcd.print("​Starting..."​);​ 
 +// afiseaza diverse informatii despre sistem 
 +lcd.print("​FLOOD! V:ON P:​ON"​);​ // v valva, p pompa 
 +lcd.setCursor(0,​ 0); 
 +lcd.print("​Water level:"​);​ 
 +lcd.setCursor(0,​ 1); 
 +lcd.print("​System Ready   "​);​ 
 +</​code>​
  
-===== Download =====+- Operatii GPIO cu registri
  
-<note warning+<code
-O arhivă ​(sau mai multe dacă este cazulcu 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ă ;-).+#define FLOAT_SENSOR_MASK ​(1ULL << floatSensorPin) 
 +#define PUMP_PIN_MASK (1ULL << PumpPin) 
 +#define VALVE_PIN_MASK (1ULL << ValvePin)
  
-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 Alin331CC -> **:​pm:​prj2009:cc:​dumitru_alin**+gpio_config_t io_conf = {}; 
-</note>+io_conf.intr_type = GPIO_INTR_DISABLE;​ 
 +io_conf.mode = GPIO_MODE_INPUT;​ 
 +io_conf.pin_bit_mask = FLOAT_SENSOR_MASK;​ 
 +io_conf.pull_up_en = GPIO_PULLUP_ENABLE;​ 
 +gpio_config(&​io_conf);​ 
 + 
 +bool readFloatSensorRegister() { 
 +    uint32_t gpio_input = REG_READ(GPIO_IN_REG);​ 
 +    return (gpio_input & FLOAT_SENSOR_MASK) != 0; 
 +
 + 
 +void setPumpRegister(bool state) { 
 +    if (state) { 
 +        REG_WRITE(GPIO_OUT_W1TS_REG,​ PUMP_PIN_MASK);​ // Set bit 
 +    } else { 
 +        REG_WRITE(GPIO_OUT_W1TC_REG,​ PUMP_PIN_MASK);​ // Clear bit 
 +    } 
 +
 + 
 +void setValveRegister(bool state) { 
 +    if (state) { 
 +        REG_WRITE(GPIO_OUT_W1TS_REG,​ VALVE_PIN_MASK);​ 
 +    } else { 
 +        REG_WRITE(GPIO_OUT_W1TC_REG,​ VALVE_PIN_MASK);​ 
 +    } 
 +
 +</​code>​ 
 + 
 +Intreruperi relee (electrovalva si pompa): 
 +<​code>​ 
 +volatile bool floodDetected = false; 
 +volatile bool systemActive = false; 
 + 
 + 
 +// setup 
 +attachInterrupt(digitalPinToInterrupt(4),​ floodISR, CHANGE); 
 + 
 +void IRAM_ATTR floodISR() { 
 +    floodDetected = true; 
 +
 + 
 +setPumpRegister(true); ​  // porneste pompa 
 +setValveRegister(false);​ // inchide electrovalva 
 +setPumpRegister(false); ​ // opreste pompa 
 +setValveRegister(true); ​ // deschide electrovalva 
 +</​code>​ 
 + 
 +- Senzori (flotant-digital si capacitiv-analog pe pin ADC): 
 +<​code>​ 
 +pinMode(floatSensorPin,​ INPUT_PULLUP);​ 
 +pinMode(capSensorPin,​ INPUT); 
 + 
 +bool floatState = readFloatSensorRegister();​ 
 +uint32_t capacitiveValue = readCapacitiveSensorRegister();​ 
 + 
 +bool flood = (floatState == HIGH) || (capacitiveValue > 400); 
 +</​code>​ 
 + 
 +- Wifi: 
 + 
 +<​code>​ 
 +WiFi.begin(ssid, password)
 +while (WiFi.status() != WL_CONNECTED) { 
 +    delay(500);​ 
 +
 +Serial.println(WiFi.localIP());​ 
 + 
 +// verificare reconectare 
 +if (WiFi.status() != WL_CONNECTED) { 
 +    WiFi.begin(ssidpassword);​ 
 +
 +</​code>​ 
 + 
 +Notificare prin email (SMTP): 
 + 
 +<code> 
 +// configurare 
 +config.server.host_name = SMTP_HOST; // smtp.gmail.com 
 +config.server.port = SMTP_PORT; // 587 
 +config.login.email = AUTHOR_EMAIL;​ 
 +config.login.password = AUTHOR_PASSWORD;​ 
 + 
 +// trimitere mesaj 
 +SMTP_Message message; 
 +message.sender.name = F("​Sistem Anti-Inundatie"​);​ 
 +message.sender.email = AUTHOR_EMAIL;​ 
 +message.subject = F("​ALERTA INUNDATIE!"​);​ 
 +message.addRecipient(F("​Proprietar"​),​ RECIPIENT_EMAIL);​ 
 + 
 +String textMsg = "​ALERTA DE INUNDATIE!\n\n";​ 
 +textMsg += "​Masuri luate automat:\n"; 
 +textMsg += "- Electrovalva INCHISA\n";​ 
 +textMsg += "- Pompa PORNITA\n";​ 
 + 
 +if (smtp.connect(&​config)) { 
 +    if (MailClient.sendMail(&​smtp,​ &​message)) { 
 +      emailSent = true; 
 +      lastEmailTime = millis(); 
 +    } 
 +    smtp.closeSession();​ 
 +} 
 +</code> 
 + 
 + 
 +Functionarea sistemului (fara tuburi/apa, doar logica): 
 +[[https://​youtu.be/​BqaRONiYr7U]] 
 +===== Rezultate Obţinute =====
  
-===== Jurnal =====+{{:​pm:​prj2025:​fstancu:​final-tonita-cosmin.jpeg?​400|}}
  
-<note tip> +Demo sistem final: 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +[[https://​youtu.be/E7gNnOIGIbs]]
-</note>+
  
-===== Bibliografie/​Resurse ===== 
  
-<​note>​ 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. 
-</​note>​ 
  
 <​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/prj2025/fstancu/cosmin.tonita.1747842368.txt.gz · Last modified: 2025/05/21 18:46 by cosmin.tonita
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