Подключение датчика качества воздуха, температуры и влажности ENS160 + AHT21 к Arduino
Сегодня расскажу о модуле с двумя датчиками ENS160 и AHT21, которые представляют собой передовое решение для мониторинга окружающей среды, комбинируя в себе высокую точность и многофункциональность. Устройство предназначено для измерения качества воздуха в помещении, включая различные газы и летучие органические соединения, так же измеряет температуру и влажность.
Технические параметры
► Обнаруживаемые газы: различные газы и летучие органические соединения (ЛОС), включая толуол, водород, этанол, азот и озон;
► Диапазон: 0-65535ppb;
► Диапазон измерения температуры: -40°C-120°C ±0,3°C;
► Диапазон измерения влажности: 0-100%RH ±2%RH;
► Разрешение измерения температуры: 0,01°C;
► Разрешение измерения влажности: 0,024% RH;
► Время нагрева: 5-60 минут;
► Выход: TVOC, eCO2, AQI;
► Интерфейс: I2С/SPI;
► Предварительный нагрев: менее 1 минуты;
► Рабочее напряжение: 2-5,5V.
Краткий обзор ENS160 + AHT21.
На данный момент, по модулю ENS160 + AHT21 мало информации в интернете, даже не получилось найти принципиальную схему.
Если посмотреть на модуль, слева расположен датчик ENS160 (собран в корпусе LGA), который специально разработан для мониторинга качества воздуха в помещениях. ENS160 это цифровой мультигазовый датчик, основанный на технологии оксида металла (MOX) и оснащенный четырьмя сенсорными элементами. Каждый сенсорный элемент имеет независимое управление для обнаружения широкого спектра газов, например летучих органических соединений (VOCs), включая этанол, толуол, а также водород и диоксид азота. Датчик ENS160 может работать по двум интерфейсам I2C и SPI, все кантаты разведены на плату, выбор интерфейса осуществляется с помощью вывода CS (низкий уровень SPI, высокий уровень SPI).
Для питания датчиков на модуле установлен два стабилизатора напряжения 662K на 3.3В и 65k5 на 1.8В их можно увидеть слева на плате в корпусе SOT-23.
Справа установлен датчик температуры и влажности AHT21 в SMD корпусе с небольшими габаритами 3 х 3 мм и высотой 0.8 мм. Диапазон измеряемой температуры составляет -40 до +120 градусов с точностью 0.3% и диапазон измеряемой влажности от 0 до 100% с точностью 2%. Датчик работает только по интерфейсу I2C.
Так же, для связи внизу расположена резисторная сборка и две транзисторные сборки с маркировкой 72k, которые служат для согласования уровней.
Конфигурация контактов NS160 + AHT21
► VIN — питание модуля 5В
► 3V3 — питание модуля 3.3В;
► GND — минус от источника.
► SCL/SCLK — шины данных I2C (SPI);
► SDA/MOSI— шины данных I2C (SPI);
► ADD/MISO — шины данных SPI;
► SC — шины данных SPI (выбор интерфейса);
► INT — Вывод прерывания с ENS160/
Подключение модуля ENS160 и AHT21 к Arduino
В примере приведу схему подключения модуля ENS160 и AHT21 к плате Arduino UNO. Показания выведем в «Последовательный порт»
Необходимые компоненты.
► Arduino UNO R3 x 1 шт.
► Датчик качества воздуха, температуры и влажности ENS160 + AHT21 x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт
Подключение.
Для подключения модуля ENS160 + AHT21 к плате Arduino необходимо задействовать в общей сложности 4 провода. Подключаем контакты 3V3 и GND с ENS160 + AHT21 к контактам 3.3 В и GND на Arduino UNO, а контакт SCL и SDA с ENS160 + AHT21 подключаем к контакту А5 и A4 к Arduino UNO.
Установка библиотек:
Для работы, будем использовать библиотеку «SparkFun_Qwiic_Humidity_AHT20″ и «SparkFun_ENS160», скачать их можно с сайта github и github, так же выложу в конце статьи.
Программа №1 — Считывание температуры и влажности.
Открываем среду разработки Arduino IDE и загружаем первую программу в Arduino UNO.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
#include <Wire.h> // Подключаем библиотеку для работы по I2C #include <SparkFun_Qwiic_Humidity_AHT20.h> // ПОдключаем библиотеку от SparkFun AHT20 humiditySensor; // Создаем объект, для работы с датчиком void setup() { Serial.begin(115200); // Открываем последовательную связь Wire.begin(); // Инициализация связи I2C // Проверка связи с датчиком if (humiditySensor.begin() == false) { Serial.println("AHT20 not detected. Please check wiring. Freezing."); while (1); } Serial.println("AHT20 acknowledged."); } void loop() { if (humiditySensor.available() == true) // Если доступно новое измерение { // Считываем показания температуры и влажности float temperature = humiditySensor.getTemperature(); float humidity = humiditySensor.getHumidity(); // Отправка данных в последовательный порт Serial.print("Temperature: "); Serial.print(temperature, 2); Serial.print(" C\t"); Serial.print("Humidity: "); Serial.print(humidity, 2); Serial.print("% RH"); Serial.println(); } delay(2000); // Пауза 2 секунды } |
Открываем мониторинг порта, где можем увидеть показания температуры и влажности.
Программа №2 — Считывание качества воздуха с ENS160
Открываем среду разработки Arduino IDE и загружаем первую программу в Arduino UNO.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
#include <Wire.h> // Подключаем библиотеку для работы по I2C #include "SparkFun_ENS160.h" // ПОдключаем библиотеку от SparkFun SparkFun_ENS160 myENS; // Создаем объект, для работы с датчиком int ensStatus; // Создаем переменную void setup() { Serial.begin(115200); // Открываем последовательную связь Wire.begin(); // Инициализация связи I2C if(!myENS.begin()) // Инициализация датчика { Serial.println("Could not communicate with the ENS160, check wiring."); while(1); } if(myENS.setOperatingMode(SFE_ENS160_RESET)) // Сброс настроек датчика. Serial.println("Ready."); delay(100); myENS.setOperatingMode(SFE_ENS160_STANDARD); // Установка стандартный режим работы // Статус работы датчика: // 0 - Работает нормально: Стандартная работа // 1 - Прогрев: выполняется в течение 3 минут после включения питания. // 2 - Первоначальный запуск: выполняется в течение первого часа работы. // 3 - Неверный вывод ensStatus = myENS.getFlags(); Serial.print("Gas Sensor Status Flag (0 - Standard, 1 - Warm up, 2 - Initial Start Up): "); Serial.println(ensStatus); } void loop() { if( myENS.checkDataStatus() ) { Serial.print("Air Quality Index (1-5) : "); Serial.println(myENS.getAQI()); Serial.print("Total Volatile Organic Compounds: "); Serial.print(myENS.getTVOC()); Serial.println("ppb"); Serial.print("CO2 concentration: "); Serial.print(myENS.getECO2()); Serial.println("ppm"); Serial.print("Gas Sensor Status Flag (0 - Standard, 1 - Warm up, 2 - Initial Start Up): "); Serial.println(myENS.getFlags()); Serial.println(); } delay(200); } |
Открываем мониторинг порта, где можем увидеть показания с датчика ENS160.
Ссылки
Документация AHT21
Библиотека SparkFun_Qwiic_Humidity_AHT20 v.1.0.3
Документация ENS160
Библиотека SparkFun_ENS160 v.1.1.0
Купить на Aliexpress
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
Купить в Самаре и области
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
Датчик качества воздуха, температуры и влажности ENS160 + AHT21