下载例程代码: 下载代码
注意
请一定按照 例程使用方法 🔗 导入例程,否则下载的可能不是例程而是其他工程。
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
⚠️注意
默认情况下,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:
// 初始化
AHT20AHT20_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 内部结构:

