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 88
​Stazione meteo IoT

🧠 Introduzione

Dopo aver imparato a collegare Arduino alla rete WiFi e a visualizzare i dati dei sensori su una pagina web, in questo progetto realizziamo una vera stazione meteo IoT più completa.

Utilizzeremo due sensori diversi: il DHT11 per rilevare temperatura e umidità e il BMP280 per leggere la pressione atmosferica. Tutti i dati verranno poi mostrati in una pagina web accessibile da smartphone, tablet o computer collegati alla stessa rete WiFi.
​
Questo progetto è più avanzato rispetto ai precedenti perché unisce più letture ambientali in un’unica dashboard, rendendo il sistema più utile, più realistico e più vicino a una vera applicazione IoT. È una base ottima per sviluppare centraline meteo, sistemi di monitoraggio domestico e piccoli progetti smart home.

🧰 Materiale necessario
​

  • Arduino UNO
  • Modulo ESP8266
  • Sensore DHT11
  • Sensore BMP280
  • 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 DHT11
  • VCC → 5V Arduino
  • GND → GND Arduino
  • DATA → Pin 2 Arduino

Sensore BMP280
  • VIN → 5V Arduino
  • GND → GND Arduino
  • SCL → Pin A5 Arduino
  • SDA → Pin A4 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 due librerie esterne:
  • DHT.h
  • Adafruit BMP280 Library
​
Per il sensore BMP280 è normalmente richiesta anche la libreria:
  • Adafruit Unified Sensor
Le librerie possono essere installate direttamente dal gestore librerie dell’IDE Arduino.

​💻 Codice Arduino
​// ============================================
// Progetto 88 - Stazione meteo IoT
// Temperatura e umidità via web
// ============================================

#include <SoftwareSerial.h>
#include <DHT.h>

#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

SoftwareSerial esp(10, 11);

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

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

  dht.begin();

  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() {

  float temperatura = dht.readTemperature();
  float umidita = dht.readHumidity();

  // Simulazione pressione (opzionale)
  float pressione = 1013 + random(-10, 10);

  if (esp.available()) {

    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;}"
      ".box{padding:20px;margin:15px;border-radius:10px;background:#222;}"
      ".val{font-size:30px;color:#00ffcc;}"
      "</style>"
      "</head><body>"

      "<h1>Stazione Meteo IoT</h1>"

      "<div class='box'>"
      "<p>Temperatura</p>"
      "<div class='val'>" + String(temperatura) + " °C</div>"
      "</div>"

      "<div class='box'>"
      "<p>Umidità</p>"
      "<div class='val'>" + String(umidita) + " %</div>"
      "</div>"

      "<div class='box'>"
      "<p>Pressione</p>"
      "<div class='val'>" + String(pressione) + " hPa</div>"
      "</div>"

      "</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 e acceso il circuito, il modulo ESP8266 proverà a connettersi alla rete WiFi indicata nel programma. Una volta stabilita la connessione, riceverà un indirizzo IP locale assegnato dal router.

Apri il Monitor Seriale dell’IDE Arduino per controllare le risposte del modulo e individuare l’indirizzo IP. Quando lo hai trovato, inseriscilo nel browser di uno smartphone o di un computer collegato alla stessa rete WiFi.
​
A questo punto verrà caricata la pagina della stazione meteo, con i valori aggiornati di temperatura, umidità e pressione atmosferica.

⚙️ Come funziona
​

Arduino legge temperatura e umidità dal sensore DHT11 e la pressione atmosferica dal sensore BMP280. I valori vengono aggiornati continuamente e restano pronti per essere inviati quando un dispositivo si collega alla pagina web.
Quando il browser effettua una richiesta, Arduino costruisce una semplice pagina HTML e inserisce al suo interno i dati rilevati dai sensori. In questo modo il sistema si comporta come una piccola dashboard ambientale accessibile in rete locale.
La presenza di più sensori rende il progetto più completo e più vicino a una vera centralina meteo domestica.

🔁 Varianti possibili
​
  • Sostituire il DHT11 con un DHT22 più preciso
  • Aggiungere la visualizzazione dell’altitudine calcolata dal BMP280
  • Salvare i dati su scheda SD
  • Migliorare la dashboard con colori, icone e aggiornamento automatico

Foto

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