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

问题描述 投票:0回答:1

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

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

Temperature = 21.0000
Humidity = 48.0000

第一个代码

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

}
arduino-esp8266
1个回答
2
投票

从 DHT11 datasheet 来看,它仅支持 1 摄氏度的分辨率和 8 位湿度,导致像浮点数这样的整数。

还需要记住 DHT11 和 DHT22 输出的单位。

返回的温度为摄氏度,湿度为 0 - 100 之间的值,表示相对湿度。

要在摄氏度和华氏度之间进行转换,您可以使用此公式

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

© www.soinside.com 2019 - 2024. All rights reserved.