如何从DHT11和ESP8266获得准确的温度和湿度值

问题描述

我想测量DHT11传感器和ESP8266的温度和湿度。 为此,我使用两个库编写了一些代码

但是这些都不能给我准确的湿度和温度值。 我能得到的输出如下。

温度= 21.0000 湿度= 48.0000

enter image description here

请给我一些升级代码提示

一个代码

#include <DHTesp.h>

DHTesp dht;

void setup(){

  Serial.begin(9600);
  pinMode(0,INPUT);
  dht.setup(0,DHTesp::DHT11);
}
void loop(){
  Serial.print("Temperature = ");
  Serial.println(dht.getTemperature(),4);
  Serial.print("Humidity = ");
  Serial.println(dht.getHumidity(),4);
  delay(1000);
}

第二个代码

#include <DHT.h>
DHT dht(0,DHT11);


void setup() {
  Serial.begin(9600);
  pinMode(0,INPUT);
  dht.begin();
}

void loop() {
 
    float humidity = dht.readHumidity();
    float temp = dht.readTemperature();
    delay(500);
    Serial.println(humidity);

}

解决方法

从DHT11 datasheet开始,它仅支持1摄氏度的分辨率和8位的湿度分辨率,导致浮点数之类的整数。

DHT11和DHT22输出的单位也要牢记。

温度返回为摄氏温度,湿度是介于0到100之间的值,代表相对湿度。

要在摄氏温度和华氏温度之间转换,可以使用以下公式

Serial.print((int)round(1.8*temp+32));