DHT11 arduino sensore temperatura umidità

In questi giorni la temperatura sta calando, come è giusto che sia in questo periodo dell’anno, ed ho ripreso dalla cassetta degli attrezzi il mio DHT11 arduino.

DHT11 arduino fronte

Il DHT11 arduino è un progetto realizzato qualche mese fa e mai pubblicato.

Utilizzando la sonda DHT11 della dfrobot acquistata l’anno scorso ho utilizzato Arduino per controllare la temperatura ed umidità in casa e regolare il riscaldamento.

In questo primo articolo leggerai come utilizzare la sonda DHT11 arduino e visualizzare sul monitor seriale i valori rilevati dalla sonda.

Componenti necessari per il DHT11 arduino

Per riprodurre questo progetto ti occorre:

  • sonda DHT11 dfrobot
  • cavetto a 3 poli di connessione tra sonda e arduino
  • arduino uno ( in alternativa Leonardo,Mega,Mini,Nano,ecc… )
  • libreria dht11.h scaricabile qui

Collegamento della sonda ad arduino

le connessioni della sonda ad arduino sono semplicissime in quanto la sonda presenta 3 soli cavetti:

  • un cavo positivo ( +5v ) che devi collegare al +5v di arduino
  • un cavo negativo ( Gnd ) che devi collegare al Gnd di arduino
  • un cavo output ( verde ) che puoi collegare ad uno dei pin digitali di arduino

segui la figura seguente

DHT11 arduino diagram

riferita alla V2 della sonda DHT11 arduino, sul wiki del produttore puoi verificare che la V1 ha il cavo positivo e quello negativo invertiti.

Lo sketch di test della DHT11

il test del sensore puoi farlo utilizzando questo sketch di esempio:

#include <dht11.h>
dht11 DHT;
#define DHT11_PIN 4

void setup(){
  Serial.begin(9600);
  Serial.println("DHT TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT11LIB_VERSION);
  Serial.println();
  Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
}

void loop(){
  int chk;
  Serial.print("DHT11, \t");
  chk = DHT.read(DHT11_PIN);    // READ DATA
  switch (chk){
    case DHTLIB_OK:  
                Serial.print("OK,\t"); 
                break;
    case DHTLIB_ERROR_CHECKSUM: 
                Serial.print("Checksum error,\t"); 
                break;
    case DHTLIB_ERROR_TIMEOUT: 
                Serial.print("Time out error,\t"); 
                break;
    default: 
                Serial.print("Unknown error,\t"); 
                break;
  }
 // DISPLAT DATA
  Serial.print(DHT.humidity,1);
  Serial.print(",\t");
  Serial.println(DHT.temperature,1);

  delay(1000);
}

grazie all’utilizzo della libreria dht11.h è molto semplice, ecco cosa accade linea per linea.

linea 01: includi la libreria dht11.h che avrai scaricato dal link riportato sopra;

linea 02: definisci una istana dell’oggetto dht11.h che chiami DHT;

linea 03: imposta la costante DHT11_PIN valorizzandola con il pin a cui hai collegato il cavo output del sensore;

linee 06-11: nella funzione setup() imposta il canale di comunicazione seriale con il Serial Monitor a 9600 baud e scrivi, in fase di startup dello sketch, la versione della libreria e l’intestazione in merito a Temperatura ( misurata in gradi Celsius ) ed umidità ( misurata in % );

linea 15: imposta una variabile di tipo integer (chk) in cui memorizzerai i valori restituiti dall’interrogazione della sonda;

linea 16: scrivi sul monitor seriale “DHT11,    “;

linea 17: leggi dalla sonda lo stato della stessa e memorizzane il valore nella variabile chk, nota che il metodo read dell’istanza DHT accetta come parametro il pin a cui la sonda è collegata;

linee 18-31: con lo switch verifichi il valore di check restituito dalla sonda prima di chiederle informazioni su umidità e temperatura;

linee 33-35: leggi dalla sonda i valori di umidità e temperatura utilizzando rispettivamente i metodi humidity e temperature dell’istanza DHT e scrivi questi valori sul monitor seriale;

linea 37: attendi un secondo prima di ripetere il ciclo di interrogazioni della sonda.

Il video della sonda DHT11

Nel web la DHT11 arduino è una delle sonde più utilizzate per progetti di monitoraggio ambientale non solo per la domotica, spesso è utilizzata con un display LCD che visualizza in tempo reale i valori letti dalla sonda. E’ questo il caso del progetto di Danilo Larizza che ha anche realizzato un bellissimo tutorial ed un video:

Buon divertimento !!!

  • Questo sito ed i suoi contenuti è fornito "così com'è" e Mauro Alfieri non rilascia alcuna dichiarazione o garanzia di alcun tipo, esplicita o implicita, riguardo alla completezza, accuratezza, affidabilità, idoneità o disponibilità del sito o delle informazioni, prodotti, servizi o grafiche correlate contenute sul sito per qualsiasi scopo.
  • Ti chiedo di leggere e rispettare il regolamento del sito prima di utilizzarlo
  • Ti chiedo di leggere i Termini e Condizioni d'uso del sito prima di utilizzarlo
  • In qualità di Affiliato Amazon io ricevo un guadagno dagli acquisti idonei qualora siano presenti link al suddetto sito.

Permalink link a questo articolo: https://www.mauroalfieri.it/elettronica/dht11-arduino.html

72 commenti

2 ping

Vai al modulo dei commenti

    • Nico il 19 Aprile 2014 alle 13:18
    • Rispondi

    Salve Mauro, cogliendo l’occasione per farle gli auguri di buona Pasqua le sottopongo una perplessità: a me lo schetch risulta pieno di errori dall’ide.

    Nello specifico:
    dht11_test:6: error: ‘dht11’ does not name a type
    dht11_test.ino: In function ‘void loop()’:
    dht11_test:21: error: ‘DHT’ was not declared in this scope
    dht11_test:23: error: ‘DHTLIB_OK’ was not declared in this scope
    dht11_test:26: error: ‘DHTLIB_ERROR_CHECKSUM’ was not declared in this scope
    dht11_test:29: error: ‘DHTLIB_ERROR_TIMEOUT’ was not declared in this scope

    1. Ciao Nico,
      sembra che tu non possieda la libreria necessaria a far funzionare lo sketch.
      Ti consiglio di leggere tutti gli articoli dedicati al sensore DHT11, in uno di essi ho descritto come installare la libreria che uso per leggere il sensore e realizzare la centralina.

    • Alessandro il 31 Maggio 2014 alle 14:13
    • Rispondi

    Ciao mauro!!
    scusa il disturbo ma anche io ho dei problemi con la dh11 ho scaricato la libreria,provato direttamente l’esempio della libreria(uguale al tuo) ma ho cmq problemi infatti mi risulta ‘dht11′ does not name a type
    grazie dell’eventuale risposta
    ciao

    1. Ciao Alessandro,
      dopo aver scaricato la libreria devi installarla e riavviare l’IDE arduino per fargliela leggere.

    • Alessandro il 3 Giugno 2014 alle 13:50
    • Rispondi

    Ciao tutto funziona perfettamente ma nel monitor spunta errore timeout come mai? come posso correggerlo?

    1. Ciao Alessandro,
      se controlli bene lo sketch e le linee di descrizione troverai dove viene generato il messaggio e potrai correggere la causa del tuo errore.

    • Gianni il 15 Agosto 2014 alle 22:34
    • Rispondi

    Ciao e buonasera a tutti.
    Anch’io sto provando da stamattina ma ho scaricato ed installato migliaia di librerie per il dht11 , tua compresa, ma mi ripete lo stesso messaggio di errore di Alessandro.
    Ho la versione 1.5.0 dell’ide; ho anche installato la 022, ma l’errore e’sempre lo stesso.
    Postresti suggerirmi , step a step, come installare correttamente e dove sta benedetta libreria?.
    Ti ringrazio anticipatamente per quanto farai.
    Saluti
    Gianni

    1. Ciao Gianni,
      l’installazione delle librerie è un argomento che ho trattato in occasione di alcuni articoli sui sensori dell’adafruit, puoi consultare quelli.
      In generale sul sito arduino ufficiale c’è un bellissimo tutorial con le schermate passo per passo in cui spiega come installare le librerie sull’IDE.

      Ricorda che dopo l’installazione di una libreria è buon uso chiudere e riaprire l’IDE per fargliela leggere.

    • Gianni il 16 Agosto 2014 alle 10:49
    • Rispondi

    Ok ora e’ tutto a posto.
    Era un problema di librerie installate nel posto sbagliato.
    Per quanto riguarda l’errore di timeout……ho collegato il sensore al pin 6 e non al 4 perche’ li c’e’ l’lcd.
    Grazie mille comunque
    Gianni

    1. Ottimo Gianni.

    • Cosimo il 12 Ottobre 2014 alle 12:27
    • Rispondi

    Complimenti per l’articolo,
    sapresti dirmi come fare a collegare due sensori contemporaneamente? (dichiarazione dei pin)

    1. Ciao Cosimo,
      non ho mai provato con 2 sensori identici, penso sia possibile, hai provato a verificare sul wiki del produttore ?

    • francesco il 9 Gennaio 2015 alle 18:43
    • Rispondi

    Ciao Mauro.
    Grazie mille per le tue perle fondamentali che continui a dispensarci.
    Una domanda sul sensore dht . Quando leggi i valori con (DHT.humidity,1) cosa sta a significare 1 ? Sto creando un sistema con 6 dht 11 e per ognuno creo la sua istanza .il sistema funziona ma un po articolato perche’ clono praticamente il tuo sketch per n volte con n istanze . Esiste un modo piu semplice ?
    Grazie mille.

    1. Ciao Francesco,
      ti riferisci alla linea Serial.print(DHT.humidity,1); se non ci metti il comando Serial.print non significa nulla il solo contenuto tra parentesi.
      La funzione Serial.print accetta come secondo parametro il “formato” dei sati restituiti come puoi leggere sul reference arduino: http://arduino.cc/en/serial/print
      Quando hai dubbi in merito a comandi standard arduino puoi far riferimento alla reference.

      Se devi leggere 6 sensori devi avere 6 istanze, ma non c’è bisogno di riscrivere tutti i comandi di questo sketch ma solo quelli relativi alle interrogazioni dei sensori.

        • francesco il 11 Gennaio 2015 alle 14:14
        • Rispondi

        Ok grazie mille. Pensavo fosse per l istanza del dht e non avevo considerato che era solo un parametro del print…. a volte mi fisso sul punto sbagliato e mi perdo i fondamentali….
        Grazie mille

    • GIANLUCA il 20 Gennaio 2015 alle 19:34
    • Rispondi

    ciao Mauro e Francesco, anche io non so come ricavare i dati da due sonde uguali usando lo stessa libreria.
    nella riga di comando seguente non riesco ad indirizzare la sonda come posso fare a distinguerle?,
    float h = dht.readHumidity(); //umiditàDTH22
    float t = dht.readTemperature(); //umiditàDTH22

    1. Ciao Gianluca,
      ti invito a leggere e comprendere lo sketch, seguendo la mia descrizione linea per linea.
      La riga 17 indica ad un oggetto di tipo DHT su quale pin leggere. Se hai due sensori puoi leggere prima dal primo e poi dal secondo salvandoti i valori in variabili differenti.

    • GIANLUCA il 22 Gennaio 2015 alle 23:56
    • Rispondi

    ciao Mauro, in realtà ho due sensori del tipo dht22 ed ho scaricato diverse librerie e esempi ma nessuno ha una terminologia come quella che stai usando qui. in particolare stavo usando quella di adafruit che riporto qui in calce. con una onda funziona bene ma con due non so come fare. Mi puoi aiutare?

    [ codice rimosso in automatico ]

    1. Ciao Gianluca,
      innanzitutto avrai letto che chiedo di NON incollare codice nei commenti, ti prego di rispettare le poche semplici regole del blog.

      Se il sensore é differente e le librerie diverse da quelle vie ho usato io dovrai leggere la documentazione delle librerie per capire come finzionano. Sono certo che da qualche parte definirai un oggetto della DHT22 è in un altra linea gli assegnerai un pin a cui hai connesso il sensore.

      Le istruzioni cambiano ma il concetto, se lo comprendi, é il medesimo

  1. Ciao a tutti. Volevo chiedere un parere per una configurazione di arduino con 8 sensori DHT11. Sarebbe possibile tecnicamente? Mi impegno a studiare come fare? Grazie!!

    1. Ciao Lele,
      non ho mai provato a mettere così tanti sensori connessi ad arduino, tuttavia penso che a parte qualche problema di alimentazione, da prevedere esterna, non dovresti avere altre difficoltà.

  2. Buonasera,

    grazie e complimenti per l’ottima guida, le riassumo brevemente i miei test perché per quanto letto credo possano far comodo ad altri.

    Ho collegato n. 4 sensori DHT11, presi su eBay, non hanno la basetta ma sono semplici, nudi, con 4 pin, con il terzo pin non utilizzato.

    Intanto per rispondere a Lele, ogni sensore dialoga con un diverso pin digitale del mio Arduino, ho fatto un ciclo for per leggere tutti e 4, i pin utilizzati vanno dal 5 all’8; questi i risultati:

    Type, status, Humidity (%), Temperature (C)
    DHT11-5, OK, 39 24
    DHT11-6, OK, 38 24
    DHT11-7, OK, 37 24
    DHT11-8, OK, 37 26

    Dal datasheet risulta che l’assorbimento per ogni singolo sensore non supera i 2.5mA e i nostri Arduino possono arrivare anche a 200mA totali, senza necessità di fonti di alimentazioni esterne.

    La mia perplessità è invece un’altra, i valori DHT.temperature e DHT.umidity sono degli int (interi), tanto è che nella print variando il secondo parametro (1 nello sketch originale) varia la forma del numero scritto (decimale, binario, etc.).

    Tipicamente per una gestione corretta di climatizzazione si definisce un setpoint (temperatura voluta) e si stabilisce una isteresi (massimo discostamento), ad es.:
    setpoint 24°
    isteresi +/- 0.5 °
    vuol dire che si accende il riscaldamento quando la temperatura cala sotto i 23.5° per spengnerlo solo al superamento dei 24.5°.

    Ma con valori interi la regolazione è molto più difficoltosa, non trova?
    Isteresi di 0.1° o di 0.9° finirebbero per essere equivalenti, a meno di non utilizzare più sensori e calcolare il valore medio…

    Per fortuna le letture sono piuttosto stabili (grazie anche alla approssimazione) altrimenti il rischio è di continui accesi spenti della caldaia che possono anche provocare dei danni!

    C’è modo di avere valori float per umidità e temperatura, dal protocollo della libreria sembrerebbe proprio di no…
    Ci sono altri sensori parimenti economici che permettono un accuratezza maggiore?

    1. Ciao Riccardo,
      grazie per le tue condivisioni.
      So dell’esistenza di sensori di differente precisione e comunicazione come i sensori I2C che probabilmente possiedono anche la risposta di tipo float che ti occorre.
      Prova a leggere nel blog, qualcuno l’ho recensito, non ricordo quale abbia la precisione che desideri.

      • nicola usai il 7 Ottobre 2016 alle 17:49
      • Rispondi

      Forse sarò più utile a chi sta leggendo questo articolo per la prima volta ora come sto facendo io. Un sensore più preciso ma altrettanto economico è il DHT22 che usa valori float. Decisamente migliore del DHT11 per qualsiasi progetto e analogo nell’utilizzo. So anche dell’esistenza di DHT33 e DHT44 ma non li ho mai provati.

      1. Grazie Nicola,
        anche io ho provato il DHT22 e lo trovo davvero interessante.
        Magari pubblicherò un articolo sui miei esperimenti in merito, se vuoi scrivere qualcosa in merito segui le istruzioni nella pagina “collabora al blog” ed lo pubblicherò.

    • Silvio Mattiello il 12 Aprile 2015 alle 00:33
    • Rispondi

    Ciao,
    ho appena comprato un sensore DHT11 e ho implementato sia la libreria e il codice da te scritto.
    All’avvio di arduino e del monitor seriale,mi da questi errori a monitor:
    DHT TEST PROGRAM
    LIBRARY VERSION: 0.4.1

    Type, status, Humidity (%), Temperature (C)
    DHT11, Time out error, 0, 0
    DHT11, Checksum error, 255, 255
    DHT11, Time out error, 255, 255
    DHT11, Time out error, 255, 255
    DHT11, Time out error, 255, 255
    DHT11, Checksum error, 255, 255
    DHT11, Time out error, 255, 255
    DHT11, Time out error, 255, 255
    DHT11, Time out error, 255, 255

    in loop.come mai?

    1. Ciao Silvio,
      dal log che i hai inviato il problema sembra essere di comunicazione con la sonda.
      Controlla di aver connesso la sonda al pin che hai indicato nello sketch, in alternativa potrebbe essere danneggiata la sonda ma occorrono test più approfonditi.

    • domenico il 14 Maggio 2015 alle 15:28
    • Rispondi

    sonda dht 22.ho fatto la verifica dello sketche mi da errore

    :1:19 fatal error: dht22.h: NO such file or directory..

    ho controllato quello che hai messo tu arduino dht 11 ed è uguale come srittura .non so il motivo ti ringrazio per la gentilezza.

    1. Ciao Domenico,
      hai incluso correttamente le librerie per il sensore dht22 ?
      Dall’errore sembra che tu non possieda la libreria dht22.h

    • domenico il 15 Maggio 2015 alle 14:53
    • Rispondi

    file:esmpi;di cui all’interno ho le voci :sensor library,dhtmaster,dht test.

    sul desktop: ho una nuova cartella con all’interno DHTccp;DHTh .però non riesco a caricarle su arduino uno.

    il display due righe da kit abc di arduino v3,fuziona con listato 13.1 da libro

    collegando il dht 22, mi vengono fuori tutte lettere P.non so come mai. ti ringrazio

    1. Ciao Domenico,
      non ho compreso il tuo problema, se hai difficoltà a caricare le librerie in Arduino cerca una delle mie guide o di altre guide on-line.
      Per il problema con il display potresti aver usato un pin dedicato all’LCD per collegare il sensore in tal caso il comportamento è imprevedibile.

    • Renzo il 27 Maggio 2015 alle 14:25
    • Rispondi

    Salve,
    mi riferisco allo sketch di test dell DHT11 ed ho letto i post ma mi trovo sempre un errore di time out.
    Ho modificato anche il delay da 500 a 10000 ma con lo stesso risultato.
    Mi piacerebbe funzionasse perché vorrei integrare questa sonda con con quella BMP180 che mi funziona già bene.
    Salve e grazie.
    Renzo

    P.S. Windows XP

    1. Ciao Renzo,
      il sensore è esattamente quello mostrato nel progetto?
      Te lo chiedo perché a volte sensori di produttori differenti possono avere componenti che differiscono tra loro e causano problemi di timeout.
      Per evitarli consiglio di seguire il datasheet del produttore e le librerie che rilasciano a corredo del componente.

    • Gianmarco il 1 Luglio 2015 alle 21:55
    • Rispondi

    Salve,
    Le anticipo che da poco sono entrato nel mondo di Arduino e sto cercando di destreggiarmi fra tutte i possibili utilizzi che si possono fare con esso. Volevo provare il sensore di temperatura e umidità dht11. Ho incollato esattamente il suo programma per vedere come funzionasse. Il seriale mi comunica Checksum error per l’umidità e mi da dei valori sballati sia per l’umidità che per la temperatura. Come posso risolvere questo problema?
    Grazie per l’attenzione.

    Gianmarco

    1. Ciao Gianmarco,
      l’errore di checksum si verifica solitamente quando il sensore non comunica in modo corretto con arduino.
      Se hai il medesimo sensore descritto in questo articolo controlla che i collegamenti siano corretti.
      Se il DHT11 in tuo possesso è differente o non possiede la basetta di connessione potrebbe essere il solo sensore senza circuito di interfaccia e devi costruirlo tu da datasheet del produttore.

    • Mario il 14 Febbraio 2016 alle 21:38
    • Rispondi

    Ciao,
    Voglio collegare insieme due sensori DHT 22 (interno) e DS18B20(esterno) nello steso schizzo,ma mi da errore.Mi puoi dare una mano?
    Grazie!

    1. Ciao Mario,
      potrei aiutarti se mi dicessi che tipo di errore ti viene restituito.

    • Mario il 15 Febbraio 2016 alle 20:56
    • Rispondi

    Ho fatto solo copia incolla a DHT22.ino e DS18S20.ino
    Grazie!

    http://www………com/v/Y7ttSC5z/file.html

    Errore:
    DHT22_DS18S20:96: error: expected constructor, destructor, or type conversion before ‘(‘ token
    delay(2000);
    ^
    DHT22_DS18S20:107: error: expected unqualified-id before ‘if’
    if (isnan(h) || isnan(t) || isnan(f)) {
    ^
    DHT22_DS18S20:117: error: ‘Serial’ does not name a type
    Serial.print(“Humidity: “);
    ^
    DHT22_DS18S20:118: error: ‘Serial’ does not name a type
    Serial.print(h);
    ^
    DHT22_DS18S20:119: error: ‘Serial’ does not name a type
    Serial.print(” %\t”);
    ^
    DHT22_DS18S20:120: error: ‘Serial’ does not name a type
    Serial.print(“Temperature: “);
    ^
    DHT22_DS18S20:121: error: ‘Serial’ does not name a type
    Serial.print(t);
    ^
    DHT22_DS18S20:122: error: ‘Serial’ does not name a type
    Serial.print(” *C “);
    ^
    DHT22_DS18S20:123: error: ‘Serial’ does not name a type
    Serial.print(f);
    ^
    DHT22_DS18S20:124: error: ‘Serial’ does not name a type
    Serial.print(” *F\t”);
    ^
    DHT22_DS18S20:125: error: ‘Serial’ does not name a type
    Serial.print(“Heat index: “);
    ^
    DHT22_DS18S20:126: error: ‘Serial’ does not name a type
    Serial.print(hic);
    ^
    DHT22_DS18S20:127: error: ‘Serial’ does not name a type
    Serial.print(” *C “);
    ^
    DHT22_DS18S20:128: error: ‘Serial’ does not name a type
    Serial.print(hif);
    ^
    DHT22_DS18S20:129: error: ‘Serial’ does not name a type
    Serial.println(” *F”);
    ^
    DHT22_DS18S20:130: error: expected declaration before ‘}’ token
    }
    ^
    exit status 1
    expected constructor, destructor, or type conversion before ‘(‘ token

    1. Ciao Mario,
      il codice che stai utilizzando non è stato scritto da me e non c’entra nulla con questo articolo se non per il DHT comune al sensore.
      Puoi scrivere all’autore per chiedere aiuto, io non so aiutarti.
      In futuro se vedrò altre cose simile le classificherò SPAM e sposterò nel cestino.

    • Federico il 8 Marzo 2016 alle 21:49
    • Rispondi

    Ciao Mauro.
    Sto provando sta benedetta sonda che mi è finalmente arrivata e che è l’ultimo tassello per la mia stazione meteo.

    Purtroppo anche se mi da l’OK per la lettura mi restituisce 0 sia per Hum che per Temp.
    il modulo è della sunfounder e la sonda è un dht11.
    Credi che sia una sonda difettosa?
    come potrei esserne certo ?
    Grazie mille

    1. Ciao Federico,
      il valore “OK” in questo sketch deriva dal confronto con la costante DHTLIB_OK nella libreria che ho usato io.
      Potrebbe anche corrispondere ad un altro valore e significato per la tua Sonda.
      Verifica che il produttore rilasci una libreria già testata come ha fatto DFRobot per la mia ed eventualmente le specifiche per scriverti la tua libreria.

    • Nicholas il 11 Marzo 2016 alle 18:12
    • Rispondi

    Ciao,
    sto provando il mio nuovo sensore dht ho usato lo stesso sketch (il pin usato è il 2 anche da me) , appena aggiornato Arduino e appena scaricato la libreria da te consigliata, sul monitor seriale però mi da un problema..
    Se lo alimento con batteria a 9V (con resistenze calcolate ) mi segna checksum error con 255 per temp e umidita, se lo alimento con la 5V di arduino mi da lo stesso messaggio ma i valori sono entrambi 1.
    Pensi sia un problema di software quindi tipo la libreria o di hardware quindi sonda difettosa?
    Grazie

    1. Ciao Nicholas,
      sembra un problema di libreria che potrebbe non essere adatta al tuo sensore, prova ad utilizzare quella fornita dal produttore del tuo componente.

    • Gabriele il 4 Maggio 2016 alle 22:45
    • Rispondi

    Ciao Mauro,

    vorrei chiederti come varia lo sketch per scrivere i valori misurati su un display lcd IC2.
    Grazie

    1. Ciao Gabriele,
      puoi leggere un qualsiasi articolo dedicato ai display LCD, simili al tuo display, e comprendendo come funzionano integrarli in questo sketch.

    • Carlo il 6 Maggio 2016 alle 19:50
    • Rispondi

    spiego quello di cui avrei bisogno: necessito che il sistema accenda una ventola quando la media di temperatura ed umidità supera determinati valori. Quante variabili devo dichiarare? Come cambia lo sketch in questione? Posso avere dei risultati in float o il sensore restituisce solo misurazioni in numeri interi?

    1. Ciao Carlo,
      cerco di risponderti ad ogni dubbio:
      1. dovrai fissare una soglia che scateni l’avvio della ventola, dovresti farcela solo con una;
      2. lo sketch lo puoi modificare in tanti modi, dipende da come vuoi impostare il tuo progetto;
      3. prova a leggere il datasheet del sensore, se ricordo bene esprime i suoi valori in float ed è in fase di print su seriale che io caso a intero il valore.

    • antonio il 24 Giugno 2016 alle 10:39
    • Rispondi

    Ciao, vorrei implementare questa sonda con un code che ho trovato in rete, si tratta di controllo di 4 rele attraverso web server; la mia domanda è questa: come posso verificare la temperatura e l’umidita appena apro la pagina web? se volete posto lo skretch, grazie

    1. Ciao Antonio,
      la domanda dovresti porla sul blog o sito che pubblica il codice, qui non ha senso.

    • lino grieco il 29 Giugno 2016 alle 15:57
    • Rispondi

    ciao mauro, io sono lino un ing edile che si sta imbattendo per la prima volta con arduino e il sensore di umidità e temperatura dht11.
    voglio usare due sensori dht11 per due camere diverse e leggere in tempo reale temperatura e umidità dei due ambienti.
    puoi aiutarmi con lo skecth?
    ho visto quello che mi propone arduino dht11 test ma non riesco a far funzionare due sensori insieme.

    un’altra curiosità.
    ma essendo il dht11 un sensore analogico perchè lo si connette a un pin digitale…

    scusami se dico fesserie ma sono all’inizio..ma ho tanta voglia di imparare!!!
    ciao…lino

    1. Ciao Lino,
      per gli sketch ti consiglio la lettura dei miei tutorial sui sensori e sull’uso degli oggetti di librerie.
      Il DHT11 non mi risulta un sensore analogico, ma un sensore con interfaccia digitale di tipo onewire.

    • lino grieco il 29 Giugno 2016 alle 16:52
    • Rispondi

    credo di essere arrivato ad una soluzione…..
    puoi dargli uno sguardo…..e se vuoi anche una correzione…

    [[ codice rimosso in automatico ]]

    1. Ciao Lino,
      purtroppo il codice viene rimosso in automatico come descritto in fondo ad ogni articolo.

        • lino grieco il 5 Luglio 2016 alle 18:08
        • Rispondi

        non importa….sto andando avanti col progetto….ti scrivo appena ho bisogno…grazie

    • Alessandro il 10 Luglio 2016 alle 10:07
    • Rispondi

    Sono alle primissime armi con arduino colgo anche l’occasione per farvi i complimenti per l’ottimo sito .

    IO con questo progetto mi chiedevo se era possibile abbinarci il display lcd 20 righe I2c…ho provato ma non ho ottenuto nessun risultato…se cortesemente mi potreste indicare facendomi vedere il codice esatto così posso capire dove sbaglio.
    Grazie
    Alessandro

    1. Ciao Alessandro,
      prova a leggere gli articoli dedicati ai display I2C, se il display funziona, ci metterai poco, comprese le mie spiegazioni, ad aggiungere la lettura del sensore.

    • christopher il 12 Luglio 2016 alle 11:44
    • Rispondi

    ciao il monitor seriale il primo colpo mi da i valori poi i successivi sempre 0.. perchè?
    DHT TEST PROGRAM
    LIBRARY VERSION: 0.4.1

    Type, status, Humidity (%), Temperature (C)
    DHT11, OK, 17, 28
    DHT11, OK, 0, 0
    DHT11, OK, 0, 0
    DHT11, OK, 0, 0
    DHT11, OK, 0, 0

    1. Ciao Christopher,
      i valori iniziali sono da ignorare i successivi devono dipendere da un cattivo collegamento del sensore o dal malfunzionamento del sensore stesso.

        • christopher il 12 Luglio 2016 alle 14:22
        • Rispondi

        Ahahhah hai ragione ho sbagliato io grazie mille mauro 🙂

    • Michele De Crescenzo il 25 Luglio 2016 alle 22:10
    • Rispondi

    Sig. Alfieri Buonasera,

    Ho trovato il suo progetto relativo costruzione di un sensore di temperatura ed umidità.
    Ho intenzione di provare a realizzarlo, e se la cosa funziona, passare alla realizzazione di un datalogger, e successivamente di un dispositivo di controllo per comandare un “qualcosa” .

    Nell’articolo chiede giustamente quanto sotto riportato.

    >>>
    Gentilmente NON incollare sketch nei commenti, usa la casella info del blog che trovi nella pagina contatti.
    <<<

    Ho provato a cercare il collegamento al blog nella pagina Contatti per scaricare lo sketch come suggerisce, ma non ho sono ci sono riuscito; mi sono perso qualcosa?

    Cortesemente può indicarmi il link o fornirmi ulteriori indicazioni
    Nel ringraziarla in anticipo,
    Cordiali saluti,
    Michele De Crescenzo

    1. Ciao Michele,
      non so se ho compreso quello che desideri, se vuoi usare il mio sketch ti basta fare copia e incolla da questa pagina.

    • Michele De Crescenzo il 26 Luglio 2016 alle 23:36
    • Rispondi

    Buonasera Mauro,
    perfetto; ha interpretato correttamente il mio desiderata.
    La mi richiesta è derivata dalla presenza della sua frase che ho riportato.
    L’ho inteso che non sarebbe stato deontologicamente corretto fare un semplice “cut & paste” dello sketch, si sarebbe dovuta utilizzare una qualche altra procedura.
    La ringrazio per lil cortese e tempestivo riscontro.
    Complimenti per il sito, ma soprattutto per la tecnica esplicativa e attitudine divulgativa.
    Cordiali saluti.
    mdc

    1. Ciao Michele, procedi pure .. I miei sketch sono pubblici per essere copiati ed usati. Spiego il loro funzionamento per consentire a tutti gli appassionati, come te, di poterli comprendere e modificare.

    • Mariano il 7 Settembre 2016 alle 18:21
    • Rispondi

    salve, ho provato il progetto funziona bene ma il valore dell’ umidità è basso, posso fare qualcosa?

    1. Ciao Mariano,
      probabilmente è corretto nel luogo in cui ti trovi, hai modo di confrontarlo con uno strumento commerciale? va bene anche una stazione meteo/sveglia di quelle che trovi in vendita nei centri commerciali.

        • Mariano il 9 Settembre 2016 alle 19:32
        • Rispondi

        salve
        ho provato a confrontare i dati con una stazione meteo della OREGON la temperatura coincide quasi ma la stazione meteo non è provvista di rilevazione umidità,
        vedo come provare anche la misura dell’ umidità.
        grazie

    • Loris Rumolo il 22 Settembre 2019 alle 21:19
    • Rispondi

    Buonasera Mauro ,sono Loris .Ho iniziato il tuo corso on_line su Arduino ma , mia moglie si è documentata e mi ha regalato lo “Starter Kit UNO R3 Project” con una serie di componenti e progetti tra cui alcuni molto simili ai tuoi . Sono arrivato al progetto sul sensore DHT11 . Nello sketh di esempio che ti riepilogo :

    [[ codice rimosso in automatico ]]

    ———-
    Arduino:1.8.9 (Windows Store 1.8.21.0) (Windows 10), Scheda:”Arduino/Genuino Uno”

    DHT11_Example:14:2: error: ‘DHT’ does not name a type

    DHT dht( DHT_SENSOR_PIN, DHT_SENSOR_TYPE );

    ^

    C:\Users\loris\Desktop\Ufficio\KIT_ARDUINO\code\Lesson 12 DHT11 Temperature and Humidity Sensor\DHT11_Example\DHT11_Example.ino: In function ‘bool measure_environment(float*, float*)’:

    DHT11_Example:39:9: error: ‘dht’ was not declared in this scope

    if( dht.measure( temperature, humidity ) == true )

    exit status 1
    ‘DHT’ does not name a type

    Mi aiuteresti a capirne il motivo?…ho trovato il programma pubblicato date sopra e funziona correttamente. Vorrei capire l’errore poichè me lo ha dato anche in un altro sketch ma ho risolto diversamente. Grazie mille come sempre . Saluti

    1. Ciao Loris,
      il problema è certamente la mancanza della libreria corretta.
      Puoi adattare il codice alla libreria che possiedi seguendo gli esempi della libreria stessa o puoi usare la mia libreria ed il mio esempio.

    • Loris Rumolo il 22 Settembre 2019 alle 21:21
    • Rispondi

    Ciao Mauro scusa relativamente alla precedente , la libreria che non riesco a trovare è:

    //DHT_nonblocking dht_sensor( DHT_SENSOR_PIN, DHT_SENSOR_TYPE );

    Grazie

    1. Ciao Loris,
      vedi commento precedente.
      Purtroppo neppure io conosco la libreria di cui parli, non l’ho mai usata, io uso quella dell’esempio su cui ho scritto l’articolo.

    • Loris Rumolo il 25 Settembre 2019 alle 19:05
    • Rispondi

    Ciao Mauro il tuo sketch lo avevo gia’ testato modificandolo in qualcosa poichè ho utilizzato pin diversi sulla scheda e funziona correttamente. Sto imparando nuove cose e relativamente al braccio , aspetto di acquisire maggiori conoscenze a completamento di questo corso acquistato con il kit e del tuo per fargli fare nuove cose. In ogni caso prima del corso sia on line sia quello acquistato con il kit , non riuscivo a fare la modifica al software per farlo scendere lentamente al termine del flusso che ha eseguito il braccio. Ora guardando gli esempi sui servo e ragionando , ci sono riuscito. Nulla di importante ma , per me è un passo in avanti. Grazie ancora.

    1. Bene Loris

  1. […] « DHT11 arduino sensore temperatura umidità […]

  2. […] leggere i test sui sensori citati in questi articoli già pubblicati DHT11, SHT10, […]

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.