⭐⭐ Principiante avanzato ⏱️ 20 minuti

Mini stazione meteo

Costruisci una mini stazione meteo. Il DHT11 misura la temperatura e l'umidità dell'aria. Lo schermino OLED le mostra.

Prima fai un veloce accesso. Poi il tuo progetto è subito pronto.

🧰 Che cosa ti serve?

1× Arduino UNO
1× Sensore di temperatura DHT11
1× Piccolo schermo OLED 0,91"
🔌
Cavo USB + Cavetti jumper

🗺️ Schema di collegamento

Segui i fili dall'Arduino a ogni componente. Puoi scegliere tu i colori dei fili.

Da A
Arduino UNO · D2 Sensore di temperatura DHT11 · DAT
Arduino UNO · 5V Sensore di temperatura DHT11 · VCC
Arduino UNO · GND Sensore di temperatura DHT11 · GND
Arduino UNO · A4 Piccolo schermo OLED 0,91" · SDA
Arduino UNO · A5 Piccolo schermo OLED 0,91" · SCL
Arduino UNO · 5V Piccolo schermo OLED 0,91" · VCC
Arduino UNO · GND Piccolo schermo OLED 0,91" · GND

🛠️ Così lo costruisci

  1. Collega il DHT11: DAT al pin 2, VCC a 5V e GND a GND.
  2. Collega lo schermo OLED: SDA a A4, SCL a A5, VCC a 5V e GND a GND.
  3. Consiglio: due pezzi hanno bisogno di 5V e GND. Usa le strisce + e − della tua breadboard.

💻 Il codice

// Mini stazione meteo
// Il DHT11 misura la temperatura e l'umidità dell'aria. Lo schermino OLED lo mostra.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>

const int DHT_PIN = 2;          // DAT del DHT11 è sul pin 2
DHT dht(DHT_PIN, DHT11);

Adafruit_SSD1306 schermo(128, 32, &Wire, -1);  // OLED da 128 x 32 pixel (SDA = A4, SCL = A5)

void setup() {
  Serial.begin(9600);
  dht.begin();
  if (!schermo.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {  // 0x3C è l'indirizzo dello schermo
    Serial.println(F("Schermo non trovato. Controlla i fili di SDA e SCL."));
    while (true);                                   // Stop: senza schermo non serve
  }
  schermo.setTextColor(SSD1306_WHITE);
}

void loop() {
  float temperatura = dht.readTemperature();  // In gradi Celsius
  float umidita = dht.readHumidity();           // In percentuale

  schermo.clearDisplay();
  schermo.setTextSize(2);
  schermo.setCursor(0, 0);

  if (isnan(temperatura) || isnan(umidita)) {   // La misura non riesce?
    schermo.setTextSize(1);
    schermo.print(F("DHT11 non trovato"));
  } else {
    schermo.print(temperatura, 1);
    schermo.print((char)247);                  // Il simbolo dei gradi
    schermo.println(F("C"));
    schermo.print(umidita, 0);
    schermo.print(F("% umid"));

    Serial.print(F("Temperatura: "));
    Serial.print(temperatura);
    Serial.print(F(" C  Umid: "));
    Serial.print(umidita);
    Serial.println(F(" %"));
  }

  schermo.display();   // Solo ora tutto appare davvero sullo schermo
  delay(2000);        // Il DHT11 può misurare solo ogni 2 secondi
}

🧠 Che cosa fa il codice?

  • Il DHT11 è sul pin 2. Con readTemperature() e readHumidity() leggiamo i valori.
  • Lo schermo OLED comunica via SDA (A4) e SCL (A5). Con print() mettiamo il testo sullo schermo.
  • Ogni 2 secondi arriva una nuova misura. La misura non riesce? Allora vedi un messaggio.

🎯 Prova anche…

  • Mostra anche la temperatura in Fahrenheit
  • Fai accendere un LED se fa più caldo di 25 gradi
  • Ricorda la temperatura più alta di oggi e mostra anche quella

🚀 Costruisci questo progetto con Codey: apri codey.online/it/starter-kits/uno/projects/weather-station e clicca su FAI QUESTO. Così il codice e lo schema di collegamento sono subito pronti.

Prima fai un veloce accesso. Poi il tuo progetto è subito pronto.
⬇️ Scarica questa pagina come PDF 📚 Scarica il tutorial completo (PDF)

Codey Online è un prodotto di OTRONIC

Crea il tuo progetto Arduino o ESP32 con l'AI

Descrivi cosa vuoi realizzare. Codey Online scrive il codice, disegna lo schema di collegamento, lo compila e programma la tua scheda direttamente dal browser.

Inizia gratis