Sistem de irigații smart bazat pe API Meteo și ESP32

Configurare noua (How To)

Situatie

Acest sistem previne risipa de apă și supra-irigarea. Releul care controlează electrovalva de apă va porni doar dacă umiditatea solului este scăzută și dacă prognoza meteo online anunță șanse mici de ploaie în următoarele ore.

Solutie

Componente Hardware:
  • Placă de dezvoltare: ESP32 cu Wi-Fi integrat.
  • Actuator: Modul Releu de 5V (pentru a comuta alimentarea valvei).
  • Hardware irigație: Electrovalvă de apă (de obicei 24V AC sau 12V DC) + adaptorul de alimentare corespunzător.
  • Senzor: Senzor de umiditate a solului capacitiv (evită coroziunea).
Pasul 1: Conexiunile Hardware
  1. Senzorul de umiditate: Conectează pinii VCC la 3.3V pe ESP32, GND la GND, iar pinul de semnal analogic (AOUT) la pinul GPIO 34 al ESP32.
  2. Modulul Releu: Conectează VCC la 5V (sau Vin), GND la GND, iar pinul de control (IN) la pinul GPIO 26.
  3. Electrovalva: Întrerupe firul de fază/pozitiv al alimentării electrovalvei și trece-l prin contactele COM (Common) și NO (Normally Open) ale releului.
Pasul 2: Obținerea Cheii API 
Pentru a nu depinde de senzori externi de ploaie care se pot înfunda, folosim serviciul gratuit OpenWeatherMap.
  1. Intră pe site-ul OpenWeatherMap și creează un cont gratuit.
  2. Mergi la secțiunea API Keys și generează o cheie unică (un șir lung de litere și cifre).
  3. Notează-ți coordonatele geografice exacte ale grădinii tale (Latitudine și Longitudine) din Google Maps.
Pasul 3: Logica Scriptului 
Folosind Arduino IDE (cu librăriile WiFi.h, HTTPClient.h și ArduinoJson.h), codul va rula următoarea logică la intervale stabilite (ex. în fiecare dimineață la ora 06:00):
  1. Conectare Wi-Fi: Placa se conectează la routerul casei.
  2. Citire Senzor: Verifică umiditatea actuală a solului. Dacă pământul este deja ud, sistemul se oprește aici (Somație: Nu e nevoie de apă).
  3. Interogare API: Dacă solul e uscat, ESP32 trimite o cerere HTTP către OpenWeatherMap:
    http://openweathermap.org[LAT]&lon=[LON]&appid=[CHEIE_API]&cnt=4 (verifică următoarele 12 ore).
  4. Filtrare Date: Scriptul Parsează răspunsul JSON și caută parametrul pop (Probability of Precipitation – Probabilitatea de precipitații) sau codurile de vreme (ploaie/furtună).
Pasul 4: Luarea deciziei și execuția
În codul încărcat pe placă, stabilim pragurile de decizie (if/else):
cpp
// Pseudocod aplicat în loop-ul principal
int umiditateSol = analogRead(34); 
float sansaPloaie = extrageSansaPloaieDinJSON(); // Valoare între 0 și 1

if (umiditateSol < PRAG_USCAT && sansaPloaie < 0.50) {
    // Dacă solul e uscat și șansa de ploaie e sub 50%
    digitalWrite(26, HIGH); // Pornește releul (deschide apa)
    delay(1800000);         // Irigă timp de 30 de minute (1,8 milisecunde)
    digitalWrite(26, LOW);  // Oprește apa
} else {
    digitalWrite(26, LOW);  // Menține apa oprită (fie e ud, fie va ploua)
}
Pasul 5: Calibrarea și punerea în producție
  • Calibrarea senzorului: Pune senzorul în pământ complet uscat și notează valoarea analogică citită în Serial Monitor. Repetă procesul în pământ proaspăt udat. Acestea vor fi limitele tale pentru PRAG_USCAT.
  • Carcasa: Protejează electronica (ESP32 și releul) într-o doză de derivație cu protecție IP66 împotriva umezelii și stropilor de apă.

Tip solutie

Permanent

Voteaza

(1 din 2 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?