.. note:: 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 [|link_sf_facebook|] e unisciti oggi stesso! .. _ar_humiture: 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 ----------------------- .. image:: img/Part_two_32.png * :ref:`cpn_mega2560` * :ref:`cpn_wires` * :ref:`cpn_humiture` 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. .. image:: img/image241.png :align: center **Schema di cablaggio** ------------------------ .. image:: img/image242.png :align: center Codice ---------- .. note:: * 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**. .. image:: img/lib_dht11.png :align: center .. raw:: html 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 --------------------- #. Include la libreria ``DHT.h``, che fornisce funzioni per interagire con i sensori DHT. Successivamente, definisce il pin e il tipo di sensore DHT. .. code-block:: arduino #include "DHT.h" #define DHTPIN 4 // Imposta il pin collegato al pin dati del DHT11 #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE); #. Inizializza la comunicazione seriale con una velocità di trasmissione di 115200 baud e il sensore DHT. .. code-block:: arduino void setup() { Serial.begin(115200); Serial.println("DHT11 test!"); dht.begin(); } #. Nella funzione ``loop()``, legge i valori di temperatura e umidità dal sensore DHT11 e li stampa sul monitor seriale. .. code-block:: arduino 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 ------------------------ .. image:: img/image243.jpeg :align: center