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

相关文章

学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习...
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面...
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生...
Can’t connect to local MySQL server through socket \'/v...
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 ...
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服...