Arduino Forum

International => Español => Software => Topic started by: johnny_990 on Dec 14, 2018, 11:49 pm

Title: ESP8266-01 y DHT22 lecturas nan
Post by: johnny_990 on Dec 14, 2018, 11:49 pm
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.
(https://forum.arduino.cc/index.php?action=dlattach;topic=585223.0;attach=285962)
Gracias de antemano cualquier ayuda  :smiley-sweat:
Code: [Select]

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


 
   }
 
    
  
  

Title: Re: ESP8266-01 y DHT22 lecturas nan
Post by: Sereno on Dec 15, 2018, 08:50 pm
Utiliza la librería especifica para dht en un ESP.
Title: Re: ESP8266-01 y DHT22 lecturas nan
Post by: surbyte on Dec 15, 2018, 08:51 pm
Que es?
Title: Re: ESP8266-01 y DHT22 lecturas nan
Post by: Sereno on Dec 15, 2018, 09:05 pm
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 (https://github.com/beegee-tokyo/DHTesp/blob/master/DHTesp.h)

No recuerdo que problema tuve, pero con esta me funciona bien.
Title: Re: ESP8266-01 y DHT22 lecturas nan
Post by: Sereno on Dec 16, 2018, 01:06 pm
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.
Code: [Select]
#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("<br><br>");
    client.println("<b>DHT22:");
 
    client.print(t);
    client.println(" &degC");
    client.print(h);
    client.print(" %\t");
    client.println("</html>");                 
    delay(1);     
 
    return;

    client.stop();

   }
Title: Re: ESP8266-01 y DHT22 lecturas nan
Post by: surbyte on Dec 16, 2018, 04:15 pm
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.
Title: Re: ESP8266-01 y DHT22 lecturas nan
Post by: johnny_990 on Dec 23, 2018, 10:57 am
@sereno Muchas gracias!!!! Me ha dado muchas pistas y ya está funcionando...