DHT22 Temperature-Humidity Sensor
| ||||||||||||||||||||
| ||||||||||||||||||||
说明
产品概述
这是是已校准的数字温湿度传感器,用于检测环境温湿度,采用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 | 通信端口 |
工作原理
该产品原理图如下:
AM2302 器件采用简化的单总线通信。单总线即只有一根数据线,系统中的数据交换、控制均由数据线完成。单总线通常要求外接一个约 5.1kΩ的上拉电阻,这样,当总线闲置时,其状态为高电平。SDA 用于微处理器与 AM2302 之间的通讯和同步,采用单总线数据格式,一次传送 40 位数据,高位先出。具体通信时序如图所示。
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 微秒的高电平通知外设准备接收数据,信号传输如图所示:
步骤三:
AM2302 发送完响应后,随后由数据总线 SDA 连续串行输出 40 位数据,微处理器根据 I/O 电平的变化接收 40 位数据。
位数据“0”的格式为: 50 微秒的低电平加 26-28 微秒的高电平;
位数据“1”的格式为: 50 微秒的低电平加 70 微秒的高电平;
位数据“0”、位数据“1”格式信号如图 所示:
AM2302 的数据总线 SDA 输出 40 位数据后,继续输出低电平 50 微秒后转为输入状态,由于上拉电阻随之变为高电平。同时 AM2302 内部重测环境温湿度数据,并记录数据,测试记录结束,单片机自动进入休眠状态。单片机只有收到主机的起始信号后,才重新唤醒传感器,进入工作状态。
Pico使用教程
提供Python、C例程
Pico 快速上手
硬件连接
您可以对照以下表格连线。
DHT22 | Pico | 功能 |
VCC | 3.3V | 电源输入 |
GND | GND | 电源地 |
DOUT | GP15 | 通信端口 |
基础介绍
程序下载
打开树莓派终端,执行以下命令:
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及对应的端口
- 5.文件->打开->Temperature Humidity Sensor - PIO.py,点击运行即可,如下图所示:
树莓派环境下的使用
- 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端口
如图所示:
如果你当前的Thonny版本没有pico支持包,输入以下指令来更新Thonny IDE
sudo apt upgrade thonny
3.点击File->Open...->python/Temperature Humidity Sensor - PIO.py,运行脚本即可
现象
打开串口调试软件,串口输出对应的湿度和温度数据。
STM32使用教程
我们提供的例程是基于STM32F103RBT,提供的连接方式是对应的STM32F103RBT6的引脚为例,如果有需要使用其他STM32,请按实际引脚连接
硬件连接
DHT22 | STM32 | 功能 |
VCC | 3.3V | 电源输入 |
GND | GND | 电源地 |
DOUT | PA0 | 通信端口 |
软件说明
例程是基于HAL库进行开发的。
请在资料里面下载程序,找到STM32程序文件目录,打开DHT22-Temperature-Humidity-Sensor-code\STM32\STM32F103RB\MDK-ARM
目录下的DHT22.uvprojx,即可看到程序。
现象
打开串口调试软件,串口输出对应的湿度和温度数据。
Arduino使用教程
本例程已经在Arduino uno上测试通过,直接按下表连接Arduino uno即可
硬件连接
您可以对照以下表格连线。
DHT22 | Arduino | 功能 |
VCC | 5V | 电源输入 |
GND | GND | 电源地 |
DOUT | D2 | 通信端口 |
安装编译软件(Windows教程)
运行程序
在我们提供的资料里面下载程序,并解压,再进入DHT22-Temperature-Humidity-Sensor-code/Arduino目录下
把该程序复制到Arduino安装目录下的Library文件夹中,然后打开Arduino文件编译下载即可使用
选择你的开发板,跟对应的端口。
进行编译下载,如下图:
下载成功后,运行SSCOM,就可以实时查看传感器的状态啦。
现象
打开串口调试软件,串口输出对应的湿度和温度数据。