[Arduino学习] ESP8266读取DHT11数字温湿度传感器数据

目录

1、传感器介绍

2、接线

3、DHT.h库


1、传感器介绍

        DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,是简单环境监测项目的理想选择。

        温度分辨率为1ºC,相对湿度为1%。温度范围在0ºC到50ºC之间,湿度的测量范围取决于温度。

2、接线

下面是开发板原理图,DHT11接在外设接口上,传感器数据可以通过GPIO5获取。

读取DHT11,采用的DHT sensor library库

       接线注意:根据资料显示传感器可以接在ESP8266的引脚GPIO3、4、5、12、13或14、15,等引脚,这里是ESP8266的,不是D3,D4,这个和厂家有关系,不同模组不一样。

        重点注意的是:传感器接GPIO15引脚时,上传程序时必须断开DHT。否则无法上传程序。同时GPIO16和AO引脚也无法正常

3、DHT.h库

该库有两个示例文件,

库文件解释

        该示例程序 两秒获取刷新一次数据,推荐用下面这个,已测试ok

#include "DHT.h"
#define DHTPIN 2    // 连接到DHT传感器的数字引脚
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
void setup() {Serial.begin(9600);Serial.println(F("DHTxx test!"));dht.begin();
}void loop() {delay(2000);// 读取温度或湿度大约需要250毫秒!float h = dht.readHumidity();// 读取温度为摄氏度(默认值)float t = dht.readTemperature();// 将温度读取为华氏度(isFahrenheight=true)float f = dht.readTemperature(true);// 检查是否有任何读取失败,并提前退出(重试)。if (isnan(h) || isnan(t) || isnan(f)) {Serial.println(F("从DHT传感器读取失败!"));return;}// 以华氏度为单位计算热指数(默认值)//float hif = dht.computeHeatIndex(f, h);// 以摄氏度为单位计算热指数(isFahreheit=false)// float hic = dht.computeHeatIndex(t, h, false);Serial.print(F("Humidity: "));Serial.print(h);Serial.print(F("%  Temperature: "));Serial.print(t);Serial.printLN(F("°C "));// Serial.print(f);// Serial.print(F("°F  Heat index: "));// Serial.print(hic);// Serial.print(F("°C "));// Serial.print(hif);
// Serial.println(F("°F"));
}

注意:

1、F() 宏包裹起来,可以节省微控制器的内存空间。例如,F("Humidity: ") 会将 "Humidity: " 字符串会存储在程序的 Flash 存储器中,而不是 RAM.

2、上面将计算热指数的注释掉了,如果需要计算热指数,删除注释,Serial.printLN(F("°C ")这里采用换行,需要取消换行使用Serial.print

                下面这个可以根据传感器详细信息设置传感器读数之间的延迟.

#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>#define DHTPIN 2  //连接到DHT传感器的数字引脚  
// 定义正在使用的传感器类型:
//#define DHTTYPE    DHT11     // DHT 11
#define DHTTYPE    DHT22     // DHT 22 (AM2302)
//#define DHTTYPE    DHT21     // DHT 21 (AM2301)DHT_Unified dht(DHTPIN, DHTTYPE);uint32_t delayMS;void setup() {Serial.begin(9600);// 串口波特率.dht.begin();Serial.println(F("DHTxx Unified Sensor Example"));// 打印温度传感器详细信息.sensor_t sensor;dht.temperature().getSensor(&sensor);Serial.println(F("------------------------------------"));Serial.println(F("Temperature Sensor"));Serial.print  (F("Sensor Type: ")); Serial.println(sensor.name);Serial.print  (F("Driver Ver:  ")); Serial.println(sensor.version);Serial.print  (F("Unique ID:   ")); Serial.println(sensor.sensor_id);Serial.print  (F("Max Value:   ")); Serial.print(sensor.max_value); Serial.println(F("°C"));Serial.print  (F("Min Value:   ")); Serial.print(sensor.min_value); Serial.println(F("°C"));Serial.print  (F("Resolution:  ")); Serial.print(sensor.resolution); Serial.println(F("°C"));Serial.println(F("------------------------------------"));// 打印湿度传感器详细信息dht.humidity().getSensor(&sensor);Serial.println(F("Humidity Sensor"));Serial.print  (F("Sensor Type: ")); Serial.println(sensor.name);Serial.print  (F("Driver Ver:  ")); Serial.println(sensor.version);Serial.print  (F("Unique ID:   ")); Serial.println(sensor.sensor_id);Serial.print  (F("Max Value:   ")); Serial.print(sensor.max_value); Serial.println(F("%"));Serial.print  (F("Min Value:   ")); Serial.print(sensor.min_value); Serial.println(F("%"));Serial.print  (F("Resolution:  ")); Serial.print(sensor.resolution); Serial.println(F("%"));Serial.println(F("------------------------------------"));// 根据传感器详细信息设置传感器读数之间的延迟.delayMS = sensor.min_delay / 1000;。
}void loop() {// Delay between measurements.delay(delayMS);// 获取温度事件并打印其值。sensors_event_t event;dht.temperature().getEvent(&event);if (isnan(event.temperature)) {Serial.println(F("Error reading temperature!"));}else {Serial.print(F("Temperature: "));Serial.print(event.temperature);Serial.println(F("°C"));}// 获取湿度事件并打印其值.dht.humidity().getEvent(&event);if (isnan(event.relative_humidity)) {Serial.println(F("Error reading humidity!"));}else {Serial.print(F("Humidity: "));Serial.print(event.relative_humidity);Serial.println(F("%"));}
}

4、测试

        测试采用官方示例的第一种方法获取的,数据获取正常,两秒数据刷新一次。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Protobuf 二进制文件学习及解析

0. 简介 protobuf也叫protocol buffer是google 的一种数据交换的格式&#xff0c;它独立于语言&#xff0c;独立于平台。google 提供了多种语言的实现&#xff1a;java、c#、c、go 和 python&#xff0c;每一种实现都包含了相应语言的编译器以及库文件。 由于它是一种二进制的…

新人程序员必备在线工具推荐(cron、加解密、JSON、AI)

程序员必备在线工具推荐 俗话说的好&#xff0c;工欲善其事必先利其器&#xff0c;下面我就来给大家分享一下我个人常用的工具。也欢迎大家在评论区分享自己喜欢的工具。✈️ 1 在线cron表达式&#xff1a;cron 在日常开发中&#xff0c;我们难免会遇到一些定时任务的场景&…

scala05-函数式编程02

函数式编程-函数对象作为方法的参数 package com.zishi.scala.a02.okk05/*** 将函数对象作为方法的参数来使用&#xff0c;* 函数本身就是对象&#xff0c;* 对象的使用领域&#xff1a;变量&#xff0c;方法参数&#xff0c;返回值类型** 类比Java* public void test(User us…

「每日跟读」句型公式 第2篇

「每日跟读」句型公式 第2篇 1. I’m thinking about____ 我在考虑____ I’m thinking about my future career (我正在思考我未来的职业) I’m thinking about our marriage (我在考虑我们的婚姻) I’m thinking about taking a vacation (我在考虑度一个假) I’m think…

tcpdump + wireshark 服务器抓包分析

tcpdump wireshark 服务器抓包分析 1.tcpdump安装2.tcpdump使用3.安装wireshark4.使用wireshark 本文用以总结使用tcpdump进行抓包&#xff0c;然后使用wireshark工具打开抓包出来的pacp文件进行分析。通过tcpdump可以实时监控到linux服务器中tcp和http、https等通讯的内容和信…

人工智能上手 Pytorch

人工智能上手 Pytorch 1、人工智能框架历史走向 2015年&#xff0c; caffe&#xff0c;优势配置简单&#xff0c;缺点安装麻烦&#xff0c;且不更新维护 2016年&#xff0c;tensorflow 1.x&#xff0c;定义太严格&#xff0c;很复杂。开发成本高。简单的任务&#xff0c;也很…

[Python学习篇] Python创建项目

新建项目 打开开发工具 PyCharm 选择 New Project 目录结构如下 运行 hello world 选中项目&#xff0c;右键 New -> Python File 进行创建文件 运行项目

MYSQL数据库:告别慢查询,优化性能大揭秘

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL应用》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 MYSQL数据库&#xff1a;告别慢查询&#xff0c;优化性能大揭秘 文章目录 一、揭秘…

OAuth 2.0(Open Authorization 2.0)授权框架入门介绍

拓展阅读 OAuth 2.0-01-Overview OAuth2-02-java 整合 OAuth2-03-springboot 整合 oauth2 是什么&#xff1f; OAuth 2.0&#xff08;Open Authorization 2.0&#xff09;是一种授权框架&#xff0c;允许第三方应用程序访问用户在另一个服务提供者上托管的资源&#xff0c…

2024.3.9力扣每日一题——找出数组的第 K 大和

2024.3.9 题目来源我的题解 题目来源 力扣每日一题&#xff1b;题序&#xff1a;2386 我的题解 对不起&#xff0c;打扰了&#xff0c;完全不会。还是自己看官方题解吧&#x1f604;~

2024.(3.30和4.1)力扣刷题记录-二叉树学习记录2

一、学习视频 如何灵活运用递归&#xff1f;【基础算法精讲 10】_哔哩哔哩_bilibili 二、跟练代码 1. 100. 相同的树 递归 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # …

Makefile:调用shell脚本和嵌套调用多项目编译(九)

1、Makefile中调用shell脚本 Makefile中可以通过使用$(shell 指令)的方式调用shell脚本a指令&#xff1a;输出当前文件夹下的所有文件b指令&#xff1a;输出当前路径c指令&#xff1a;如果当前目录下不存在abc文件那么创建一个abc的文件 a$(shell ls ./) b$(shell pwd) filen…

关于简单又挣钱的冷门美团项目,美团圈圈

大家好&#xff0c;最近美团又开始搞事情了。接连推出了好几个网推项目&#xff0c;让一大波人都吃上了肉了。 美团的项目很简单&#xff0c;就是给它们的活动做推广。用户只需要拿到它推广的链接&#xff0c;然后去扫码进群就可以了。只要用户保持8天不退就行了。 下面是体验…

揭开AI编程语言Mojo比Pyhon快6.8万倍的5个秘密!

最近&#xff08;2024年3月29日&#xff09;&#xff0c;号称比Python快6.8万倍的Mojo编程语言开源啦&#xff01;6.8万倍&#xff1f;你敢相信这个数字是真的吗&#xff1f;不过&#xff0c;就连Mojo官网都把这个结果贴了出来&#xff08;见下图&#xff09;&#xff0c;这就很…

Spring Boot的基础知识和应用

在快速发展的软件开发领域&#xff0c;Spring Boot已经成为了一个广受欢迎的框架&#xff0c;它极大地简化了Spring应用的初始搭建以及开发过程。Spring Boot遵循“约定优于配置”的原则&#xff0c;通过默认配置减少了开发者的配置工作量&#xff0c;使得开发者能够更专注于业…

线程池小项目【Linux C/C++】(踩坑分享)

目录 前提知识&#xff1a; 一&#xff0c;线程池意义 二&#xff0c;实现流程 阶段一&#xff0c;搭建基本框架 1. 利用linux第三方库&#xff0c;将pthread_creat线程接口封装 2. 实现基本主类ThreadPool基本结构 阶段二&#xff0c;完善多线程安全 1. 日志信息打印…

如何利用OceanBase v4.2的 Runtime Filter提升查询效率

OceanBase数据库中可使用Hash Join联接算法&#xff0c;这种算法可以依据某些字段对两个表进行等值匹配连接。然而&#xff0c;当涉及连接的表&#xff08;特别是作为Probe Table的表&#xff09;数据量较大时&#xff0c;Hash Join的性能会显著下降。针对这一问题&#xff0c;…

[蓝桥杯 2023 省 A]填空问题1

A. 幸运数 小蓝认为如果一个数含有偶数个数位&#xff0c;并且前面一半的数位之和等于后面一半的数位之和&#xff0c;则这个数是他的幸运数字。例如 23142314 是一个幸运数字&#xff0c;因为它有 44 个数位&#xff0c;并且 23142314。现在请你帮他计算从 11 至 10000000010…

若依框架时间比较的坑(DATE_FORMAT)

背景 - 想做生日的比较 若依自带的比较 <if test"params.beginTime ! null and params.beginTime ! "><!-- 开始时间检索 -->AND date_format(u.create_time,%y%m%d) > date_format(#{params.beginTime},%y%m%d)</if><if test"params…

AJAX —— 学习(三)

目录 一、jQuery 中的 AJAX &#xff08;一&#xff09;get 方法 1.语法介绍 2.结果实现 &#xff08;二&#xff09;post 方法 1.语法介绍 2.结果实现 &#xff08;三&#xff09;通用型的 AJAX 方法 1.语法介绍 2.结果实现 二、AJAX 工具库 axios &#xff08;…