跳到主要内容

【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线
  • 打开 小智精灵 串口助手 在线串口调试助手,点击“选择串口”,选择 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 中添加 includeaht20.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 的区别

三种型号都是广州奥松的温湿度传感器,它们的主要区别如下

对比项目AHT20DHT20DHT11
通用与 DHT20 通用与 AHT20 通用不通用
体积微型贴片插针插针
精度最高低于 AHT20最低
定位是 DHT11 的升级老产品
通信标准 I²C标准 I²C单总线

DHT20 内部结构:

DHT20

故障排除

工程建立和配置