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 90
​Controllo luci da web

🧠 Introduzione

Nel progetto precedente abbiamo controllato un singolo relè tramite browser, realizzando un primo sistema domotico base.

In questo progetto estendiamo il concetto per controllare più luci contemporaneamente, utilizzando più relè gestiti da Arduino tramite il modulo ESP8266.

L’obiettivo è simulare una piccola smart home, in cui ogni uscita rappresenta una stanza o una luce diversa, controllabile direttamente da una pagina web.
​
Questa evoluzione permette di comprendere come gestire più dispositivi nello stesso sistema, mantenendo un’interfaccia semplice e intuitiva accessibile da qualsiasi browser.

🧰 Materiale necessario
​
  • Arduino UNO
  • Modulo ESP8266
  • Modulo relè 2 canali (o 3/4 canali)
  • 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

Modulo relè (2 canali)
  • VCC → 5V Arduino
  • GND → GND Arduino
  • IN1 → Pin 7 Arduino
  • IN2 → Pin 8 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
​

Inserisci nome WiFi e password prima di caricare il codice.
​// ============================================
// Progetto 90 - Controllo luci da web
// Controllo multi-relè via browser
// ============================================

#include <SoftwareSerial.h>

SoftwareSerial esp(10, 11);

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

int rele1 = 7;
int rele2 = 8;

void setup() {
  pinMode(rele1, OUTPUT);
  pinMode(rele2, OUTPUT);

  digitalWrite(rele1, LOW);
  digitalWrite(rele2, 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() {

  if (esp.available()) {

    String request = esp.readString();

    // Controllo luce 1
    if (request.indexOf("L1=ON") != -1) {
      digitalWrite(rele1, HIGH);
    }
    if (request.indexOf("L1=OFF") != -1) {
      digitalWrite(rele1, LOW);
    }

    // Controllo luce 2
    if (request.indexOf("L2=ON") != -1) {
      digitalWrite(rele2, HIGH);
    }
    if (request.indexOf("L2=OFF") != -1) {
      digitalWrite(rele2, LOW);
    }

    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:15px;padding:15px;background:#00ffcc;color:#000;border-radius:10px;text-decoration:none;}"
      "</style>"
      "</head><body>"

      "<h1>Controllo Luci</h1>"

      "<h3>Luce 1</h3>"
      "<a href='/?L1=ON'>ACCENDI</a>"
      "<a href='/?L1=OFF'>SPEGNI</a>"

      "<h3>Luce 2</h3>"
      "<a href='/?L2=ON'>ACCENDI</a>"
      "<a href='/?L2=OFF'>SPEGNI</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 automaticamente alla rete WiFi configurata.

Apri il Monitor Seriale per individuare l’indirizzo IP assegnato dal router. Una volta ottenuto, inseriscilo nel browser di uno smartphone o computer collegato alla stessa rete.
​
La pagina mostrerà i controlli per gestire più luci in modo indipendente.

⚙️ Come funziona

Arduino riceve le richieste dal browser e analizza i comandi contenuti nell’URL.

Ogni comando corrisponde a una luce specifica, permettendo di accendere o spegnere i relè in modo indipendente.
​
Questo sistema dimostra come sia possibile gestire più dispositivi nello stesso progetto, creando una base solida per sistemi domotici più complessi.

🔁 Varianti possibili
​
  • Aggiungere più relè (4–8 canali)
  • Interfaccia grafica più avanzata
  • Controllo da remoto via internet
  • Automazioni con sensori

Foto

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