Качество воздуха arduino

Датчик качества воздуха CCS811: инструкция по использованию и примеры

Используйте сенсор CO2 CCS811 для проверки качества воздуха в вашей квартире или офисе.

Подробности про датчики качества воздуха

Окружающий нас воздух в атмосфере состоит из:

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

Ранее для оценки качества воздуха TOVC применяли датчики CO2: сначала вычисляли концентрацию углекислого газа CO2, а далее высчитывали TVOC. Но традиционные датчики CO2 нечувствительны на курение, бытовую химию, чистящие средства, лакокрасочные материалы и другую парфюмерию.

Датчик качества воздуха CCS811 высчитывает концентрацию летучих органических веществ (TVOC), а затем только вычисляет эквивалентное значения углекислого газа (eCO2): эквивалентное, т.к. количество углекислого газа (CO2) считается расчётным путём из концентрации летучих органических веществ (TVOC).

Пример работы для Arduino и XOD

В качестве мозга для считывания показаний с датчика рассмотрим платформу из серии Arduino, например Uno.

Схема устройства

Подключите датчик качества воздуха к пинам шины I²C — SDA и SCL платформы Arduino Uno. Для коммуникации используйте выходной провод от сенсора совместно с соединительными проводами «папа-папа».

Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая надевается сверху на Arduino Uno методом бутерброда. Для коммуникации используйте выходной провод от сенсора.

Код для Arduino IDE

Для упрощения работы с датчиком скачайте и установите библиотеку Adafruit_CCS811, а затем прошейте платформу Arduino скетчем, приведённым ниже.

После загрузки скетча, в Serial-порт будет выводиться количество углекислого газа в ppm и летучих органических веществ в ppb .

Патч для XOD

Пример для Espruino

В качестве мозга для считывания показаний с датчика рассмотрим платформы из серии Espruino, например Iskra JS.

Схема устройства

Подключите датчик качества воздуха к пинам шины I²C — SDA и SCL платформы Iskra JS. Для коммуникации используйте выходной провод от сенсора совместно с соединительными проводами «папа-папа».

Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Shield, которая надевается сверху на Iskra JS методом бутерброда. Для коммуникации используйте выходной провод от сенсора.

Исходный код

Прошейте платформу Iskra JS скриптом, приведённым ниже. Для считывания данных используется библиотека для Espruino CCS811.

После загрузки скрипта, в консоль будет выводиться количество углекислого газа в ppm и летучих органических веществ в ppb .

Пример для Raspberry Pi

В качестве мозга для считывания показаний с датчика рассмотрим одноплатные компьютеры Raspberry Pi, например Raspberry Pi 4.

Схема устройства

Подключите датчик CO2 к пинам SDA и SCL шины I²C компьютера Raspberry Pi.

Для быстрой сборки и отладки устройства возьмите плату расширения Troyka Cap, которая надевается сверху на малину методом бутерброда.

Программная настройка

Исходный код

Запустите на малине скрипт, приведённый ниже.

После загрузки скрипта, в консоль малины будет выводиться количество углекислого газа в ppm и летучих органических веществ в ppb .

Элементы платы

Приоткроем занавес и заглянем на внутренности датчика, а точнее, извлечем плату с элетронными компонентами из корпуса.

Датчик качества воздуха CCS811

Датчик качества воздуха выполнен на чувствительном элементе CCS811. Структурно чип CCS811 состоит из двух основных блоков: датчика MOX (Metal Oxide Semiconductor) и встроенного микроконтроллера с АЦП, который считывает показания внутреннего MOX-сенсора и выдаёт готовые внешнему миру по шине I²C.

Выходные контакты

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

Регулятор напряжения 3V3

Линейный понижающий регулятор напряжения NCP582LSQ33 обеспечивает питание чипа CCS811 и других компонентов сенсора. Диапазон входного напряжения от 3,3 до 5 вольт. Выходное напряжение 3,3 В с максимальным выходным током 150 мА.

Преобразователь логических уровней

Преобразователь логических уровней PCA9306 необходим для сопряжения датчика с разными напряжениями логических уровней от 3,3 до 5 вольт. Другими словами сенсор совместим как с 3,3 вольтовыми платами, например, Raspberry Pi, так и с 5 вольтовыми — Arduino Uno.

Смена адреса модуля

Иногда в проекте необходимо использовать несколько сенсоров. Для смена адреса капните каплей припоя на отведённую контактную площадку на обратной стороне модуля. После чего адрес датчика сменится с 0x5A на 0x5B .

Источник

Анализатор качества воздуха на CCS811 и Arduino

Автор: Сергей · Опубликовано 27.08.2022 · Обновлено 26.08.2022

В этой статье расскажу расскажу как с помощью датчика качества воздуха CCS811 и OLED дисплея сделать небольшой анализатор качества воздуха, в качестве контроллера будем использовать Arduino UNO.

Необходимые детали:
► Контроллер Arduino UNO R3 x 1 шт.
► Провода DuPont, 2,54 мм, 20 см x 1 шт.
► Датчик качества воздуха CCS811, CO2, TVOC x 1 шт. x 1 шт.
► OLED-дисплей 0.96, 128х64, I2C, SSD1306 x 1 шт.

Описание:
В данном примере с помощью контроллера Arduino UNO будем считывать показания с датчика CCS811, полученные данные (CO2 и TVOC) отобразим на на OLED дисплеи, так же будем дублировать данные в последовательный монитор.

Подключение:
Подключаем контакты VCC и GND от датчика CCS811 к контактам 3.3 В и GND на Arduino UNO (не подключайте к 5 В, в противном случаи модуль сгорит). Далее, подключаем контакты SDA и SCL датчика к контактам A4 и A5 соответственно, не забываем подключить вывод WAKE к GND. Теперь осталось подключить OLED дисплей, контакты VCC, GND, SDA, SCL подключаем к контактам 3.3 В, GND, A4 и A5. Для удобства приведу схему подключения.

Установка библиотек:
Для работы с дисплеем и датчиком необходимо установить две библиотеки «SparkFun CCS811 Arduino library» и «u8g2«, скачать их можно в программе, для этого перейдите в Скетч —> Подключить библиотеку —> Управление библиотеками.

В строке поиска введите «CCS811», найдите библиотеку «SparkFun CCS811 Arduino library» и установите данную библиотеку.

Затем, в строке поиска вводим «u8g2«, найдите библиотеку «u8g2 by oliver» и установите ее.

Программа:
Теперь, у нас все готово, копируем скетч в Arduino IDE или скачайте готовый файл и загружаем его в Arduino UNO.

Источник

Ещё один способ определения качества воздуха на Arduino — с передачей данных в сеть

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

Если вам интересно, зачем вообще измерять СО2, то полезные ссылки вы можете найти в конце поста.

Итак, наша цель — сделать датчик температуры, влажности и СО2 с отображением данных на дисплей и отсылкой на веб сервер. Что нам для этого понадобится:

Компоненты

1. Ардуино. Я взял Wemos D1, Arduino совместимую плату, основанную на микроконтроллере ESP-8266EX. Wemos совместим с ардуино IDE, у него есть свой Wi-Fi, и стоит он 6.3$.

2. Датчик СО2. Ранее я пробовал обычный MQ-135, но даже после прожига, калибровки и учёта поправок на температуру и влажность погрешности был довольно заметные — около 300 ppm. Так что для гарантии точных измерений я взял MH-Z19 — самый дорогой компонент схемы, 27$.

3. Датчик температуры и влажности. Использовал стандартный и любимый всеми DHT11 за 1.44$. В комментариях подсказывают, что лучше брать DHT22, но для схемы и стоимости это не принципиально:

4. I2C совместимый дисплей. Я взял самый дешёвый hd44780 за 3.06$.

5. Чтобы это выглядело не очень ужасно, и было перемещаемо, так же неплохо иметь корпус. Чтобы не заморачиваться с выпиливанием, я взял корпус за 8$ с дырками и креплениям под usb и дисплей. Внимание — в корпусе должны быть дырки для проветривания, иначе он будет измерять только свою особую атмосферу.

6. Отладочный USB кабель и около 10 проводков. Цену учитывать не буду.

Итоговая стоимость — 44 доллара, если брать на алиэкспресс. Аналогичные устройства без возможности что-то передавать в сеть сейчас стоят у китайцев в районе 100$. Аналог от Tion, которые в количестве делают свои посты на гиктаймс с рекламой бризеров, пока в разработке (не имею к ним отношения, а жаль).

Заказал, обождал месяц — приступаем к сборке! Нет ничего проще.

Сборка

1. Подключаем датчик температуры и влажности. Земля к земле, прах к праху, плюс к пяти вольтам на ардуино, цифровой выход к цифровому выходу (я использовал D5).

2. Подключаем датчик СО2. У него есть богатый выбор интерфейсов — PWM, аналоговый и цифровой вывод. Единственный элемент пайки — надо приделать ножки на нужные выходы. Проверял лично — работают все. Остановился на получении цифровых данных — точно, красиво, лаконично, и так же есть возможность отсылать команды на калибровку, что мне впрочем не потребовалось. Опять же — земля к земле, плюс к другим пяти вольтам, TX и RX выводы на цифровые пины — в моём случае, на D6 и D7.

3. Подключаем дисплей. И снова — земля к земле, плюс на последний оставшийся выход на пять вольт, SDA на дисплее к SDA на ардуино, SCL так же к SCL.

И… Всё! Можно закручивать получившееся добро в корпус, если вы конечно не умудрились сделать какую-нибудь ошибку при подключении. Обратите внимание, чтобы у датчика СО2 не оказались прижаты воздухозаборники (или как это корректнее назвать, белые такие штуки). Как бонус, при сборке в корпусе значительно уменьшаются отклонения в измерении.

Прошивка

Отлично, нам осталось “только” написать софт. В ссылках ниже есть репозиторий на гитхабе, который можно просто залить и использовать. Единственный тонкий момент — у вашего дисплея может оказаться другой адрес. Воспользуйтесь мини программой из ссылок для сканирования адресов i2c и поменяйте на нужный, если сразу не заработает. Перед сканированием отключите остальные устройства, иначе можно получить много мусора.

Да, Wemos D1 является совместимым с Arduino, и вам нужно просто добавить в Arduino IDE соответствующую борду. Подключаем стандартным коротким кабелем по micro USB и заливаем прошивку. Если вы всё сделали верно, то устройство сначала постарается подключиться к Wi-Fi (сеть и пароль берётся из файла настроек), затем ждёт некоторое время для “разогрева” датчиков, и наконец покажет данные на дисплее. Если по сети данные отправить не получится, то будет об этом сообщать. Если уровень CO2 допустимый, то после загрузки подсветка выключится, и включится только если вам пора открыть форточку.

Результат

У меня это выглядит так (осторожно, трафик):

А как же сеть?

Теперь насчёт работы с сетью. Не мудрствуя лукаво, я собираю данные в JSON и отсылаю его на сервер обычным POST запросом, где простой скрипт на PHP кладёт его в MySQL базу. Далее можно посмотреть, как изменялись ваши условия жизни в течении дня при помощи PHP и Google Charts — вся серверная часть тоже есть в ссылках.

В итоге по смешной цене, с нулевыми знаниями в электротехнике и с минимальными затратами времени мы может получить примерно такие симпатичные графики:
Осторожно, трафик

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

Да, показания я сравнивал с вот таким китайским датчиком Green Life — показания практически идентичные, только мой немного быстрее реагирует на изменение обстановки:

Выводы

Конечно, многое можно было бы сделать лучше. Навскидку я вижу следующие минусы:

  1. Дисплей с выключенной обладает очень низкой контрастностью. Лучше брать другой, разорившись ещё центов на 10.
  2. При включенной подсветке экран немного мерцает. Не критично, но видимо не нравится ему, что от ардуины запитывается сразу три устройства на пять вольт. Вероятно, правильно было бы сделать раздельное питание.
  3. Конечно, всё это можно красиво спаять, а не просто покидать в коробку, кое как соединив.
  4. Датчик температуры и влажности иногда возвращает левые огромные значения. Их я просто отсекаю, но вообще неприятно. Возможно, сказывается общая запитка или некачественное соединение.
  5. Конечно, можно было бы накапливать статистику и периодически её отсылать (и накапливать в случае ошибок) — никому не нужно знать своё качество воздуха с точностью до 5 секунд.
  6. Чтобы не вбивать данные вайфайной точки при компиляции, можно было бы сделать, чтобы в случае, если коннект не удался, устройство переходило в режим вайфай точки (да, Wemos это умеет), подцепившись к которой, можно его перенастроить — в том числе ввести новое имя сети и пароль.
  7. Wemos D1 всем хорош, но у меня иногда вылетает (раз в 2-3 дня) по неизвестным причинам, и сам перегружается только через несколько часов. Вроде как не мой софт кривой, просто борда не очень стабильная. Можно с этим бороться подключением устройства к какой-нибудь ардуино нано, которая его перезапускает при необходимости, или просто поставить железку с таймером, которая будет раз в полчаса перезапускать устройство (благо у него есть вход RESET).
  8. При выдёргивании и возврате обратно питания, датчик СО2 сходит с ума, что лечится перезагрузкой. Я это решил простым способом — при накоплении некоторого количества непрерывных ошибок, устройство само себя перезапускает, после чего всё приходит в норму. Вероятно, можно было бы решить это более правильным способом на уровне железа.
  9. Температура измеряется с точностью до двух градусов, влажность — с точностью до десяти процентов. В бытовых целях достаточно, а для какого-то другого использования понадобится датчик поточнее.
  10. Если вам требуется отправить один небольшой пакет данных, то библиотека для работы с JSON это убийство воробьёв из пушки. Гораздо проще собрать JSON ручками, или вообще передавать параметры при помощи GET/POST, что я вначале и делал. Но при наличии огромного количества оперативки на Wemos — почему нет, так красивее. Но при портировании кода на маломощную ардуину скорее всего придётся переписать это.
  11. В текущей реализации нет управления яркостью подсветки — она может быть только включена и выключена. Можно убрать перемычку и поставить вместо неё сопротивление или ввести на ардуино — тогда вы сможете управлять яркостью подсветки.
  12. Так же можно сделать управление или получение информации при помощи приложения. Самый простой способ, как ни смешно — добавить телеграмм бота — библиотека для связи ардуино через телеграмм уже есть.

Что дальше

А дальше я хочу отдохнуть от рабочих будней и поиграть с друзьями в лазертаг. Одна проблема — стоит игра от 500 рублей в час на человека. Это при полном отсутствии расходников. А купить комплект для игры будет стоит каких-то совсем заоблачных денег — примерно от 8000. Так что для того, чтобы поиграть в лазертаг, надо сначала его собрать. Планирую сделать что-то вроде Skirmos — где каких-то денег будет стоит только сам ствол, который должен быть довольно прочным. Интересно? Следите за публикациями! А что вы делаете на Arduino?

Ссылки

Основное

  1. Код для ардуино
  2. Серверная часть
  3. Посмотреть на воздух в моём офисе можно тут
  4. Взять меня на работу (да, я её ищу) можно тут

Источник

Adblock
detector