Ещё один способ определения качества воздуха на 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 — показания практически идентичные, только мой немного быстрее реагирует на изменение обстановки:
Выводы
Конечно, многое можно было бы сделать лучше. Навскидку я вижу следующие минусы:
- Дисплей с выключенной обладает очень низкой контрастностью. Лучше брать другой, разорившись ещё центов на 10.
- При включенной подсветке экран немного мерцает. Не критично, но видимо не нравится ему, что от ардуины запитывается сразу три устройства на пять вольт. Вероятно, правильно было бы сделать раздельное питание.
- Конечно, всё это можно красиво спаять, а не просто покидать в коробку, кое как соединив.
- Датчик температуры и влажности иногда возвращает левые огромные значения. Их я просто отсекаю, но вообще неприятно. Возможно, сказывается общая запитка или некачественное соединение.
- Конечно, можно было бы накапливать статистику и периодически её отсылать (и накапливать в случае ошибок) — никому не нужно знать своё качество воздуха с точностью до 5 секунд.
- Чтобы не вбивать данные вайфайной точки при компиляции, можно было бы сделать, чтобы в случае, если коннект не удался, устройство переходило в режим вайфай точки (да, Wemos это умеет), подцепившись к которой, можно его перенастроить — в том числе ввести новое имя сети и пароль.
- Wemos D1 всем хорош, но у меня иногда вылетает (раз в 2-3 дня) по неизвестным причинам, и сам перегружается только через несколько часов. Вроде как не мой софт кривой, просто борда не очень стабильная. Можно с этим бороться подключением устройства к какой-нибудь ардуино нано, которая его перезапускает при необходимости, или просто поставить железку с таймером, которая будет раз в полчаса перезапускать устройство (благо у него есть вход RESET).
- При выдёргивании и возврате обратно питания, датчик СО2 сходит с ума, что лечится перезагрузкой. Я это решил простым способом — при накоплении некоторого количества непрерывных ошибок, устройство само себя перезапускает, после чего всё приходит в норму. Вероятно, можно было бы решить это более правильным способом на уровне железа.
- Температура измеряется с точностью до двух градусов, влажность — с точностью до десяти процентов. В бытовых целях достаточно, а для какого-то другого использования понадобится датчик поточнее.
- Если вам требуется отправить один небольшой пакет данных, то библиотека для работы с JSON это убийство воробьёв из пушки. Гораздо проще собрать JSON ручками, или вообще передавать параметры при помощи GET/POST, что я вначале и делал. Но при наличии огромного количества оперативки на Wemos — почему нет, так красивее. Но при портировании кода на маломощную ардуину скорее всего придётся переписать это.
- В текущей реализации нет управления яркостью подсветки — она может быть только включена и выключена. Можно убрать перемычку и поставить вместо неё сопротивление или ввести на ардуино — тогда вы сможете управлять яркостью подсветки.
- Так же можно сделать управление или получение информации при помощи приложения. Самый простой способ, как ни смешно — добавить телеграмм бота — библиотека для связи ардуино через телеграмм уже есть.
Что дальше
А дальше я хочу отдохнуть от рабочих будней и поиграть с друзьями в лазертаг. Одна проблема — стоит игра от 500 рублей в час на человека. Это при полном отсутствии расходников. А купить комплект для игры будет стоит каких-то совсем заоблачных денег — примерно от 8000. Так что для того, чтобы поиграть в лазертаг, надо сначала его собрать. Планирую сделать что-то вроде Skirmos — где каких-то денег будет стоит только сам ствол, который должен быть довольно прочным. Интересно? Следите за публикациями! А что вы делаете на Arduino?
Ссылки
Основное
- Код для ардуино
- Серверная часть
- Посмотреть на воздух в моём офисе можно тут
- Взять меня на работу (да, я её ищу) можно тут
Arduino.ru
Датчики Водорода Кислорода Воды
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
1.Датчики воды вижу два решения
1.1.Поплавковые с магнитами качающиейся возле геркона/магниточувствительной микросхемы.
Плюсы. Есть промышленные дешевые доступные. Код в микропроцессоре простой и быстрый.
Минусы.Крупные для милиметровых полостей.
Плюсы.Можно дешево изготавливать вместе с деталями.
Минусы.Код требуется иметь сложный с противодребезгом (include «buonce.h» и т.д.) Подвержен коррозии.
2.Датчики кислорода.
2.1.Ничего в голову не приходит кроме автомобильногь датчика кислорода.
Плюсы: Есть промышленного автомобильного исполнения.
Минусы: Требуется сложная аналоговая схема поддержания рабочей температуры. Накал 12в ток 1а. И т.д. Если пытаться повторять условия выпускного коллектора автомобиля.
3.Датчик водорода.
Я вообще тут пасс. Не прорабатывал тему.
Подозреваю, что эту тему по датчикам уже прорабатывали. Китайцы что-то непонятное продают для ардуин. Может кто-то подскажет куда копать?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Посмотрите полупроводниковые датчики MQ-xxx. MQ-8 для водорода вроде, нужно уточнять.
Вот на Али нашел набор датчиков для Ардуино. Правда продавец мутный, не советую, ссылка просто для примера.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
2 На оптимально подобранной электрохимической паре на интересуем вольтамперном участке что-то замерили.
3.Самый правильный случай: Операционным Усилителем и Компаратором выдали единицу о превышении какого-нибудь уровня.
Врукопашную оцифровывать аналоговый датчик без поверки иснтрументальными методами — это все от лукавого?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
На тех вариантах, что я приводил ссылки выше, уже готовые модули для Ардуино.
Выводы обозначены аналоговый и цифровой, цифровой думаю настроен на определнный порог срабатывания, а аналоговый выводит текущее значение, а обрабатываете Вы его программно сами. Пример с MQ-2, еще один. Я себе в корзину добавил пару, праздники у них закончатся, куплю, хочу вентилятор сделать в туалет, курит кто то из соседей, натягивает в вентиляцию.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Теперь вопрос конкретный:
Водород H2 : Кто-нибудь с MQ-8 c ОУ+компаратор датчиком работал? Это платина и золото подогретое похоже.
Кислород O2 : Неужели надо разогреть платину до 300 градусов, чтобы что-то почувствовать? Попроще нет ничего?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
art100 , рад, давно Ваших постов тут не видел. А поделитесь пожалуйста, что это будет (использование датчика водорода интригует, цеппелины на ум приходят) ?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
art100 , рад, давно Ваших постов тут не видел. А поделитесь пожалуйста, что это будет (использование датчика водорода интригует, цеппелины на ум приходят) ?
Я смею предположить, это дополнительная схема подачи смеси для горения в какой либо котел обогрева (горелки), путём добычи водорода и кислорода гидролизным путём. А датчики водорода для контроля, чтобы вместо дома не получилась воронка :)
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Рад тоже вас видеть. Тепло. Как думаешь. Все электрохимические пары похоже в разных вариантах перегретые золото/платина/еще какая-нибудь хрень. Я несколько обескуражен датчиками ксилорода. Ну понятно. Платину раскалил. Перменкой тряси. И смотри как перемнка просаживается и не очень. Похоже все автомобильные датчики кислорода это датчики кислорода (торговые идиоты как всегда пишут всякую дурь лямда-шмяда альфа бета гамма синук косинус тангес) Датчик давления просто и аналогово точно в трубке даст количество. А вот если там не газ нужный, а гадость? Ну допустим гидролизом получаем газ Брауна. Это если дисцилированная чистенькая от нержавеки то две молекулы водорода сразу в одну слипнется и две молекулы кислорода аналогично. Но реальность такова. Вода из-под крана. Электроды из железа из мусорки. Газ пенится. Все рыжее. Жаренными микробами пахнет. Верно старики писали «Грязный газ». Значит всякими способами хочется хоть какой-нибудь контроль иметь. С датчиком водорода как бы понятно. Отдал 5 баксов. Дырку проковырял. Сеточку вовнутрь сунул. Единичка допустим выскочила или не выскочила в неком обьеме.. С кислородом засада. Это сколько такой хрени надо обложить эту автомобильну «лямду» чтобы она что-то показала. С водой и -то вроде проще. Водпроводный поплавок с проводом в дырку всунул. С температурой понятно. Датчик готовый к корпусу прилепил. С кислородом я в непонятках. Ты помнится воевал с «пуками». На чем остановлился?