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

本文主要是介绍[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、测试

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

这篇关于[Arduino学习] ESP8266读取DHT11数字温湿度传感器数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/876001

相关文章

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

使用PyTorch实现手写数字识别功能

《使用PyTorch实现手写数字识别功能》在人工智能的世界里,计算机视觉是最具魅力的领域之一,通过PyTorch这一强大的深度学习框架,我们将在经典的MNIST数据集上,见证一个神经网络从零开始学会识... 目录当计算机学会“看”数字搭建开发环境MNIST数据集解析1. 认识手写数字数据库2. 数据预处理的

java字符串数字补齐位数详解

《java字符串数字补齐位数详解》:本文主要介绍java字符串数字补齐位数,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java字符串数字补齐位数一、使用String.format()方法二、Apache Commons Lang库方法三、Java 11+的St

SpringBoot整合jasypt实现重要数据加密

《SpringBoot整合jasypt实现重要数据加密》Jasypt是一个专注于简化Java加密操作的开源工具,:本文主要介绍详细介绍了如何使用jasypt实现重要数据加密,感兴趣的小伙伴可... 目录jasypt简介 jasypt的优点SpringBoot使用jasypt创建mapper接口配置文件加密