Mh z19 arduino подключение

Делаем датчик CO2 и добавляем его в HomeKit

1500 рублей, 30 минут своего времени и всё готово.

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

И как раз одна из таких причин, что даже самые доступные датчики CO2 стоят не менее 5 000 рублей и не все из них можно сделать умными (а если и можно, то они будут зависеть от положения вашего компьютера/микрокомпьютера).

При этом на том же aliexpress достаточно предложений по датчикам за 1200-1500 рублей для DIY, но что с ними делать немногие знают.

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

Выбор датчика и покупка

И так, нам понадобится:

  • Датчик CO2
  • Микрокомпьютер на базе ESP8266
  • Коннекторы мама-мама
  • Стандартный micro-USB кабель для подключения платы к компьютеру или сети
  • macOS (для настройки) или Windows
  • поднятый ранее MQTT (описано здесь)
  • Home Assistant или HomeBridge (в общем-то подойдёт и любой другой центра автоматизации)

Датчик CO2

В качестве датчика CO2 мной был выбран MH-Z19B с уже припаянными коннекторами-папа — Aliexpress. В сети можно найти сравнение датчиков MH-Z19, MH-Z19B и Senseair. В этих сравнениях MH-Z19B и Senseair показывали приблизительно одинаковые результаты, но т.к. всевозможных инструкций и гайдов по MH-Z19(B) больше, то был выбран он.

Микрокомпьютер на базе ESP8266

В качестве ESP был выбран nodeMCU CP2102 — Aliexpress. У него есть свои минусы (перед тем же Wemos), но есть один большой плюс. Его можно просто подключить к компьютеру и достаточно просто прошить — в интернете полно гайдов, но ниже будет разобран (как по мне самый простой гайд для macOs — как обычно для них гайдов намного меньше)

Коннекторы мама-мама

Мной были куплены в ближайшем радио-магазине. Поэтому здесь просто первая рандомная ссылка по запросу «jumper diy» — Aliexpress.

Прошивка ESP

Первым делом нам понадобится наша плата, которую мы будем прошивать. Сразу предупрежу, что в зависимости от используемой ОС есть несколько вариантов прошивки — ниже будет рассмотрена (по-моему) наиболее простой способ для macOS (без установки Arduino IDE и тд). Инструкцию для Windows можно найти здесь.

  1. Подключаем нашу плату ESP к компьютеру с помощью microUSB кабеля
  2. Открываем терминал и вводим для того, чтобы определить имя порта, к которому мы подключили нашу ESP
  3. На выходе мы должны найти что-то типа /dev/tty.SLAB_USBtoUART или /dev/tty.usbserial-A1048DR2. Если подобная запись есть, то копируем её себе — она пригодится позже, и пропускаем следующий шаг.
  4. Если же вы видите только что-то типа /dev/tty.Bluetooth-Incoming-Port , то значит порт для подключенного устройства не появился, и нам необходимо поставить специальное ПО. Скачиваем его по этой ссылке (во время установки может потребовать дать доступ в системных настройках). После его установки повторяем шаг 2 и находим /dev/tty.SLAB_USBtoUART.
  5. Теперь скачиваем прошивку с гитхаба (выбираем просто последнюю).
  6. Распаковываем скачанный архив, заходим в папку bin и находим там версию для 4096, она будет называться примерно так ESP_Easy_mega-20190116_normal_ESP8266_4096.bin
  7. Если вы распаковали архив в папку Downloads, то путь до нее должен быть приблизительно таким

/Downloads/ESPEasy_mega-20190116/bin/ESP_Easy_mega-20190116_normal_ESP8266_4096.bin

  • Дальше мы переходим к прошивке. Устанавливаем esptool.
    1. Переходим в терминале в папку Downloads
    2. Скачиваем esptool c github
    3. Переходим в папку esptool
    4. Устанавливаем esptool
  • После успешной установки нам осталось выполнить лишь одну команду

    В данной команде вы должны подставить , соответствующие значения из пункта 3 (или 4) и из пункта 7. Т.е. порт и путь до файла с прошивкой.

    После этого запустится процесс прошивки (он будет длиться недолго), по итогам которого у вас среди списка доступных wi-fi сетей должна появится сеть от нашего прошитого устройства (с названием типа ESP_0).

    Базовая настройка ESPEasy

    Подключаемся к созданной нашим устройством Wi-Fi сети с паролем configesp. Сразу же подключения к Wi-Fi сети у вас должна появится captive страница, которая проведет вас по первичной настройке ESPEasy и подключению к вашей основной домашней сети.

    По итогам вы увидите подобный экран.

    Это значит, что процесс прошел удачно, теперь можно закрыть эту страницу (перед этим советую запомнить указанный IP), отключиться от данной wi-fi сети, подключаться к вашей домашней сети и перейти по указанному адресу на финальном экране, который вы уже запомнили :).

    После перехода по данному адресу вы должны увидеть приблизительно следующий интерфейс.

    Выключаем нашу ESP (вытаскиваем microUSB из USB нашего компьютера) и переходим к подключению датчика.

    Подключение датчика

    Теперь нам необходимо взять датчик и подключить его по следующей схеме (новичкам советую не отходить от схемы, прожженные мастера могут выбрать нужные GPIO):

    По итогу вы должны подключить приблизительно такую картину.

    Настройка MQTT и показаний датчика

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

    Заходим в Contollers и нажимаем Edit у самого первого

    Там выбираем OpenHAB MQTT, меняем хост нашего MQTT сервера (если настраивали MQTT по нашим инструкциям, то просто вбиваем адрес вашего Raspberry Pi), сохраняем

    В итоге должно получится приблизительно следующее

    После чего переходим во вкладку Devices и нажимаем Edit у самого первого для того, чтобы подключить наш датчик CO2

    Если вы подключили его по схеме выше, то вам необходимо просто скопировать настройки со скриншота ниже

    По итогам сохранения изменений, перейдя на экран Devices вы увидите добавленный девайс и получаемые им данные, среди которых и будут наши заветные PPM CO2.

    Также можете настроить периодичность обновления этих данных в настройках MQTT и настройках девайса.

    По итогам теперь вы видите свои данные и транслируете их по MQTT. Осталось настроить наш центра автоматизации для считывания этих данных и отображению их в HomeKit.

    Подключение к HomeBridge

    Самый простой способ пробросить датчик CO2 в HomeKit как обычно является настройкой соответствующего плагине в HomeBridge

    Добавляем следующий блок в наш конфиг в блок accessories:

    , где вместо topic вносим следующий состав параметров:
    — вместо ESP_Easy пишем имя нашей ESP (находим его над меню главной страницы веб-интерфейса ESP)
    — вместо mhz19 пишем имя девайса (если все делали по инструкции, то это mhz19)
    — вместо PPM пишем наименование передаваемого параметра (если делали по инструкции, то это PPM)
    Итого должно получиться: ESP_Easy/mhz19/PPM

    Перезагружаем HomeBridge — новый датчик воздуха должен появится в HomeKit, поздравляю!

    Добавление через Home Assistant

    Открываем configuration.yaml и добавляем туда в блок sensors: новый сенсор:

    , где вместо state_topic вносим следующий состав параметров:
    — вместо ESP_Easy пишем имя нашей ESP (находим его над меню главной страницы веб-интерфейса ESP)
    — вместо mhz19 пишем имя девайса (если все делали по инструкции, то это mhz19)
    — вместо PPM пишем наименование передаваемого параметра (если делали по инструкции, то это PPM)
    Итого должно получиться: /ESP_Easy/mhz19/PPM

    Перезагружаем Home Assistant

    Среди устройств должен добавится новый девайс: sensor.co2, а в вашем приложении Дом (при включённом homekit: в конфигурации Home Assistant) должен появится новый датчик качества воздуха, внутри которого будет указан уровень углекислого газа.

    Вы также можете прокинуть устройство через node-RED: в таком случае действуем по инструкции отсюда. Получать данные сможете напрямую через MQTT или же из Home Assistant, функция по добавлению данных и определению качества воздуха ниже.

    При это в качестве бонуса подхода через node-RED вы можете совместить данные с разных источников данных (допустим у вас уже стоит датчик PM2.5) в один, где будет сразу отображаться и PM2.5 и CO2, и исходя из этого высчитывать единое качество воздуха.

    Подписывайтесь на канал InDaHomeKit в Telegram и Яндекс.Дзен, чтобы у вас всегда было что почитать: новости мира умного дома, обзоры новых устройств, инструкции по подключению.

    Приходите в наш чат в Telegram

    Так же у нас отличные паблики VK, Facebook, Instagram и Twitter.

    Mh z19 arduino подключение

    В наше время людям живущим в мегаполисах, такой датчик просто необходим. Так как концентрация CO2, очень сильно влияет на самочувствие и е здоровье человека. Считаю что «Умный дом» без таких датчиков неполноценный. Датчик CO2 MH-Z14A , как датчик температуры и влажности должен быть в каждом доме.
    Незначительное увеличение СО2 во вдыхаемом воздухе у здоровых людей приводит к учащению дыхания и к снижению давления в лёгких. Этот факт свидетельствует о том, что СО2 включает разрушительные процессы в нервных тканях, в работе иммунной системы и во всём организме в целом.

    380-400 Атмосферный воздух — Идеальный для здоровья и хорошего самочувствия.
    400-600 — Нормальное количество воздуха. Рекомендовано для детских комнат, спален, офисных помещений, школ и детских садов.
    600-1000 — Появляются жалобы на качество воздуха. У людей, страдающих астмой, могут учащаться приступы.
    Выше 1000 — Общий дискомфорт, слабость, головная боль, концентрация внимания падает на треть, растёт число ошибок в работе. Может привести к негативным изменениям в крови, также могут появиться проблемы с дыхательной и кровеносной системой.
    Выше 2000 — Количество ошибок в работе сильно возрастает, 70% сотрудников не могут сосредоточиться на работе. Основные измерения уровня СО2 происходят, конечно же, в центральной нервной системе, и носят они при гиперкапнии фазный характер: сначала повышение, а затем снижение возбудимости нервных образований.

    Многие скажут, но ведь жили же раньше без этих датчиков. Да но и продолжительность жизни раньше была короче, при том, что питание было экологически чистое и экология была не нарушена.
    Я больше не о себе забочусь , а о детях и о их будущем.
    Так как живу в городе у которого экология не самая лучшая.

    И так хватит демагогию разводить, приступим к делу:
    Что хочу в итоге сделать?
    Засунуть в коробочку из под ночника

    На Wemos D1 или ESP8266 будет простой веб сервер. На странице которого можно будет посмотреть более точные CO2 показания датчика
    Визуальное отражение показаний будет реализовано на RGB светодиоде
    синий — 400ppm
    бирюзовый — 500ppm
    зеленый — 600ppm
    желтый — 700ppm
    фиолетовый — 800ppm
    красный — 900ppm
    плавно и медленно моргающий красный — 1000ppm
    быстро моргающий красный — больше 1000ppm

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

    Сегодня провел тестирование датчика CO2
    Датчик MH-Z14A подключил к Wi-Fi модулю Wemos на чипе ESP8266 четырьмя проводами
    ESP MH-Z14
    +5В V+
    GND V-
    D1 T
    D2 R

    Схема подключения MH-Z19 к Wemos ESP8266

    Проверочный скетч, будет работать на любой Arduino и на ESP8266

    #define CO2_TX D1 // пин ESP8266
    #define CO2_RX D2 // пин ESP8266
    SoftwareSerial SerialCO2 ( CO2_TX , CO2_RX );
    byte cmd [ 9 ] = < 0xFF , 0x01 , 0x86 , 0x00 , 0x00 , 0x00 , 0x00 , 0x00 , 0x79 >;
    unsigned char response [ 9 ];

    void setup ()
    <
    SerialCO2 . begin ( 9600 );
    Serial . begin ( 115200 );
    >

    getCO2 (); // получаем и выводим показания;
    delay ( 10000 );
    >

    void getCO2 () //чтение показаний датчика MH-Z14A
    <
    SerialCO2 . write ( cmd , 9 ); //отправляем команду датчику
    memset ( response , 0 , 9 );
    SerialCO2 . readBytes ( response , 9 ); //получаем ответ

    uint8_t crc = 0 ;
    for ( int i = 1 ; i

    Видео тестов датчика MH-Z14A

    Датчик на фабрике откалиброван. Проверить его можно, достаточно вынести измеритель на улицу на 10 минут и и провести замеры. Делать это лучше рано утром с 5:00 до 6:00, пока автомобили не успели выехать на дороги. А если есть возможность, то провести замеры за городом в лесу или в парке.

    Измеряем концентрацию CO2 в квартире с помощью MH-Z19

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

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

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

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

    40$, или 2600р. Фирменный прибор от известной компании стоит примерно вдвое дороже, хотя здесь скорее вопрос не экономии, а технического интереса.

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

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

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

    Следующий вопрос: что мы собственно измеряем? Устройство выдает данные в ppm (parts per million, частей на миллион). 1000 ppm = 0,1% содержания СО2. В интернете можно найти следующую таблицу допустимых концентраций:
    350 — 450 ppm: Нормальный уровень на открытом воздухе.

    Результаты оказались довольно-таки интересными. По горизонтали время в секундах, 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, а для умственного труда хороший сон это весьма актуально.

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

    Что нам поведает датчик СО2

    Подпишитесь на автора

    Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых постах.

    Отписаться от уведомлений вы всегда сможете в профиле автора.

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

    Топик длинный, разбил на три подкаста:

    1) Зачем все это.

    2) Выбор компонент датчика.

    Если мало времени и хочется отложить в память просто выводы, то вот:

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

    — Компоненты, mh-z19, esp8266, tft 1.44(128×128), проводки, STL внизу статьи по ссылке.

    — Arduino IDE, добавить библиотек, прошить.

    #ЗАЧЕМ ВСЕ ЭТОПредыстория, с чего все началось. На дворе был 2015, трудился в одной IT компании (не буду уточнять какая) и стал замечать, что после 4х часов труда мой мозг приходил в негодность, отказывался концентрироваться, находила хандра и сонливость. Все коллеги отмечали духоту, но казалось выйди минут на 5 прогуляться и все, можешь начинать сначала. Да действительно, легкая прогулка перезаряжала организм, однако ненадолго — минут на 15-20, дальше все повторяется. И ладно бы это прекращалось после покидания своего рабочего места, только и вечер уходил на то, чтобы откиснуть, хотелось сесть закрыть глаза и быть в полудрёмке. Потом спустя пару месяцев к обеду начинала болеть затылочная область головы. А требования к выполнению задачи не сбавляются, нужно часов по 7 плодотворно отрабатывать. Долго я стоять на паузе не мог, в 3D печати с 2013, процессоры немного кодить умею. Стал искать, читать статьи про качество воздуха и обнаружил, что всем виною не как принято считать недостаток кислорода, а повышение процента СО2 — углекислоты.Тема оказалась не такая уж простая, если вы углубитесь, то найдете в рунете статьи, где команда, занимающаяся монтажом приточной вентиляции, исследовала поведение воздушных масс на примере школьного класса, они вымеряли положения подачи приточки, дабы обеспечить максимальный разгон углекислого газа. В общем, дальше встал вопрос предъявления всех этих наблюдений компании, мол не получается работать в таких условиях. Вопрос был эскалирован выше. Ну а дальше всё как у всёх)) -> Да? У нас то хорошо и у вас должно быть, сочувствуем. Нормы соответствуют, бумаги в порядке.

    #ВЫБОР КОМПОНЕНТ ДАТЧИКАПришлось привлекать наших братьев за большой стеной. Приобрел датчик MH-Z19, который по своим характеристикам и цене был выгоднее всего.

    Сначала я его запустил на ардуине, но потом естественно захотелось принимать показания онлайн. Недолго думая перевел показания на esp8266. У него уже wifi на борту, он пошустрее и так далее.

    Дальше собрал устройство, притащил в офис и ужаснулся. Мы сидели работали при 1300+ ppm. PPM это характеристика измерения концентрации в миллионных долях. Parts per million. Нормальный содержанием CO2 считается значение 400ppm — это естественный фон улицы.

    Вообще, естественная концентрация СО2 с годами постоянно прирастает, как видно на графике ниже.

    Теперь про критические значения.

    Желтая зона находится в значениях до 800ppm и уже 1000ppm считается повышенным значением, где необходимо применять меры к проветриванию.При нахождении в помещении, где значение выше 1200 в пределах 2-3 часов, следствием являются головные боли и те самые симптомы, что были озвучены в начале статьи, снижение концентрации, сонливость и т. д.Для примера, чтоб на пальцах — один человек за пару часов высаживает комнату 16 кв метров с 2.65м потолками в полную негодность, поднимая ppm до 1500+. В таком состоянии в течение последующего часа сознание человека приходит в полную недееспособность, начинается дикий тупёж и желание прокрастинации. Я специально закупоривал комнату и сидел наблюдал программируя.

    Вот я в закупоренной комнате три с половиной часа.

    А это спустя 15 минут после проветривания. Чувствуете разницу?)Возвращаемся к теме офиса, естественно мы предъявили график с цифрами главному инженеру, начался кипиш. Но самое интересное, накануне приезда, я поставил такой же датчик коллегам в соседний кабинет. В каждом из кабинетов находилось свыше 70 человек, то есть такой нехилый open space. И самое удивительное что произошло за 1.5ч до приезда главного инженера, в нашем open space значение пришло в норму, а в соседнем, где до этого момента «Х» было все хорошо, вдруг стало нарастать. То есть приточка была рассчитана на обслуживание одного из двух помещений. Весело однако. Но таковы реалии. Ну дальше после долгой борьбы нам удалось добиться небольшого снижения духоты за счет предоставления доступа к дополнительному участку проветривания.Еще через 2 месяца мы переехали в другой офис и там уже этот вопрос отпал. Такая вот история.

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

    Так к чему я все это пишу и привожу примеры.

    Сегодня решил эту тему озвучить в 3D мейкерстве и выложить коды для самостоятельной сборки, тем кто хочет этот датчик установить у себя дома. Особенно, если у вас маленький ребенок, очень рекомендую обзавестись, понаблюдайте в каких условиях он находится.

    Конечно вы можете купить сразу собранное аналогичное устройство, но если вы смотрите куда развиваться дальше после освоения 3D печати, то вот одно из интересных и набирающих ход направлений. Что вам необходимо для сборки такого датчика:- Ну во-первых заказать сам датчик на али экспрессе или в одном из магазинов вашего города под названием MH-Z19, можно и MH-Z19b, не суть.- Во-вторых также прикупить микроконтроллер под названием Wemos D1 mini на базе esp8266. Просто найдите в поиске wemos d1 mini и это будет оно.- Также вам понадобится стандартный кабель микро юсб и любой зарядник на 5 вольт. Подойдет даже 0.5 ампер, не супер мощный.- [опционально] Еще понадобится дисплей TFT 1.44» 128 на 128 пикселей, но не обязателен, показания вы сможете наблюдать удаленно на смартфоне.

    — Провода Dupont 10см упаковка. Если хотите спаять намертво, то папа-папа. Если хотите съемную конструкцию, то мама-мама (берите их, проще). С датчиком СО2 при пайке будьте осторожны, рекомендую даже приобрести его с уже пропаянными пинами (папа), поскольку необходима быстрая пайка, продолжительный перегрев контактов, может привести к неработоспособности датчика. Поэтому использование пасты, канифоли или флюса — очень желательно.

    К экрану и микропроцессору в комплекте идут колодки. Там все проще, можно греть контакты, не опасаясь за выход схемы из строя.- Ну и конечно же 3D принтер для печати корпуса. Какой использовать пластик, выбирать вам, можно и PLA, можете ABS, да любой другой, не суть, нагреваться до температур плавления ничего не будет. Я в своих поделках использую rec и filamentarno. В моей истории они первыми вышли на рынок, наравне с Китайцами, когда еще жил проект reprap и которого потом вышел пикасо, собственно его то я и приобрел. Ну и эти пластики на всех моих принтаках не вызывали проблем. На тех что были, я озвучивать не стану — это их проблемы:).Для внутренних деталей использую как правило pla от обоих производителей, для корпусов использую Total от Filamentarno, он шероховатый и его не нужно обрабатывать. Если что-то будете у них брать, то используйте мой промокод плииз Y6JHUZHP, вам с него скидка, а мне монетки от ваших покупок))

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

    Все обходимые файлы выложил в репозиторий, там же программа для прошивки микроконтроллера.

    Далее скачиваем arduino ide, я использую версию 1.6.8.Заходим в настройки. В строке «Дополнительные ссылки для менеджера плат» вбиваем значение http://arduino.esp8266.com/stable/package_esp8266com_index.json и сохраняем.Далее заходим Инструменты ->Плата ->Менеджер плат. В поиске вбиваем esp8266 и устанавливаем. У меня версия 2.1.0Версии пишу, потому что скетч, который вы будете прошивать в микроконтроллер может выдать ошибку на других версиях библиотек, такое периодически происходит. Ну к примеру по причине, что у вас функции в коде описаны после основного цикла и при компиляции он эти процедуры не может обнаружить, а они на деле находятся после основного цикла. Парадигмы требований меняются, кто с этим постоянно — к такому готовы, новичкам конечно такие проблемы не нужны. Поэтому, если установите те версии, что изложены здесь, то все прошьётся.Далее в меню arduino ide Скетч -> Подкючить библиотеку -> Управлять библиотеками. Поиск blynk. От Voloymyr Shymaskyy. У меня установлена версия 0.4.6.Если хотите использовать дисплей, то необходимо скачать архив и распаковать его в папку libraries, то где у вас установлена arduino ide. Если не используете, то установить все равно придется, поскольку скетч (код программы) вшит для работы с ним. Но будет он фактически присутствовать или нет — дело ваше.https://github.com/sumotoy/TFT_ST7735/Далее все просто. Подключаете wemos d1 mini к компьютеру по micro-usb, в программе arduino ide выбираете инструменты -> Плата — находите там wemos d1 R2 & mini.Инструменты -> Порт, необходимо выбрать один единственный, который у вас будет. Инструменты -> upload speed 256000.

    Открываете скетч, это файл с расширением ino.

    Устанавливаете на смартфон приложение blynk, находите в нем свой токен и переносите его значение в скетч. В скетче есть раздел пользовательские настройки, прокрутите код программы на 20 строчек вниз.В скетче также вписываете свою wifi сеть, пароль от нее.Далее жмете прошить, Скетч -> Загрузка или ctrl+U. В начале скетча обнаружите инструкцию, как соединять проводки контроллера и датчика, а также экрана.Ну далее скачиваете STL корпуса, печатаете, собираете. Понадобится клей момент для фиксации пластины держателя микроконтроллера к обратной стороне крышки. И лицевая часть экрана также на клей. Особо красотой корпуса я не увлекался. Если у вас есть время и желание, выкладывайте более практичные варианты, с удовольствием их применю;)

    Порядок сборки корпуса привожу на картинке

    Ну и на домашку вам разобраться, как заводить значения в программе Blynk. На деле просто:)Скажу только, что значение показаний располагается на виртуальном пине V0, а управление экранчиком на Кнопке виртуального пина V1.То есть для элемента показаний вы создаете у себя в профиле blynk тип График, а для управления подстветкой экрана кнопку.Ну и дальше наблюдаете, что у вас происходит в комнате и сверяете со своим самочувствием. Через пару месяцев наблюдений, вы будете определять значение СО2 не хуже датчика! Главное это уже врезается в сознание и находится на вашем контроле, а значит ваше здоровье в ваших руках:) Напоследок скрин моего графика, я использую веб версию, это не скрин из программы blynk.

    Вывод из этого прост. Лег спать с закрытым окном, утром проснешься разбитым, проверено неоднократно. Поэтому приточка это очень важно. У меня еще в стеклопакете отверстие для 110мм трубы и розетка включает вентиляцию, если показания СО2 превышают 800 ppm, в предыдущей статье конструкцию подробно освещал.

    Для тех, кому это всё сложно, но есть желание поправить ситуацию дома, пробейте такое устройство бризер тион, возможно это вас сподвигнет на что-то. И разумеется существуют аналогичные датчики, уже собранные в корпусе и с экраном, можно просто приобрести и использовать по назначению. Ну а поскольку здесь сообщество 3D-мейкерства, думаю будет полезно проработать данный кейс, если планируете развивать направление интернет вещей. Здесь и польза и практика.И на этом наверно всё, будьте здоровы, свежего вам настроения)) Если что-то доработаете, пишите в комментариях, всем от этого польза. Пока!))

    Система контроля содержания углекислого газа на Ардуино

    Как сделать своими руками устройство, поддерживающее свежесть воздуха в квартире

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

    Но какие параметры воздуха нужно отслеживать, чтобы держать атмосферу в вашей квартире пригодной для проживания? Как оказалось, главным индикатором свежести воздуха является концентрация углекислого газа СО2, которая измеряется в ppm (1ppm = 0,0001 %)

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

    Если на улице города концентрация СО2 обычно находится в пределах 400 – 500 ppm, то в закрытом помещении в присутствии людей она может подниматься до нескольких тысяч ppm.

    При этом в ГОСТе 30494-2011 под названием «Здания жилые и общественные. Параметры микроклимата в помещениях» приемлемым для человека считается концентрация 800 – 1000 ppm. А максимально допустимой — 1400 ppm.

    Однако во многих исследованиях отмечается, что уже при концентрации углекислого газа 1000 ppm более половины испытуемых жалуются на головную боль, вялость и снижение работоспособности.

    Стало быть, наш прибор должен следить за тем, чтобы количество СО2 в комнате ни в коем случае не превышало 1000 ppm. А в идеале – находилось в пределах 600 – 700 ppm.

    Датчик для измерения концентрации СО2

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

    Я задался целью найти голый работоспособный датчик СО2 за минимальную цену, способный передавать показание на плату Ардуино и работать с ней в паре. После изучения множества отзывов, мой выбор пал на китайский датчик MH-Z19B стоимостью порядка 20 долларов, основанный на принципе недисперсионной инфракрасной спектрометрии.

    Другими словами, этот датчик измеряет поглощение света длинной волны 4 мкм, которое будет зависеть от концентрации в воздухе измеряемого газа. Запитывается он напряжением от 3,6 до 5,5 Вольта и может передавать показание на Ардуино по протоколу UART или посредством сигнала PWM.

    Неприятным для меня моментом оказалось то, что логические уровни датчика MH-Z19B рассчитаны под напряжение 3,3 V, поэтому пришлось его связывать с платой Ардуино через конвертер логических уровней по цене 0,95 доллара за 5 штук. Затраты не велики, но количество припаиваемых проводов увеличивается.

    Система контроля СО2

    Принцип работы конструируемой системы контроля содержания углекислого газа такой.

    Первый блок располагается в том месте, где вы планируете контролировать качество воздуха (в моем случае в спальне возле кровати).
    Он определяет концентрацию СО2 и по радиоканалу на частоте 2,4 гГц передает это значение второму блоку.

    В состав первого блока входят:

    Задача Второго блока – получить числовое значения концентрации СО2 по радиоканалу и в зависимости от этого значения либо включить, либо выключить вентилятор.

    В состав второго блока входят:

    Тут же имело смысл продумать способы индикации результатов измерения.
    Идеальным вариантом была бы, конечно, установка небольшого экранчика, на который выводились бы цифровые значения концентрации СО2. Но я остановился на более простом способе. Поставил три светодиода — зеленый, желтый и красный. Первый горит при концентрации СО2 в воздухе не превышающей 600 ppm, второй — 800 ppm. А красный загорается тогда, когда концентрация углекислого газа переваливает за 1000 ppm.

    Такая индикация вполне меня устраивает.

    Теперь поговорим о схемах подключения.
    Первый блок выглядит следующим образом:

    Электрическая схема второго блока такая:

    Здесь я предусмотрел кнопку, при нажатии которой вентилятор принудительно включается на заданное время. У меня на 400 секунд. А также переменный резистор, которым можно изменять пределы срабатывания вентилятора без изменения программного кода.

    Скетч для первого блока:

    #include
    SoftwareSerial swSerial(A0, A1); // RX, TX
    #include
    #include
    #include
    #include
    #define CE_PIN 9
    #define CSN_PIN 10
    const uint64_t writingPipe = 0xE8E8F0F0AALL;
    int out = 1;
    #define green 6 // Зеленый светодиод на 6 пине
    #define yellow 7// Желтый светодиод на 7 пине
    #define red 8 // Красный светодиод на 8 пине
    RF24 radio(CE_PIN, CSN_PIN);
    void setup() <
    Serial.begin(9600);
    swSerial.begin(9600);
    pinMode(green, INPUT);
    pinMode(yellow, INPUT);
    pinMode(red, INPUT);
    delay(2000);
    radio.begin();
    delay(2000);
    radio.setChannel(5);
    radio.setRetries(15,15);
    radio.setDataRate(RF24_250KBPS);
    radio.setPALevel(RF24_PA_MAX);
    radio.setAutoAck(1);
    radio.openWritingPipe(writingPipe);
    >
    void loop() <
    digitalWrite(green, LOW);
    digitalWrite(yellow, LOW);
    digitalWrite(red, LOW);
    byte measure_cmd[9] = <0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79>;
    unsigned char measure_response[9];
    int ppm = 0;
    // ***** узнаём концентрацию CO2 через UART: *****
    swSerial.write(measure_cmd,9);
    swSerial.readBytes(measure_response, 9);
    int i;
    byte crc = 0;
    for (i = 1; i = 600&&ppm 1000) < // Если ppm больше 1000ppm - зажигаем красный светодиод
    digitalWrite(red, HIGH);
    >
    delay(10000);
    >

    Скетч для второго блока:

    #include
    #include
    #include
    #include
    #include
    #define CE_PIN 9
    #define CSN_PIN 10
    const uint64_t readingPipe = 0xE8E8F0F0AALL;
    int in =1;
    RF24 radio(CE_PIN, CSN_PIN);
    #define rel 5 //Реле на 5 пине
    #define knopka 3 //Кнопка на 3 пине
    #define pot A4 //Потенциометр на пине А4
    void setup()
    <
    Serial.begin(9600);
    radio.begin();
    delay(2000);
    radio.setChannel(5);
    radio.setRetries(15,15);
    radio.setDataRate(RF24_250KBPS);
    radio.setPALevel(RF24_PA_MAX);
    radio.setAutoAck(1);
    radio.openReadingPipe(1,readingPipe);
    radio.startListening();
    MsTimer2::set(10000, chekRF); // Таймер на 10 сек
    MsTimer2::start();
    pinMode(rel, OUTPUT);
    pinMode(pot, INPUT);// пин с потенциометром — вход
    pinMode(knopka, INPUT);
    Serial.println(«Redy»);
    digitalWrite(rel, LOW);
    >
    void loop()
    <
    int buttonState = digitalRead(knopka);
    if (buttonState == HIGH) < // если нажата кнопка
    MsTimer2::stop();
    digitalWrite(rel, HIGH); // включаем вентилятор
    delay(400000);
    digitalWrite(rel, LOW); // выключаем вентилятор
    MsTimer2::start();
    >
    >
    int Sredn() <
    int y=0;
    for (int i=0; i 500+x) <
    digitalWrite(rel, HIGH);
    >
    if (in

    Реализация в «металле»

    Поскольку датчик MH-Z19B сам по себе достаточно инерционен, я не стал засовывать его в корпус первого блока, а оставил снаружи. Так он лучше омывается воздухом.

    Испытания показали, что первый блок вполне адекватно измеряет концентрацию СО2 и один раз в 10 секунд отправляет ее значение по радиоканалу. Сигнал принимается по всей квартире.
    Замечаний по работе первого блока нет.

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

    По второму блоку тоже все хорошо, за исключением одной возникшей проблемы. Поскольку для питания второго блока я использовал более дешевый преобразователь AC220 — DC5 , Ардуино и радиомодуль стали сильно греться. Хотя напряжение он выдавал – 5,1 вольт.

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

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

    Читать еще:  2N2222 транзистор характеристики и его российские аналоги
  • Ссылка на основную публикацию
    Adblock
    detector