Go Down

Topic: arduino rileva umidità e temperatura 5 minuti poi non più (Read 10280 times) previous topic - next topic

superzaffo

Praticamente devi scaricare la libreria, la scompatti, ti crea una cartella DHT, questa cartella la copy nella cartella "libreries" della tua installazione dell' ide.
Fai eseguire l' ide (o lo riavvii) e a questo punto puoi utilizzare l' empio/i che trovo in file/esempi/dht.
Se mastichi un po' di inglese, prova seguire quel link che ti ho dato, così potrai capire un pò di cose su quel sensore.

parapaolo

#16
Feb 18, 2013, 02:26 pm Last Edit: Feb 18, 2013, 02:37 pm by parapaolo Reason: 1
Scusa sono tonto ma non ho capito come devo costruire la cartella e le sottocartelle :smiley-roll-blue:

Ho scaricato lo zip dal sito, ora scompattando tutto trovo i seguenti file: DHT.h - DHT.cpp - DHTtester.pde

Mi puoi strutturare come mettere il tutto per poter caricare su arduino il file .pde, grazie

Ho risolto, grazie ora provo.

Dimenticavo ho portato l'alimentazione a 9 ma il problema persiste il display ora impazzisce pure, compaiomo anche tutti simboli strani dopo che funziona un pò

superzaffo

Allora motivo in più per fare una prova con il dht11 solo e visualizzare la temp. via seriale...
Poi passiamo al display.

nid69ita

Controlla meglio. Di solito gli zip contenenti le librerie contengono ANCHE i percorsi dei file.

my name is IGOR, not AIGOR

parapaolo

Ok dopo 2 ore sul monitor seriale ancora scorrono i valori senza intoppi e il sensore rileva esattamente le variazioni, adesso come mi muovo per applicarlo ad un display?

menniti

Il displsy è uno strumento di visualizzazione alternativo al serial monitor; per funzionare ha bisogno di una libreria specifica (che devi integrare nello sketch), di una dichiarazione dei pin collegati ad Arduino (ti servono al minimo 6 fili per i segnali + l'alimentazione), poi al posto dei comandi normali del Serial Monitor metti quelli specifici per il display.
Visto che hai risolto il problema del sensore ti basta seguire quanto scritto nel PlayGround a proposito del display LCD (va benissimo la versione a 4 bit) e completi rapidamente.
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

leo72

Nel Reference trovi la spiegazione della libreria LiquidCrystal:
http://arduino.cc/en/Reference/LiquidCrystal

Aprendo i vari link trovi anche lo schema di collegamento del display.

parapaolo

Ok ho collegato il display e funziona dato che i test del displaiy caricati funzionano tutti, ora il problema è fondere insieme il tutto, ossia la libreria DHT che legge dal sensore e la LiquidCrystal  :smiley-eek-blue:

Un esempio funzionante con magari le spiegazioni è chiedere troppo?

leo72

Sì, è chiedere troppo perché internet è pieno di esempi e basta cercarli...  ]:)
tipo questo:
http://www.geeetech.com/wiki/index.php/Electric_thermometer_by_using_DHT11_sensor_module

parapaolo

#24
Feb 18, 2013, 11:43 pm Last Edit: Feb 18, 2013, 11:48 pm by parapaolo Reason: 1

Sì, è chiedere troppo perché internet è pieno di esempi e basta cercarli...  ]:)
tipo questo:
http://www.geeetech.com/wiki/index.php/Electric_thermometer_by_using_DHT11_sensor_module


Ok non lo faccio più :smiley-zipper:

Allora ho provato a fondere insieme le due librerie ragionando come mi avete detto sopra e mi è venuto fuori questo codice

Code: [Select]
// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain

#include "DHT.h"
#include <LiquidCrystal.h>
#define DHTPIN 8     // what pin we're connected to

// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT11   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +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

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
  Serial.begin(9600);
  Serial.println("DHTxx test!");
lcd.begin(16, 2);
  dht.begin();
}

void loop() {
  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  float t = dht.readTemperature();

  // check if returns are valid, if they are NaN (not a number) then something went wrong!
  if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    Serial.print("Humidity: ");
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: ");
    Serial.print(t);
    Serial.println(" *C");
     lcd.setCursor(0,0);
  lcd.print("Temp= ");
  lcd.print(t);
  lcd.print(" *C");
  lcd.setCursor(0,1);
  lcd.print("Humidity= ");
  lcd.print(h);
  lcd.print("% ");
  }
}


E sono 10 minuti che gira e sembra funzionare anche  XD
Solo una cosa mi restituisce i valori con il punto decimale esempio Temp= 21.00 dato che il DHT11 non rileva tale valore decimale come faccio a toglierlo sia dalla temperatura che dall'umidità?
Mi sembra di aver letto chè si possa specificare il valore decimale delle risposte ma non ho capito bene come sul codice, grazie

menniti

Bravo, complimenti! Come vedi riuscire a risolvere i problemi da solo dà maggiori soddisfazioni ed aiuta ad imparare ;)
Manuale "Arduino e le tecniche di programmazione dei microcontrollori ATMEL"
http://www.michelemenniti.it/manuale_di_programmazione.html
http://www.michelemenniti.it/offerta.html
Articoli ElettronicaIN
http://www.michelemenniti.it/elettronica_in.html

PaoloP

#26
Feb 19, 2013, 12:03 am Last Edit: Feb 19, 2013, 12:05 am by PaoloP Reason: 1
Siccome h e t sono definiti come float, puoi usare lcd.print(t,0) e lcd.print(h,0) per non far visualizzare i decimali.

Reference --> http://arduino.cc/en/Serial/Print
Quote

Syntax
Serial.print(val)
Serial.print(val, format)

Parameters
val: the value to print - any data type
format: specifies the number base (for integral data types) or number of decimal places (for floating point types)

superzaffo

Mi associo ai complimenti di Michele.
Altra cosa.. Non togliere tutti e due i decimali. Perchè Il DHT11 e come il DHT22 ha un decimale di precisione, quindi modifica il comando in questo modo: lcd.print(t,1) e lcd.print(h,1)

Ciao

itomastor

Ciao, nel mio caso il decimale è presente ma sempre pari a zero anche modificando lo sketch come suddetto.
Qualcuno in rete sostiene che con il DHT11 non funziona il decimale ma in un video su Youtube c'è un termometro LCD con DHT11 che il decimale lo visualizza sul display.
Com'è la faccenda? :smiley-roll:

PaoloP

Dal datasheet risulta che il DHT11 ha la risoluzione dell'1% quindi non ha decimale.
Si può però effettuare un campionamento di n letture e poi fare la media che avrò almeno una cifra decimale significativa.

Go Up