ESP32-DHT22温湿度传感器的使用


DHT22传感器简介

DHT22数字温湿度传感器,它可用于检测环境温度和湿度,DHT22也被称为AM2302,具有标准的单总线接口。相比DHT11,它拥有更高的精度和更大的量程。DHT22是一个四针脚模块,包含VCC、DATA、NC、GND四个引脚,实际使用中只会用到VCC、GND、DATA,NC引脚为空脚,VCC电压范围是3-5V。DHT22测量温湿度的原理,是通过内置电容式湿度传感器和热敏电阻来测量周围的空气,取得温度和湿度值后由 Data 引脚上向主控板发送一个数字信号。下图为DHT22的引脚定义。
在这里插入图片描述


一、连接引脚

示例:把DHT22的DATA引脚连接ESP32的15号引脚。VCC(电源正极)、GND(电源负极)连接ESP32对就的引脚

二、使用步骤

1、创建代码

代码如下(示例):

import time
import dht  #传感器驱动库
from machine import Pin

def dht22_date():
    d = dht.DHT22(Pin(15))  #实例化15号引脚
    time.sleep(1) #首次启动停顿 1 秒然传感器稳定
    d.measure()  # 先调用测量函数
    dht11_dates = [str(d.temperature()),  #读取传感器温度
                   str(d.humidity())      #读取传感器湿度
                   ]
    return dht11_dates

if __name__ == '__main__':
    print(dht22_date())

2.保存运行

运行如下(示例):

>>> %Run -c $EDITOR_CONTENT
['21.1', '71.9']

总结

提示:正确的连接引脚,注意不要把引脚连接错了,运行代码后,在控制台会打印出温度和湿度

基于ESP32-MROOM的温湿度传感器配合OLED屏幕的应用是一种常见的物联网(IoT)项目示例。ESP32-MROOM是一个集成了环境监测模块的微型开发板,它通常包含一个温湿度传感器用于测量空气中的温度和湿度数据。 首先,你需要准备以下硬件: 1. ESP32-MROOM开发板 2. OLED显示屏(如SSD1306或类似型号) 3. 热电偶或湿敏电阻(用于温湿度传感器) 连接过程如下: -ESP32-MROOM的I2C端口(SCL和SDA)连接到OLED屏幕的数据线和时钟线上。 - 接地ESP32的GND和VCC与OLED的对应电源脚。 软件部分,一般会采用Espressif IoT SDK编写代码,步骤包括: 1. 初始化硬件:配置并打开I2C通信,初始化OLED屏幕。 ```c #include <Wire.h> #include <Adafruit_SSD1306.h> Adafruit_SSD1306 display(OLED_I2C_ADDR, SSD1306_WIDTH, SSD1306_HEIGHT); ``` 2. 从温湿度传感器获取数据,并解析处理。 ```c #include <DHT.h> // 假设你使用的是DHT11或DHT22传感器 DHT dht(DHTpin, DHTTYPE); void readSensor() { float temperature, humidity; if (dht.read() == DHT_OK) { temperature = dht.temperature(); humidity = dht.humidity(); } } ``` 3. 更新OLED显示: ```c void drawData(float temp, float hum) { display.clearDisplay(); display.setTextSize(1); display.setCursor(0, 0); display.print("Temperature: "); display.println(temp, 1); // 显示温度,保留一位小数 display.setCursor(0, 8); display.print("Humidity: "); display.println(hum, 1); // 显示湿度,保留一位小数 display.display(); } ``` 4. 定期读取并更新显示: ```c Timer timer; // 创建定时器 void setup() { // ...其他初始化... timer.begin(UPDATE_INTERVAL, Timer::CALLBACK_READ_SENSOR); // 设置每隔一定时间读取一次传感器数据 } void loop() { timer.check(); // 检查定时器是否到达设定的时间点 } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值