Как собрать простой и точный датчик CO2 в домашних условиях. Какие компоненты потребуются для самодельного измерителя углекислого газа. Как запрограммировать и настроить устройство для измерения уровня CO2 в помещении.
Необходимые компоненты для самодельного датчика CO2
Чтобы собрать простой и функциональный датчик углекислого газа своими руками, потребуются следующие компоненты:
- Микроконтроллер Arduino Uno или аналогичный
- Датчик CO2 MH-Z19 или аналогичный
- ЖК-дисплей 16×2 символов
- Соединительные провода
- Макетная плата
- Резисторы 220 Ом — 2 шт
- Потенциометр 10 кОм
- Корпус для устройства
Датчик MH-Z19 является одним из наиболее доступных и точных сенсоров CO2 для любительских проектов. Он имеет диапазон измерения 0-5000 ppm, что вполне достаточно для мониторинга уровня углекислого газа в помещении.
Схема подключения компонентов датчика CO2
Подключение компонентов осуществляется по следующей схеме:
- Датчик CO2 MH-Z19 подключается к Arduino по интерфейсу UART:
- VCC датчика — к 5V Arduino
- GND датчика — к GND Arduino
- TX датчика — к пину 2 Arduino
- RX датчика — к пину 3 Arduino
- ЖК-дисплей подключается к Arduino:
- VSS — к GND
- VDD — к 5V
- V0 — к потенциометру
- RS — к пину 7
- RW — к GND
- E — к пину 6
- D4-D7 — к пинам 5, 4, 3, 2 соответственно
Потенциометр используется для регулировки контрастности ЖК-дисплея. Его средний вывод подключается к V0 дисплея, а крайние — к 5V и GND.
Программирование микроконтроллера Arduino
Для программирования Arduino потребуется установить среду разработки Arduino IDE. Код для считывания данных с датчика CO2 и вывода на дисплей может выглядеть следующим образом:
«`cpp #includeЭтот код инициализирует подключение к датчику CO2 по UART, настраивает ЖК-дисплей и в бесконечном цикле считывает данные с датчика и выводит их на экран каждые 5 секунд.
Калибровка и настройка датчика CO2
Для корректной работы датчик MH-Z19 требует калибровки. Существует два способа калибровки:
- Автокалибровка — датчик самостоятельно калибруется в течение 24 часов непрерывной работы, принимая минимальное измеренное значение за 400 ppm.
- Ручная калибровка — датчик помещается на свежий воздух (около 400 ppm CO2) на 20 минут, после чего подается специальная команда калибровки.
Для повышения точности измерений рекомендуется проводить калибровку датчика раз в несколько месяцев.
Сборка устройства в корпус
Для защиты электроники и удобства использования рекомендуется поместить собранное устройство в подходящий корпус. Можно использовать готовый пластиковый корпус подходящего размера или распечатать корпус на 3D-принтере.
При размещении компонентов в корпусе важно обеспечить:
- Свободный доступ воздуха к сенсору CO2
- Хорошую видимость ЖК-дисплея
- Доступ к разъему питания Arduino
- Вентиляционные отверстия для предотвращения перегрева
Тестирование и использование самодельного датчика CO2
После сборки устройства необходимо провести его тестирование и калибровку. Для этого:
- Включите устройство и дайте ему прогреться в течение 15-20 минут
- Проведите измерения в помещении с хорошей вентиляцией (около 400-500 ppm)
- Измерьте уровень CO2 в помещении с плохой вентиляцией (более 1000 ppm)
- Сравните показания с профессиональным прибором, если есть возможность
При правильной сборке и калибровке самодельный датчик CO2 должен показывать значения с точностью ±50 ppm в диапазоне 400-2000 ppm.
Преимущества самодельного датчика CO2
Создание собственного измерителя углекислого газа имеет ряд преимуществ:
- Низкая стоимость по сравнению с готовыми приборами
- Возможность кастомизации и добавления новых функций
- Получение практических навыков в электронике и программировании
- Полный контроль над устройством и его данными
Самодельный датчик CO2 позволяет эффективно контролировать качество воздуха в помещении и своевременно принимать меры по улучшению вентиляции.
Возможные улучшения самодельного датчика CO2
Базовую версию устройства можно дополнить различными функциями для повышения его удобства и функциональности:
- Добавление Wi-Fi модуля для передачи данных на смартфон или в облако
- Установка дополнительных датчиков температуры и влажности
- Добавление звуковой или световой сигнализации при превышении порога CO2
- Создание графического интерфейса для отображения графиков и статистики
- Интеграция с системами умного дома для автоматического управления вентиляцией
Эти улучшения позволят создать более функциональное устройство, способное не только измерять уровень CO2, но и активно участвовать в поддержании здорового микроклимата в помещении.
Заключение
Создание самодельного датчика CO2 — это увлекательный проект, позволяющий получить полезное устройство для мониторинга качества воздуха. Следуя пошаговой инструкции, даже начинающий электронщик сможет собрать работоспособный прибор. Самостоятельная сборка не только экономит средства, но и дает возможность глубже понять принципы работы подобных устройств.
Управляем вентиляцией с помощью детектора углекислого газа MT8057
Управляем вентиляцией с помощью детектора углекислого газа MT8057
Управляем вентиляцией с помощью детектора углекислого газа MT8057
Управление вентиляцией с помощью детектора углекислого газа MT8057 своими руками. Многие пользователи популярного детектора углекислого газа (CO2) MT8057 задают нам вопросы о том, как реализовать с помощью данного детектора управление приточной или вытяжной вентиляцией. Просмотрев наш ассортимент, мы нашли устройство, с помощью которого и хотим предложить решение данной задачи.
https://masterkit.ru/blog/articles/upravlyaem-ventilyatsiej-s-pomoshchyu-detektora-uglekislogo-gaza-mt8057
Многие пользователи популярного детектора углекислого газа (CO2) MT8057S задают нам вопросы о том, как реализовать с помощью данного детектора управление приточной или вытяжной вентиляцией. Просмотрев наш ассортимент, мы нашли устройство, с помощью которого и хотим предложить решение данной задачи.
Внешний вид детектора можно увидеть на рис. 1.
Рис. 1
В качестве силового элемента управления вентилятором был выбран модуль MP515. Внешний вид модуля можно увидеть на рис. 2
Рис. 2
MT8057 представляет собой точный прибор, для измерения в составе воздуха концентрации CO2. Прибор оснащен жидкокристаллическим дисплеем, для точного контроля и тремя индикаторами, для оперативного контроля концентрации углекислого газа. В качестве приятного дополнения прибор показывает состояние температуры в месте его установки. При необходимости, с помощью кнопок управления можно изменить включение индикации оперативного контроля.
MP515 представляет собой силовое реле с электронным ключом. Модуль предназначен для управления силовыми электроприборами до 2000 Вт от слаботочных выходов различных датчиков и устройств управления, обеспечивая гальваническую развязку от электроприбора. Для управления модулем необходимо напряжение от 1В до 5В, которое можно получить от головного устройства. В модуле предусмотрено место для установки беспроводного приемника MK324 диапазона 433 МГц. Питать модуль можно как от источника напряжением +5В, например PW0512, так и от USB порта ПК или адаптера зарядки смартфона или телефона.
Для подключения силового реле нам потребуется разобрать MT8057. Для этого, необходимо с помощью маленькой отвертки отогнуть защелки в пазах корпуса датчика рис. 3.
Рис. 3
Затем открутите три винта и отсоедините трубку забора воздуха рис. 4.
Рис. 4
Теперь извлеките плату и расположите ее индикацией на себя. Затем необходимо будет припаять один из трех проводов к крайнему резистору RledR, ограничивающего ток красного светодиода с надписью LedR, рис. 5.
Рис. 5
Второй провод подпаиваем к выводу кнопки ModeKey подключенной к общей шине платы. Третий вывод подпаиваем к среднему контакту элемента THRO, рис. 6.
Рис. 6
На данный вывод приходит напряжение питания +5В. Это напряжение нам необходимо для питания силового модуля MP515. Собственно говоря, такое подключение нам позволит питать всю схему как с microUSB входа самого датчика, так и с miniUSB входа силового модуля. Это будет полезно при инсталляции данной схемы.
Схему подключения вентилятора к силовому реле можно увидеть на рис. 7
Рис. 7
При необходимости ручного управления приточной вентиляцией, совместно с силовым модулем, можно применить комплект беспроводного управления MK324, рис. 8.
MK324 представляет собой комплект из четырех канального передатчика и приемника, диапазона 433 МГц. Питание пульта осуществляется от 12В элемента питания, серии 23А. Время работы от одного элемента не менее 1 года. Приемник рассчитан на напряжение питания 5В. Дальность работы комплекта составляет 30м. Этого вполне достаточно для применения в условиях частного дома или квартиры. Так как в беспроводном модуле будет задействован только один канала управления, то свободные можно задействовать для управления освещения или других электроприборов.
Рис. 8
Данный комплект без особых усилий устанавливается на штатное место, предусмотренное в силовом реле MP515. После такой несложной модификации, появится возможность принудительно включать приточную вентиляцию при желтой индикации датчика СО2.
Вариант установки вентилятора, приточной вентиляции, можно увидеть на рис. 9.
Рис. 9
Видео работы системы в сборе можно увидеть тут:
Свежего вам воздуха!
Рассказ о том как маленький датчик углекислого газа(co2) MH-Z19, расширил мое понимание об окружающем мире
Все началось с того что я работаю в офисе, где как водится нет нормальной вентиляции, зато есть много народу половине которого все время жарко, а второй половине отчаянно дует.
Понятно что одного термометра для контроля воздуха в помещении недостаточно. Даже с кондиционером часто бывает прохладно, но душно. Спертый воздух. Оказалось на это больше всего влияет концентрация со2. Когда я узнал стоимость готовых приборов хотел от этой идеи отказаться. Но случайно попал на обзор оптического датчика концентрации со2. Цена конечно тоже не маленькая, но все-таки близко к разумным пределам. И руки давно чесались по паяльнику. В качестве контролера использовать решил ESP8266. Во первых дешево, во вторых что бы передавать информацию на компьютер, свой и любого желающего в комнате. После того как собрал и оттестировал первый вариант, решил добавить экран. Во первых это красиво:) Во вторых во многих случаях удобно.
Устройство построено на модуле ESP8266 NodeMcu Lua wi-fi
Сперва я подключил датчики температуры, в комнате и на улице. ds18b20
Затем собственно датчик углекислого газа. MH-Z19
И под конец дисплей
написал вот такую программу под винды
Тут все необходимое для прошивки скриптов
Исходники windows программы
После того как я вставил прибор в корпус он начал тупить, так как воздух слабо проникал внутрь. Что бы он поживее реагировал на окружающую атмосферу, я вставил бушный вентилятор от какой-то простенькой видеокарты. Он 12 вольтовый и при подключении к 5 вольтам крутиться медленно и печально, но это именно то что в данном случае требовалось.
А теперь собственно впечатления.
Прибор оказался намного полезней и интереснее чем я ожидал. Во первых больше нет проблем с проветриванием, никто не возмущается, так как у всех выскакивает предупреждение и они довольно хорошо согласуются с личными ощущениями.
Ну и просто наблюдения показали что в солнечный день уровень со2 значительно ниже чем в пасмурный и дождливый, утром загрязненность воздуха выше чем днем. С первого взгляда можно понять что делать, проветривать, если зашкаливает со2, или включить кондиционер, если повышенная температура. Датчик температуры на улице хорошо показывает получится ли охладить проветриванием, или только кондиционер. Стало очевидным и понятным, что творится в комнате и как в этом жить. И дома прибор оказался очень полезным, особенно в детской комнате, тем более что за показаниями можно следить удаленно через WiFi.
В результате получилось что-то вроде:
Тут видно сам прибор с экраном и программа на компьютере которая принимает информацию через WIFI.
Дополнение про датчик.
Почему именно такой датчик?
Есть дешевый MQ-135. Но я не встретил в откликах ни одного доброго слова об этом датчике. Он реагирует на все подряд, температуру, влажность, питание. Напротив датчики аналогичной конструкции какой применил я используются везе в том числе в профессиональной аппаратуре.
Тут описан принцип работы датчика. Называется «инфракрасный оптический анализ» capnography.narod.ru/princips.html
Что касается ШИМ и UART. Я изначально решил использовать ШИМ так как это было удобнее в данной конструкции, решил попробовать, и если бы результат был не удовлетворительный, переделал бы на UART. По факту оказалось что ШИМ ничем не уступает. Точный надежный, ни каких плясок и сбоев. Так и оставил.
Тут можно прочитать про со2. Зачем его измерять? И как это влияет на наше самочувствие. www.pvsm.ru/moskva/108944
Есть идея заказать в Китае плату
Вот думаю заказать в Китае плату с разъемами.
Что бы даже ничего паять не надо было.
В готовую плату втыкаешь ESP8266, датчик со2, дисплей, датчик температуры ds18b20, отдельно разъем будет на внешний датчик.
Как относитесь к такой идее?
Авторское право
Идеи и технологии описанные в данном материале, а так же все программное обеспечение. Может быть использовано без согласия автора только для личных целей.
Любое, другое коммерческое, или не коммерческое изготовление, или распространение данных материалов и устройств, возможно только по согласованию с автором.
[email protected]
Таким получается готовое изделие
Последняя реинкарнация данного прибора
youtube.com/embed/pGgjSQSaXNw?autoplay=0&hl=ru_RU&rel=0″ frameborder=»0″ allowfullscreen=»»>Обратите внимание чихаю и кашляю в кадре не я. Это сам прибор при превышении нормы СО2 чихает, а если уровень становится опасным кашляет.
Мой сайт на котором можно получить дополнительную информацию.
Собираю желающих для заказа готовых плат
Как собрать самодельный измеритель CO2 с Arduino
В этом руководстве мы покажем вам, как сделать настольный измеритель CO2 с помощью встроенного датчика углекислого газа EZO-CO2™, подключенного к Arduino Uno. Показания в режиме реального времени будут отображаться на жидкокристаллическом дисплее (ЖКД) в формате PPM. И датчик, и дисплей подключены к Arduino через I2C.
Примечание
Это устройство было разработано и протестировано с использованием компьютера с ОС Windows. Это не было проверено на Mac.
Этот датчик CO2 предназначен только для газообразного CO2, не погружать в воду!
Необходимые предметы
Прежде чем мы начнем, подготовьте следующие предметы
- 1x Arduino Uno
- 1 встроенный датчик углекислого газа Atlas Scientific EZO-CO2™
- 1 сенсорный мост Atlas Scientific
- ЖК-модуль 1x16x2
- 1 рюкзак Adafruit i2c/SPI с ЖК-дисплеем
- 1x 158 x 90 x 60 мм корпус
- 1x USB-кабель, тип A – B, вилка/вилка
- 1 блок питания 12 В
- 4 перемычки «папа-мама»
- 4 перемычки «папа-папа»
- 3 стойки 11 мм с винтами
Ниже приведен список инструментов, которые мы использовали для этого урока. Вам не обязательно иметь ВСЕ эти инструменты, хотя они значительно ускорят процесс.
- Сверлильный станок
- (1/4″, 7/64″) сверла
- (1″ 1/16″) кольцевая фреза
- Фрезерный станок
- (1/8″) концевая фреза
- Паяльник и припой
- Ручные файлы
- Крестообразная отвертка
- Суппорт
- Линейка
- Малярная лента
- Маркер Sharpie
Безопасность. Не забывайте соблюдать осторожность при обращении с инструментами/механизмами и надевайте соответствующие средства защиты, такие как очки, перчатки и респираторы.
Отверстие для ЖК-дисплеяa) ЖК-дисплей расположен в верхней части корпуса. Накройте поверхность малярным скотчем и разместите на нем прямоугольник (71 x 24 мм).
b) Используя концевую фрезу 1/8″, отрежьте внутреннюю часть нарисованного прямоугольника как можно ближе к линии.
c) С помощью ручного напильника удалите лишний материал и придайте отверстию необходимый размер.
Отверстия для USB-порта Arduino и разъема питанияa) Заклейте одну из длинных сторон нижней части корпуса малярной лентой. Отметьте места для USB и разъема питания.
b) Концевой фрезой 1/8″ отрежьте по контуру двух прямоугольников.
c) С помощью ручного напильника удалите лишний материал и придайте отверстию необходимый размер.
Отверстие для датчика CO2a) На той же стороне, что и порты Arduino, отметьте место для датчика CO2 и просверлите направляющее отверстие (1/4″).
b) С помощью кольцевой фрезы (1″ 1/16″) вырежьте отверстие для датчика CO2.
Отверстия для стоекa) Отметьте места для трех стоек 11 мм.
b) Используйте сверло (7/64″) для просверливания отверстий.
Теперь, когда корпус готов, давайте перейдем к
2. Припаяйте рюкзак I2C к дисплею
Поскольку рюкзак I2C является отдельным компонентом, припаяйте его к контактам ЖК-дисплея, как показано ниже.
3. Установите датчик CO2 в режим I2C
По умолчанию датчик CO2 работает в режиме UART. Вам нужно будет установить его в режим I2C с адресом по умолчанию 105 для этого проекта.
Информацию об изменении режимов см. в техническом описании.
4. Установка и подключение компонентов в корпусе
a) Прикрепите три стойки 11 мм.
b) Установите плату Arduino на место и закрепите ее на стойках с помощью винтов.
c) Добавьте сенсорный мост и закрепите его винтом.
d) Подсоедините сенсорный мост к Arduino с помощью перемычек типа «папа-папа», как показано на схеме подключения.
e) Затем установите датчик CO2 с помощью контргайки (3/4″ NPT) и уплотнительного кольца и подключите кабель данных к перемычке датчика. Обязательно совместите белый и синий провода кабеля передачи данных с соответствующими метками на мосту.
f) Вставьте ЖК-дисплей в крышку корпуса. (Вы можете использовать немного горячего клея, чтобы закрепить его на месте).
g) Подсоедините ЖК-дисплей к сенсорному мосту с помощью перемычек между штекерами и розетками, следуя схеме подключения.
h) С помощью USB-кабеля A – B «папа/папа» подключите Arduino Uno к компьютеру и откройте программу Arduino IDE. Пришло время перенести код на Arduino.
Убедитесь, что ваши библиотеки Arduino IDE обновлены
Добавьте библиотеку EZO I2C
Чтобы загрузить файл библиотеки Ezo_I2c, нажмите ЗДЕСЬ.
Нажмите зеленую кнопку «Код», затем нажмите «Загрузить Zip», как показано на изображении ниже
*Не распаковывайте этот файл!
Импортируйте файл .ZIP в IDE Arduino. Чтобы импортировать ZIP-файл, выберите Sketch > Include Library > Add.ZIP Library.0009
Найдите «Adafruit LiquidCrystal» в строке поиска Менеджера библиотек
Нажмите Установить
Flash Arduino с кодом
а) Откройте код, выбрав Файл > Примеры > EZO _I2C_lib-мастер > Примеры > Проекты > arduino_co2_meter
b) Установите целевой процессор для прошивки: Tools > Board > Arduino AVR Boards > Arduino Uno
c) Выберите порт, к которому подключен ваш Arduino: Инструменты > Порт > COM «X»
(компортный адрес будет меняться от пользователя к пользователю)
d) Скомпилируйте и запишите код в Arduino. После завершения вы должны увидеть показания CO2 на последовательном мониторе (добавьте только возврат каретки и установите скорость передачи данных на 9600), а также на ЖК-дисплее. При необходимости отрегулируйте контрастность экрана дисплея с помощью регулятора на рюкзаке i2c.
Завершение сборки
a) Отключите устройство от компьютера и соедините верхнюю и нижнюю части корпуса, чтобы завершить сборку.
b) Теперь вы можете питать счетчик от внешнего источника питания 12 В. Поздравляем, теперь у вас есть готовый к работе настольный измеритель СО2!
Продукты, использованные в этом руководстве
Как создать собственный измеритель CO2 с дисплеем Adafruit Feather и электронными чернилами
Обзор
В этом посте вы найдете весь мой путь от компонентов до рабочего проекта. Это забавный и удивительно простой маленький виджет с батарейным питанием. Переходя прямо к пикантным моментам, вот конечный продукт:
Рабочий пример версии 1. 2 во время зарядки.С каждой областью на экране:
Весь код находится в репозитории GitHub:
GitHub — nikouu/Adafruit-Feather-CO2-Meter: 👩🔬 Измеритель углекислого газа 💨 с Adafruit⭐ RP2040, 2,9″ e Чернила дисплей 🖥 , датчик CO2 SCD-40 и CircuitPython 7 🐍.
👩🔬 Измеритель углекислого газа 💨 с Adafruit⭐ RP2040, 2,9″; Дисплей eInk 🖥 , датчик CO2 SCD-40 и CircuitPython 7 🐍. — GitHub — nikouu/Adafruit-Feather-CO2-Meter: 👩🔬 Углекислый газ 💨…
GitHubnikouu
Базовый план
Начиная с 2021 года наблюдается всплеск числа людей, использующих измерители CO2 для измерения качества воздуха в помещениях. Aranet4 казался популярным, но я также видел, как люди делают свои собственные, и подумал: «Это забавный проект, я тоже сделаю это!»
7 февраля 2022 года я набросал быстрый набросок датчика качества воздуха. Первоначально я хотел использовать Raspberry Pi Pico, но обнаружил, что дисплей eInk (I LOVE eInk), на который я смотрел, просто мгновенно подключается к плате Feather.
Идея Raspberry Pi в конечном итоге превратилась в еще один проект, связанный с камерой для обнаружения движения с датчиком Pi Zero 2 Вт, солнечной панелью и аккумулятором.
Наброски примечаний к этому проекту измерителя CO2.Первоначальный дизайн был именно тем, что я сделал, поэтому давайте перейдем к используемым компонентам.
Компоненты
Все компоненты взяты из Adafruit.
Единственная необходимая пайка – прикрепить указанные разъемы к RP2040.
Развитие
Поднимитесь на борт, чтобы пройти весь цикл разработки от «привет, мир» до «привет, о нет, мне нужно открыть окно».
Hello World
Учебник Blink помог мне настроить. Установка Mu Editor, изучение основ настройки Feather и, конечно же, первый код «hello world» (мигание светодиода). К вашему сведению, мигающий светодиод не является причудливым RGB NeoPixel.
Мигающий светодиодЗапуск дисплея
У Adafruit есть отличное руководство специально для 2,9-дюймового дисплея eInk в оттенках серого:
Adafruit 2,9″ eInk Display Breakouts и FeatherWings
Легкое использование eInk-дисплея обеспечивается микроконтроллерами с помощью breakouts, разработанных для упрощения добавления трехцветного или полутонового eInk-дисплея.
Adafruit Learning SystemMelissa LeBlanc-Williams
Да, отображается цветной дисплей eInk, но также есть учебник в оттенках серого.Сначала нужно припаять контакты разъема, входящие в комплект поставки RP2040, чтобы я мог подключить его к eInk FeatherWing. Это была горячая минута с тех пор, как я в последний раз паял, и фактор чудака сделал это болезненно очевидным. Поскольку доказательств нет, вот грязное редактирование того, как выглядели булавки до исправления:
Целый ряд шатающихся булавок слева.Я вставил Feather в заднюю часть дисплея и взволнованно выполнил обучающий код ааааа…
Дисплей выглядит плохо.Это моя заслуга 🤚, так как я неправильно прочитал туториал и скопировал код для другого дисплея eInk 🤦♀️
Как только я разобрался с основами понимания прочитанного, появилось стандартное обучающее изображение!
Учебное изображение. Для рисования фигур я украл , вдохновленный файлом CircuitPython, относящимся к продукту MagTag eInk:
Поняв, как работать с дисплеем, пришло время сделать показания CO2.
Отображение текста
Отображает «Hello World!» на дисплее. Здесь нет ничего лишнего.
Простой привет, мир.Отображение текста другим шрифтом
А что, если бы мы использовали другой шрифт 🤔
Привет, мир здесь немного великоват, но, по крайней мере, это доказало, что шрифт другой.Получение значений CO2
Мне нравится, что туториалы легко найти, и туториал для SCD-40 не исключение. Пример кода прост, и он отображается точно так, как ожидалось, в окне последовательного вывода редактора Mu.
Показания SCD-40 в последовательном окне Mu Editor.Proof of Concept
Объединив все вышеперечисленное, мы можем получить информацию с сенсора на экране!
Информация SCD-40 на дисплее eInk.Версия 1.0 — первый стабильный выпуск
Учет предыдущих вех и приведение их в более презентабельный вид. это теперь стягивает воедино всю предыдущую работу.
Он работает по назначению с 🎵 простым и понятным 🎵 пользовательским интерфейсом. Немного загадочно, если вы не знали, что читает SCD-40, но пока достаточно. Он обновляется каждые 4,5 минуты. Обратите внимание, что дисплей следует обновлять каждые 3+ минуты, чтобы предотвратить повреждение.
Сам код довольно прост и читается как сценарий Bash или Powershell. Я мог бы , наверное, сделать его более OO, но я думаю, что есть некоторая романтика ( конечно, давайте возьмем этот ) в том, что это простой для понимания, слепленный сценарий. Вызывает у меня ностальгию по старым временам.
Оценки, которые вы видите на экране, основаны на первых нескольких результатах поиска уровня CO2. Некоторые статьи казались очень укорененными в науке, а другие казались более общими. Самая определенная часть, которую я видел, заключалась в том, что менее 800 частей на миллион было довольно хорошо.
❗
Стоит повторить: рейтинговая шкала, которую я написал, не является строго научной — она взята из разных источников и «достаточно хороша» для такого забавного маленького проекта, как этот. Крутая часть проекта с открытым исходным кодом заключается в том, что вы можете составлять свои собственные рейтинги, основанные на ваших исследованиях или знаниях.
Ниже представлена галерея того, как выглядит это маленькое устройство:
Виды проекта спереди, сверху, сзади, слева и справа.Корпуса нет, а сам датчик свободно висит только на одном углу болта. На самом деле эта единственная прокладка для крепления датчика к RP2040 вместе, используемая в качестве импровизированной подставки, работает очень хорошо!
Поскольку мы их еще не видели — предварительный просмотр других рейтингов CO2 (с экспертно последовательной фотографией):
Другие рейтинги CO2 PPM.Из приведенных выше изображений видно, что на дисплее ничего не отцентровано должным образом. Ни подсчет пикселей, ни правильное использование центрированной привязки для текста не используются.
После выпуска стабильной версии пришло время начать работу над улучшением энергопотребления. Поработав немного с платами Raspberry Pi Zero 2 Вт и посмотрев на энергопотребление, я понял, что этот микроконтроллер без надлежащей ОС должен много выжимать из батареи емкостью 400 мАч, но это не так. .. Сначала.
Примечание: около 3 часов для полной зарядки. Я заряжаю его либо от обычного зарядного устройства для телефона, либо от компьютера.
Версия 1.2 — Повышенная энергоэффективность
✍️
Версия 1.1 существовала недолго, прежде чем перейти к версии 1.2. Вот почему он будет спрятан в разделе 1.2.
Аккумулятор емкостью 400 мАч работает (очень) примерно 12 часов с первой стабильной версией, и я думаю, что он может работать намного лучше. Но сначала давайте разберемся с моделями энергопотребления. Я буду использовать многофункциональный цифровой USB-тестер — USB A и C для снятия показаний с несколькими базовыми уровнями:
Сценарий | Описание | Чтение | Примечания |
---|---|---|---|
Базовый уровень 1 | Мигающий светодиод, ничего не подключено | 0,21–0,23 Вт | Наш абсолютный базовый уровень |
Базовый уровень 2 | Мигающий светодиод, дисплей подключен (ничего не отображается) | 0,21–0,23 Вт | |
Базовый уровень 3 | Мигающий светодиод, дисплей подключен (ничего не отображается), SCD-40 (ничего не читается) | 0,21–0,25 Вт | |
Базовый уровень 4 | Код стабильной версии v1. 0 | 0,23–0,74 Вт | Большие всплески (подробнее об этом ниже), в остальном примерно то же, что и в предыдущих сценариях |
Теперь, когда у нас есть базовые измерения, пришло время оптимизировать!
✍️
Отсюда дисплей настроен на обновление каждые 5 минут вместо 4,5 минут.
Версия 1.1 — Глубокий сон
Давайте разберемся с простыми вещами: Занят ждет. Я люблю оптимизировать вещи (самостоятельное подключение: сокращение автономного исполняемого файла .NET 6 Wordle-Clone), и есть целая куча способов, которыми программы могут спать на разных языках. Я подозреваю, что в CircuitPython вызов time.sleep()
может быть немного занят в фоновом режиме.
Покопавшись, оказалось, что мы можем использовать будильники вместо сна. Я взял этот фантастический учебник под названием «Глубокий сон с CircuitPython», в котором объяснялись различные типы сна в CircuitPython.
Я провел несколько тестов (которые находятся в папке Tutorials/DeepSleep) для типов сна. Тестовый случай был мгновенным, основанным на учебнике, и вот результаты:
Сценарий | Описание | Чтение | Примечания |
---|---|---|---|
Сон 1 | время сна() | 0,21–0,23 Вт | Это находится в папке Blink |
Сон 2 | alarm.light_sleep_until_alarms() | 0,17–0,25 Вт | Но чаще около 0,17Вт-0,23Вт |
Сон 3 | alarm.exit_and_deep_sleep_until_alarms() | 0,11–0,23 Вт | Оба:
|
Примечание. Тестируйте при подключении к источнику питания, а не к ПК, так как плата не будет активно спать при подключении к главному компьютеру.
Глубокий сон выглядит так, как мы хотим. Итак, давайте применим его к стабильной версии:
Сценарий | Описание | Чтение | Примечания |
---|---|---|---|
Эффективность 1 | Код стабильной версии с повышенной энергоэффективностью | 0,13–0,64 Вт | Хорошее улучшение, но с такими же большими шипами (см. версию 1.2) |
Падение на ~0,1 Вт, пики остаются.
Эта версия, версия 1.1, батарея держит около 21 часа. Или в 1,75 раза дольше версии 1.0.
Версия 1.2 — Отключение датчика
Пиковое время. Каждые 3-5 секунд, как кажется, датчик SCD-40 делает чтение независимо от того, считываются ли значения. Ниже приведен краткий обзор измерителя, обратите внимание на красное значение мощности в левом нижнем углу и на его пики:
Пики появляются в красной области мощности.Примечание. На дисплее считывателя отображаются средние значения между обновлениями. Из-за этого он может не отображать правильный всплеск при каждом обновлении дисплея.
Обратите внимание, что эти всплески не происходили в сценарии Базовый уровень 3 (далее на этой странице) даже при подключенном датчике — они начали происходить в Базовом сценарии 4 только после активации датчика. Мы можем доказать это, используя тот же блинк-код, что и в Baseline 1, но добавленный в код стартового измерения для датчика из Baseline 4:
время импорта Импорт тревоги импортная доска импорт дигиталио импортировать adafruit_scd4x светодиод = digitalio. DigitalInOut(board.LED) led.direction = digitalio.Direction.OUTPUT i2c = доска.I2C() scd4x = adafruit_scd4x.SCD4X(i2c) scd4x.start_periodic_measurement() пока верно: светодиод.значение = Истина время сна(1) led.value = Ложь time.sleep(3)
Сценарий | Описание | Чтение | Примечания |
---|---|---|---|
Базовый уровень 5 | Мигающий светодиод, дисплей не подключен, SCD-40 активирован | 0,23–0,71 Вт |
Попался. Подтверждено, что измерения датчика должны быть запущены, прежде чем мы увидим всплески энергопотребления, а не просто подключение датчика к плате.
Теоретически, если есть начало, то должна быть и остановка. И есть! stop_periodic_measurement()
— это именно тот вызов, который нам нужен. Таким образом, код теперь будет:
- Начните измерение только перед тем, как потребуется значение
- Считайте и сохраните результат
- Немедленно остановите измерение
Давайте посмотрим, как это выглядит:
Сценарий | Описание | Чтение | Примечания |
---|---|---|---|
Эффективность 2 | Эффективность 1 + устранение всплесков мощности | 0,11–0,15 Вт | Затем с пиком до 0,71 Вт на 5-й минуте выполнить однократное чтение |
После этих доработок батарея теперь держит 54 часа , или в 4,5 раза дольше, чем версия 1. 0.
Будущие идеи
Может быть, их будет удобно реализовать, а может и нет. Возможно, они были реализованы задолго до того, как был написан этот пост 🔮
- Используйте кнопки дисплея eInk для переключения в режим графика
- Добавьте символы, чтобы помочь определить, что представляет собой каждое показание
- Правильно центрируйте все элементы
- Используйте четыре цвета шкалы серого
- Снимайте показания через каждые x интервалов времени между обновлениями дисплея, чтобы получить среднее значение
- Нажмите кнопку, чтобы обновить как можно скорее (как только прошло 3 минуты с момента последнего обновления дисплея)
- Аккумулятор индикатор
- Способ узнать, разряжена ли батарея на дисплее (в настоящее время зеленый светодиод на датчике является единственным индикатором)
Заключение
Это был дружеский проект — я думал, что он будет намного сложнее. Сочетание (в основном) отсутствия пайки, простых для понимания примеров и CircuitPython уменьшило количество пустяков и дало мне хорошее настроение для программирования.