Составной датчик AHT20 включает в себя сразу два полезных измерительных прибора — термометр и гигрометр. Первый, измеряет температуру, а второй — относительную влажность воздуха. Такие датчики применяются в системах климат-контроля внутри жилых и промышленных помещений, в теплицах, а также в погодных станциях.
В отличие от резистивных датчиков: DHT11, DHT22 и AM2320, которые часто используются в DIY-проектах, AHT20 содержит другой тип чувствительного элемента — ёмкостный. Это позволяет изготавливать такие датчики по технологии MEMS. Именно поэтому он такой крошечный.
Датчик выполнен в корпусе размером всего 3×3, поэтому для эксперимента мы используем модуль RobotClass AHT20. Вокруг датчика на плате имеются вырезы, которые необходимы для минимизации передачи тепла от других компонентов платы к датчику. Кроме самого датчика, на модуле расположены два разъёма шины QIIC, для совместимости с другими модулями и контроллерами от RobotClass.
Характеристики модуля RobotClass AHT20
- напряжение питания: 3,3 В;
- потребляемый ток при измерении: 890 мкA;
- потребляемый ток в режиме ожидания: 250 нA;
- диапазон измерения температуры: от -40 до 85 °C;
- погрешность измерения температуры: 0,3 °C;
- гистерезис измерения температуры: 0,1 °C;
- диапазон измерения влажности: от 0 до 100%;
- погрешность измерения влажности: 2%;
- гистерезис измерения влажности: 1%;
- время отклика при измерении влажности: 8 с;
- размер: 23 х 23 мм;
- расстояние между монтажными отверстиями: 18 мм.
Список необходимых компонентов
Для выполнения простого примера с датчиком AHT20, кроме модуля датчика, потребуется отладочная плата Графит-32S или аналогичная на основе ESP32, переходник и кабель для шины QIIC, а также немного проводов розетка-розетка. Если вам не хватает что-то из этого, можно добавить эти компоненты в корзину прямо здесь и затем оформить заказ в нашем интернет-магазине.
Подключение
Датчик AHT20 работает с напряжением 3.3 Вольта, а значит мы должны подключать его к контроллеру с такими же уровнями, либо использовать преобразователь уровней. В этом уроке мы используем отладочную плату Графит-32S (подойдет также любой Node-MCU).
Подключаем датчик к плате Графит-32S по стандартной схеме для I2C интерфейса:
Графит-32S | Gnd | 3.3 | SDA/23 | SCL/22 |
AHT20 | G | VCC | SDA | SCL |
Подтяжка I2C
Для правильной работы шины I2C необходимо, чтобы линии SDA и SCL были подтянуты к питанию с помощью резистора соответствующего номинала. Эту подтяжку нужно сделать всего один раз на всей линии I2C.
На лицевой стороне платы имеется тройная перемычка I2C-PU. Её необходимо полностью соединить для обеспечения подтяжки шины I2C.
Программа
Для работы с датчиком используем подходящую, ссылка на которую есть в конце урока. Откроем готовый пример программы под названием Example1_GetMeasurements, которая выводит показания датчика в последовательный порт.
#include <Wire.h>
#include <SparkFun_Qwiic_Humidity_AHT20.h>
AHT20 humiditySensor;
void setup()
{
Serial.begin(115200);
Wire.begin(); // инициализации шины I2C
// инициализация и проверка подключения
// если датчик не обнаружен, вводим программу в бесконечный цикл
if (humiditySensor.begin() == false){
Serial.println("AHT20 not detected");
while (1);
}
}
void loop(){
// если от датчика получены свежие данные, выводим их
if (humiditySensor.available() == true)
{
float temperature = humiditySensor.getTemperature(); // получаем температуру
float humidity = humiditySensor.getHumidity(); // получаем относительную влажность
// выводим данные в COM-порт
Serial.print("Temperature: ");
Serial.print(temperature, 2);
Serial.print(" C\t");
Serial.print("Humidity: ");
Serial.print(humidity, 2);
Serial.print("% RH");
Serial.println();
}
// рекомендуется запрашивать данные не чаще 1 раза каждый 2 секунды
delay(2000);
}
Загружаем программу на контроллер и открываем монитор COM-порта. Не забываем указать скорость обмена — 115200 бод.

В заключении
Несмотря на лучшие, относительно DHT11 и DHT22 характеристики, датчик AHT20 имеет ряд недостатков. Они обусловлены типом чувствительного элемента. Ёмкостные элементы имеют склонность к старению, загрязнению и дрейфу калибровочных значений.
Кроме того, все датчики требуют регулярной калибровки, что тоже сопряжено с различными проблемами.
Как вы уже понял, точное измерение относительной влажности — сложный процесс, подверженный искажениям из-за множества факторов. Благо, что в большинстве DIY-задач такой точности не требуется.
Полезные ссылки
Библиотека для Arduino IDE:
https://github.com/sparkfun/SparkFun_Qwiic_Humidity_AHT20_Arduino_Library
Также библиотеку можно установить через менеджер библиотек в Arduino IDE. В поисковой строке менеджера необходимо ввести «SparkFun Qwiic Humidity AHT20«.
Спецификация производителя:
https://download.robotclass.ru/spec/AHT20.pdf