SENSORE TEMPERATURA / UMIDITA CHE TIPO?

Ho iniziato meno di un mese fa a realizzare e sperimentare alcuni circuiti con Arduino. Per iniziare ho comprato un KIT denominato "Arduino Study Kit for DIY user" della Keyes dove all'interno si trova un sacco di materiale oltre che alla scheda Arduino Leonardo.

Inizialmente mi sono messo a giocare con i led e il led RGB presente nella confezione. Già trovare come collegare il led RGB è stato un impresa ma poi ci son saltato fuori (non si capiva se era ad anodo o catodo comune).

Adesso ho iniziato ad usare il display LCD e anche lì nessun problema con i collegamenti.

Il vero problema è nato quando ho aperto il sacchetto dei sensori... Dopo aver lavorato un po' col tester ho capito come alcuni di questi funzionano ma altri proprio non ci arrivo...

Per esempio il sensore temperatura / umidità come faccio a sapere se potrebbe essere il modello DHT11 o altro tipo? tutto mi fa presupporre che sia lui però... quando sul display dovrei vedere i valori di temperatura e umidità vedo invece due scritte " nan " .

Il circuito e lo sketch sono presi da qui poi modificati per integrarli nel mio circuito.

Il DHT11 misura 15.5mm x 12mm x 5.5mm, mentre il DHT22 misura 15.1mm x 25mm x 7.7mm

Hai messo il resistore di pull up da 10k sul pin 2 (data out)?

Se hai modificato sketch e circuito devi postare quelli che hai realizzato tu, altrimenti è difficile capire dove è il problema.

Per i sensori generalmente il DHT11 è azzurro e il DHT22 è bianco (almeno io li ho sempre trovati così), qualche volta hanno la sigla stampigliata sul retro.

Normalmente nei kit mettono il DHT11 che è più economico, ma anche meno preciso, del fratello maggiore :smiley:

Ciao

Attilio

@cyberhs Grazuie per le misure appena avrò tempo verifico. Dovrebbe essere comunque il DHT11 visto che è azzurro. La resistenza di pullup l'ho messa ma è strano il tipo di collegamento rappresentato nella guida. Generalmente io piazzavo la resistenza in serie tra l'uscita del pin2 e l'ingresso digitale dell'arduino.
Nello schema invece sembra che la resistenza sia inserita in parallelo tra il pin 2 e il pin 1 dei 5V.

Un altro schema che ho trovato prevedeva di inserire il data out su un ingresso analogico ma non so se è corretto.

@ultimo_53 lo schema non si discosta molto da quello dell'esempio semplicemente in aggiunta ci sono i componenti necessari per usare il display LCD 16x2 su cui visualizzo poi i valori registrati dal sensore. Mi domando se ho incluso nello sketch la libreria corretta... DHT.h
L'ho scaricata direttamente dal sito quindi dovrebbe essere giusta.

@TUTTI Per aggiornarvi ho provato ad usare semplicemente il sensore connesso ad Arduino (eliminando gli altri elementi circuitali) e lo sketch già fatto per testare il funzionamento del sensore stesso. Il risultato è che sullo schermo seriale mi appare la scritta "Failed to read from DHT sensor" che sarebbe poi il risultato di questo if

if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;

dove si ha che

 // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

Gli ingressi analogici di Arduino sono anche digitali. Puoi essere che nello sketch o nella libreria si usi uno di questi pin ma come I/O digitale.

Controlla di aver inserito il segnale del DHT nello stesso pin indicato nello sketch. :smiley:

Il resistore di pull up (tira sù) serve a polarizzare correttamente l'uscita del sensore e deve essere messo tra i +5V e l'uscita data out (pin 2).

Assolutamente errato inserirla in serie.

Risolto l'arcano...

Come si può vedere nell'immagine il mio sensore DHT11 è saldato sopra una basetta (non mi chiedete perchè).

Controllando le piste della basetta ho viso che, in realtà, venivano invertiti i pin dell'alimentazione 5Vdc e dei dati. Sistemati i collegamenti va tutto.

Piacere mi chiamo Salvo e sono Siciliano.
Non mi intendo di elettronica, ma sto cercando di mettere su un igrometro termometro con arduinouno e sensore DHT11, sono un appassionato di rettili e vorrei costruirlo per metterlo nella mi a incubratrice uova rettili.
Sto usando arduinouno un sensore sopracitato lcd 16x2 con modulo I2C.
Dopo aver provato vari progettini trovati in rete mi sono deciso su questo: 28- umidita’ e temperatura in un sol colpo , se mi autorizzate inserisco il link.
dopo aver caricato la libreria il sensore e ok lo verifico dal monitor seriale, ma sul display lcd non visiono niente.
Allego lo sketc:

#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);
}

Vi chiedo una cortesia potete aiutarmi sto impazzendo prova e riprova, sto sclerando.
Grazie mille.

Ma stai usando un lcd nel tuo progetto?

No perchè non vedo nessuna libreria caricata, nessuna definizione dei pin e nessun lcd.print

>Salvo600: Prima di tutto, essendo il tuo primo post, nel rispetto del regolamento, ti chiedo di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il su citato REGOLAMENTO ...

... poi, in conformità al suddetto regolamento, punto 7, devi editare il tuo post (in basso a destra del post, bottone More -> Modify) e racchiudere il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra).

Grazie.

Guglielmo

Scusate ora mi sono presentato.
Ho bisogno di aiuto.
Grazie.

Salvo600:
Scusate ora mi sono presentato.
Ho bisogno di aiuto.

... ma NON hai racchiuso il codice negli appositi tag CODE come ti ho detto di fare !!!

Inoltre, come ti ha già detto "droidprova" nel post #8 ... dove sono le istruzioni e le librerie per usare il LCD ? E quale LCD stai usando ? Metti il link a dove hai comprato il prodotto.

Guglielmo

DHT11- Shield DHT11 sensore di umidità e temperatura - modulo arduino pic - ART. CD10 | eBay

Display BLU 16x2 Display BLU 16x2 - lcd retroilluminato HD44780 per arduino/pic - ART. Z002 | eBay

IIC / I2C ADATTATORE MODULO IIC / I2C ADATTATORE INTERFACCIA PER DISPLAY LCD 1602 SERIALE ARDUINO ECC | eBay

Uso Arduino uno regalato da un mio amico, ancora in scatola nuovissimo usato da me la prima volta.

Visto che sono negato in materia, potrei vedere un progetto fatto, e la relativa libreria da caricare su Arduino uno.
I vari progetti trovati in rete, appena vado a programmare il tutto mi danno tutti errore, e solo quello postato non mi da errore, ma non mi fa vedere nulla sul display.

#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);
}

Dimenticavo assieme ad Arduino uno mi ha dato anche un tc2002a lcd.
Che non saprei come collegare.

Beh il display su quel codice nemmeno c'è.
Viene stampato tutto sul monitor seriale. Ti conviene impararti almeno le basi basi.
E poi come hai collegato il tutto, hai montato bene l'adattatore i2c dietro al display?
Se vuoi usarlo ti conviene anche fare una ricerca della libreria i2c! Non ti posto tutto perché fa bene anche cercare secondo me :slight_smile:

P.S. Il codice devi racchiuderlo nei tag code anche per quello sopra. Come hai fatto adesso per postare il codice, modifica il tuo post precedente dove non hai inserito i tag code e metticeli, così è tutto più pulito!

sono un appassionato di rettili e vorrei costruirlo per metterlo nella mi a incubratrice uova rettili.

Se sei appassionato, prendi in considerazione di prendere il dht22, perché l'11 fa schifo, proprio detta a crudo :slight_smile: Il dht22 invece è davvero un buon sensore, specie per l'umidità! Guarda QUI

Ti consiglio di prenderlo, se vuoi una misura di umidità molto precisa. Ti ho linkato quello perché ha già la R pull up e quindi lo colleghi in un attimo. E' da 4.7k la pull up SMD che ci hanno messo, ma fino a 10/15 metri di cavo non hai problemi.

Ciao, si i2c lo collegato bene al display, ok per il dh22. Lo prendo subito.
Pero il mio problema e che non so editare la libreria, e se non trovo uno schemino non posso fare nulla.
Ho provato vari schemi e librerie, trovate in rete ma nulla da fare.
Ed eccomi qui a chiedere aiuto.
Se può essere utile la mia mail: --- mail rimossa dal moderatore ---
Sempre grazie di tutto.

--- Nota del moderatore: non è consentito, per ovvie ragioni di spam, metter in chiaro qui sul forum le eMail personali. Si usano gli MP -- gpb01

Dato che ti mancano proprio le BASI, ti suggersico di cominciare con lo studiare QUESTO e proseguire con QUESTO ... vedrai che dopo averli studiati ti si chiariranno un po' le idee.

Inoltre io sto ancora aspettando che tu faccia quanto ti ho richiesto al mio post #9 e cioè di racchiudere il tuo codice nei tag CODE !!!

Guglielmo

Per la libreria usa quella di Adafruit.
Per installarla devi aprire l'IDE di Arduino. Vai nel menu Sketch, poi in #include libreria e poi su Gestore Librerie.
Si apre una finestra dove nel campo ricerca scrivi DHT22.
Dovrebbe filtrarti tutte le librerie e evidenziare solo quella di adafruit.
Premi su installa. (Il PC deve essere collegato ad internet)

Dopo installata per provare il sensore trovi l'esempio nel menù Esempio -> esempi da Librerie --> DHT sensor library.
Le connessioni del DHT sono:

// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

Salvo600:
Ciao, si i2c lo collegato bene al display, ok per il dh22. Lo prendo subito.
Pero il mio problema e che non so editare la libreria, e se non trovo uno schemino non posso fare nulla.
Ho provato vari schemi e librerie, trovate in rete ma nulla da fare.
Ed eccomi qui a chiedere aiuto.

Non devi editare nessuna libreria. Installa questa libreria per il display. Per installarla è sufficiente anche che copi la cartella che scaricherai da quel sito che ti ho linkato, dentro la cartella 'libraries' della directory dell'IDE di Arduino: insomma vai nella cartella di installazione di Arduino, copiaci questa cartella che scarichi dentro libraries :slight_smile:

Una volta fatto ciò, testa il display con un esempio tipo 'hello world'

Se hai problemi a visualizzare l'esempio puoi fare intanto due cose:

Controllare se l'indirizzo del display dell'esempio è giusto usando questo skech per vedere qual è il TUO indirizzo

E poi prova a girare il trimmer per vedere se la luminosità è troppo bassa :slight_smile:

Una volta fatto ciò, studia un pochettino su come aggiungere il dht22, una volta che sei riuscito a fare qualcosa, se hai problemi, chiedi pure. Poi se prendi quello di ebay che ti ho linkato, lo colleghi in un attimo, non serve nemmeno la R pull up perché è già integrata sul modulo

Ciao!

Altre prove: lcd: gnd - gnd arduino
vcc 5 v
sda a4
scl a5

dht 11 gnd - 5 v - pin 4 digitale.

Provato vari sketch, non mi riesce di compilarlo da me, il risultato finale: su lcd compare la scritta T0C,
U0%.
Altro momento di panico.

#include <dht11.h>
dht11 DHT;
#define DHT11_PIN 4
#include <Wire.h> //includo le librerie per l'LCD
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
 
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");