Живёте у МКАДа? Тогда вы точно знаете: даже с закрытыми окнами в квартире оседает пыль — от выхлопов, строек, асфальта и промзоны. Но видимая пыль — лишь верхушка айсберга. Опасны ультрамелкие частицы PM2.5 (меньше 2.5 мкм), которые проникают глубоко в лёгкие. Датчик GP2Y1010AU0F от Sharp — один из самых доступных способов оценить уровень пыли в воздухе своими руками.
Это оптический датчик пыли, основанный на принципе лазерного рассеяния (на самом деле — ИК-светодиода). Внутри корпуса:
Когда пыль проходит через канал, ИК-луч рассеивается, и фотодиод фиксирует это. Чем больше пыли — тем выше выходное напряжение.
⚠️ Важно: GP2Y1010AU0F не даёт точных значений PM2.5 в мкг/м³ «из коробки». Он показывает относительную концентрацию пыли. Но отлично подходит для:
Да! И это ключевой момент. У GP2Y1010AU0F нет встроенного вентилятора. Воздух должен проходить через канал самотёком или принудительно.
В официальной схеме Sharp используется мини-вентилятор (например, 5 В, 0.1 А), который создаёт слабый поток воздуха через датчик. Без потока:
Sharp рекомендует:
На практике: подойдёт любой маленький вентилятор от компьютера или 5 В DC-вентилятор с низким расходом. Главное — чтобы он работал постоянно во время измерений.
Датчик имеет 6 контактов, но используются только 3–4:
ИК-светодиод внутри GP2Y1010AU0F работает импульсно — в оригинальной схеме Sharp он включается на 320 мкс каждые 10 мс. Это создаёт резкие скачки тока (до ~20–40 мА при включении).
👉 Конденсатор 220 мкФ между V-LED и LED-GND выполняет роль «буфера»
ESP32 работает с 0–3.3 В на аналоговых входах. Выход GP2Y1010AU0F может достигать 3.5 В — это немного выше предела.
Решение: поставьте резистивный делитель (например, 10 кОм + 100 кОм) или ограничьте напряжение диодом. Либо просто игнорируйте перегрузку — на практике максимум редко превышает 3.3 В.
ИК-светодиод нужно включать импульсно (на 320 мкс каждые 10 мс), как в оригинальной схеме Sharp. Это снижает нагрев и увеличивает срок службы.
Но для простых проектов можно подать на V-LED постоянное 5 В через резистор 150 Ом — датчик будет работать, хоть и менее стабильно.
const int sensorPin = 34; // Аналоговый вход
const int ledPin = 5; // Для импульсного управления (опционально)
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, HIGH); // Постоянное включение ИК-LED
}
void loop() {
int sensorValue = analogRead(sensorPin);
float voltage = sensorValue * (3.3 / 4095.0);
// Примерная конвертация в мкг/м³ (калибровка нужна!)
float dustDensity = (voltage - 0.1) * 0.17; // упрощённая формула
if (dustDensity < 0) dustDensity = 0;
Serial.print("Напряжение: ");
Serial.print(voltage, 3);
Serial.print(" В | Пыль: ");
Serial.print(dustDensity, 2);
Serial.println(" мкг/м³");
delay(1000);
}
Если вам нужна точная цифровая концентрация PM2.5/PM10 — рассмотрите датчики:
Но GP2Y1010AU0F остаётся отличным выбором для обучения, бюджетных проектов и относительного контроля.
GP2Y1010AU0F — это «глаз» для пыли. В условиях Москвы у МКАДа он поможет увидеть невидимое: насколько грязный воздух после открытия окна, эффективен ли очиститель, или пора менять фильтр в бризере. Главное — не забудьте про вентилятор и резистор 150 Ом для ИК-светодиода. Тогда даже простой ESP32 превратится в мини-метеостанцию качества воздуха.
После добавления подтягивающих резисторов 47 кОм на каждый канал (как показано на схеме) датчик начал выдавать стабильные и логичные показания. В чистом воздухе значения составили: CO ~950/1024, NH₃ ~900/1024, NO₂ ~200/1024.
Два канала (CO и NH₃) корректно реагируют на алкоголь — аналоговые значения падают до 50/1024, что соответствует росту ppm до ~300. Канал NO₂ слабо реагирует на алкоголь (не должен), но не откликается и на газовую плиту или городской трафик — что вызывает вопросы о его калибровке или состоянии.
Согласно документации Sensirion (MiCS-6814), оптимальное значение сигнала — VCC/2 (~512/1024). Для этого я экспериментально подобрал резисторы: CO — 680 кОм, NH₃ — 470 кОм, NO₂ — 20 кОм. Получил все каналы около 500/1024 в покое.
На плате адаптера CJMCU-6814 нет встроенных нагрузочных резисторов — только резисторы нагревателей (27 Ом, 120 Ом, 820 Ом) и два нераспознанных SMD-конденсатора. Значит, подтяжка — обязательная доработка для работы с ESP32/Arduino.
Использовал модифицированную библиотеку MICS-6814-I2C (без I²C-части) для упрощения калибровки. Показания в ppm пока условны — требуют калибровки по эталонным газам. Но реакция на алкоголь подтверждает работоспособность двух каналов.
Выход датчика (Vo)
│
[R] ← резистор 4.7–10 кОм (обязательно!)
│
├──► GPIO ESP32 (например, GPIO34)
│
[Z] ← стабилитрон 3V3
│ (катод — к GPIO, анод — к GND)
GND
Блог только запустил, все статьи генерирую через нейросеть т.к. лень, возможны ошибки. Просто чтобы вы знали и не запускали ядерный реактор по моим статьям ))
Если у вас есть вопросы, или Нашли неточность? пишите в коментах — вместе поправим и сделаем статью более качественной. Я лично объясню нюансы из практики.
Комментарии
Пока нет комментариев. Будьте первым!