Domotica con ethernet shield e wi-fi

Share

Ecco un esempio di codice Arduino per la domotica utilizzando un Ethernet Shield e una connessione Wi-Fi. Questo codice ti aiuterà a iniziare a controllare dispositivi domestici tramite una connessione Internet.

#include <SPI.h>
#include <Ethernet.h>
#include <WiFi.h>

// Costanti per la connessione Ethernet
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Indirizzo MAC
IPAddress ip(192, 168, 1, 10); // Indirizzo IP Arduino
EthernetServer server(80); // Oggetto server Ethernet

// Costanti per la connessione Wi-Fi
const char* ssid = "IlTuoSSID"; // Nome della rete Wi-Fi
const char* password = "LaTuaPassword"; // Password della rete Wi-Fi

void setup() {
  Serial.begin(9600);

  // Connessione Ethernet
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("Indirizzo IP Ethernet: ");
  Serial.println(Ethernet.localIP());

  // Connessione Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.print(".");
  }
  Serial.println("");
  Serial.print("Indirizzo IP Wi-Fi: ");
  Serial.println(WiFi.localIP());
}

void loop() {
  EthernetClient client = server.available();
  
  if (client) {
    Serial.println("Nuova richiesta HTTP");
    String request = client.readStringUntil('\r');
    Serial.println(request);
    client.flush();

    // Accendi o spegni il dispositivo in base alla richiesta HTTP
    if (request.indexOf("/accendi") != -1) {
      // Azione per accendere il dispositivo
      digitalWrite(LED_BUILTIN, HIGH);
      client.println("HTTP/1.1 200 OK");
      client.println("Content-Type: text/html");
      client.println("");
      client.println("<h1>Dispositivo acceso</h1>");
    } else if (request.indexOf("/spegni") != -1) {
      // Azione per spegnere il dispositivo
      digitalWrite(LED_BUILTIN, LOW);
      client.println("HTTP/1.1 200 OK");
      client.println("Content-Type: text/html");
      client.println("");
      client.println("<h1>Dispositivo spento</h1>");
    } else {
      client.println("HTTP/1.1 404 Not Found");
      client.println("Content-Type: text/html");
      client.println("");
      client.println("<h1>Pagina non trovata</h1>");
    }
    
    delay(1);
    client.stop();
    Serial.println("Client disconnesso");
  }
}

Assicurati di aver installato le librerie Ethernet e WiFi dalla libreria di gestione della scheda Arduino IDE.

Nel setup(), il codice configura la connessione Ethernet utilizzando l’indirizzo MAC specificato e l’indirizzo IP assegnato all’Arduino. Successivamente, il server Ethernet viene avviato sulla porta 80. Quindi, viene inizializzata la connessione Wi-Fi utilizzando il nome della rete (SSID) e la password specificati.

Nel loop(), il codice controlla se c’è una nuova richiesta HTTP dal client. Se viene rilevata una richiesta, viene letto il percorso della richiesta e in base a ciò viene eseguita l’azione corrispondente. Ad esempio, se il percorso contiene “/accendi”, il dispositivo controllato viene acceso (nella maggior parte dei casi, verrà accesa la porta digitale a cui è collegato un LED). Se il percorso contiene “/spegni”, il dispositivo viene spento. Altrimenti, viene restituita una pagina di errore “404 Not Found”.

Assicurati di adattare il codice alle tue esigenze specifiche, come ad esempio cambiare il percorso delle richieste e le azioni associate ai dispositivi che vuoi controllare.

Ricorda di connettere il tuo Arduino all’Ethernet Shield e verificare che la tua rete Wi-Fi sia funzionante e accessibile dall’Arduino.

Spero che questo esempio ti sia utile per iniziare con la domotica utilizzando Arduino, l’Ethernet Shield e la connessione Wi-Fi!