Купить его можно тут: http://alii.pub/6e5ouk
Esp32: http://alii.pub/6c9kzh
Arduino: http://alii.pub/6ahstu
Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.
Характеристики датчика:
Этот модуль должен улавливать частицы PM2.5. Но мне особо их не удалось поймать. Тут скорее дело во мне, чем в датчике.
Дело в том, чтобы датчик что-либо зафиксировал. Нужно чтобы воздух проходил через отверстие в датчике. Для этого используют вентилятор, который бы задувал воздух в отверстие. Я же вентилятор не использовал, так-как у меня в планах сделать метеостанцию и вентилятор для этого использовать не хотелось бы.
А “Самотеком” воздух очень плохо проходил через модуль. И он мало что улавливал. И отсюда делаем вывод:
Для корректной работы модуля нужен вентилятор.
На этот модуль я наткнулся ища бюджетный датчик качества воздуха, который бы регистрировал частицы PM 2.5.
Недавно я рассматривал модуль DSM501A
Датчик пыли DSM501A. Подключение его к Arduino, ESP32 и отправка показаний в Home Assistant по mqtt.
В плане регистрации частиц PM2.5 он мне больше понравился. У него тоже нет никакого вентилятора. Но он вполне себе регистрировал частицы на ровне с датчиком PMS7003 – который стоит куда дороже раз в 5.
Но вот дым Sharp GP2Y1010AU0F улавливает очень хорошо. Но оно и понятно. Любой датчик качества воздуха будет реагировать на дым. Так, что в качестве детектора дыма его можно использовать без проблем.
Второй минус который идет после необходимости вентилятора – это то, что датчик аналоговый и для подключения его к микроконтроллеру еще используется конденсатор и резистор. В общем геморрой тот еще.
Схема подключения к ESP32 с конденсатором и резистором выглядит следующим образом:
Обратите внимание, что цвета проводов на вашем датчике могут отличаться. ПО крайней мере у меня другие, отличаются от тех что на схеме. Но распиновка та-же и надо ориентироваться от расположения датчика.
Ну а теперь что касается кода программы. Я предоставлю две программы. Одна будет подходить для всех микроконтроллеров (esp32, esp8266, arduino). А другой только для ESP32.
Программа первая. Она отправляет в монитор порта показания с датчика. Ее скачать можно отсюда: https://disk.yandex.ru/d/M3jFGrgSMVfkGQ
В программе поменять нужно следующее под себя:
#define OPERATING_VOLTAGE 3.3 // или 5.0
Поставить 3.3 или 5.0 вольт в зависимости от вашего микроконтроллера. В этой строчке выставляется опорное напряжение. Например у esp32 опорное напряжение это 3.3 вольта. А вот у arduino 5 вольт.
constexpr uint8_t PIN_AOUT = 36;
constexpr uint8_t PIN_IR_LED = 35;
Тут мы указываем пины подключения к контроллеру. Пин AOUT – обязательно должен быть аналоговым. А IR_LED просто будет включать светодиод со скоростью 0,01 секунды. Его можно любым цифровым пином назначить.
Ну и все, далее загружаете скетч а контроллер, открываете монитор порта на скорости 9600 и любуетесь показаниями:
Теперь перейдем ко второму коду. Он будет отправлять данные по mqtt. Чтоб мы эти данные получали например на сервер Home Assistant.
Скачать этот код можно тут: https://disk.yandex.ru/d/rqJzrQhAdh9uhw
Ну так-же тут нужно изменить:
#define OPERATING_VOLTAGE 3.3 // или 5.0
и
constexpr uint8_t PIN_AOUT = 36;
constexpr uint8_t PIN_IR_LED = 35;
Как и описанао выше.
Так-же изменить надо:
#define WIFI_SSID “NETGEAR”
#define WIFI_PASSWORD “14532552352”
это SSID и пароль от Вашей wi-fi сети.
#define MQTT_HOST IPAddress(192, 168, 31, 145) – тут указывается ip адрес сервера mqtt. В моем случае это сервер Home Assitant.
#define MQTT_PUB_TEMP “esp32/GP2Y1010AU0F/ugm3” – это топик куда будут отправляться данные.
mqttClient.setCredentials(“mqtt”, “mqtt”); – это пароль от сервера mqtt
Ну и так-же давайте подготовим сервер Home Assitant для получения этих данных по mqtt.
Для этого в Configuration.yaml в блоке Sensor, добавим следующий блок:
sensor:
- platform: "mqtt"
name: "GP2Y1010AU0F"
state_topic: "esp32/GP2Y1010AU0F/ugm3"
value_template: "{{ value }}"
unit_of_measurement: "ug/m3"
icon: "mdi:radiator"
Собственно тут изменить только топик, из которого будем брать данные. Ну или оставить так как у меня.
После добавления этого блока в Configuration.yaml, нужно перезагрузить Home Assistant. И после перезагрузки у Нас появится сенсор с именем GP2Y1010AU0F.
Ну и все это показал в видео: