ESP32设备驱动-DHT12温湿度传感器驱动

DHT12温湿度传感器驱动

文章目录

  • DHT12温湿度传感器驱动
    • 1、DHT12介绍
    • 2、硬件准备
    • 3、软件准备
    • 4、驱动实现

1、DHT12介绍

DHt12是经典DHT11温湿度传感器的升级版,完全向下兼容,精度更高,增加了I2C接口。

DHT12 具有单总线和标准 I 2C 两种通讯,且单总线通讯方式完全兼容 DHT11。标准单总线接口,使系统集成变得简易快捷。具有超小的体积、较低的功耗,适合多种多样的应用场合。I2C通信方式采用标 准的通信时序,用户可直接挂 I2C通信总线上,无需额外布线,使用简单。两种通信方式可自由切换,用户可自由选择,使用方便,应该领域广泛。产品为4引线,连接方便,特殊封装形式可根据用户需求而提供。

有如下特性:

  • 紧凑的尺寸
  • 低功耗
  • 低电压操作
  • 标准 I2C 和 1 线接口。
  • 感应范围
    • 温度:-20~+60℃
    • 湿度:20-95 RH
  • 湿度:
    • 分辨率:0.1%RH
    • 重复:-+ 1%RH
    • 精度 25C @ -+5RH
  • 温度:
    • 分辨率:0.1C
    • 重复:-+0.2C
    • 精度:25C@-+0.5C
  • 电源:DC 2.7-5.5V
  • 正常电流1mA
  • 待机电流 60uA
  • 采样周期:> 2 秒

在这里插入图片描述

DHT12 支持 I2C方式进行通讯,完全按照 I2C 标准协议编制,可直接挂在I 2C 总线上;传感器SDA引脚作接 I2C 数据总线,SCL 接 I2C 时钟总线,客户使用时需给这两个引脚接一个1KΩ~10KΩ的上拉电阻。I2C地址为 0xB8(DEV SEL); I2C 通讯速率不能高于 400KHZ。

在这里插入图片描述

2、硬件准备

  • ESP32 NodeMCU V3开发板一块
  • DHT12传感器模块一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

传感器引脚ESP32开发板引脚
Vin3.3v
GndGnd
SCL22
SDA21

3、软件准备

  • Arduino IDE

在前面的文章中,对如何搭建ESP32开发环境做了详细的介绍,请参考:

  • ESP32-Arduino-开发实例-Arduino开发环境搭建

4、驱动实现

本实例使用的驱动库如下:

  • https://github.com/xreef/DHT12_sensor_library

示例代码如下:

#include "Arduino.h"
 
#include <DHT12.h>
 
// 创建设备
DHT12 dht12;

int timeSinceLastRead = 0; 

void setup(){
    Serial.begin(112560);
    // 启动设备
    dht12.begin();
}

 
void loop(){
    // 
    if(timeSinceLastRead > 2000) {
        // 读取摄氏温度值
        float t12 = dht12.readTemperature();
        // 读取华氏温度值
        float f12 = dht12.readTemperature(true);
        // 读取湿度值
        float h12 = dht12.readHumidity();

        bool dht12Read = true;
        // 检测数据有效性
        if (isnan(h12) || isnan(t12) || isnan(f12)) {
        	Serial.println("Failed to read from DHT12 sensor!");
        	dht12Read = false;
   		 }

        if (dht12Read){
            // Compute heat index in Fahrenheit (the default)
            float hif12 = dht12.computeHeatIndex(f12, h12);
            // Compute heat index in Celsius (isFahreheit = false)
            float hic12 = dht12.computeHeatIndex(t12, h12, false);
            // Compute dew point in Fahrenheit (the default)
            float dpf12 = dht12.dewPoint(f12, h12);
            // Compute dew point in Celsius (isFahreheit = false)
            float dpc12 = dht12.dewPoint(t12, h12, false);

            Serial.print("DHT12=> Humidity: ");
            Serial.print(h12);
            Serial.print(" %\t");
            Serial.print("Temperature: ");
            Serial.print(t12);
            Serial.print(" *C ");
            Serial.print(f12);
            Serial.print(" *F\t");
            Serial.print(" Heat index: ");
            Serial.print(hic12);
            Serial.print(" *C ");
            Serial.print(hif12);
            Serial.print(" *F");
            Serial.print(" Dew point: ");
            Serial.print(dpc12);
            Serial.print(" *C ");
            Serial.print(dpf12);
            Serial.println(" *F");
        }
    	timeSinceLastRead = 0;
    }
    delay(100);
    timeSinceLastRead += 100;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/2732.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文7个步骤从0到1教你搭建Selenium 自动化测试环境

【导语】Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。本文详细介绍了搭建自动化测试环境所需的工具&#xff0c;让你学习自动化测试不…

不用科学上网,免费的GPT-4 IDE工具Cursor保姆级使用教程

大家好&#xff0c;我是可乐。 过去的一周&#xff0c;真是疯狂的一周。 GPT-4 震撼发布&#xff0c;拥有了多模态能力&#xff0c;不仅能和GPT3一样进行文字对话&#xff0c;还能读懂图片&#xff1b; 然后斯坦福大学发布 Alpaca 7 B&#xff0c;性能匹敌 GPT-3.5&#xff…

[图像识别]关于cv2库无法安装的故障问题解决,全网最全解决方案!本人亲身测试,参考了stackoverflow、51CTO等博客文章总结而成

本文范畴&#xff1a;故障排查 cv2 技术 库安装 Linux/Unix 笔记本系统&#xff1a;win10 python版本&#xff1a;3.10 故障问题&#xff1a;无法安装cv2库 适应对象&#xff1a;程序员新手、运维程序员、大学生、青少年对系统感兴趣的爱好者等等 文章目录前言一、cv2库是什么&…

【C语言】栈区与堆区

目录分配管理方式申请大小限制不同申请效率不同总结&#xff1a;栈区、堆区 是内存模型 对比起来看 分配管理方式 栈区由编译器自动管理&#xff0c; 函数运行时分配&#xff0c;函数结束时释放。存放为运行函数而分配的局部变量&#xff08;函数结束时&#xff0c;其内临时…

超级实用,解密云原生监控技术,使用prometheus轻松搞定redis监控

前言 大家好&#xff0c;我是沐风晓月&#xff0c;本文收录于《 prometheus监控系列》 &#xff0c;截止目前prometheus专栏已经更新到第8篇文章。 本文中的是prometheus已经安装好&#xff0c;如果你还未安装&#xff0c;可以参考 prometheus安装及使用入门 若你想监控其他…

现代数据栈MDS应用落地介绍—Vero营销自动化平台

Dazdata MDS现代数据栈MDS的出现使得中小企业低成本获得大数据处理能力成为可能&#xff0c;技术的进步使得各种基于MDS的大数据应用如雨后春笋般涌现&#xff0c;不同于国内的数据中台更多强调数据处理技术&#xff0c;MDS注重落地和最后一公里的大数据应用。Vero是一款现代数…

1630.等差子数组

1630. 等差子数组 难度中等 如果一个数列由至少两个元素组成&#xff0c;且每两个连续元素之间的差值都相同&#xff0c;那么这个序列就是 等差数列 。更正式地&#xff0c;数列 s 是等差数列&#xff0c;只需要满足&#xff1a;对于每个有效的 i &#xff0c; s[i1] - s[i] …

(五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置

前言 本节内容我们实现虚拟机的克隆&#xff0c;主要根据模板虚拟机克隆三台hadoop虚拟机&#xff0c;用于hadoop集群的搭建&#xff0c;同时根据上一小节的内容&#xff0c;配置hadoop虚拟机的主机名、ip网络等&#xff0c;最终完成hadoop虚拟机的实例化。 正文 虚拟机克隆…

MATLAB | 全网最详细网络图(图论图)绘制教程

一篇超超超长&#xff0c;超超超全面网络图绘制教程&#xff0c;本篇基本能讲清楚所有绘制要点&#xff0c;当然图论与网络优化的算法一篇不可能完全讲清楚&#xff0c;未来如果看的人多可以适当更新&#xff0c;同时做部分网络图绘图复刻。 以下是本篇绘图实验效果&#xff1…

Java中的String类

String类1.String类1.1 特性1.2 面试题1.3 常用方法1.4 String与其他类型之间的转换2. StringBuilder类、StringBuffer类&#xff1a;可变字符序列1.String类 1.1 特性 String类为final类&#xff0c;不可被继承&#xff0c;代表不可变的字符序列&#xff1b; 实现了Serializ…

webpack——使用、分析打包代码

世上本无nodejs js最初是在前端浏览器上运行的语言&#xff0c;js代码一旦脱离了浏览器环境&#xff0c;就无法被运行。直到nodejs的出现&#xff0c;我们在电脑上配置了node环境&#xff0c;就可以让js代码脱离浏览器&#xff0c;在node环境中运行。 浏览器不支持模块化 nodej…

STL—vector

vector介绍在C标准库中&#xff0c;vector是一个常用的序列式容器&#xff08;线性结构&#xff09;&#xff0c;它就好比c语言中的数组&#xff0c;但是vector有一些数组没有的功能&#xff0c;是一个封装好了的类。想要使用vector需要先引入头文件&#xff1a;#include<ve…

【C陷阱与缺陷】----语法陷阱

&#x1f4af;&#x1f4af;&#x1f4af; 要理解一个C程序&#xff0c;必须理解这些程序是如何组成声明&#xff0c;表达式&#xff0c;语句的。虽然现在对C的语法定义很完善&#xff0c;几乎无懈可击&#xff0c;大门有时这些定义与人们的直觉相悖&#xff0c;或容易引起混淆…

【机器学习】综述:机器学习中的模型评价、模型选择与算法选择

文章目录一、前言二、论文摘要三、简介&#xff1a;基本的模型评估项和技术3.1 性能评估&#xff1a;泛化性能 vs. 模型选择四、Bootstrapping 和不确定性五、交叉验证和超参数优化一、前言 最近在做实验的时候&#xff0c;发现树模型有过拟合的情况发生&#xff0c;为此&…

蓝桥杯每日一真题—— [蓝桥杯 2021 省 AB2] 完全平方数(数论,质因数分解)

文章目录[蓝桥杯 2021 省 AB2] 完全平方数题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1样例 #2样例输入 #2样例输出 #2提示思路&#xff1a;理论补充&#xff1a;完全平方数的一个性质&#xff1a;完全平方数的质因子的指数一定为偶数最终思路&#xff1a;小插曲&am…

直面风口,未来不仅是中文版ChatGPT,还有AGI大时代在等着我们

说到标题的AI2.0这个概念的研究早在2015年就研究起步了&#xff0c;其实大家早已知道&#xff0c;人工智能技术必然是未来科技发展战略中的重要一环&#xff0c;今天我们就从AI2.0入手&#xff0c;以GPT-4及文心一言的发布为切入角度&#xff0c;来谈一谈即将降临的AGI时代。 关…

Linux搭建GitLab私有仓库,并内网穿透实现公网访问

文章目录前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名7. 测试访问二级子域名前言 GitLab 是一个用于仓库管理系统的开源项目&#xff0c;使用Git作为代码管理工具&#xff0c…

基于Springboot实现商务安全邮箱邮件收发 源码+论文展示

基于Springboot实现商务安全邮箱邮件收发 源码论文开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Ma…

【多线程】定时器和线程池

✨个人主页&#xff1a;bit me&#x1f447; ✨当前专栏&#xff1a;Java EE初阶&#x1f447; ✨每日一语&#xff1a;种一棵树最好的时间是十年前&#xff0c;其次是现在。 目 录⌚️一. 定时器&#x1f4c4;1. 定时器是什么&#x1f4c3;2. 标准库中的定时器&#x1f4d1;3.…

【C语言初阶】初识C语言 | C语言知识预览

文章目录&#x1f490;专栏导读&#x1f490;文章导读&#x1f337;什么是C语言&#xff1f;&#x1f337;第一个C语言程序&#x1f337;数据类型&#x1f337;变量、常量、字符串&#x1f33a;定义变量的方法&#x1f33a;变量的分类&#x1f33a;变量的使用&#x1f33a;变量…
最新文章