【I²C 总线】AHT20 温湿度传感器
下载例程代码: 下载代码
请一定按照 例程使用方法 🔗 导入例程,否则下载的可能不是例程而是其他工程。
AHT20 温湿度传感器(I2C_AHT20)
通过 I²C 读取 AHT20 温湿度计
板载 AHT20 传感器规格:(详细可参考资料包中的手册)
| 参数 | 值 |
|---|---|
| 芯片型号 | 广州奥松 AHT20 |
| I²C 地址 | 0x70 |
| 温度范围 | -40 ~ 85 ℃ |
| 温度误差 | ± 0.3 ℃ |
| 温度分辨率 | 0.01 ℃ |
| 湿度范围 | 0 ~ 100 %RH |
| 湿度误差 | ± 2 %RH |
| 湿度分辨率 | 0.024 %RH |
学习板上的 AHT20 传感器:

如何使用例程
-
编译并下载程序到学习板
-
使用配套 TYPE-C 数据线,将学习板连接到计算机

- 打开 小智精灵 串口助手 在线串口调试助手,点击“选择串口”,选择 USB Single Serial
- 此时即可收到温湿度信息,如图所示

例程讲解
下面介绍了如何自己实现该例程的功能
1、工程配置
-
打开 I²C 外设:Pinout&Configuration -> Connectivity -> I2C1,将 I2C 模式选择为 I2C
-
打开串口 2 外设:Pinout&Configuration -> Connectivity -> USART2,将 Mode 选择为 Asynchronous
-
配置工程:在 Project Manager -> Code Generator 页面中,勾选 Generate peripheral initialization as ... per peripheral
-
启用 float 打印:在 cubeIDE 菜单栏中,Project Properties -> C/C++ Build -> Settings -> Tool Settings -> MCU Settings,勾选 Use float with printf ... -nano :::tip 默认情况下,sprintf 函数不能打印小数。因此我们需要配置一下编译器,使其能够打印小数 :::
2、代码
(1) 初始化过程
-
拷贝库文件:将
aht20.c文件拷贝到Core->Src目录下,将aht20.h文件拷贝到Core->Inc目录下。 -
在 main.c 中添加 include:
aht20.h -
引用头文件:需要使用 sprintf 打印输出,在 main.c 引用头文件:
#include "stdio.h"
#include "string.h" -
初始化 AHT20:
// 初始化AHT20
AHT20_Init();
(2) 读取数据
AHT20_Read(float *Temperature, float *Humidity)
预先定义两个 float 类型的变量,将指针传入该函数,用于接收读取结果
建议读取间隔大于 500 毫秒
AHT20 与 DHT20、DHT11 的区别
三种型号都是广州奥松的温湿度传感器,它们的主要区别如下
| 对比项目 | AHT20 | DHT20 | DHT11 |
|---|---|---|---|
| 通用 | 与 DHT20 通用 | 与 AHT20 通用 | 不通用 |
| 体积 | 微型贴片 | 插针 | 插针 |
| 精度 | 最高 | 低于 AHT20 | 最低 |
| 定位 | 新 | 是 DHT11 的升级 | 老产品 |
| 通信 | 标准 I²C | 标准 I²C | 单总线 |
DHT20 内部结构:
