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

Подробности и измерения под катом.

Сам датчик MH-Z19 уже описывался здесь на сайте. За основу была взята статья "Обзор инфракрасного датчика CO2", а данный материал является его логическим продолжением. Про измерение концентрации CO2 на улице было написано здесь, однако данных о концентрации в квартире там не приводилось. Восполним этот пробел.

Железо


Первым делом на eBay были заказаны следующие компоненты:
Arduino Micro ATmega32U4 3.3V (цена вопроса 5$). Т.к. датчик имеет 3-вольтовую логику, обычные Arduino лучше не использовать.
OLED LCD-дисплей I2C 0.91«128x32 (цена вопроса 7$). Дисплей подключается к стандартным i2c-пинам Arduino.
— Собственно датчик MH-Z19 (цена вопроса 28$).
— Набор проводов с разъемами для штыревых контактов (цена вопроса 1-2$)
Таким образом, общая стоимость составила ~40$, или 2600р. Фирменный прибор от известной компании стоит примерно вдвое дороже, хотя здесь скорее вопрос не экономии, а технического интереса.

Код для Arduino был позаимствован из вышеприведенной статьи, в него был добавлен вывод данных на дисплей, а для более удобного анализа данных вывод был переделан в формат простой строки с разделителем. Также были добавлены метки времени, каждая соответствует 10 секундам.
Исходный код
#include <SoftwareSerial.h>
#include <Wire.h>

// I2C OLED
#include "SSD1306Ascii.h"
#include "SSD1306AsciiWire.h"
#define I2C_ADDRESS 0x3C
SSD1306AsciiWire oled;

// CO2 sensor:
SoftwareSerial mySerial(8,9); // RX,TX
byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79}; 
unsigned char response[9];

void setup() {
  // Serial
  Serial.begin(9600);
  mySerial.begin(9600);

  // OLED
  Wire.begin();         
  oled.begin(&Adafruit128x32, I2C_ADDRESS);
  oled.set400kHz();  
  oled.setFont(ZevvPeep8x16);  

  oled.clear();  
  oled.println("setup::init()");
}

long t = 0;

void loop() 
{
  mySerial.write(cmd, 9);
  memset(response, 0, 9);
  mySerial.readBytes(response, 9);
  int i;
  byte crc = 0;
  for (i = 1; i < 8; i++) crc+=response[i];
  crc = 255 - crc;
  crc++;

  oled.clear();  
  if ( !(response[0] == 0xFF && response[1] == 0x86 && response[8] == crc) ) {
    Serial.println("CRC error: " + String(crc) + " / "+ String(response[8]));
    oled.println("Sensor CRC error");
  } else {
    unsigned int responseHigh = (unsigned int) response[2];
    unsigned int responseLow = (unsigned int) response[3];
    unsigned int ppm = (256*responseHigh) + responseLow;
    Serial.print(String(t)); Serial.print(","); Serial.print(ppm); Serial.println(";");
    if (ppm <= 400 || ppm > 4900) {
      oled.println("CO2: no data");          
    } else {
      oled.println("CO2: " + String(ppm) + " ppm"); 
      if (ppm < 450) {   
        oled.println("Very good");
      }
      else if (ppm < 600) {   
        oled.println("Good");
      }
      else if (ppm < 1000) {   
        oled.println("Acceptable");
      }
      else if (ppm < 2500) {   
        oled.println("Bad");
      }
     else {   
        oled.println("Health risk");
      }
    }
  }
  delay(10000);
  t += 10;
}


Все это было собрано вместе, скетч залит в ардуину, результат выглядит примерно так:
image

Конечно это не верх промышленного дизайна (в планах подыскать какой-то корпус), но для задачи показометра, способного работать как автономно, так и передавать данные по USB, устройство вполне справляется. Для получения данных по USB достаточно открыть в Arduino IDE монитор порта, в нем будут выводиться данные. Текст оттуда можно скопировать и открыть в любой программе, например в Excel.

Измерения


Следующий вопрос: что мы собственно измеряем? Устройство выдает данные в ppm (parts per million, частей на миллион). 1000 ppm = 0,1% содержания СО2. В интернете можно найти следующую таблицу допустимых концентраций:
350 — 450 ppm: Нормальный уровень на открытом воздухе.
< 600 ppm: Приемлемые уровни. Уровень. рекомендованный для спален, детских садов и школ.
600 — 1000 ppm: Жалобы на несвежий воздух, возможно снижение концентрации внимания.
1000 ppm: Максимальный уровень стандартов ASHRAE (American Society of Heating, Refrigerating and Air-Conditioning Engineers) и OSHA (Occupational Safety & Health Administration).
1000 — 2500 ppm: Общая вялость, снижение концентрации внимания, возможна головная боль.
2500 — 5000 ppm: Возможны нежелательные эффекты на здоровье.

И наконец, результаты. Датчик был поставлен на кухне, окна металлопластиковые, время измерения около 8 часов.

Результаты оказались довольно-таки интересными. По горизонтали время в секундах, 3600 секунд соответствуют 1 часу.

Кривые на графике расшифровываются так:
0ч: показания около 420ppm (соответствуют уличным), дома никого не было, я пришел с работы и заодно включил датчик.
0-2 часа: я нахожусь на кухне, видно как в присутствии человека концентрация co2 медленно растет где-то до 900ppm.
2-4 часа: я ушел из помещения, видно как концентрация медленно спадает.
4-6 часов: я вернулся обратно, концентрация снова стала расти.
6й час: на плиту поставлена кастрюля с пельменями. Интересно видеть, как концентрация практически моментально увеличилась до 1700ppm, затем стала медленно спадать. Хотя газ горел недолго (минут 10-15) высокие уровни >1000 ppm держатся не менее часа.
Конец графика: было открыто окно, и уровень co2 упал практически сразу же.

Выводы


Устройство оказалось довольно-таки интересным, и особенно актуальным для работающих дома за компьютером. Так например, за время написания этой статьи уровень co2 вырос в помещении с 500 до 770ppm. Поглядывание на экран заставляет либо чаще открывать окно, либо наконец-таки задуматься об устройстве в доме нормальной вентиляции (наверное режим микропроветривания в окне был бы не лишним, а лучше какая-то вытяжка). Если бы я сейчас покупал новые окна, наверно задумался бы о более-менее качественной модели с нормальным проветриванием.

Также важно отметить актуальность хорошей вентиляции на кухне: как показывает график, даже за 10 минут одна газовая горелка может „выжечь“ весь запас кислорода, доведя концентрацию CO2 до весьма высокой. Измерения в спальне показали, что в плане вентиляции тоже все не очень хорошо: к утру концентрация co2 составляет более 1000ppm, а для умственного труда хороший сон это весьма актуально.

В общем, это нехитрое и недорогое устройство позволяет весьма эффективно проверить качество воздуха в квартире или офисе.
Автор желает всем хорошего здоровья и хорошего настроения. Ну и хорошего воздуха разумеется, тоже.
Поделиться с друзьями
-->

Комментарии (45)


  1. michigun
    07.07.2016 22:28

    Где-то здесь же пишет «Тион» – производитель «проветривателей».
    Я лично поставил такой в каждую комнату, и мне довольно сильно нравится результат.

    Окна, открытые или с микропроветриванием, решая или частично решая вопрос с CO2, создают другие проблемы. Это холод, грязь\запахи в воздухе, шум (автосигнализация, песни под окнами и т.п.).

    Проветриватель снимает часть этих проблем.


    1. Danov
      07.07.2016 23:02

      ТИОНу бы еще увлажнитель с ионизатором встроить.


      1. michigun
        07.07.2016 23:35

        Из моего опыта использования увлажнителей — необходимость доливать воды рано или поздно сводит их использование к нулю.

        ну, или приостанавливает, до следующего острого периода желания поувлажнять.

        а проветриватель работает, внимания не требует, и свою задачу решает.

        я бы «комбайн», скорее всего, и брать бы не стал — вряд ли удалось бы два полноценных устройства так объединить.

        ну а про ионизатор мнения не имею.


        1. igolikov
          08.07.2016 00:25
          +1

          я использую увлажнитель в зимний период уже 7 лет, и желание доливать воду не пропадает. Разница сухой/влажный воздух ощущается весьма сильно


        1. Barmaglot
          08.07.2016 10:08

          Просто заведите аквариум. И никакого увлажнителя не надо.


          1. Xandrus
            08.07.2016 10:30

            А в аквариум воды не надо доливать?


            1. Barmaglot
              08.07.2016 10:35

              Надо, но не доливать, а подменять. А это так или иначе приходится делать. В идеале — раз в неделю. Реально — лень мешает, но приходится. Рыбки — они живые.


              1. daggert
                08.07.2016 11:39

                Подменять? Мне биологи говорили что только доливка.


                1. Barmaglot
                  08.07.2016 11:51

                  Сливается примерно четверть, заливается свежая.
                  Если только доливать, то начинает увеличиваться концентрация всего и прежде всего ненужных соединений азота. Испаряется только вода, а добавляете растворы всего на свете, плюс рыбий метаболизм. В общем, со временем аквариум превратится в соленую клоаку. :)
                  Обязательно сливать и только потом доливать. Надо удалять продукты жизнедеятельности рыб.


                  1. webkumo
                    08.07.2016 12:41

                    С этим (частично) могут справляться фильтры и прочие очистители. Если качественную систему поставить — можно будет воду обновлять гораздо реже (не аквариумист, точно не скажу, но что-то около раза в полгода-год). Остальное время только доливая.


                    1. Barmaglot
                      08.07.2016 18:20

                      Рыбу постоянно кормят, а согласно закону сохранения вещества, всё это остаётся в банке. Важно удалять продукты жизнедеятельности. Как это сделать неважно. Можно и фильтрами. В морских аквариумах так и делают. Но подменить воду проще и гораздо дешевле, что характерно.


                    1. Barmaglot
                      08.07.2016 18:20

                      .


              1. Xandrus
                08.07.2016 13:44

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


                1. Barmaglot
                  08.07.2016 18:23

                  Я не увлажняю. Меня и так всё устраивает. У меня рыбки для эстетики.


          1. Norno
            08.07.2016 12:08

            И какая у его производительность? У меня зимой (~ -25), при вентиляции достаточной для поддержания концентрации CO2 <800ppm при 2-х людях в квартире, увлажнитель с производительностью 400г/ч кое как держал влажность на уровне 20% и то не всегда…


            1. Barmaglot
              08.07.2016 12:34

              Думаю, поллитра в час не будет. Но в квартире с аквариумом однозначно гораздо лучше обстоят дела чем без оного. Мой совет был больше из области «как побороть свою лень».


    1. Teemon
      08.07.2016 00:56

      СКОЛЬКО-СКОЛЬКО ОН СТОИТ?!?!


  1. anatoly314
    08.07.2016 00:27

    Не подскажете насколько изменяются показания датчика с течением времени, нужно ли его калибровать?


    1. DmitrySpb79
      08.07.2016 00:58

      Возможность калибровки в datasheet описана: http://eleparts.co.kr/data/design/product_file/SENSOR/gas/MH-Z19_CO2%20Manual%20V2.pdf
      Но ни разу не читал, чтобы кто-то реально ее делал (да и не очень понятно как).


      1. evgeny_boger
        08.07.2016 02:34
        +2

        Калибровка там по 400 ppm свежего атмосферного воздуха.
        А вот 4 новых датчика MH-Z19 из упаковки без калибровки:

        image


        1. SHadDim
          08.07.2016 10:25

          Я правильно понимаю что калибруется по принципу «принимаем что норма это 400 ppm»? По моим измерениям на улице датчик показывал 350 ppm


          1. Azya
            08.07.2016 10:33

            Правильно. На сколько я читал, известный Green Eye при автоматической калибровке берет минимальный показатель CO2 за неделю и сравнивая с эталонными 400 соответственно вводит поправку. У вас получаются показатели на 50 ppm занижены.


            1. DmitrySpb79
              08.07.2016 10:36

              А в чем смысл такой калибровки? У нас нет никакой гарантии, что уличный воздух == 400ppm, т.е. легко ту же ошибку в 50ppm опять получить.

              Да и в общем-то пофиг, ведь в реале интереснее динамика изменения показаний, а не абсолютные значения.


              1. Azya
                08.07.2016 10:56

                Опять же на сколько я знаю, концентрация CO2 довольно постоянна и разницу в 50ppm на открытом пространстве никак не получить. Вот например цитата из вики — «Углекислый газ в атмосфере Земли, по состоянию на 2013 год, колебался в пределах от 393 ppm (0,0393 %) до 397 ppm (0,0397 %).».
                А вот на счет того, что интересней, это наверно субъективно. Мне интересней текущие показания. Динамика интересна была только в начале, потом и так становится понятно, что включение газа на кухне влечет быстрый рост концентрации CO2 по всей квартире.


                1. DmitrySpb79
                  08.07.2016 10:58

                  Так ведь станции, измеряющие CO2 в атмосфере земли, располагают чуть ли не в горах. А в городе показания будут меняться от тучи факторов — количества машин за окном, силы и направления ветра который все это разгоняет, и пр. Какая тут точность…


                  1. Azya
                    08.07.2016 11:10

                    Не буду спорить, не удалось найти информации по мониторингу CO2 в городах, но по-моему логично, что показатели в городе могут только ухудшиться, но никак не стать лучше чем в горах


                    1. DmitrySpb79
                      08.07.2016 11:23

                      Вот здесь написано, как измеряли co2 в атмосфере: https://ru.wikipedia.org/wiki/График_Килинга

                      В городе суть в том, что значения явно будут меняться ежедневно, и использовать их для калибровки не очень точно имхо.


                  1. Aclz
                    09.07.2016 01:24

                    Как количество машин за окном и ветер могут повлиять на количество СО2 в воздухе?


                    1. Rusheff
                      09.07.2016 10:22

                      Нет ветра — выхлопные газы не перемешиваются — увеличивается концентрация углекислого газа. На 1 г сожженного бензина больше 3 г углекислого газа. Если 4 млн авто в Москве сожгут за день по 12 л бензина (примерно 1 кг), то на каждый кубометр воздуха в трехметровом приземном слое придется около 60 г углекислого газа — а это 60 ppm. Если взять площадь дорог в Москве (около 9%) — то в пределах дорожной сети концентрация углекислого газа вырастет примерно на 600 ppm, т.е. будет порядка 1000 в лучшем случае, а это уже много.


              1. Azya
                08.07.2016 11:00

                Но конечно ошибка в 50ppm это мелочи, тем более что у MH-Z19 точность ±50+5%. Но со временем она будет расти.


              1. Norno
                08.07.2016 12:17

                Это решения для домашних устройств. Выбор из 2-х зол меньшего: или ничего не делать и смириться с дрейфом параметров (потому что массовый пользователь не имеет доступа к калиброванным смесям газов на которых можно калибровать, да и даже если это можно сделать где-то, не будет этого делать с требуемой частотой), или принять что на улице у нас 400ppm, и мерить не абсолютные значения, а значение относительно того что за окном. От перекалибровки защищаются тем что минимальное значение берется за как-то продолжительный промежуток времени, например неделя, и вводят максимальную допустимую разовую поправку, например 50ppm, если не ошибаюсь так сделано в Green Eye. Для домашнего применения этого достаточно. Ну а где требуется абсолютные значения и точность приборы калибруют на смесях, они проходят поверку, и все остальные прелести серьезных измерительных приборов.


  1. zip_zero
    08.07.2016 02:09

    Злободневно. Мы, разработчики, обычно любим заботиться о концентрации внимания — было бы интересно отмониторить типичное офисное помещение, например, openspace.

    /* Предлагаю поменять по тексту «цена вопроса» и «стоимость» на «цена» — с точки зрения стилистики статья будет сиять. */


    1. Rusheff
      08.07.2016 09:05
      +1

      В течение года мониторю (!!! медведевский термин — так себе, лучше слежу, наболюдаю, контролирую) ) офисное пространство на работе. Правда обычным даджетовским USB-датчиком. За это время датчик стал просто незаменим при войне за открытое окно. Планктон смирился, что при горящем желтом диоде надо проветриваться, а при красном — радикально проветриваться. А до этого крики про сквозняки были огого…


    1. DmitrySpb79
      08.07.2016 09:21

      В офисе где я работаю, проверял, все ок, 450ppm в течении всего дня (современный бизнес-центр с нормально работающей вентиляцией, окна кстати не открываются вообще, даже ручек нет).


      1. Rusheff
        08.07.2016 10:54

        Везет. У нас промпредприятие с еврическим ремонтом. Исходно присутствовавшую вентиляцию замуровали и закрыли подвесными потолками. пластиковые окна воздух почти не подтравливают. Зимой в некоторых помещениях вообще зашкаливает за 2500 ppm. Зато теперь у меня редко больше 600 бывает.


  1. dcoder_mm
    08.07.2016 02:19

    А почему концентрация после включения плиты с таким резким пиком и спадом? Не ошибка-ли это датчика?


    1. RoustR
      08.07.2016 09:05
      +1

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


    1. DmitrySpb79
      08.07.2016 09:19

      На графике просто масштаб времени мал, в реале разумеется вертикальных линий там нет, «мгновенно» концентрация не повышается.

      Фрагмент графика
      "


    1. eldarmusin
      08.07.2016 09:38
      +1

      Пик очевидно приходится на момент опускания пельменей в воду и в результате электролиза...


  1. CyberKot
    08.07.2016 08:51
    +1

    даже за 10 минут одна газовая горелка может „выжечь“ весь запас кислорода


    Не соглашусь. Никуда не выжигается ничего. СО2 повышается — это бесспорно.

    Вы измеряли концентрацию кислорода? Измерьте. Удивитесь, но она останется той же, тот же самый 21% (плюс-минус копейки).

    В вашем случае, чисто математически, уровень СО2 вырос на 0.13% (с 400 до 1700 ppm).


    1. DmitrySpb79
      08.07.2016 09:15

      Спасибо за уточнение.


  1. Azya
    08.07.2016 10:48

    Поглядывание на экран заставляет либо чаще открывать окно, либо наконец-таки задуматься об устройстве в доме нормальной вентиляции (наверное режим микропроветривания в окне был бы не лишним, а лучше какая-то вытяжка).
    Прощай спокойная жизнь. Помню до того как купил анализатор CO2 мне было в квартире только или жарко или холодно, зимой практически никогда не заморачивался открытием окон и чувствовал себя вполне комфортно, а прошлая зима превратилась в сплошную борьбу холод-сквозняк-CO2 с бесконечным открытием-закрытием окон при переходе из одной комнаты в другую а летом все это усугубила еще плохо работающая вытяжка в жару и шум. В итоге я не выдержал и установил приточку (которая в первом комментарии упоминается), пока еще не совсем ясно решила ли она все проблемы, но в квартире теперь при закрытых окнах CO2 держится в районе 900-1100 ppm (раньше даже при микропроветривании во всех комнатах этот показатель мог запросто уйти за 2000).


    1. Norno
      08.07.2016 12:22

      Знакомая проблема. Решил установкой зимой обогревателя на пути холодного воздуха от окна. Решило проблему только частично, да и расходы на электроэнергию возросли. Но 900-1100 дома все же много. Стараюсь держать не больше 700, но получается не всегда.


    1. SHadDim
      08.07.2016 16:01

      Понаблюдав несколько недель за CO2 пришёл к выводу что без приточных систем сложно обеспечить низкий уровень СО2. Только если окно постоянно открыто. Да и не ощущаю я разницы между разными уровням CO2, кроме особо высоких (больше 2000), поэтому решил поставить уровни предупреждения жёлтый — 1000, красный — 1500.
      После приобритения датчика сильно удивился как быстро комната в 60 м3 «надыхивается» всего двумя людьми :)


      1. wmtoolsnet
        08.07.2016 20:15

        Вы может не ощущаете, а вот кровеносная система — запросто. Это как температура света к комнате. Вроде теплый ничем не отличается от холодного, видно и так и так, а вот через пару часов от теплого света, в сон клонит.
        Есть многие недомогания, которые лет 10 назад, я бы никогда не проассоциировал бы с СО2, а теперь запросто. Например утомляемость, сексуальное либидо, уровень мигрени — вполне себе зависят от свежести воздуха (не только, разумеется).