DHT11温湿度传感器
接口定义
传感器通信
DHT11采用简化的单总线通信。单总线仅有一根数据线(SDA),通信所进行的数据交换、挂在单总线上的所有设备之间进行信号交换与传递均在一条通讯线上实现。
单总线上必须有一个上拉电阻(Rp)以实现单总线闲置时,其处于高电平状态。
在单总线中,微处理器与传感器是主从结构,只有微处理器呼叫传感器时,传感器才会应答。
微处理器访问传感器必须严格遵循单总线时序要求,否则传感器将不响应主机。
- 使用 3.3V 电压给 DHT11 供电时,建议微处理器与 DHT11 连接线长度不得大于 100cm。否则线路压降会导致对 DHT11 的供电不足,造成测量偏差。
- 与DHT11通信最小间隔时间为2s,若小于2s可能导致温湿度不准或通信不成功等情况。因此传感器上电后应等待2s再去读取传感器,以避免传感器处于不稳定状态。
- 每次通信结束DHT11会进行一次温湿度采集然后进入待机状态,因此每次通信读出的温湿度数值位上一次通信时DHT11采集的温湿度数据,故建议使用时隔2s连续两次读取DHT11传感器,以获取当前测量环境实时温度。
单总线传送数据定义
SDA引脚所在线路用于微处理器与DHT11之间的通讯和同步,采用单总线数据格式,一次传送40bits长度数据,高位先传送。
- 起始信号:微处理器将单总线SDA拉低一段时间(18~30ms),通知传感器准备数据。
- 响应信号:传感器将单总线SDA拉低83us,再接高87us以响应主机的起始信号。
- 湿度信息:湿度高8位为湿度整数部分数据,占用一个字节,湿度低8位为湿度小数部分数据(占用一个字节)。
- 温度信息:温度高 8 位为温度整数部分数据(占用 1 个字节),温度低 8 位为温度符号及小数部分数据(占用 1 个字节,含最高位 Bit7 符号位,Bit7 为 1 则表示负温度)
- 校验数据:校验字节=湿度高位+湿度地位+温度高位+温度低位
示例
校验码:34H + 01H + 18H + 8CH = D9H
将计算得到的校验码D9H与接收到的校验码进行比较,如果相同则表示接收到的湿度信息和温度信息数据正确,否则应舍弃本次通信数据。
湿度与温度的数值可以根据数据结构转换得出。如,湿度高8位(整数)为34H,低8位(小数)为01H,将两部分数值转换为十进制后可以得出52.1,即湿度为52.1%RH。同理可以得出图7中的温度为-24.12℃。此处温度为负值时因为温度数据的低8位的最高位Bit7为1;当最高位Bit7为0时,数值为正值。
单总线通信时序
每次通信结束DHT11会进行一次温湿度采集然后进入待机状态,因此每次通信读出的温湿度数值为上一次通信时DHT11采集的温湿度数据,故建议隔2s连续2次读取DHT11,以获得当前测量环境实时数据。
外设读取流程
-
在DHT11上电后,需要等待至少2s才完成传感器的初始化。
-
传感器接入单总线的微处理器I/O应配置为开漏模式并输出高电平,以保证单总线处于空闲状态(高电平)。
-
DHT11传感器初始化后执行采样温湿度数据任务结束并自动转入休眠模式。
-
此后,DHT11将监测SDA引脚上单总线电平状态变化,以判断是否需要通信。
-
发送起始信号是通过微处理器的I/O输出电平,且低电平保持时间不能小于18ms(最大不得超过30ms),然后微处理器的I/O切换为输入(上拉)模式,实现释放单总线。
-
DHT11等待主机释放单总线后,DHT11控制单总线,输出80us的低电平作为应答信号,随后输出87µs的高电平通知微处理器准备接收数据,完成响应信号传输从而实现DHT11对微处理器的应答。
-
DHT11完成上述应答过程,随后通过SDA引脚控制单总线。
-
DHT11将从SDA引脚输出40bits长度数据信号至单总线,微处理器通过单总线可接收到40bits长度的数据。
-
数据中每个数据位的传输格式:数据位为“0”时,DHT11先输出5058µs的低电平随后输出2327µs的高电平;数据位为“1”时,DHT11首先输出5058µs的低电平随后输出6874µs的高电平。
-
DHT11完成输出40bits长度数据后将继续输出50~85us的低电平然后转为输入状态,不再控制单总线,实现对单总线的释放,本次通信结束。
-
通信结束后,DHT11会立即进行一次采样温湿度数据随后自动进入休眠状态。DHT11只有再次收到微处理器发出的起始信号后被唤醒进入单总线通信模式。
-
与此同时,微处理器将接收数据按照5.2节方式进行数据校验,如果校验正确则对数据解析得到温湿度值,否则舍弃本次通信接收的数据。
-
微处理器本次通信结束后等待至少2s的间隔周期后,可以再次发送起始信号读取DHT11。
相关文章:
DHT11温湿度传感器
接口定义 传感器通信 DHT11采用简化的单总线通信。单总线仅有一根数据线(SDA),通信所进行的数据交换、挂在单总线上的所有设备之间进行信号交换与传递均在一条通讯线上实现。 单总线上必须有一个上拉电阻(Rp)以实现单…...
RestTemplate超简单上手
目录 1.什么是RestTemplate? 2.RestTemplate的使用 2.1spring环境下 注意1:RestTemplate中发送请求execute()和exchange()方法的区别 execute()方式 exchange()方式 二者的区别 注意2:进阶配置——底层HTTP客户端 2.2非spring环境下 1.什么是R…...
监控系统设计原则及实现目标
1.1.1.1 1 .完善的设计理念: 包括符合国际发展潮流的特性化设计,完整的安防监控及围墙周界报警系统 的布线、设备安装、调试、测试、验收的“交钥匙”工程管理制度,以及符合标 准的质量控制体系。 1.1.1.2 设计原则…...
VulnHub项目:MONEYHEIST: CATCH US IF YOU CAN
靶机名称: MONEYHEIST: CATCH US IF YOU CAN 地址:MoneyHeist: Catch Us If You Can ~ VulnHub 这个系列是一部剧改编,还是挺好看的,大家有兴趣可以去看看! 废话不多说,直接上图开始! 渗透…...
对象存储OSS简介,一分钟了解对象存储OSS
对象存储(Object Storage)是一种新兴的数据存储方式,与传统的文件系统和块存储不同,对象存储以对象为基本单位进行数据管理和存储。在对象存储中,每个对象都有唯一的标识符,并包含了数据本身以及与之相关的…...
SpringCloud_微服务基础day2(Eureka简介与依赖导入,服务注册与发现)
p6:Eureka简介与依赖导入 前面我们了解了如何对单体应用进行拆分,并且也学习了如何进行服务之间的相互调用,但是存在一个问题,就是虽然服务拆分完成,但是没有一个比较合理的管理机制,如果单纯只是这样编写,…...
#tmux# #终端# 常用工具tmux
tmux tmux是一个终端复用工具,允许用户在一个终端会话中同时管理多个终端窗口,提高了终端使用效率,尤其在服务器上进行远程管理时更加实用。在tmux中,可以创建多个终端窗口和窗格,并在这些窗口和窗格之间自由切换&…...
后端服务架构高性能设计之道
“N 高 N 可”,高性能、高并发、高可用、高可靠、可扩展、可维护、可用性等是后台开发耳熟能详的词了,它们中有些词在大部分情况下表达相近意思。本序列文章旨在探讨和总结后台架构设计中常用的技术和方法,并归纳成一套方法论。 前言 本文主…...
Python中的Time和DateTime
Python在处理与时间相关的操作时有两个重要模块:time和datetime。在本文中,我们介绍这两个模块并为每个场景提供带有代码和输出的说明性示例。 time模块主要用于处理时间相关的操作,例如获取当前时间、时间的计算和格式化等。它提供了一些函数…...
UNIX网络编程卷一 学习笔记 第十九章 密钥管理套接字
随着IP安全体系结构(IPsec)的引入,密钥加密和认证密钥的管理越来越需要一套标准机制。RFC 2367介绍了一个通用密钥管理API,可用于IPsec和其他网络安全服务,该API创建了一个新协议族,即PF_KEY域,…...
excel如何实现识别文本在对应单元格填上数据?
要实现 Excel 识别文本在对应单元格填上数据,有以下两种方法: 方法一:使用 VLOOKUP 函数 1. 在 Excel 工作表中,输入一个表格,列名为对应的文本,行名为不同条目。 2. 准备输入数据,在一个新的…...
Groovy 基本语法
一、简介 类型转换:当需要时,类型之间会自动发生类型转换: 字符串(String)、基本类型(如int) 和类型的包装类(如Integer) 类说明:如果在一个groovy 文件中没有任何类定义,它将被当做script 来处理,也就意味着这个文件将…...
系统学习IT技术的方法与实践
系统学习IT技术的方法与实践 作为一名技术人员,在学习新的IT技术时,采取系统性的学习方法是至关重要的。这样可以帮助我们更好地理解和掌握技术,并提高学习效率。下面我将分享一些我个人在系统学习IT技术方面的方法和实践。 1. 设定明确的学…...
聊聊TCP协议的粘包、拆包以及http是如何解决的?
目录 一、粘包与拆包是什么? 二、粘包与拆包为什么发生? 三、遇到粘包、拆包怎么办? 解决方案1:固定数据大小 解决方案2:自定义请求协议 解决方案3:特殊字符结尾 四、HTTP如何解决粘包问题的…...
一百二十、Kettle——用kettle把Hive数据同步到ClickHouse
一、目标 用kettle把hive数据同步到clickhouse,简单运行、直接全量导入数据 工具版本:kettle:8.2 Hive:3.1.2 ClickHouse21.9.5.16 二、前提 (一)kettle连上hive (二)kettle连上cli…...
PyTorch 提示和技巧:从张量到神经网络
张量和梯度 我们将深入探讨使用 PyTorch 构建自己的神经网络必须了解的 2 个基本概念:张量和梯度。 张量 张量是 PyTorch 中的中央数据单元。它们是类似于数组的数据结构,在功能和属性方面与 Numpy 数组非常相似。它们之间最重要的区别是 PyTorch 张量…...
第五期:字符串的一些有意思的操作
文章目录 1. 替换空格2. 字符串的左旋转3. 答案代码3.1 替换空格3.2 字符串的左旋转 PS:每道题解题方法不唯一,欢迎讨论!每道题后都有解析帮助你分析做题,答案在最下面,关注博主每天持续更新。 1. 替换空格 题目描述 请…...
使用Anaconda3结合vscode来实现django项目的建立(绝好的介绍)20230608
问题:如何使用Anaconda3结合vscode来实现django项目的建立? 回答: 知识背景 Anaconda3的安装包默认会安装最新版本的Python解释器。如果您想在安装时指定Python解释器的版本,您需要下载对应版本的Anaconda3。例如,如果您想使用Python 3.7&…...
【软件测试】软件测试的基本概念和开发模型
1. 前言 在进行软件测试的学习之前,我们要了解软件测试一些基本概念. 这些基本概念将帮助我们更加明确工作的目标以及软件测试到底要做什么. 2. 软件测试的基本概念 软件测试的基本概念有3个,分别是需求,测试用例和BUG. 2.1 需求 这里的需求还可以分为 用户需求和软件需求,用户…...
接口测试 —— 接口测试定义
1、接口测试概念 (重点) 接口测试是测试系统组件间接口的一种测试,它界于单元测试与系统测试中间。 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。 测试的重点是要检查数据的交换,传递和控制管理过…...
2015 年一月联考逻辑真题
2015 年一月联考逻辑真题 真题(2015-26) 26.晴朗的夜晚我们可以看到满天星斗,其中有些是自身发光的恒星,有些是自身不发光但可以反射附近恒星光的行星。恒星尽管遥远,但是有些可以被现有的光学望远镜“看到”。和恒星不…...
基于GD32的定时器不完全详解--定时、级联
SysTick 定时器 SysTick 是一个 24 位的倒计数定时器,当计到 0 时,将从 RELOAD 寄存器中自动重装载定时初值。只要不把它在 SysTick 控制及状态寄存器中的使能位清除, 就永不停息。 该定时器的介绍在MCU的手册中一般不会介绍,因为…...
Clion开发STM32之ESP8266系列(四)
前言 上一篇: Clion开发STM32之ESP8266系列(三) 本篇主要内容 实现esp8266需要实现的函数串口3中断函数的自定义(这里没有使用HAL提供的)封装esp8266服务端的代码和测试 正文 主要修改部分 核心配置头文件(添加一些宏定义) sys_core_conf.h文件中…...
降本增效,StarRocks 在同程旅行的实践
作者:周涛 同程旅行数据中心大数据研发工程师 同程旅行是中国在线旅游行业的创新者和市场领导者。作为一家一站式平台,同程旅行致力于满足用户旅游需求,秉持 "让旅行更简单、更快乐" 的使命,主要通过包括微信小程序、AP…...
INTP型人格适合选择哪些专业?
INTP人格内倾理性人格、具有强烈的好奇心、创造性和独立性的特点。他们善于独立思考和寻找问题的本质,并对抽象的想法和理论感兴趣。 INTP人格的人具有很强的逻辑思维和分析能力,他们的思维方式非常系统,追求完美和准确。因此他们适合选择需…...
【LeetCode热题100】打卡第16天:组合总和
文章目录 组合总和⛅前言🔒题目🔑题解 组合总和 ⛅前言 大家好,我是知识汲取者,欢迎来到我的LeetCode热题100刷题专栏! 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数…...
tinkerCAD案例:1.戒子环
基本戒指 在本课中,您将学习使用圆柱形状制作戒指。来吧! 说明 将圆柱体拖动到工作平面上并使其成为孔。 圆柱体应缩放以适合其制造手指。 在本例中,我们将使用 17mm 作为直径,但请根据您的需要随意调整尺寸。 将“圆柱”形状拖…...
RPC接口测试技术-Tcp 协议的接口测试
【摘要】 首先明确 Tcp 的概念,针对 Tcp 协议进行接口测试,是指基于 Tcp 协议的上层协议比如 Http ,串口,网口, Socket 等。这些协议与 Http 测试方法类似(具体查看接口自动化测试章节)…...
MyBatis Plus基本用法-SpringBoot框架
依赖 使用 Mybatis Plus 框架时,需要添加以下依赖: <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>latest-version</version> </dependency…...
指针--指针变量的定义和初始化
存放变量的地址需要一种特殊类型的变量,这种特殊的数据类型就是指针(Pointer)。 具有指针类型的变量,称为指针变量,它时专门用于存储变量的地址值和变量。 其定义形式如下: 类型关键字 * 指针变量名&#x…...
怎么在国外网站做推广/百度推广登录手机版
下面是一个运行时加载nvcuda.dll,并检测当前驱动版本最大支持的CUDA版本的例子。 #include "cuda.h" #include <stdio.h> #include <Windows.h>typedef CUresult (__cdecl *CU_DriverGetVersion)(int *);int main() {HINSTANCE nvcudalib;nvc…...
邯郸企业做网站报价/百度移动点击排名软件
哈希概念 常规搜索: 数据杂乱无章——->顺序查找—–>时间复杂度0(n)。 数据有序—–>二分查找——>时间复杂度0(log(n))。 建立二叉搜索树—–>时间复杂度0(n)(单支树)。 理想的搜索方法是:可以…...
南阳阿里巴巴网站推广/可以打广告的平台
1. 从json数组 返回一个数组。 let _Row responseObject.map((key)>{ return (key.id); }),//返回数组。[29, 28, 26, 2, 3] 2. 返回一个新 json数组 let _Row2 responseObject.map((key)>{ return ({id: key.id, name: key.value}); })...
服装网站建设策划书/外链群发
1、Fragment的产生与介绍 Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视。针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套app,然后拷贝一份,修改布局以适应什么超级大屏的。…...
网站空间备份/成都网站seo推广
转自:http://blog.csdn.net/zy_zhengyang/article/details/45009431 代码文件主要针对Matlab进行说明,但个人仍觉得讲解的支持向量机内容非常棒,可以做为理解这一统计方法的辅助资料; LibSVM是台湾林智仁(Chih-Jen Lin)教授2001年开发的一套支持向量机的库ÿ…...
pscc下载/超级优化大师下载
iTunes和iCloud这两个东西,相信苹果用户都很熟悉,由于iCloud的服务器在国外,所以它虽然可以在手机内操作,但是那备份恢复手机数据的速度……简直是让人忍无可忍!相比之下,iTunes就显得比较稳定、速度也快了…...