闲话不多说,直接上干货。
一、硬件介绍
开发板型号:NodeMCU-32S(这个是我用的,其他类型的ESP32板子也可以)
温湿度传感器: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 举报,一经查实,本站将立刻删除。