Sensore di temperatura DHT11

Salve a tutti vorrei collegare un sensore di temperatura DHT11 ad arduino e leggere i dati su domotichome, qualcuno puo' darmi una mano con il codice?

Google.it Ti risponde alla domanda : "arduino dht11" con http://arduino.cc/playground/Main/DHT11Lib come prima risposta (almeno sul mio computer).

Ciao Uwe

Io uso Ecosia, un motore di ricerca "green", che mi ha dato questo come primo risultato: http://arduino.cc/playground/Main/DHTLib

ma, .... é la stessa pagina. 2 motori di ricerca diversi e lo stsso risultato? ;) ;) Ciao Uwe

Ma io ho fatto una ricerca "verde", tu invece hai inquinato nel frattempo :grin: (notare la faccina ecologica)

Veramente non sembra che siano uguali: http://arduino.cc/playground/Main/DHT11Lib http://arduino.cc/playground/Main/DHTLib anche se non ho visitato i link, che ne dite?

La libreria linkata in DHTLib è compatibile con il DHT11 e DHT22, quella linkata in DHTLib11 va solo con il DHT11

hai vinto Tu.

Ciao Uwe

Ciao ragazzi houtilizzato il seguente codice grazie all’ aiuto di un amico sul forum

#include <SPI.h>
#include <Ethernet.h>
#include <dht11.h>

#define DHT11PIN 2  //dichiariamo ad arduino che il sensore è sul pin2

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xBE };
byte ip[] = { 192 ,168 ,1 ,177 };
byte gateway[] = { 192 ,168 ,1 ,1 };
byte subnet[] = { 255 ,255 ,255 ,0 };
Server server(80);

String readString = String(30);
dht11 DHT11;        //dichiariamo l'oggetto 


void setup(){
  Ethernet.begin(mac, ip, gateway, subnet);
  delay(1000);
  Serial.begin(9600);
}

void loop(){
  DHT11.read(DHT11PIN); //legge il valore del pin del sensore

  Client client = server.available();
  if (client) {
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (readString.length() < 30)
        {
          readString = readString + c;
        }
        if (c == '\n') {
          Serial.print(readString);
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();


          if(readString.startsWith("GET /?out=2&status=1"))
          {
            Serial.print("\n 2 DHT11 \n");
            client.print("{\"status\" : \"ok\" , \"value\" : \"");
            client.print(DHT11.temperature);
            client.print("\"}");
          }


          if(readString.startsWith("GET /?out=all"))
          {
            Serial.print("\n OUT ALL\n");
            client.print("{\"ip\" : \"192.168.1.177\", ");
            client.print("\"devices\" : ");
            client.print("[{ \"type\" : \"temperature\", \"name\" : \"temp lab\", \"out\" : \"");
            client.print("2");
            client.print("\"}");
            client.print("]}");
          }
          readString="";
          client.stop();
        }
      }
    }
  }
}

dopo ho scaricato la libreia del thd11 e lo inclusa ma ricevo sempre errore sulla riga
dht11 DHT11; //dichiariamo l’oggetto
qualcuno sa dirmi perche’?

prova a mettere :: tra del due sigle; non potresti postare l'errore che ti dà?

questo e l'errore sketch_oct15a:15: error: expected unqualified-id before numeric constant sketch_oct15a.cpp: In function 'void loop()': sketch_oct15a:25: error: request for member 'read' in '11', which is of non-class type 'int' sketch_oct15a:47: error: request for member 'temperature' in '11', which is of non-class type 'int'

Crobentre: questo e l'errore sketch_oct15a:15: error: expected unqualified-id before numeric constant sketch_oct15a.cpp: In function 'void loop()': sketch_oct15a:25: error: request for member 'read' in '11', which is of non-class type 'int' sketch_oct15a:47: error: request for member 'temperature' in '11', which is of non-class type 'int'

Deve intervenire qualche amico programmatore, secondo me manca della punteggiatura tra dht11 e DHT11, qualcosa tipo :: oppure =, purtroppo le mi competenze si fermano qui, ma fra poco qulcuno ti risponde.

No, i doppi due punti non servono, perché lui sta creando un'istanza della libreria dht11 che chiama DHT11. Casomai non riconosce l'istanza. Hai copiato la libreria nella cartella correttamente?

leo72: No, i doppi due punti non servono, perché lui sta creando un'istanza della libreria dht11 che chiama DHT11. Casomai non riconosce l'istanza. Hai copiato la libreria nella cartella correttamente?

L'ho buttata lì, come detto... Mi sa che hai ragione, se interpreto bene gli sta dando errore su ogni comando legato alla libreria.

Ho notato che nel link DHT11Lib ci sono i file .cpp e .h inseriti come codice da copia-e-incollare e non un archivo per cui l'utente deve crearsi a mano quei file e metterli nella cartella.

La procedura che ho utilizzato e' la seguente: -Io ho scaricato la librei,a scompattato il file zip, -ho creato una cartella chiamata dht11all' interno della cartella libraries -ho incollato tutti i file presenti nella libreria scaricata. Poi dall' ide ho fatto sketch/import Library/dht

Cosa intendi per : l'utente deve crearsi a mano quei file e metterli nella cartella.

Dopo che hai aggiunto una libreria devi chiudere e riaprire il IDE perché lo veda. Ciao Uwe

Gia' fatto piu' volte infatti quando vado in sketch/import Library oltre a quelle standard di arduino vedo quella dht aggiunta da me. Mi confermi che la procedura che ho fatto io per aggiungere la libreia e' corretta.

Dov'è il link allo ZIP? Io non l'ho trovato, ero a questo che mi riferivo. Cmq i file vanno scompattati nella cartella /libraries/nomelibrera Poi non devi importarli nello sketch, ci pensa l'include iniziale ad importare i file necessari.

Questo e’ il link da cui ho scaricato la libreria

poi nella prima riga #include <DHT.h> ma mi da sempre errore.