ESP32+dht11/sht30测温湿度(arduino编程)

闲话不多说,直接上干货。



一、硬件介绍

开发板型号:NodeMCU-32S(这个是我用的,其他类型的ESP32板子也可以)
在这里插入N图片描述
温湿度传感器:DHT11、SHT30(市面上最常见的温湿度传感器,不再贴图)。
(硬件连接见第二部分)

二、软件编程

文末有完整工程,包含以下两个程序中所有用到的库函数,如果想节省时间或者看代码注释可以下载使用。
但是首先要确定你的arduino软件是否已经安好了ESP32的开发板管理器,如图:

在这里插入图片描述

1.dht11测温湿度

引脚连接:VCC接3v3,gnd接地,dht11的数据引脚接开发板P14。
主要代码:

#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 14   
#define DHTTYPE DHT11  
DHT dht(DHTPIN, DHTTYPE);  
void setup() {
  Serial.begin(115200);
  dht.begin(); 
}

void loop()
{ 
  float h = dht.readHumidity();   
  float t = dht.readTemperature(); 
  Serial.print("相对湿度: ");   
  Serial.print(h);
  Serial.println(" %RH");
  Serial.print("温度: ");
  Serial.print(t);
  Serial.println(" °C");
  delay(1000);
}

2.sht30测温湿度

引脚连接:VCC接3v3,gnd接地,数据引脚sda接开发板P21,引脚scl接开发板P22。
代码如下(示例):

#include <Wire.h>
#define Addr_SHT30 0x44
#define SDA_PIN 21   
#define SCL_PIN 22

void setup()
{
  Wire.begin(SDA_PIN, SCL_PIN);
  Serial.begin(115200);
}

void loop()
{
  unsigned int data[6]; 
  Wire.beginTransmission(Addr_SHT30);
  Wire.write(0x2C);
  Wire.write(0x06);
  Wire.endTransmission();
  delay(500);
  Wire.requestFrom(Addr_SHT30, 6);
  if (Wire.available() == 6)
  {
    data[0] = Wire.read();
    data[1] = Wire.read();
    data[2] = Wire.read();
    data[3] = Wire.read();
    data[4] = Wire.read();
    data[5] = Wire.read();
  }

  float Temp = ((((data[0] * 256.0) + data[1]) * 175) / 65535.0) - 45;
  float Humidity = ((((data[3] * 256.0) + data[4]) * 100) / 65535.0);

  Serial.print("相对湿度:");
  Serial.print(Humidity);
  Serial.println(" %RH");
  Serial.print("温度:");
  Serial.print(Temp);
  Serial.println(" °C");
  delay(1000);  
}

3.运行结果

两个程序都是测温湿度,最后串口显示相似,如下图所示。在这里插入图片描述
代码工程链接:
https://download.csdn.net/download/m0_52152690/86272308

  • 6
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
1. 硬件准备: - ESP8266开发板 - DHT11湿度传感器 - 蜂鸣器 - 杜邦线 - 面包板 2. 软件准备: - Arduino IDE - ESP8266库 - DHT库 3. 接线: 将DHT11的VCC接到ESP8266的3.3V,将DHT11的GND接到ESP8266的GND,将DHT11的DATA接到ESP8266的D1口,将蜂鸣器的正极接到ESP8266的D2口,将蜂鸣器的负极接到ESP8266的GND。 4. 代码编写: ``` #include <ESP8266WiFi.h> #include <DHT.h> #define DHTPIN D1 // DHT11 DATA引脚连接ESP8266的D1口 #define DHTTYPE DHT11 // DHT11传感器类型 #define buzzerPin D2 // 蜂鸣器连接ESP8266的D2口 const char* ssid = "你的WiFi名称"; // WiFi名称 const char* password = "你的WiFi密码"; // WiFi密码 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); pinMode(buzzerPin, OUTPUT); digitalWrite(buzzerPin, HIGH); delay(1000); digitalWrite(buzzerPin, LOW); delay(1000); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting to WiFi..."); } Serial.println("Connected to WiFi"); } void loop() { delay(2000); float h = dht.readHumidity(); // 读取湿度 float t = dht.readTemperature(); // 读取温度 if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } Serial.print("Humidity: "); Serial.print(h); Serial.print("% Temperature: "); Serial.print(t); Serial.println("°C"); if (t > 28) { // 温度超过28°C时触发报警 digitalWrite(buzzerPin, HIGH); delay(1000); digitalWrite(buzzerPin, LOW); delay(1000); } } ``` 5. 上传代码: 将ESP8266通过USB连接到计算机,打开Arduino IDE,选择正确的开发板和端口,将代码上传到ESP8266中。 6. 测试: 将DHT11放置在需要检测的环境中,开启串口监视器,可以看到ESP8266每隔2秒钟会读取一次温湿度数据并打印到串口中,当温度超过28°C时,蜂鸣器会响起一次,表示触发了报警。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莫跖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值