Pull to refresh

Comments 99

1. Как по Вашему насколько датчик CO2 точно работает?
2. Можно ему доверять измерения с указанными в документациями погрешностями?
3. Есть ли какието особенности, подводные камни при его использовании?
1) Как написал, сравнивал с китайским девайсом — результаты весьма коррелируют.
Ну и представляю примерно, сколько когда должно быть ppm — с открытым окном, с закрытым, при одном и нескольких людях в помещении. Очень похоже.
2) В документации указана точность до 50ppm. На мой взгляд, для бытового применения вполне хватает пары пороговых значений — в 700 и в 1000ppm. Её он обеспечивает. Если же интересуют точные измерения, то конечно надо сравнить с показаниями крутого промышленного датчика, которого у меня под рукой нет. Если у кого есть — можем попробовать.
3) Про реакцию на перепад напряжения я написал. Так же конечно следует учитывать условия эксплуатации — должна быть не загрязнённая среда (в каком-нибудь цеху датчик может быстро засориться) и температура от 0 до 50. Выше 50 у вас вряд ли будет, а вот на улицу датчик зимой высовывать не стоит. По поводу датчика температуры и влажности — тоже стоит учитывать описанные в спецификации условия эксплуатации.
Спасибо надо будет себе преобрести на посмотреть.
сравнивал с китайским девайсом

А что за девайс?
В статье же есть, с картинкой.
Аналоговый датчик в качестве заголовка страницы — как то не очень. Лучше его вынести на отдельную страницу, если так уж хочется смотреть на него.
Дело вкуса. Там показывается последнее значение и наглядно видны границы. Люблю gauge из Google charts — по нему всё понятно людям, которые не понимают графики.
Прошу прощения за глупый вопрос: в каких единицах измеряется концентрация углекислого газа? Это проценты или другие величины?
Общепринятая еденица измерения — parts per million (ppm). Об этом много где говорят, так что не стал заново писать. По ссылкам в подвале можно почитать и про единицы и про то, что они значат, и какие вредные значения.
Евгений — полное вам уважение! Совсем недавно здесь же была рекламная статья о датчике СО за 100 баксов. Как раз тогда меня очень смутила стоимость устройства — цена показалась запредельной для достаточно примитивного устройства. Собственно, обоснованность моих сомнений вы только что подтвердили: у вас, при розничной закупке, себестоимость 44$. У массового продукта с оптовыми закупочными ценами цена реализации — over 100$ (почти в 3 раза выше). При этом у вас добавлены доп.функции — влажность + работа по сети.
Отличная работа и отличная статья!
у вас, при розничной закупке, себестоимость 44$. У массового продукта с оптовыми закупочными ценами цена реализации — over 100$

Не спешите делать выводы.

Тот же барометр на arduino мне обошелся в $10. Попробуйте купить за такую стоимость в магазине.

Это не массовый продукт а «на любителя». Термометр — да, нужен всем. Стоит копейки. А вот барометр и тем более измерительно углекислого газа — нужен единицам. И часто такие устройства у любителей выходят дешевле, ведь они не платят налогов, не платят зарплаты бухгалтерам и пр., не делают рекламу…
Да, хотел написать комментарий в том же духе. Себестоимость во-первых мало что значит, а во-вторых сильно зависит от массовости производства. Железо — ничто, маркетинг — всё.
Правда, в данном случае непонятно, почему цена довольно высока у китайцев, которые обычно не вкладываются в рекламу и продают всё по цене, близкой как раз к себестоимости. Это вам не какое-нибудь мвидео. Но всё равно, 100$ это вполне нормальная цена.
Ну и надо сказать, что определение влажности обычно есть на любых китайских датчиках, а добавление работы по сети практически ничего не стоит.
Отличная статья, довольно подробная, прямо инструкция пошаговая. А теперь внимание, вопрос! Напишите про размер итогового прибора, и поместится ли он в подрозетник стандартный или углубленный.
Размер определяется в общем-то размером борды. Это 68.6*53.4мм. Должен влезть. Плюс наверняка можно взять мини вариант борды, если выходов хватит.
Если делать минималистично, то надо собирать на esp8266 (версия распайки 12), качественно питание 220 -> на 5 и 3.3 вольта. В таком случае в подрозетник должно поместиться, но придется немного попаять. Дисплей 1602 в подрозетник не поместится, но если дисплей нужен — можно взять 128x64 олед — может быть даже парочку.
Ээээ, называть ESP-8266 ардуиной — это немного неправильно. Arduino-like шилд на ESP-8266.
Wemos D1, использованный автором, не шилд, а девелоперская борда в форм-факторе Arduino Uno. Для нее есть драйвера для работы с официальной средой разработки и она совместима с большей частью шилдов для Arduino Uno.
Тоже купил себе такой датчик, и заметил, что если при включении датчика реальный уровень CO2 больше 1000ppm, то датчик начинает несколько завышать показания.
Не сталкивались с таким?

P.S. Практически сделал автономный индикатор CO2 на этом датчике на STM32 (без нелюбимой многими Arduino). Нужна ли статья?
Не сталкивался, я очень остро реагирую на воздух, и поэтому условий с более 100ppm на старте не было. Попробую.

Статья скорее не про датчик СО2, а про то, как легко и быстро можно собрать полезное работающее устройство, претендующее на IoT. Понятно, что можно использовать STM32, можно Rastberry, наверняка можно вообще обойтись датчиком и индикатором со стрелкой (PWM же есть). Холивар по Arduino меня не очень волнует, что оказалось под рукой, на том и собрал. Но вообще мне нравятся средства лёгкого прототипирования, поскольку по текущей жизни идёт очень большое количество итераций разработки, и зачастую результат всё равно уходит в помойку. Главное в таких условиях — скорость создания. А если продукт востребован, то дальше можно на любой оптимальной платформе собрать.

Кстати, сколько у вас времени ушло с STM32 до почти готового решения?
условий с более 100ppm на старте не было

Средний уровень CO2 в воздухе по планете сейчас около 400 ppm.

Кстати, сколько у вас времени ушло с STM32 до почти готового решения?

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

Да, я имел в виду что конечно же не было условий с ppm более 1000, описался, вы ведь про 1000 на старте говорили.
конечно нужна!
Особенно. если будет такой же подробной с кодом, ссылками и подводными камнями
а что с питанием, сколько ест — MH-Z19 не замеряли? По mq-135 какими библиотеками(примерами) пользовались для перевода в ppm?
В спецификации MH-Z19 заявлено: Average current < 18 mA @ 3.6 ~ 5.5 V DC, что достигается, вероятно, отсутствием нагревательного элемента.
Сколько ест — не замерял, сейчас при себе мультиметра нет.

MQ-135 это только на первый взгляд хорошее решение — он очень сильно зависит от температуры и влажности. Ну и определять сопротивление для каждого датчика после прожига надо. Самое смешное было, окгда у меня датчик сошёл с ума и начал выдавать абсолютно неудобоваримые показания… Оказалось, что на кухне жена пирог с ромом пекла. Датчик честно поймал этанол из другой комнаты и об этом рассказал…

Сделал свой гибрид из нескольких библиотек (вроде бы этой и этой), правда, корреляция по температуре и влажности довольно сомнительна — автор писал, что в даташите вероятна ошибка. В общем, если вам надо примерно знать, когда всё совсем плохо, то mq135 подойдёт с учётом поправок. Но не более.
Мой код для mq-135 тут.
Пробовал второй вариант библиотеки, после определенного порога показания уходили в минус. Возможно это проблемы с питанием, у меня 135 ел примерно 100мА и ПроМини начинала сильно греться.
Просто 135-ый в 10 раз дешевле, но уже склоняюсь к тому что зря сэкономил )
Кстати ваш дхтt11 в отличии от дхт22, сильно врет по влажности.
Поглядываю в сторону датчика MH-Z14, не изучали его? Возможно есть что сказать, на первый взгляд выглядит «солиднее».
Ниже в комментариях уже писал — те же яйца, только сбоку. Различий в даташите не обнаружил, но z14 выглядит как выходец из мира стимпанка.
Про MH-Z14 пишут
Правду выдает только по UART, через ШИМ показывает уровень в два раза ниже реального (осциллографом проверяли, что действительно такой импульс, в формулах не ошиблись). В целом датчик нормальный, в паре с ESP8266 (NodeMCU v1.0) работает хорошо
Я измерял у своего датчика, потребление тока там импульсное, при напряжении 5В большую часть времени 4 мА, но каждые 6 сек потребление возрастает до 100 мА, длительность импульса меньше секунды.
Во время импульса через защитный фильтр на торце датчика видно, что там что-то начитает светиться красным — скорее всего, лампа накаливания (она дает излучение в большом диапазоне длин волн).
скорее всего там инфракрасный диод широкого спектра — это инфракрасный сенсор. ИК-диоды иногда отсвечивают красным
На сколько мне известно, картинки под спойлером браузер загружает, но просто не отображает. По этому «осторожно, трафик» тут не работает %)
Да, спасибо, поправил.
После того, как накололся с MQ-135 (история в комментариях выше), решил взять гарантированное решение с большой точностью и цифровым выводом. Альтернативы есть, но или дороже, или сильно зависимые от внешних факторов. Впрочем, насчёт стоимости я сильно не заморачивался — вполне могут быть и более дешёвые решения.
Спасибо за статью. Как раз вовремя. Буквально вчера тоже начал собирать домашнюю метеостанцию.
Arduino mega + ESP-8266 + LCD4884 = Основные мозги. Датчики DHT11 для дома, DHT22 — для улицы. Передавать данные с датчиков температур и влажности хочу по беспроводному модулю NRF24L01. Покопаю Ваш код на выгрузку данный web странице. Может задействую свою Raspberry pi для сбора данных и обработки. Пока он как медиацентр.

В планах собрать из «Ultrasonic Mist Maker Fogger» (пока идет с китая) увлажнитель воздуха. И включать его удаленно по NRF24L01 через реле в зависимости от влажности DHT11.

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

Мне гораздо больше нравится увлажнитель по типу «ведро с дисками и вентиллятором» — он исправно испаряет литров по 10 в сутки и не оставляет никаких следов. Минус — в том, что всё, что есть на рынке, стоит безумных денег (больше 10.000 за ведро, Карл, ведро с дисками и вентиллятором), и в механизме используются пластиковые шестерёнки, которые через год стираются и умирают — а купить новые негде.
Будет круто, если сделаете свой увлажнитель вёдерного типа — себестоимость никакая, надо только найти, из чего диски сделать. Готов у вас его купить.

Насчёт выгрузки данных — никакой магии — подключаемся по вайфаю и делаем POST запрос на сервер…
Спасибо за «ведро с дисками». Обдумаю. Видел в интернете умельцев на эту тему.
SUPRA SAWC-130 — есть вот такое ведро, но качество не очень.
Venta сильно лучше, но стоит в 3 раза дороже
Не, спасибо. Не стоит своих денег. Главное сделать самому для меня:). Главный вопрос — из чего сделать барабан с большой поверхностной площадью. Некоторые из CD/DVD дисков делают. Мне кажется результат не очень. Или может их отшлифовать погрубее, что бы влага больше задерживалась на поверхности при медленной скорости прокрутки барабана.
сравнивая с барабаном венты, CD/DVD диски будут гораздо меньше и пластик там действительно более шероховатый. Тут была статья с такими самоделками, до прыжка курса выходило либо не сильно дешевле, либо сильно хуже.
Чистая вода из осмоса точно помогает от налёта.
Немного возражу про ультразвуковой увлажнитель. Дома стоит две штуки уже 7 лет. Вода холодная из-под крана. Налет появился один раз на старом картридже, как только заменил содержимое — налет перестал появляться. От жизни спасает серебро или уф лампа (один увлажнитель со встроенной). Дисковый конечно лучше, но он дороже.
В ведре с дисками заводится не меньше живности.
Использование воды после фильтров с обратным осмосом в ультразвуковом увлажнителе убирает всякие налёты, и живности в этой воде питаться нечем.
Ведро с дисками довольно легко регулярно мыть, а в ультразвуковых обычно очень узкое горлышко — а жизнь туда всяко попадёт.
лучше взять оба 22, сверьте показания 11 и 22, можете сильно удивиться. А может и пронесет, качество не стабильное у них
Вечером проверю разницу DHT11 и DHT22.
Проверил. Действительно есть различия в показаниях.
DHT22 — Hm: 41.70 % T: 27.10 *C
DHT11 — Hm: 34.00 % T: 28.00 *C
А скачки значений наблюдаются? Влажность у меня скачет от 30 до 40 без внешних причин.
Нет скачков, всё показания стабильны. При дыхании на датчик показания влажности плавно меняется, потом возвращается на исходное.
А можно нубский вопрос? Зачем брать Arduino mega + ESP-8266 + NRF24L01? Вроде всё это можно сделать только одной ESP-8266 (ESP-12E)
Можно, но затрахаетесь. Нестабильно ESP-8266, минное поле для новичков.
А я вот начитался, насмотрелся и заказал NodeMCU на ESP-12E парочку и датчиков. Буду экспериментировать. Ещё лежит STM32F4 Discovery, но на ней какой-то высокий порог входа. Пока не разбирался сильно.
Говорят, что NodeMCU пока сыровата, кушает много памяти и вылетает. Ну и не вижу никакой сложности в том, чтобы использовать C++, а не Lua. Но опять же — вопрос не стоит выеденного холивара.
Ну я просто заказал сразу с обвязкой, а прошить можно кучу всего (уже столько ссылок насобирал и проектов на гитхабе)…
Как-то я пока из 4 минных полей пока ни одной мины не словил.
Мега — Например, если выводов не хватает. Может быть, если автор много всего меряет. Или для стабильности системы — я писал, что с этим пока что у ESP проблемы.

NRF24L01 это не к датчику, это для коммуникации с увлажнителем. Датчик сливает на сервер данные по вайфаю, а с остальными устройствами может общаться по любому другому каналу. Непринципиально, что использовать — радио, блютус, вайфай… Хоть ИК. Почему бы не NRF24L01. А на «одной» ESP не сделаешь — нужно их как минимум две.
А, теперь понял. NRF24L01 просто для связи с датчиками. А я планировал просто все датчики на ESP цеплять, чтобы они по wi-fi всё на сервер слали, независимо.
Верно. Общение с Мега будет по радиоканалу NRF24L01 + Arduino Pro Mini + DHT11(или по плану любой датчик). Во только я 2 штуки Pro Mini похоже спалил из — за бракованного TTL (неправильный вольтаж на выходе). Еще думаю Pro Mini попробовать взять 3.3 вольтовые. Только не знаю потянет ли NRF24L01 + Arduino Pro Mini 3,3 + DHT11 от батареек.
существуют, кстати, комплекты ATMEGA48 + NRF24L01 — $2.5 за комплект.
Не пробовал, но по тому что читал и спецификациям — различия минимальные. Да и стоит столько же примерно.
Датчик температуры и влажности иногда возвращает левые огромные значения. Их я просто отсекаю, но вообще неприятно. Возможно, сказывается общая запитка или некачественное соединение.

Дело не в этом, дело в самом датчике. Он работает по протоколу single wire (который не имеет ничего общего с 1-wire) и уж не знаю, то ли протокол паршивый, то ли его реализации хромают. Причём как на Arduino, так и на Raspberry Pi. Но в результате, иногда устройству не удаётся поймать начало ответа от датчика и вместо данных получается каша, которую программа честно интерпретирует как «левые огромные значения». Чисто теоретически можно попытаться перевести эту кашу в божеский вид двигая байты, но начальная часть данных всё равно теряется и проще выкинуть эти значения и опросить датчик заново.
Причём особой разницы между DHT11 и DHT22 в этом плане нету — и тот и другой временами присылают кривые ответы. DHT22 чуть реже, как мне показалось.
Сюда бы еще детектор ЛОС прикрутить и будет монитор мечты.
Плюс как раз в том, что сюда можно прикрутить что угодно. Датчик движения, ИК сенсор, фотоэлемент, датчики любых газов… Была бы потребность.
Меня поразило именно то, насколько это дружелюбно реализовано.
MQ-135 это датчик «всего», для определения конкретно СО2 не годится, а вот для «пора открыть форточку» — самое оно.
Насколько я помню, «всё» — это спирт, дым, этанол и со2. Если у вас в комнате регулярный пьяный угар в дыму, то mq135 возможно поможет. В противном случае остаётся только СО2. А он определяется, как я писал выше, с огромной погрешностью. Если вас не волнует погрешность в 300-400 ppm, то конечно можно использовать.
Всё это — дым, спирты, со2, со, бензол, фенол, толуол (и похоже вообще всё что имеет бензольное кольцо) альдегиды, окислы азота, аммиак, метан, водород.
И не надо переходить на личности это как минимум не красиво, как максимум в рамках данного ресурса вредно для саморазвития.
И мне вот интересно, как вы определили погрешность? а то я всё ломаю голову над созданием контрольной смеси газов в домашних условиях, не создав в ней 100% влажность, и не лишившись тестовых газов в процессе обезвоживания.
Где вы увидели переход на личности? Про вас я ничего не говорил, и местоимение можно вычеркнуть из комментария без потери смысла.

Погрешность я определял только для СО2 — больше ничего меня не интересовало. К сожалению, у меня не было возможности создать идеальные условия — в даташите указано, что стандартными условиями является температура 20+-2 и влажность 65+-5. Если температура была примерно такая, то догнать влажность до стабильных 65 было сложнее. Впрочем, в доступных библиотеках формула расчёта такая:
float getCorrectionFactor(float t, float h) {
  return CORA * t * t - CORB * t + CORC - (h-33.)*CORD;
}

Так что по идее поправка на влажность довольно небольшая (cord довольно маленький). Кстати, значения с поправкой в моих условия незначительно отличались от значений без поправки — не более, чем на 50 ppm.
Далее я сравнивал полученные значения с китайским датчиком. Сам китайский датчик я сравнивал с собранным мной, так что на основании этого делаю выводы.

Безусловно, есть вероятность того, что и мой и китайский датчик врут. Так же у меня мог быть неисправный датчик mq-135 (я его и прожигал и прогревал, но у китайцев просто есть некий процент брака). Так же я уже писал о том, что автор библиотеки с корреляцией сам писал, что она может обманывать (по его ощущениям).

В общем, никоим образом не исключаю вероятность того, что можно точно определять содержание со2 при помощи mq-135, но по-моему она довольно мала.

Если у вас получится посчитать точные параметры, то буду только рад — это вдвое снизит общую стоимость детектора. А совсем круто, если получится ещё определять, норма какого именно газа превышена — вроде как можно, основываясь на допустимых значениях. Если уже получалось — публикуйте, интересно!
Просто потыкал тему палочкой заранее, сейчас жду когда датчики приедут, по идее всё сводится к матрице и её решениею, но тут вылазит такая неприятность, что МQ135 ловит чертовски много газов да ещё и с примерно одинаковой чувствительностью(а пдк, то для разных газов разная).

А вообще имея в доме газовую плиту можно запросто столкнуться с превышением по метану, (пропану/бутану) СО, СО2, водороду (поставили аккумулятор на зарядку и забыли), задымлением (истории про жареную картошку вместо варёной наверное каждый слышал), остальные варианты это уже к отчаянным химикам.
Пришёл к выводу что необходимый минимум это использовать пару MQ-9 и MQ-135 + датчик влажность/температура( если надо точность приподнять) первый чувствителен к CO и метану второй ещё к куче всего, первый настраиваем на максимальную чувствительность (ни метана ни угарного газа в квартире быть не должно), второй калибруем на СО2, для которого шибкая точность не нужна.
И судя по тому что в разных датащитах указывается разная кривая для влажности и температуры каждый датчик надо калибровать персонально, вот я и ломаю голову над тем как создать контрольную смесь.
Да, логично, спасибо за пояснение про газы.
Разные кривые именно для mq135? Тогда да, тяжко.
да именно мq-135, те датащиты что не явная копипаста содержат разные графики

короче ни в какие ворота.
Ещё интересно, если опишете, какие ещё неприятные газы можно найти в квартире. Мне навскидку пришёл в голову только метан. Про дым и этанол я писал только к тому, что не вижу пользы в его измерении в домашних условиях. Конечно, другое дело, если говорить о индустриальном применении — но там уже нужно знать, что именно превышено.
Забыл ещё про озон — может появляться от лазерного принтера, но в маленьких количествах даже полезен тем что обеззараживает воздух.
А где выгодно купить MH-Z19? Что-то на али всего в одном месте есть.
Как-то не так ищете — у меня куча вываливается. Ну и ещё можно mh-z14 использовать, хотя он кажется в среднем на пару баксов дороже.
Где дешевле и репутация у продавца хорошая. Ссылок не дам — здесь это вполне обоснованно не любят.
Часто слышу что датчик CO2 надо калибровать, что это значит и как это сделать?
В идеале надо составить контрольную смесь газов- воздух+ СО2 и протестировать ей датчики, в домашних условиях с этим проблемы (хотя если есть баллон со2, компрессор для воздуха и два расходомера это уже не проблема).
Если совсем туго можно с помощью лимонной кислоты и соды получить углекислый газ набрать в шприц потом добрать воздуха, подождать пока оно там всё в шприце перемешается, выпустить и ещё добрать воздуха(воздух при этом надо предварительно лишить углекислого газа с помощью раствора щёлочи), потом с шприца дуть в датчик, но при чувствительности датчика к влажности можно дико проколоться.
У нас на работе есть газоанализаторы, их калибруют по чистому воздуху и специальной уже готовой смесью газов из баллона, — по двум точкам, но там от газоанализатора требуется показывать ноль в чистом воздухе и пищать при превышении пдк.
Второй вариант иметь уже откалиброванный датчик и по нему калибровать второй.
У Wemos D1 есть новая ревизия R2, может она не зависает, закажу себе такую.
Все сводится к SDK от китайцев. Все глюки в ней, а не с железом.
Недавно получил посылку с MH-Z19. Пытаюсь считывать данные через UART, первые пакеты выдает правильно, даже контрольная сумма в порядке. А через некоторое время начинает выдавать полный бред после заголовка и кода команды, даже "разогреться" не успевает. При это PPM без проблем. Кто-нибудь с таким сталкивался?
Вероятно, вы имели в виду — "pwm без проблем"?
Не, у меня всё в порядке, проверяю каждый раз нулевой байт и команду (с контрольной суммой как-то не сложилось), ну и собственно данные хорошие.
Нулевой байт и код команды у вас правильные, да? Проблема только с данными?
С напряжением всё в порядке? Стабильное 5v без конкурентов? Может быть, неправильный тип переменной / переполнение стека в какой-то момент?
Да, PWM. Вечером ещё раз всё перепроверю, в т.ч. с вольтметром и отпишусь.
Выложите так же фрагмент кода, может быть смогу помочь, если в нём ошибка.
Проверил.
Питание — 4.8v на MH-Z19, плата Particle Photon.
Контрольная сумма перестает совпадать почти сразу, но сами значения в порядке. Возможно резкие скачки до 65 тысяч были из-за резкого перепада температуры, когда я тестировал в первый раз.

код
`
byte readCommand[]={0XFF, 0x01, 0x86, 0x00, 0x00, 0x00, 0x00, 0x00, 0x79};

char packet[9];
char j;
char checksum;

void setup() {
Serial.begin(9600);
Serial1.begin(9600);
}

void loop() {
    Serial1.write(readCommand, 9);
    Serial1.readBytes(packet, 9);

    int high = (int) packet[2];
    int low = (int) packet[3];
    int ppm = 256 * high + low;

    for( j = 1; j < 8; j++)
    {
        checksum += packet[j];
    }
    checksum = 0xff - checksum;
    checksum += 1;

    if(checksum == packet[8]){
        Serial.println("OK");
    }

    Serial.println(ppm);
    delay(5000);
}

`

Да, у меня код проверки контрольной суммы был идентичный, что логично так как писали по одному даташиту.
Только объявите лучше переменную j числовым типом, а то странно цикл с прибавлением char выглядит. И у меня тоже не сошлось с контрольной суммой, так что проверка выглядит так:

if (response[0] != 0xFF)
  {
    Serial.println("Wrong starting byte from co2 sensor!");
    return -1;
  }

  if (response[1] != 0x86)
  {
    Serial.println("Wrong command from co2 sensor!");
    return -1;
  }

При первом опросе датчика у меня вываливалось какое-странное число в районе 65000, но все последующие выдавали корректные значения. Так что думаю, что вы тоже можете обойтись без проверки контрольной суммы. И лучше давайте датчику сначала прогреться секунд 10 (в даташите написано про 3 минуты, но везде используют 10 секунд, и мне тоже хватало).
Похоже только так и получится. Ну и думаю, буду отсекать всё, что выше 5000 и ниже 370.
Лучше ниже 300. Около 350-380 всё же бывает в особо удачных районах вроде Ясенево при открытой форточке.
Уже не будет, никогда :( https://www.engadget.com/2016/09/27/atmospheric-co2-levels-400ppm-threshold/
Так это среднее по больнице.
Спасибо за статью! Можно ссылку на библиотеку для работы Arduino с Telegram?
Пока что сам не пробовал, но вот что-то похожее.
К сожалению, ссылки на примеры дают 404 ошибку ((
Как можно совместить их оба? А то у меня ArduinoJson начинает тупить если telegram подключаю
> Осторожно, трафик

Я не знаю, для кого вы это написали. Нынче 100-мегабайтные гифы выкладывают без предупреждения. А те, у кого трафик на вес золота, и так без всяких подсказок сидят с отключёнными картинками и жабаскриптом. Так что не вижу препятствий для того, чтобы прямо в тексте картинки приводить.

Пользуясь случаем, замечу, что упомянутый MH-Z19 может ещё и температуру говорить, хотя в даташите это не указано. Однако указано, что градусник там есть, что и побудило меня порыться в интернете на эту тему.

https://revspace.nl/MHZ19#Command_0x86_.28read_concentration.29

Байт сразу после СО2 — температура плюс некоторая константа (по-хорошему надо её калибровать). Хотя здесь ложка дёгтя — для генерации дальнего ИК используется лампочка Ильича, каковая дополнительно нагревает датчик. Но это опять же мерять надо, насколько она его греет.

Следующий байт — судя по всему, символизирует точность, достигаемую прибором на настоящий момент. А оная точность время от времени ухудшается — когда датчик тревожат, открывают дверь, либо вовсе без видимых причин (быть может, калибруется?), и тогда на графике мы видим пляски святого Витта. Коли всё хорошо — то байт равен 64, а когда плохо — то падает до 4. Например, это может пригодиться, ежели мы чем-то управляем на основании измерения СО2 — коли мы видим, что байт упал ниже 64, мы не рвёмся сразу переключать реле, а ждём, пока снова не станет 64, и показаниям снова можно будет доверять (ну или просто усредняем усерднее).

Далее там ещё два байта — а вот что они значат, одному аллаху ведомо. Но, видимо, ничего, что бы относилось к параметрам окружающей среды. Автор упомянутой статьи высказывает предположение, что это давление, но вряд ли давление будет час стоять на одном месте с абсолютной точностью, затем несколько минут падать, а затем столь же незыблемо сохранять своё значение.
Sign up to leave a comment.

Articles