ESP8266-01 y DHT22 lecturas nan

Hola a todos:

Estoy intentando programar un esp8266-01 con un DHT22 de 3 pines. El problema es que no consigo lecturas en el monitor, aparecen nan. Probablemente alguna conexi贸n.
Estoy usando ARDUINO UNO de pasarela.

Adjunto esquema usado (est谩 hecho con un DHT11, pero realmente es un DHT22) y c贸digo.


Gracias de antemano cualquier ayuda :sweat_smile:

#include <DHT.h>
#include <ThingSpeak.h>
#include <ESP8266WiFi.h>

#include <DHT.h> 
#define DHTPIN 2 
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE); 

unsigned long myChannelNumber = xxxxxx;
const char * myWriteAPIKey = "xxxxxxxx";

const char* ssid = "xxxxxxx";
const char* password = "xxxxxxxxxxx";

 WiFiClient 聽client;

WiFiServer server(80);
const int DHTPin = 2; 
void setup() {
 聽Serial.begin(115200);
 聽Serial.println("DHTxx test!");
 聽delay(10);
 聽 dht.begin(); //Se inicia el sensor

 聽

 聽Serial.println();
 聽Serial.println();
 聽Serial.print("Connecting to ");
 聽Serial.println(ssid);
 聽
 聽WiFi.begin(ssid, password);
 聽
 聽while (WiFi.status() != WL_CONNECTED) {
 聽 聽delay(500);
 聽 聽Serial.print(".");
 聽}
 聽Serial.println("");
 聽Serial.println("WiFi connected"); 聽
 聽

 server.begin();
Serial.println("Server started");
 聽 
 

 聽// Print the IP address
 聽Serial.println(WiFi.localIP());

ThingSpeak.begin(client);
 聽 
}

void loop() {

float h = dht.readHumidity(); 
float t = dht.readTemperature(); 


 聽//Se imprimen las variables
 聽Serial.print("Humedad: "); 
 聽Serial.print(h);
 聽Serial.println("Temperatura: ");
 聽Serial.println(t);
 聽delay(200); 
 

ThingSpeak.writeField(myChannelNumber, 1, h, myWriteAPIKey);
 聽delay(2000); 
 聽

ThingSpeak.writeField(myChannelNumber, 2, t, myWriteAPIKey);
 聽delay(20000); 
 聽
 聽


 
 聽 }

Utiliza la librer铆a especifica para dht en un ESP.

Que es?

Lo siento, las prisas, que borde que soy鈥
La librer铆a que yo utilizo para un ESP-01 y un DHT22 es esta:
DHTesp.h

No recuerdo que problema tuve, pero con esta me funciona bien.

He montado un esp01 con un DHT22 con tu c贸digo y con esa librer铆a no me deja compilarlo.
Con la librer铆a que te he comentado y con el c贸digo que te adjunto me funciona perfectamente.
Si te sigue sin funcionar verifica que la resistencia entre el positivo del DHT22 y el pin de datos no sea demasiado baja o demasiado alta, yo tengo una puesta de 10K.
No he utilizado nada como pasarela, si no un servidor web.

#include <DHTesp.h>
#include <ESP8266WiFi.h>

DHTesp dht;

const char* ssid = "FELIZ";
const char* password = "NAVIDAD";
IPAddress ip(192, 168, 1, 205);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
IPAddress dns(8, 8, 8, 8);

WiFiClient聽 client;

WiFiServer server(80);

void setup() 
聽 {
聽 聽 dht.setup(2, DHTesp::DHT22);
聽 聽 
聽 聽 WiFi.config(ip, gateway, subnet, dns);
聽 聽 WiFi.mode(WIFI_STA);
聽 聽 WiFi.begin(ssid, password);
聽 聽 while (WiFi.status() != WL_CONNECTED) 
聽 聽 聽 {
聽 聽 聽 聽 delay(500);

聽 聽 聽 }
聽 聽 server.begin();
聽  
聽 }

void loop() 
聽 {
聽 聽 float h = dht.getHumidity();
聽 聽 float t = dht.getTemperature();
聽 聽 
聽 聽 WiFiClient client = server.available();
聽 聽 聽 if (!client) 
聽 聽 聽 聽 {
聽 聽 聽 聽 聽 return;
聽 聽 聽 聽 }

聽 聽 聽 while(!client.available())
聽 聽 聽 聽 {
聽 聽 聽 聽 聽 delay(1);
聽 聽 聽 聽 }
聽  

聽 聽 String request = client.readStringUntil('\r');

聽 聽 client.flush();
聽 聽 client.println("HTTP/1.1 200 OK");
聽 聽 client.println("Content-Type: text/html");
聽 聽 client.println(""); 
聽 聽 client.println("<!DOCTYPE HTML>");
聽 聽 client.println("<html>");
聽 聽 client.println("

");
聽 聽 client.println("<b>DHT22:");
 
聽 聽 client.print(t);
聽 聽 client.println(" &degC");
聽 聽 client.print(h);
聽 聽 client.print(" %\t");
聽 聽 client.println("</html>");聽 聽 聽 聽 聽 聽 聽 聽 聽 
聽 聽 delay(1);聽 聽 聽 
 
聽 聽 return;

聽 聽 client.stop(); 

聽  }

Yo uso Adafruit con su l铆nea de sensores/librer铆as y funcionan todas bien sean o no comprados en Adafruit y yo no los compro.

@sereno Muchas gracias!!!! Me ha dado muchas pistas y ya est谩 funcionando...