PROGETTI ARDUINO

  • HOME
  • 200 Progetti
  • PROGETTI E TUTORIAL
  • PROGETTI E TUTORIAL 2
  • ELETTRONICA
  • RECENSIONI
  • MANUALE
  • CONTATTI
  • HOME
  • 200 Progetti
  • PROGETTI E TUTORIAL
  • PROGETTI E TUTORIAL 2
  • ELETTRONICA
  • RECENSIONI
  • MANUALE
  • CONTATTI

Progetto 91
​Smart garden

🧠 Introduzione

Dopo aver imparato a controllare dispositivi tramite web e a gestire più relè contemporaneamente, in questo progetto realizziamo un sistema smart per l’irrigazione automatica delle piante.

L’obiettivo è monitorare l’umidità del terreno e attivare automaticamente l’irrigazione quando il terreno risulta troppo secco. Il sistema potrà inoltre essere controllato manualmente tramite browser, permettendo una gestione completa sia automatica che manuale.

Questo tipo di soluzione è molto utilizzata in ambito domestico e agricolo, in quanto consente di ottimizzare l’uso dell’acqua e mantenere le piante sempre nelle condizioni ideali.
​
Con questo progetto stai costruendo una vera applicazione IoT pratica, utile e facilmente espandibile.

🧰 Materiale necessario
​

  • Arduino UNO
  • Modulo ESP8266
  • Sensore umidità del suolo
  • Modulo relè
  • Pompa acqua 5V (o elettrovalvola)
  • Breadboard
  • Cavi jumper

🛒 Componenti e risorse consigliate

👉 Kit Arduino consigliato: https://amzn.to/41fmFNK
💡 Con un solo kit puoi realizzare la maggior parte dei progetti presenti nel sito.

📚 I miei libri consigliati
​

👉 Arduino per tutti – Volume 1: https://amzn.to/4rGNxB9
👉 Arduino per tutti – Volume 2: https://amzn.to/4bkfaey
👉 Arduino per tutti – Volume 3: https://amzn.to/4bogjAg

🔌 Schema di collegamento

Sensore umidità suolo
  • VCC → 5V Arduino
  • GND → GND Arduino
  • AO → Pin A0 Arduino

Modulo relè (pompa)
  • VCC → 5V Arduino
  • GND → GND Arduino
  • IN → Pin 7 Arduino

Modulo ESP8266
  • VCC → 3.3V Arduino
  • GND → GND Arduino
  • TX → Pin 10 Arduino
  • RX → Pin 11 Arduino (consigliato partitore di tensione)
  • CH_PD → 3.3V

⚠️ Tutti i GND devono essere collegati tra loro.
Foto

📚 Librerie necessarie
​

Questo progetto utilizza solo librerie già presenti nell’IDE Arduino.

💻 Codice Arduino
​// ============================================
// Progetto 91 - Smart garden
// Irrigazione automatica + controllo web
// ============================================

#include <SoftwareSerial.h>

SoftwareSerial esp(10, 11);

String ssid = "NOME_WIFI";
String password = "PASSWORD_WIFI";

int sensore = A0;
int rele = 7;

int soglia = 500; // valore da regolare

bool manuale = false;

void setup() {
  pinMode(rele, OUTPUT);
  digitalWrite(rele, LOW);

  Serial.begin(9600);
  esp.begin(115200);

  sendCommand("AT", 2000);
  sendCommand("AT+CWMODE=1", 2000);

  String cmd = "AT+CWJAP=\"" + ssid + "\",\"" + password + "\"";
  sendCommand(cmd, 6000);

  sendCommand("AT+CIPMUX=1", 2000);
  sendCommand("AT+CIPSERVER=1,80", 2000);
}

void loop() {

  int umidita = analogRead(sensore);

  // Modalità automatica
  if (!manuale) {
    if (umidita > soglia) {
      digitalWrite(rele, HIGH); // attiva pompa
    } else {
      digitalWrite(rele, LOW);
    }
  }

  if (esp.available()) {

    String request = esp.readString();

    // Modalità manuale ON
    if (request.indexOf("MAN=ON") != -1) {
      manuale = true;
    }

    // Modalità automatica
    if (request.indexOf("AUTO=ON") != -1) {
      manuale = false;
    }

    // Controllo manuale pompa
    if (manuale && request.indexOf("POMPA=ON") != -1) {
      digitalWrite(rele, HIGH);
    }

    if (manuale && request.indexOf("POMPA=OFF") != -1) {
      digitalWrite(rele, LOW);
    }

    String stato = (manuale) ? "Manuale" : "Automatico";

    String webpage =
      "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n"
      "<html><head>"
      "<meta name='viewport' content='width=device-width, initial-scale=1'>"
      "<style>"
      "body{font-family:Arial;text-align:center;background:#111;color:#fff;}"
      "a{display:block;margin:10px;padding:15px;background:#00ffcc;color:#000;border-radius:10px;text-decoration:none;}"
      "</style>"
      "</head><body>"

      "<h1>Smart Garden</h1>"

      "<p>Umidità suolo: " + String(umidita) + "</p>"
      "<p>Modalità: " + stato + "</p>"

      "<a href='/?AUTO=ON'>Modalità automatica</a>"
      "<a href='/?MAN=ON'>Modalità manuale</a>"

      "<a href='/?POMPA=ON'>Accendi pompa</a>"
      "<a href='/?POMPA=OFF'>Spegni pompa</a>"

      "</body></html>";

    String sendCmd = "AT+CIPSEND=0," + String(webpage.length());
    sendCommand(sendCmd, 2000);

    esp.print(webpage);

    sendCommand("AT+CIPCLOSE=0", 2000);
  }
}

void sendCommand(String cmd, int timeout) {
  esp.println(cmd);
  long int time = millis();

  while ((time + timeout) > millis()) {
    while (esp.available()) {
      Serial.write(esp.read());
    }
  }
}

🌐 Come accedere alla pagina web

Dopo aver caricato il codice, il modulo ESP8266 si connette alla rete WiFi.

Apri il Monitor Seriale per individuare l’indirizzo IP assegnato, quindi inseriscilo nel browser di uno smartphone o computer collegato alla stessa rete.
​
La pagina mostrerà lo stato del terreno, la modalità attiva e i controlli per gestire l’irrigazione.

⚙️ Come funziona

Arduino legge continuamente il valore del sensore di umidità del suolo.

Se il sistema è in modalità automatica, attiva la pompa quando il terreno è troppo secco. In modalità manuale, invece, l’utente può controllare direttamente l’irrigazione tramite browser.
​
Questo approccio combina automazione e controllo remoto, rendendo il sistema flessibile e adatto a diverse situazioni.

🔁 Varianti possibili
​
  • Sensore capacitivo (più resistente)
  • Programmazione oraria irrigazione
  • Dashboard più avanzata
  • Sistema multi-zona

Foto

© ProgettiArduino.com 2026 - Fancello Salvatore
​ Layout, immagini e testi sono di esclusiva proprietà di www.progettiarduino.com 
Privacy Policy