微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

原文地址:https://www.jb51.cc/wenti/3282968.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐