
AHT20
ASAIR (Aosong); плата Adafruit · AHT20; Adafruit PID 4566
Температура и относительная влажность по I²C. Пример на Adafruit AHT20 PID 4566 и Arduino UNO R3.
Автор: SLDV LAB
Опубликовано · Обновлено
О МОДУЛЕ
Что делает AHT20; Adafruit PID 4566
AHT20 измеряет температуру и относительную влажность воздуха и передаёт цифровой результат по I²C. Подходит для бытовых регистраторов микроклимата и учебной автоматизации.
В качестве точного модуля выбран Adafruit PID 4566. У разных ревизий различаются маркировка, возможность отключения индикатора и наличие защитного PTFE-фильтра. Постоянный адрес ограничивает подключение нескольких таких плат к одной шине без мультиплексора.
Размещайте сенсор вдали от нагрева контроллера и источников пара. Конденсат, загрязнения и нагрев корпуса искажают показания. Заявленная типичная погрешность действует при оговорённых условиях; она не является гарантией точности собранного прибора во всём диапазоне.
Плата Adafruit AHT20 PID 4566 с разъёмами STEMMA QT; на фотографии показана только плата, без отдельной гребёнки. Фото: Kattni Rembor / Adafruit, CC BY 3.0. Исходный фон удалён, плата пропорционально масштабирована и размещена на фоне SLDV LAB. Геометрия, цвет, маркировка и видимые детали не перерисовывались.
Схема распиновки
Авторская схема SLDV LAB для Adafruit AHT20 PID 4566 в исполнении без перемычки отключения светодиода. Вид со стороны датчика, надпись AHT20 сверху, четыре контакта снизу: слева направо VIN, GND, SCL, SDA. Буква ревизии по фотографии не устанавливается. Для других плат с AHT20 сверяйте собственную распиновку и схему.
Источники: официальная распиновка Adafruit AHT20 и страница реального модуля PID 4566.
Характеристики
- Рабочий диапазон температуры
- -40–85 °C
- Диапазон относительной влажности
- 0–100 % RH
- Типичная точность по карточке Adafruit
- ±0,3 °C и ±2 % RH при 20–60 °C и 20–80 % RH
- Неизменяемый адрес I²C
- 0x38
- VIN платы Adafruit
- 2.7–5.5 В
- Интерфейс
- I²C
- Питание модуля
- Adafruit PID 4566: VIN 2,7–5,5 В; SDA/SCL подтянуты к VIN (10 кОм), преобразователя уровней нет. В примере UNO R3: VIN 5 В и логика 5 В. Для контроллера 3,3 В питать эту плату от 3,3 В.
ПРАКТИКА
Подключение
| Контакт модуля | Контакт платы | Назначение |
|---|---|---|
| VIN | 5V | UNO R3; подтяжки шины идут к VIN. |
| GND | GND | Общая земля. |
| SDA | A4 / SDA | Штатный I²C UNO R3. |
| SCL | A5 / SCL | Штатный I²C UNO R3. |
Подходит для Arduino. Выберите контакты по документации своей платы.
ВАШ ПРОЕКТ · ВАШ ДАТЧИК
Интегрируйте модуль с ChatGPT
Скопируйте запрос в ChatGPT. Укажите свою плату и среду разработки — получите подключение и код для своего проекта.
Помоги интегрировать AHT20. Уточни точную плату сенсора, контроллер, среду и размещение. Основа: Adafruit PID 4566, UNO R3 A4/A5, питание и логика 5 В, адрес 0x38, Adafruit AHTX0 2.0.6. Дай полный пример с проверкой begin/getEvent, зависимостями, единицами и проверкой реалистичности показаний. Отдельно объясни подтяжки к VIN, конденсацию и отсутствие тайм-аута BUSY внутри этой версии драйвера; для автономного устройства предложи ограниченный по времени драйвер или watchdog.
Библиотеки
Установите библиотеку для своей среды и откройте пример из её документации.
Что именно прописать
- Библиотека
Adafruit AHTX0 2.0.6Зависимости: Adafruit BusIO, Adafruit Unified Sensor; установите зависимости Library Manager.
- Адрес I²C
0x38У платы PID 4566 адрес не меняется.
- Инициализация
aht.begin(&Wire, 0, 0x38)После Wire.begin(); проверять bool.
- Порядок аргументов
aht.getEvent(&humidity, &temperature)Первый аргумент влажность, второй температура.
Arduino UNO R3 · полный скетч
cpp#include <Wire.h>
#include <Adafruit_AHTX0.h>
#include <math.h>
Adafruit_AHTX0 aht;
void setup() {
Serial.begin(115200);
Wire.begin();
Wire.setWireTimeout(25000, true);
if (!aht.begin(&Wire, 0, 0x38)) {
Serial.println(F("AHT20 initialization failed"));
while (true) delay(1000);
}
}
void loop() {
delay(2000);
Wire.beginTransmission(0x38);
if (Wire.endTransmission() != 0) {
Serial.println(F("AHT20 not responding"));
return;
}
sensors_event_t humidity, temperature;
if (!aht.getEvent(&humidity, &temperature)) {
Serial.println(F("AHT20 read failed"));
return;
}
const float t = temperature.temperature;
const float h = humidity.relative_humidity;
if (!isfinite(t) || !isfinite(h) || t < -40 || t > 85 || h < 0 || h > 100) {
Serial.println(F("AHT20 reading outside expected range"));
return;
}
Serial.print(F("Temperature_C=")); Serial.print(t, 2);
Serial.print(F(" RH_percent=")); Serial.println(h, 2);
}
Полный скетч UNO R3, Arduino AVR Boards 1.8.6, Adafruit AHTX0 2.0.6. API и возвращаемые значения статически проверены; компиляция и аппаратный тест не выполнялись. Serial Monitor: 115200 бод. Для проверки сравните с отдельным термогигрометром после температурного выравнивания. setWireTimeout ограничивает отдельные транзакции Wire, но не цикл ожидания BUSY внутри библиотеки AHTX0: при отказе во время чтения эта версия может зависнуть. Предварительный опрос адреса не устраняет эту гонку. Для необслуживаемого устройства нужен отдельный watchdog или драйвер с полным тайм-аутом измерения. Не подключайте и не отключайте модуль под питанием.
Проекты с этим компонентом
Все проектыСвязанные проекты пока не опубликованы.
