DHT22 Temperature-Humidity Sensor

来自Waveshare Wiki
跳转至: 导航搜索
DHT11 Temperature-Humidity Sensor
{{{name2}}}
{{{name3}}}
功能简介
特性 DHT22温湿度传感器
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 I/Os

说明

产品概述

这是是已校准的数字温湿度传感器,用于检测环境温湿度,采用DHT22(AM2302),标准单总线接口。拥有比DHT11更高的精度和更大的量程。

产品特性

参数名称 参数
传感器 DHT22(温湿度传感器)
工作电压 3.3V-5.5V
湿度分辨率 0.1%RH
湿度测量范围 0%RH ~ 99.9%RH
湿度测量误差 ±2%RH (25°C)
温度分辨率 0.1°C
温度测量范围 -40°C ~ 80°C
温度测量误差 ±0.5℃
  • 推荐存储环境:

温度:10°C ~40°C 湿度:60%RH以下

产品应用

气象站、温度调节器和测试及检测设备等

接口说明

引脚 功能
VCC 电源正(3.3V-5.5V)
GND 电源地
DOUT 通信端口

工作原理

该产品原理图如下:

DHT22-Temperature-Humidity-Sensor-User-Manual-2.png

AM2302 器件采用简化的单总线通信。单总线即只有一根数据线,系统中的数据交换、控制均由数据线完成。单总线通常要求外接一个约 5.1kΩ的上拉电阻,这样,当总线闲置时,其状态为高电平。SDA 用于微处理器与 AM2302 之间的通讯和同步,采用单总线数据格式,一次传送 40 位数据,高位先出。具体通信时序如图所示。
DHT22-Temperature-Humidity-Sensor-User-Manual-3.png

AM2302通信格式说明:

名称 单总线格式定义
起始信号 微处理器把数据总线(SDA)拉低一段时间(至少800μs)[1],通知传感器准备数据。
响应信号 传感器把数据总线(SDA)拉低80μs,再接高80μs以响应主机的起始信号。
数据格式 收到主机起始信号后,传感器一次性从数据总线(SDA)串出40位数据,高位先出。
湿度 湿度分辨率是16Bit,高位在前;传感器串出的湿度值是实际湿度值的10倍。
温度 温度分辨率是16Bit,高位在前;传感器串出的温度值是实际温度值的10倍;温度最高位(Bit15)等于1表示负温度,温度最高位(Bit15)等

于0表示正温度;温度除了最高位(Bit14~Bit0)表示温度值。

校验位 校验位=湿度高位+湿度低位+温度高位+温度低位。
  • 单总线通信时序

用户主机(MCU)发送一次起始信号(把数据总线 SDA 拉低至少 800µs)后, AM2302 从休眠模式转换到高速模式。待主机开始信号结束后, AM2302 发送响应信号,从数据总线 SDA 串行送出 40Bit的数据,先发送字节的高位;发送的数据依次为湿度高位、湿度低位、温度高位、 温度低位、校验位,发送数据结束触发一次信息采集,采集结束传感器自动转入休眠模式,直到下一次通信来临。(注:DHT22(AM2302)的数据格式和DHT11的数据格式不一样。)

  • 外设读取步骤示例

主机和传感器之间的通信可通过如下三个步骤完成读取数据。
步骤一:
AM2302 上电后( AM2302 上电后要等待 2S 以越过不稳定状态,在此期间读取设备不能发送任何指令),测试环境温湿度数据,并记录数据,此后传感器自动转入休眠状态。 AM2302 的 SDA 数据线由上拉电阻拉高一直保持高电平,此时 AM2302 的 SDA 引脚处于输入状态,时刻检测外部信号。 步骤二:
微处理器的 I/O 设置为输出, 同时输出低电平,且低电平保持时间不能小于 800us,典型值是拉低 1MS,然后微处理器的 I/O 设置为输入状态,释放总线,由于上拉电阻,微处理器的 I/O 即 AM2302的 SDA 数据线也随之变高,等主机释放总线后, AM2302 发送响应信号,即输出 80 微秒的低电平作为应答信号,紧接着输出 80 微秒的高电平通知外设准备接收数据,信号传输如图所示:
DHT22-Temperature-Humidity-Sensor-User-Manual-4.png
步骤三:
AM2302 发送完响应后,随后由数据总线 SDA 连续串行输出 40 位数据,微处理器根据 I/O 电平的变化接收 40 位数据。 位数据“0”的格式为: 50 微秒的低电平加 26-28 微秒的高电平; 位数据“1”的格式为: 50 微秒的低电平加 70 微秒的高电平; 位数据“0”、位数据“1”格式信号如图 所示:
DHT22-Temperature-Humidity-Sensor-User-Manual-5.png
AM2302 的数据总线 SDA 输出 40 位数据后,继续输出低电平 50 微秒后转为输入状态,由于上拉电阻随之变为高电平。同时 AM2302 内部重测环境温湿度数据,并记录数据,测试记录结束,单片机自动进入休眠状态。单片机只有收到主机的起始信号后,才重新唤醒传感器,进入工作状态。


Pico使用教程

提供Python、C例程

Pico 快速上手

硬件连接

您可以对照以下表格连线。

Pico连接引脚对应关系
DHT22 Pico 功能
VCC 3.3V 电源输入
GND GND 电源地
DOUT GP15 通信端口

DHT22-Temperature-Humidity-Pico 1.jpg

基础介绍

MicroPython系列
【MicroPython】Pico的基础介绍与环境安装

【MicroPython】machine.Pin类函数详解
【MicroPython】machine.PWM类函数详解
【MicroPython】machine.ADC类函数详解
【MicroPython】machine.UART类函数详解
【MicroPython】machine.I2C类函数详解
【MicroPython】machine.SPI类函数详解

C/C++系列
【C/C++】 Windows教程1——环境搭建

【C/C++】 Windows教程2——创建工程

教程名3
列表3
教程名4
列表4
教程名5
列表5
教程名6
列表6
教程名7
列表7
教程名8
列表8

程序下载

打开树莓派终端,执行以下命令:

sudo apt-get install p7zip-full
cd ~
sudo wget  https://www.waveshare.net/w/upload/5/57/DHT22-Temperature-Humidity-Sensor-code.7z
7z x DHT22-Temperature-Humidity-Sensor-code.7z -o./DHT22-Temperature-Humidity-Sensor-code
cd ~/DHT22-Temperature-Humidity-Sensor-code
cd Pico/c/build/

例程使用

C部分

  • 以下教程为在树莓派上操作,但由于cmake的多平台、可移植的特点,在PC上也是能成功编译,但操作略有不同,需用户自行判断。

进行编译,请确保在c目录:

cd ~/DHT22-Temperature-Humidity-Sensor-code/Pico/c/

在文件夹中创建并进入build目录,并添加SDK: 其中 ../../pico-sdk 是你的SDK的目录。 我们示例程序中是有build的,直接进入即可

cd build
export PICO_SDK_PATH=../../pico-sdk
(注意:务必写对你自己的SDK所在路径)

执行cmake自动生成Makefile文件

cmake ..

执行make生成可执行文件,第一次编译时间比较久

make -j9

编译完成,会生成uf2文件。 按住Pico板上的按键,将pico通过Micro USB线接到树莓派的USB接口,然后松开按键。接入之后,树莓派会自动识别到一个可移动盘(RPI-RP2),将build文件夹下的main.uf2 文件复制到识别的可移动盘(RPI-RP2)中即可。

cp main.uf2 /media/pi/RPI-RP2/

Python部分

windows环境下的使用

  • 1.按住Pico板上的BOOTSET按键,将pico通过Micro USB线接到电脑的USB接口,待电脑识别出一个可移动硬盘(RPI-RP2)后,松开按键。
  • 2.将python目录中rp2-pico-20210418-v1.15.uf2 文件复制到识别的可移动盘(RPI-RP2)中
  • 3.打开Thonny IDE(注意:要使用最新版本的Thonny,否则是没有Pico的支持包的,当前Windows下的最新版本为v3.3.3)
  • 4.点击工具->设置->解释器,如图所示选择Pico及对应的端口

Pico-lcd-0.96-img-config.png
本例程提供了一个程序:

  • 5.文件->打开->Temperature Humidity Sensor - PIO.py,点击运行即可,如下图所示:

Pico-lcd-0.96-img-run.png

树莓派环境下的使用

  • 1.刷固件的过程与Windows上一样,你可以选择在PC或者树莓派上将rp2-pico-20210418-v1.15.uf2 文件拷入pico中。
  • 2.在树莓派山打开Thonny IDE (点击树莓logo -> Programming -> Thonny Python IDE ),你可以在Help->About Thonny查看版本信息

以确保你的版本是有Pico支持包的,同样你可以点击Tools -> Options... -> Interpreter选择MicroPython(Raspberry Pi Pico 和ttyACM0端口
如图所示:
Pico-lcd-0.96-img-config2.png
如果你当前的Thonny版本没有pico支持包,输入以下指令来更新Thonny IDE

sudo apt upgrade thonny

3.点击File->Open...->python/Temperature Humidity Sensor - PIO.py,运行脚本即可

现象

打开串口调试软件,串口输出对应的湿度和温度数据。

STM32使用教程

我们提供的例程是基于STM32F103RBT,提供的连接方式是对应的STM32F103RBT6的引脚为例,如果有需要使用其他STM32,请按实际引脚连接

硬件连接

STM32F103RB连接引脚对应关系
DHT22 STM32 功能
VCC 3.3V 电源输入
GND GND 电源地
DOUT PA0 通信端口

DHT22-Temperature-Humidity-STM32 1.jpg

软件说明

例程是基于HAL库进行开发的。 请在资料里面下载程序,找到STM32程序文件目录,打开DHT22-Temperature-Humidity-Sensor-code\STM32\STM32F103RB\MDK-ARM
目录下的DHT22.uvprojx,即可看到程序。
MQ5 STM32 1.jpg

打开main.c,重新编译下载即可。
MQ5 STM32 2.jpg

下载成功后,运行SSCOM,就可以实时查看传感器的状态啦。
DHT11 STM32 3.png

现象

打开串口调试软件,串口输出对应的湿度和温度数据。

Arduino使用教程

本例程已经在Arduino uno上测试通过,直接按下表连接Arduino uno即可

硬件连接

您可以对照以下表格连线。

Arduino连接引脚对应关系
DHT22 Arduino 功能
VCC 5V 电源输入
GND GND 电源地
DOUT D2 通信端口

DHT22-Temperature-Humidity-Arduino 1.jpg

安装编译软件(Windows教程)

arduino IDE 安装教程

运行程序

在我们提供的资料里面下载程序,并解压,再进入DHT22-Temperature-Humidity-Sensor-code/Arduino目录下
把该程序复制到Arduino安装目录下的Library文件夹中,然后打开Arduino文件编译下载即可使用
选择你的开发板,跟对应的端口。

MQ5 Arduino 1.jpg

进行编译下载,如下图:
MQ5 Arduino 2.jpg

下载成功后,运行SSCOM,就可以实时查看传感器的状态啦。
DHT22 Arduino 3.png

现象

打开串口调试软件,串口输出对应的湿度和温度数据。

资料

文档

视频

程序

软件

串口调试助手

数据手册


FAQ


售后


QQ:2850151199
EMAIL:2850151199@qq.com
电话:0755-83040712
微信:扫下方二维码添加
Service20-Weichat.png

说明:进行售后服务前,请准备好客户信息(定货单位、定货人等),以供验证。