Nota

Ciao, benvenuto nella community SunFounder Raspberry Pi & Arduino & ESP32 su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.

Perché unirsi?

  • Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra community e del nostro team.

  • Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue competenze.

  • Anteprime esclusive: Accedi in anteprima agli annunci di nuovi prodotti.

  • Sconti speciali: Approfitta di sconti esclusivi sui nostri prodotti più recenti.

  • Promozioni e omaggi festivi: Partecipa a omaggi e promozioni speciali durante le festività.

👉 Pronto per esplorare e creare con noi? Clicca [Qui] e unisciti oggi stesso!

2.32 Modulo DHT11

Panoramica

In questa lezione imparerai a utilizzare il Modulo DHT11. Il DHT11 è un sensore digitale di temperatura e umidità economico e basilare. Utilizza un sensore capacitivo di umidità e un termistore per misurare l’aria circostante, emettendo un segnale digitale sul pin dati (non sono necessari pin di input analogico).

Componenti necessari

../_images/Part_two_32.png

Circuito Fritzing

In questo esempio, possiamo collegare direttamente i pin del Modulo DHT11 ai pin della scheda Mega 2560 e utilizzare il pin 4 per leggere il segnale del Modulo DHT11. Collega il pin「+」del Modulo DHT11 al 5V, il pin「-」al GND e il pin OUT al pin 4.

../_images/image241.png

Schema di cablaggio

../_images/image242.png

Codice

Nota

  • Puoi aprire direttamente il file 2.32_dhtModule.ino nella cartella sunfounder_vincent_kit_for_arduino\code\2.32_dhtModule.

  • La libreria DHT sensor library è utilizzata qui, puoi installarla dal Library Manager.

    ../_images/lib_dht11.png

Dopo aver caricato il codice sulla scheda Mega2560, il monitor seriale continuerà a mostrare i valori correnti di temperatura e umidità dell’ambiente.

Analisi del codice

  1. Include la libreria DHT.h, che fornisce funzioni per interagire con i sensori DHT. Successivamente, definisce il pin e il tipo di sensore DHT.

    #include "DHT.h"
    
    #define DHTPIN 4  // Imposta il pin collegato al pin dati del DHT11
    #define DHTTYPE DHT11 // DHT 11
    
    DHT dht(DHTPIN, DHTTYPE);
    
  2. Inizializza la comunicazione seriale con una velocità di trasmissione di 115200 baud e il sensore DHT.

    void setup() {
        Serial.begin(115200);
        Serial.println("DHT11 test!");
        dht.begin();
    }
    
  3. Nella funzione loop(), legge i valori di temperatura e umidità dal sensore DHT11 e li stampa sul monitor seriale.

    void loop() {
        // Aspetta alcuni secondi tra una misurazione e l'altra.
        delay(2000);
    
        // La lettura della temperatura o dell'umidità richiede circa 250 millisecondi!
        // Le letture del sensore possono essere 'vecchie' fino a 2 secondi (è un sensore molto lento)
        float humidity = dht.readHumidity();
        // Legge la temperatura in gradi Celsius (impostazione predefinita)
        float temperture = dht.readTemperature();
    
        // Controlla se le letture non sono valide ed esce immediatamente (per riprovare).
        if (isnan(humidity) || isnan(temperture)) {
            Serial.println("Failed to read from DHT sensor!");
            return;
        }
        // Stampa l'umidità e la temperatura
        Serial.print("Humidity: ");
        Serial.print(humidity);
        Serial.print(" %\t");
        Serial.print("Temperature: ");
        Serial.print(temperture);
        Serial.println(" *C");
    }
    
    • La funzione dht.readHumidity() è chiamata per leggere il valore di umidità dal sensore DHT.

    • La funzione dht.readTemperature() è chiamata per leggere il valore di temperatura dal sensore DHT.

    • La funzione isnan() viene utilizzata per verificare se le letture sono valide. Se il valore di umidità o temperatura è NaN (non un numero), indica una lettura non riuscita dal sensore, e viene stampato un messaggio di errore.

Immagine del fenomeno

../_images/image243.jpeg