Найти тему
Записки техногика

Подключаем к ESP8266 датчик SenseAir S8-0053

Сегодня ко мне приехал новый датчик измерения уровня CO2: SenseAir S8-0053.

Читал о нем достаточно, что бы предположить, что он будет лучше, чем имеющийся у меня на данный момент MH-Z19B, который и сам по себе неплох, по крайней мере уровень CO2 он действительно измеряет, а не угадывает, как делают многие более бюджетные варианты. К сожалению его функция автокалибровки, если не отключить ее вовремя, через некоторое время благополучно начнет занижать полученные значения, поэтому приходится либо проветривать чаще, либо жить с теми значениями, которые он выдает. Автокалибровка в S8 устроена по другому, и по даташиту она учитывает последние 15 дней измерений (а по факту отвечает, что 180 часов), что в свою очередь, при условии обычного проветривания помещения, уже будет выдавать более правдивые значения гораздо чаще.

Но в общем датчик то приехал, а как оказалось библиотек для него в интернет не подвезли еще. Поэтому поискав некоторое время, понял, что прийдется писать под него обработчик самому. Был конечно вариант использовать ESPEasy, в котором, как я понял, поддержка этого датчика присутствует, но это значит мне потребуется еще одна ESP, а это не рационально, учитывая, что у меня практически без дела запущен D1 Mini для проброса мультикастов от Xiaomi Gateway в MQTT.

В результате, практически на коленке был написан такой скетч. Его основная задача была дать мне понять, смогу с работать с этим датчиком или нет, поэтому данные в нем никуда не передаются, а просто выводятся на консоль, для тестов. Тем не менее, возможно кому-нибудь это будет интересно или полезно, как база для своих дальнейших проектов.

Код вставить сюда не получается, поэтому даю ссылку на статью с примером кода

https://blog.ifound.me/smarthome/podklyuchaem-k-esp8266-datchik-senseair-s8-0053/

Распиновка датчика выглядит вот так:

-2

G+ – Power supply plus terminal.
Unprotected against reverse connection!
4.5 V to 5.25 V

G0 – Power supply minus terminal
Sensor’s reference (ground) terminal

UART_RxD – UART data receive line Configured as digital input

UART_TxD – UART data transmission line Configured as digital output

Соответственно, в скетче используются пины
D7 – UART_TxD
D8 – UART_RxD

Ссылка на даташит:
http://www.co2meters.com/Documentation/Datasheets/DS-S8-3.2.pdf

У людей в интернете почему то присутствуют разные последовательности для опроса, взял из документации, по первой из ссылок взял идею и реализацию усреднения значений, что бы когда вы чихнете рядом с датчиком, его не зашкалило сразу же. По второй ссылке у человека интересный проект мультисенсора, но к сожалению код целиком увидеть не удалось. По третьей ссылке можно увидеть примеры управляющих последовательностей для опроса модели и версии прошивки. Правда мне это запилить так и не удалось, поэтому в финальный вариант это не вошло.

Ну и общие мои впечатления от датчика: понравился. Удобный форм-фактор, что бы сделать из него и D1 Mini этакий бутербродик, главное не забыть отверстием для забора воздуха наверх это сделать, точно показывает (хотя конечно в качестве эталона использую показания MH-Z19B), быстро реагирует на повышение CO2 около него, ну и в целом как то он поприятнее вышеназванного MH-Z19B.

Ссылки на страницы, которые были полезны при изучении процесса работы работы с этим датчиком:
https://mysku.ru/blog/china-stores/75322.html
https://www.instructables.com/id/Weather-and-Air-Quality-Monitor/
https://github.com/miaoski/esp8266-co2
https://rmtplusstoragesenseair.blob.core.windows.net/docs/Dev/publicerat/TDE2067.pdf (не без опечаток, как и положено хорошей документации)

Впервые опубликовано на https://blog.ifound.me/