This is an old revision of the document!


Sistem prevenire inundatie - TONIȚĂ Cosmin-Cristian

Tonita Cosmin Cristian - 334CD

Introducere

  • Sistemul detecteaza prin senzori de nivelul apei daca se produce o inundatie in incaperea in care este amplasat. In acest caz, actioneaza o electrovalva conectata la conducta de apa si opreste debitul, trimite o notificare in forma unui email si incepe pomparea apei din incapere in alt loc. De asemenea, dispune de un ecran LCD care prezinta informatii precum conexiunea la reteaua wi-fi sau functionarea corecta a componentelor.
  • Scopul proiectului este simularea mediului in care s-ar produce o inundatie din cauza conductelor defecte si oprirea ei.
  • Am pornit cu gandul de a realiza un proiect care m-ar ajuta cu anumite aspecte din viata reala, iar prevenirea inundatiilor din subsol ar fi unul dintre cele mai practice si utile.
  • Utilitatea proiectului consta in prevenirea daunelor cauzate de inundatii.

Descriere generală

Alimentarea se face de la un adaptor 12V/3A, conectat spre o mufa jack. 12V este directionat catre releele care controleaza pompa si electrovalva, si convertit la 5V prin convertorul pentru alimentarea ESP32, LCD (cu adaptor I2C) si senzorul capacitiv.

Sistemul foloseste 2 tipuri de senzori pentru reduntanta si o detectie mai precisa: unul capacitiv care masoara nivelul apei, dand un rezultat analogic catre placuta, si unul flotant care functioneaza ca un intrerupator.

Cand este detectata o inundatie, acest lucru e indicat pe ecran, iar ESP-ul inchide electrovalva pentru a opri trecerea apei (conducta) si porneste pompa pentru a evacua apa acumulata.

Hardware Design

  • Listă de piese
Componenta Cantitate Link
Placa de Dezvoltare ESP32 cu WiFi și Bluetooth 4.2 1 https://www.optimusdigital.ro/ro/placi-cu-bluetooth/4371-placa-de-dezvoltare-esp32-cu-wifi-i-bluetooth-42.html?search_query=Placa+de+Dezvoltare+ESP32+cu+WiFi+%C8%99i+Bluetooth+4.2+&results=8
Senzor de Lichid Flotant 1 https://www.optimusdigital.ro/ro/senzori-altele/8179-senzor-de-lichid-flotant.html?search_query=0104110000053398&results=1
Mini Pompa de Apa (12 V) 1 https://www.optimusdigital.ro/ro/altele/8141-mini-pompa-de-apa-12-v.html?search_query=0104110000053053&results=1
LCD 1602 cu Interfata I2C si Backlight Albastru 1 https://www.optimusdigital.ro/ro/optoelectronice-lcd-uri/2894-lcd-cu-interfata-i2c-si-backlight-albastru.html?search_query=0104110000003584&results=1
Modul DC-DC Step Down LM2596S 1 https://www.optimusdigital.ro/ro/surse-coboratoare-reglabile/1108-modul-dc-dc-step-down-lm2596hv.html?search_query=0104110000010100&results=1
Modul Mufa DC 1 https://www.optimusdigital.ro/ro/conectori/177-modul-mufa-dc.html?search_query=0104110000000873&results=1
Senzor de nivel al apei 1 https://www.optimusdigital.ro/ro/senzori-altele/272-senzor-de-nivel-al-apei.html?search_query=0104110000002655&results=1
Modul releu cu un canal (comandat cu 5 V) 2 https://www.optimusdigital.ro/ro/electronica-de-putere-module-cu-releu/13084-modul-releu-cu-un-canal-comandat-cu-5-v.html?search_query=0104110000089113&results=1
Electrovalva cu solenoid, 12V 1 https://filtro.ro/electrovalva-cu-solenoid-12v-normal-inchisa-conectori-rapizi-1-4-6-mm-putere-6-5w-legatura-prin-lamele
Alimentator Universal, AC/DC 12V 3A 1 https://www.emag.ro/alimentator-universal-ac-dc-12v-3a-negru-miromotor-q-12v/pd/D42RKKYBM/?ref=history-shopping_423191891_51747_1

Schema electrica

Schema prezinta conexiunile intre componentele sistemului. Datorita specificitatii unelor componente utilizate, au fost facute urmatoarele adaptari in CAD:

* Pompa si electrovalva sunt reprezentate generic ca sarcini cu doua borne

* LCD-ul este reprezentat prin interfata sa I2C cu 4 pini (VCC, GND, SDA, SCL), desi in realitate e un modul LCD 16×2 cu adaptor I2C atasat.

* Senzorul flotant este reprezentat generic ca un intrerupator cu 2 borne, corespunzator functiei sale de baza - inchidearea circuitului cand e detectata apa.

* Modulele releu au fost modificate fata de footprint-uri pentru a reflecta realitatea.

* Convertorul DC-DC transforma tensiunea de 12V de la sursa principala la 5V pentru componentele electronice (ESP-ul, LCD-ul, senzorul capacitiv)

Cablaj (Breadboard)

Software Design

Descrierea codului aplicaţiei (firmware):

  • Mediu de dezvoltare : Arduino IDE
  • Librarii externe :

- LiquidCrystal_I2C - Marco Shwartz - comunicatie I2C cu ecranul LCD

- ESP Mail Client - Mobizt - trimitere mail-uri ca notificari

Functii implementate:

- LCD I2C:

// 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   ");

- Intreruperi relee (electrovalva si pompa):

volatile bool floodDetected = false;
volatile bool systemActive = false;


// setup
attachInterrupt(digitalPinToInterrupt(4), floodISR, CHANGE);

void IRAM_ATTR floodISR() {
    floodDetected = true;
}

digitalWrite(valveRelayPin, HIGH);  // închide electrovalvă
digitalWrite(pumpRelayPin, HIGH);   // pornește pompă
digitalWrite(valveRelayPin, LOW);   // deschide electrovalvă
digitalWrite(pumpRelayPin, LOW);    // oprește pompă

- Senzori (flotant-digital si capacitiv-analog pe pin ADC):

pinMode(floatSensorPin, INPUT_PULLUP);
pinMode(capSensorPin, INPUT);

int floatState = digitalRead(floatSensorPin);
int capacitiveValue = analogRead(capSensorPin);

bool flood = (floatState == HIGH) || (capacitiveValue > 400);

- Wifi:

WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
    delay(500);
}
Serial.println(WiFi.localIP());

// verificare reconectare
if (WiFi.status() != WL_CONNECTED) {
    WiFi.begin(ssid, password);
}

- Notificare prin email (SMTP):

// 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();
}

Functionarea sistemului (fara tuburi/apa, doar logica): https://youtu.be/BqaRONiYr7U

Rezultate Obţinute

pm/prj2025/fstancu/cosmin.tonita.1748362847.txt.gz · Last modified: 2025/05/27 19:20 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