【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数据线,将学习板连接到计算机
- 在oled屏幕上,就可以看到温湿度信息
- 也可以打开 波特律动 串口助手 (baud-dance.com) 在线串口调试助手,点击“选择串口”,选择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
- 启用小数打印:在cubeIDE菜单栏中,Project Properties -> C/C++ Build -> Settings -> Tool Settings -> MCU Settings,勾选Use float with printf ... -nano
2、代码
(1) 初始化过程
- 拷贝库文件:将 aht20.c oled.c font.c 文件拷贝到 Core -> Src 目录下,将 aht20.h oled.h font.h 文件拷贝到 Core -> Inc 目录下。
- 在main.c中添加include:aht20.h oled.h
需要将 温湿度℃ 取字模存入 font.c,小伙伴们也可以复制本例程的 font.c 直接用
- 引用头文件:需要使用 sprintf 打印输出,在 main.c 引用头文件:
C语言
1#include "stdio.h"2#include "string.h"
- 初始化AHT20:
C语言
1// 初始化AHT202AHT20_Init();3// 初始化OLED4HAL_Delay(20); // 单片机启动比OLED上电快,需要延迟等待一下5OLED_Init(); // 初始化OLED
- 定义所需变量:
C语言
1float temperature, humidity; // 接收温度和湿度变量2char message_uart[50]; // 串口发送的字符串3char message_temp[30]; // oled显示温度字符串4char message_hum[30]; // oled显示湿度字符串
(2) 读取数据
C语言
1// 读取温湿度2AHT20_Read(&temperature, &humidity);3// 打印温湿度4sprintf(message_uart, "温度: %.1f ℃, 湿度: %.1f %%\r\n", temperature, humidity);5sprintf(message_temp, "温度: %.1f ℃", temperature);6sprintf(message_hum, "湿度: %.1f %%", humidity);7// 串口发送8HAL_UART_Transmit(&huart2, (uint8_t *)message_uart, strlen(message_uart), HAL_MAX_DELAY);9// oled显示10OLED_NewFrame();11OLED_PrintString(0, 16, message_temp, &font16x16, OLED_COLOR_NORMAL);12OLED_PrintString(0, 32, message_hum, &font16x16, OLED_COLOR_NORMAL);13OLED_ShowFrame();14// 延时 1 秒15HAL_Delay(1000);
AHT20与DHT20、DHT11的区别
三种型号都是广州奥松的温湿度传感器,它们的主要区别如下
对比项目 | AHT20 | DHT20 | DHT11 |
|---|---|---|---|
通用 | 与 DHT20 通用 | 与 AHT20 通用 | 不通用 |
体积 | 微型贴片 | 插针 | 插针 |
精度 | 最高 | 低于 AHT20 | 最低 |
定位 | 新 | 是 DHT11 的升级 | 老产品 |
通信 | 标准 I²C | 标准 I²C | 单总线 |
DHT20 内部结构: