ДатчикиПогода

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 В.

ПРАКТИКА

Подключение

Контакт модуляКонтакт платыНазначение
VIN5VUNO R3; подтяжки шины идут к VIN.
GNDGNDОбщая земля.
SDAA4 / SDAШтатный I²C UNO R3.
SCLA5 / 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 или драйвер с полным тайм-аутом измерения. Не подключайте и не отключайте модуль под питанием.

Проекты с этим компонентом

Все проекты

Связанные проекты пока не опубликованы.

Связанные материалы и компоненты