NodeMCU fallo al leer en DHT11 (Solucionado)

Hola a todos, espero no infringir ninguna norma, hace mucho que no podía tomarme un tiempo para seguir mi aprendizaje, he entrado a leer de a ratos, pero no he podido participar ya que no podía probar nada de lo que leía, así que estoy oxidado en varios aspectos, espero no equivocarme mucho.

Por ejemplo, en el tema de esta consulta, sé que un NodeMCU, no es un Arduino, pero la programo desde el ide de Arduino asi que me tiro un lance.

El NodeMCU que compre a una página china es "Geekcreit® NodeMcu Lua ESP8266 ESP-12F WIFI Development Board" Geekcreit® nodemcu lua esp8266 esp-12f wifi development board Sale - Banggood.com el FCC ID: 2AL38-ESP-F.

He hecho muchos tutoriales de diferentes páginas, encendiendo y apagando leds, incluso desde la aplicación Blynk, leyendo los datos de la conexión por el puerto serie y varias cosas más.

El problema es al conectar y tratar de ver los datos de un sensor DHT11, ahí, no hay caso, tengo cinco sensores, los cinco me arrojan datos similares en el Arduino Uno, y ninguno me da datos en el Node. No es que, no los leo en ThigSpeak, no los leo en el puerto serie. Seis tutoriales distintos, cinco librerías distintas (dos de los tutoriales usaban la de Adafruit) solo con uno de ellos, en vez de leer " Fallo en DHT11 0% nan......" decía "Fallo en DHT11, 255%, 255" este precisamente era el de ThingSpeak.

He cambiado en el código los pines y vuelta a cargar el sketch y nada.

Así que no sé si es software, hardware, si tengo que flashearla primero, aunque en todos los tutoriales que leí ninguno lo tomaba como paso previo y he leído mucho y todos lo hacen muy fácil. Alguna experiencia traumática como la mía?

Desde ya gracias

Bueno si te da NaN significa que en la variable no te estaba obteniendo un valor numérico.
Supongo que era el típico condicional de algún ejemplo del DHT.
Habría estado bien que pusieras el ejemplo que estabas ejecutando para saber ¿No?

En cualquier caso lo único que tienes que hacer es poner la librería DHT, especificar el pin de lectura y el tipo de DHT. Algo así:

#include <DHT.h>

#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println("Espera un poco chaval");
  dht.begin();
  delay(1000);
}

void loop(){
  float
   h = dht.readHumidity(),
   t = dht.readTemperature();
   if (!isnan(h) && !isnan(t) ) {
      Serial.println("Temperatura: " + String(t) + "\nHumedad: " + String(h));
   }
   else{
     Serial.println("Comprueba la conexion porque algo no va");
   }
   delay(1000);
}

Edito: las librerías del su propio repositorio, nada de cogerlas de webs por ahí sin comprobar de donde son y la versión. Librería DHT y los ejemplos si no conocemos la librería, mirar los ejemplos que traen por defecto antes que lo que puedas encontrar en algunas webs que a saber quien y cuando lo hizo.

y vuelvo a editar: Recuerda que el dht necesita una pequeña pausa inicial para que los valores no sean NaN en las primeras vueltas (de ahí el delay en el setup) y lo otro sería saber cómo tienes la conexión del DHT pues he visto ejemplos por internet donde las resistencias parece que sólo existen para los leds :):):slight_smile:

Tampoco nos dices nada sobre qué pines has estado usando. Cuidado con el Nodemcu pues los pines no son igual que Arduino. Cuando nos dicen el pin 4 o el pin 2 tengan en cuenta si se refieren en los ejemplos al D2 o el D4 o bien al GPI02 o el GPI04. La cosa cambia :wink:

El D2 es el GPI04 y el D4 es el GPI02...

1 Like

Gracias por tu respuesta y consejos, lo de las librerías lo he tenido en cuenta, y las guardo en carpeta aparte para no mezclarlas y que me de el mensaje de "hay varias librerías para.........." entonces cargo una cuando ejecuto "su" tutorial, porque aunque no soy muy ilustrado en sofware, soy un gran copión, mezclo códigos de ejemplos con bastante buenos resultados.
Pero en este caso no he mezclado nada, he ejecutado cada tutorial al pie de la letra.
Las características de mi placa las leí todas desde Another ESP8266 NodeMCU Development Board y Github/Doit, no es eso.
Desde la página "Programar fácil con Arduino" Luis del Valle me comenta que para él es un problema de voltaje, el tema es que, yo lo he probado conectando una fuente externa al DHT, pero a 3,5V y la resistencia me da 0 y a cinco me da 255.
Ahora mientras te escribo, caigo en algo que no he probado y en el pasado me ha resuelto problemas, "conectar las masas" como no soy electrónico eso a veces se me escapa, soy electromecánico y compartir el neutro significa corte de disyuntor diferencial por corriente de fuga.
Primero voy a probar esto, que después de unos días si no les pregunto a ustedes, no hubiera caído.
Muchas gracias.

Los gnd siempre siempre siempre en común.

Efectivamente eran el voltaje y las masas, una pequeña reforma en mi banco de pruebas casero, no muy ortodoxo pero valido. Dos tutoriales distintos, dos librerías distintas y bien.
De no haberlo hablado con ustedes y Luis, no lo hubiera recordado y eso que antes me dio problemas en otra tontería que armé, pero como normalmente voy haciendo cositas de invierno a invierno, no lo tengo presente. Ahora lo apunte en mi cuaderno.
Muchas gracias.