ESP8266 使用 DHT11测温湿度

DHT11测量温湿度

在这里插入图片描述
如上图,在库管理器安装DHT sensor library


#include "DHT.h"

#define DHTPIN  5    	//与ESP8266的D1相连
#define DHTTYPE DHT11   // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println(F("DHTxx test!"));

  dht.begin();
}

void loop() {
  //在两次测量之间等待几秒钟
  delay(2000);

  // 读取温度或湿度大约需要250毫秒!
  // 传感器读数也可能长达2秒“旧”(这是一个非常慢的传感器) 
  float h = dht.readHumidity();
  // 读取温度为摄氏温度(默认值)
  float t = dht.readTemperature();
  // 将温度读取为华氏度(isFahrenheit = true)
  float f = dht.readTemperature(true);

  // 检查是否有任何读取失败并提早退出(重试)。
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

  // 以华氏度计算热量指数(默认值)
  float hif = dht.computeHeatIndex(f, h);
  // 计算摄氏温度指数(isFahreheit = false) 
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.printf("Humidity: %f %\n",h);
  Serial.printf(" Temperature: %f℃, %f℉ \n", t, f);
  Serial.printf(" Heat  index: %f℃,%f℉ \n", hic, hif);

  Serial.print(F("Dew Point (oC): "));
  Serial.println(dewPoint(t, h));

  Serial.print(F("Dew PointFast (oC): "));
  Serial.println(dewPointFast(t, h));
  Serial.print("");
}

// 露点(点在此温度时,空气饱和并产生露珠)
// 参考: http://wahiduddin.net/calc/density_algorithms.htm 
double dewPoint(double celsius, double humidity)
{
  double A0= 373.15/(273.15 + celsius);
  double SUM = -7.90298 * (A0-1);
  SUM += 5.02808 * log10(A0);
  SUM += -1.3816e-7 * (pow(10, (11.344*(1-1/A0)))-1) ;
  SUM += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1) ;
  SUM += log10(1013.246);
  double VP = pow(10, SUM-3) * humidity;
  double T = log(VP/0.61078);   // temp var
  return (241.88 * T) / (17.558-T);
}

// 快速计算露点,速度是5倍dewPoint()
// 参考: http://en.wikipedia.org/wiki/Dew_point
double dewPointFast(double celsius, double humidity)
{
   double a = 17.271;
   double b = 237.7;
   double temp = (a * celsius) / (b + celsius) + log(humidity/100);
   double Td = (b * temp) / (a - temp);
   return Td;
}

结果:
在这里插入图片描述

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是使用ESP8266和DHT11模块进行湿度监的代码: ```c++ #include <ESP8266WiFi.h> #include <Adafruit_Sensor.h> #include <DHT.h> // Replace with your network credentials const char* ssid = "your_SSID"; const char* password = "your_PASSWORD"; // DHT11 Sensor #define DHTPIN 2 // DHT11 data pin #define DHTTYPE DHT11 // DHT11 sensor type DHT dht(DHTPIN, DHTTYPE); // Create WiFi client object WiFiClient client; void setup() { Serial.begin(115200); delay(10); // Connect to WiFi network 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"); // Initialize DHT11 sensor dht.begin(); } void loop() { // Wait a few seconds before reading sensor delay(2000); // Read temperature and humidity from DHT11 sensor float humidity = dht.readHumidity(); float temperature = dht.readTemperature(); // Check if any reads failed if (isnan(humidity) || isnan(temperature)) { Serial.println("Failed to read from DHT11 sensor!"); return; } // Print sensor data Serial.print("Humidity: "); Serial.print(humidity); Serial.print("%\t"); Serial.print("Temperature: "); Serial.print(temperature); Serial.println("°C"); // Connect to server and send data if (client.connect("server_IP", 80)) { Serial.println("Connected to server!"); String data = "humidity=" + String(humidity) + "&temperature=" + String(temperature); client.println("POST /sensorData HTTP/1.1"); client.println("Host: server_IP"); client.println("Content-Type: application/x-www-form-urlencoded"); client.print("Content-Length: "); client.println(data.length()); client.println(); client.print(data); client.println(); client.stop(); } else { Serial.println("Failed to connect to server"); } } ``` 请注意,您需要将以下信息替换为与您的网络和服务器相对应的值: - `ssid`:您的WiFi网络名称 - `password`:您的WiFi网络密码 - `server_IP`:您的服务器的IP地址 然后您需要在服务器端编写一个API来接收POST请求并处理数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值