AGS10 датчик качества воздуха

Технические характеристики, распиновка и схемы подключения датчика AGS10. Примеры кода для ESP32, Arduino, Raspberry Pi и документация.

Окружающая среда I2C

Обзор

AGS10 — это компактный и эффективный MEMS-датчик качества воздуха, специально разработанный для обнаружения летучих органических соединений (ЛОС/VOC). Благодаря современной технологии производства полупроводников, он обеспечивает высокую стабильность и чувствительность в течение длительного времени. Использование протокола I2C делает его идеальным выбором для современных систем мониторинга параметров окружающей среды на базе ESP32 и Arduino.

AGS10 — это цифровой датчик газа TVOC с интерфейсом I2C. Он калибруется на заводе и оснащен встроенным алгоритмом компенсации температуры и влажности, что позволяет получать точные данные о концентрации газов без сложной дополнительной обработки. Компактный размер корпуса (SMD или модульное исполнение) позволяет интегрировать его в портативные устройства и бытовую технику.

Датчик AGS10
Быстрая навигация
Основные разделы статьи
Примеры кода
Популярные платформы
Где купить

Приобретите AGS10

Характеристики

Характеристики AGS10

Интерфейс
I2C (0x2A)
Рабочее питание
3.0 ± 0.1 В DC
Диапазон ЛОС
0 ~ 99999 ppb
Время разогрева
≤ 120 сек
Скачать полный даташит
Распиновка

Распиновка AGS10

Распиновка AGS10
1
VCC

Питание (строго 3.0В ±0.1В)

2
GND

Общий провод (земля)

3
SDA

I2C Последовательные данные

4
SCL

I2C Последовательное тактирование

Пин Название Тип Описание
1 VCC Power Питание (3.0 В)
2 GND Ground Общий
3 SDA I/O Данные I2C
4 SCL Input Такты I2C
Подключение

Подключение AGS10 к ESP32

Схема подключения AGS10 к ESP32
Всего линий
Минимум
4
Сложность
Легко
I2C интерфейс
Вывод AGS10 К пину ESP32 Описание
VCC 3.3V / 3V Питание модуля
GND GND Общий минус
SDA GPIO 21 Шина данных I2C
SCL GPIO 22 Шина тактирования I2C
Важные примечания
  • 📍 Частота шины — AGS10 чувствителен к скорости. Установите частоту I2C на 15 кГц или ниже.
  • 🔧 Подтяжка (Pull-up) — Для работы требуются резисторы на линиях SDA и SCL (обычно 4.7-10 кОм).
  • Стабильность — Используйте конденсатор 0.1 мкФ между VCC и GND для фильтрации помех.
Устранение неполадок

Устранение неполадок AGS10

Ошибка CRC на ESP32/ESP8266

Проблемы с частотой I2C шины

Проблема: Сообщение в логах The crc check failed или невозможность прочитать данные.

Причина: AGS10 — это медленное I2C устройство. Он требует частоту 30 кГц или даже 15 кГц. По умолчанию контроллеры часто используют 100 кГц или 400 кГц.

Решение: Явно установите частоту в настройках Wire (Wire.setClock(15000)) или в YAML файле ESPHome (frequency: 15kHz).

Показания зависли на одном значении

Датчику требуется прогрев

Проблема: Сенсор выдает одно и то же число в течение нескольких минут после включения.

Причина: MEMS газовым датчикам необходимо время разогрева для стабилизации химических реакций на поверхности сенсора.

Решение: Подождите не менее 2 минут после подачи питания перед считыванием рабочих данных. Для получения максимально точных показаний при первом включении может потребоваться до 24-48 часов "обжига".

Примеры кода

Примеры программирования AGS10

Arduino / ESP32

Базовое чтение данных TVOC

C++
#include <Wire.h>
#include <Adafruit_AGS10.h>

Adafruit_AGS10 ags10;

void setup() {
  Serial.begin(115200);
  
  // Важно: настраиваем I2C на низкую частоту для стабильности AGS10
  Wire.begin();
  Wire.setClock(15000); 

  if (!ags10.begin()) {
    Serial.println("Датчик AGS10 не найден!");
    while (1) delay(10);
  }
}

void loop() {
  // Чтение концентрации TVOC в ppb
  uint32_t tvoc = ags10.readTVOC();
  
  if (tvoc == 0) {
    Serial.println("Датчик прогревается...");
  } else {
    Serial.print("Качество воздуха (TVOC): ");
    Serial.print(tvoc);
    Serial.println(" ppb");
  }
  
  delay(1000); // Опрос раз в секунду
}

В этом примере мы используем библиотеку Adafruit AGS10. Ключевым моментом является команда Wire.setClock(15000), которая переводит шину I2C в режим пониженной скорости, обеспечивая надежную работу контроллера внутри сенсора.

ESPHome

Интеграция в Home Assistant

YAML
# Настройка глобальной шины I2C
i2c:
  sda: GPIO21
  scl: GPIO22
  frequency: 15kHz # Обязательно для AGS10

sensor:
  - platform: ags10
    tvoc:
      name: "Качество воздуха (ЛОС)"
      unit_of_measurement: "ppb"
    update_interval: 30s

Для ESPHome достаточно указать платформу ags10. Датчик автоматически появится в Home Assistant с правильными единицами измерения (ppb — частей на миллиард).

MicroPython

Прямое считывание из регистров

Python
from machine import I2C, Pin
import time

# Инициализация I2C (частота 15кГц)
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=15000)
AGS10_ADDR = 0x2A

def get_tvoc():
    try:
        # Чтение 5 байт (Data + CRC)
        # Регистр данных TVOC обычно 0x00
        i2c.writeto(AGS10_ADDR, b'\x00')
        time.sleep(0.1)
        res = i2c.readfrom(AGS10_ADDR, 5)
        
        # Данные находятся в 2, 3 и 4 байтах
        tvoc = (res[1] << 16) | (res[2] << 8) | res[3]
        return tvoc
    except:
        return None

while True:
    value = get_tvoc()
    print(f"TVOC: {value} ppb")
    time.sleep(2)

Итоги AGS10

Датчик AGS10 является бюджетным и надежным решением для мониторинга летучих органических соединений. Благодаря наличии готовых библиотек и интеграций, он отлично подходит как для DIY-проектов, так и для серийных устройств контроля микроклимата.

Рекомендации

Не используйте датчик в помещении с высокой концентрацией силиконовых паров, так как это может необратимо "отравить" чувствительный слой сенсора.

Калибровка

Датчик имеет функцию авто-калибровки нуля. Для её корректной работы устройство должно регулярно (раз в несколько суток) оказываться в условиях чистого свежего воздуха.

Готовы интегрировать?

Используйте примеры кода выше для быстрого старта. AGS10 — один из самых простых в подключении датчиков для мониторинга ЛОС.

Похожие варианты

Похожие датчики

Ищете альтернативы для измерения параметров воздуха? Обратите внимание на эти популярные сенсоры.

CCS811
Воздух I2C

Популярный цифровой сенсор летучих органических соединений и эквивалента CO2.

Подробнее
<a href="/sensors/mh-z19/" class="group flex flex-col bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-2xl overflow-hidden hover:shadow-lg transition-all duration-300 hover:-translate-y-1 !no-underline">
  <div class="aspect-[4/3] bg-slate-50 dark:bg-slate-800/50 p-6 flex items-center justify-center border-b border-slate-100 dark:border-slate-800 relative">
    <img src="/img/A3pw2a3HeM-772.png" alt="MH-Z19" class="w-24 h-24 object-contain group-hover:scale-110 transition-transform duration-500 !my-0 !shadow-none" loading="lazy" />
  </div>
  <div class="p-5 flex flex-col flex-1 text-center items-center">
    <h3 class="font-bold text-slate-900 dark:text-slate-100 text-lg mb-2 line-clamp-2 title-link !my-0">MH-Z19 Датчик CO2</h3>
    <div class="flex flex-wrap gap-2 mb-3 justify-center">
      <span class="px-2 py-0.5 rounded text-[10px] font-bold tracking-wider uppercase bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-900/40 dark:text-fuchsia-300">Воздух</span>
      <span class="px-2 py-0.5 rounded text-[10px] font-bold tracking-wider uppercase bg-red-100 text-red-700 dark:bg-red-900/40 dark:text-red-300">UART</span>
    </div>
    <p class="text-xs text-slate-500 dark:text-slate-400 line-clamp-3 mb-4 flex-1 !my-0 leading-relaxed">Инфракрасный (NDIR) датчик для точного измерения концентрации углекислого газа.</p>
    <div class="text-xs font-semibold text-indigo-600 dark:text-indigo-400 flex items-center gap-1 group-hover:gap-2 transition-all mt-auto">
      Подробнее <svg class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 5l7 7m0 0l-7 7m7-7H3" /></svg>
    </div>
  </div>
</a>

<a href="/sensors/mics-4514/" class="group flex flex-col bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-2xl overflow-hidden hover:shadow-lg transition-all duration-300 hover:-translate-y-1 !no-underline">
  <div class="aspect-[4/3] bg-slate-50 dark:bg-slate-800/50 p-6 flex items-center justify-center border-b border-slate-100 dark:border-slate-800 relative">
    <img src="/img/dOhEgerMyD-288.png" alt="MiCS-4514" class="w-24 h-24 object-contain group-hover:scale-110 transition-transform duration-500 !my-0 !shadow-none" loading="lazy" />
  </div>
  <div class="p-5 flex flex-col flex-1 text-center items-center">
    <h3 class="font-bold text-slate-900 dark:text-slate-100 text-lg mb-2 line-clamp-2 title-link !my-0">MiCS-4514 Газовый сенсор</h3>
    <div class="flex flex-wrap gap-2 mb-3 justify-center">
      <span class="px-2 py-0.5 rounded text-[10px] font-bold tracking-wider uppercase bg-fuchsia-100 text-fuchsia-700 dark:bg-fuchsia-900/40 dark:text-fuchsia-300">Воздух</span>
      <span class="px-2 py-0.5 rounded text-[10px] font-bold tracking-wider uppercase bg-orange-100 text-orange-700 dark:bg-orange-900/40 dark:text-orange-300">Аналог</span>
    </div>
    <p class="text-xs text-slate-500 dark:text-slate-400 line-clamp-3 mb-4 flex-1 !my-0 leading-relaxed">Сдвоенный датчик для обнаружения угарного газа (CO) и диоксида азота (NO2).</p>
    <div class="text-xs font-semibold text-indigo-600 dark:text-indigo-400 flex items-center gap-1 group-hover:gap-2 transition-all mt-auto">
      Подробнее <svg class="w-4 h-4" fill="none" viewBox="0 0 24 24" stroke="currentColor"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 5l7 7m0 0l-7 7m7-7H3" /></svg>
    </div>
  </div>
</a>