"Это лучший гаджет для вашего дома" сказала мне реклама, когда я закончил сборку своего нового измерителя CO2. Теперь он больше, лучше и не требует внешнего питания. И раз уж рекламу таких штук запустили, то мое устройство точно будет не зря.
Предыдущая версия измерителя, после опыта продолжительной эксплуатации, оказалась не лишена недостатков. Датчик, который я использовал, иногда требовал перекалибровки, иначе показывал завышенные значения. Перекалибровка - это сутки пребывания устройства на свежем воздухе, значит нужно чтоб была не зима и тащить питание до балкона, это всегда лень.
График, отражающий динамику CO2, оказался никому не нужен, поскольку на малом интервале времени он не информативен, а из-за размера дисплея еще и неразличим при беглом взгляде издалека. Сигнализация превышения 1000 ppm полезна, когда датчик верно откалиброван, но мигающий дисплей раздражает ночью, а еще если очень тихо, когда он светится белым, он пищит, это недостаток самого дисплея. В общем, эксплуатация прибора в комнате где спишь затруднительна.
Ну и как-то так сложилось, что регулярно измеритель хотелось поставить туда, где нет для него питания. Вариант с пауэр-банком тоже не прошел, поскольку волочить за устройством огромную батарейку на проводе не очень удобно, да и сам измеритель рассчитан на питание "от розетки", например, датчик газа постоянно греется, чтоб измерять.
И вот, как-то у меня в руках оказался аккумулятор 18650, который жалко было выбросить и очень хотелось куда-то применить...
Опираясь на опыт, описанный выше, и возможности супер-пупер часов, я сформулировал какой же должен быть измеритель CO2 для дома. Дисплей должен быть крайне простой, на нем должна отображаться только цифра текущего уровня CO2, но так, чтоб она была хорошо различима при любом освещении через всю комнату. У него должна быть "контрольная лампа" превышения CO2, такая, чтоб, например, лежа ночью в кровати, когда не видно цифры или не охота смотреть на них, сразу было понятно душно в комнате или нет. Конечно, устройство должно работать от батарейки, чтоб поставить его куда угодно не задумываясь о питании. Ну и выглядеть оно должно сносно, чтоб очутившись на видном месте оно своим видом не разрушало тщательно созданную гармонию интерьера.
Промышленный дизайн интересная штука, поскольку процесс придания формы содержанию, бывает, приводит к неожиданным результатам. Не имея почти никакого представления о том, как должно выглядеть мое устройство, я провел массу времени с бумагой и ручкой, и все безрезультатно. И вот, уже почти забросив эту идею, мне на глаза попалась картинка небольших настольных часов на батарейках, такие вытянутые вверх и скругленные сверху, в вишневом пластиковом корпусе с черным циферблатом. Такие почему-то часто встречаются на дачах, на кухонных столах, у всех одинаковые, только цвет корпуса отличается... так вот же оно, это то, что мне надо! Ту картинку, конечно, уже не найти, но вот такая случайность легла в основу дизайна и определила, что будет двухцветным.
Для печати корпуса будет нужно два вида пластика: черный и белый. Все устройство выдержано в черно-белой гамме: черный круг на белом корпусе, черный модуль дисплея с белыми цифрами, черный выключатель в середине, и даже черные винты на задней крышке.
Главное действующее лицо - датчик SCD40, успешно опробованный в супер-часоидах, у него есть режим низкого энергопотребления, что как нельзя кстати при работе от аккумулятора. В этом режиме сбор показаний занимает 30 секунд, что вполне достаточно в бытовых условиях. Можно вместо него использовать SCD41, но он необоснованно дорог для предъявляемых к нему требований.
Для корректировки показаний CO2 используется барометр BMP180, у него так же есть режим ультра низкого потребления. В этом режиме должна страдать точность измерений, но на практике этого не заметил, да и требований к точности тут не предъявляется. С точки зрения энергоэффективности лучше было бы взять BMP280, но его просто не оказалось под рукой.
Модуль дисплея TM1637 встречается двух видов: с точками у цифр и двумя наборами пинов по бокам, и более дешевый, с двоеточием между цифрами и одним набором пинов. Более дорогой модуль бывает с белыми цифрами, а более дешевый такой не встречал, плюс у дешевого обычно уже припаяны пины с лицевой стороны, что делает его совсем непригодным для моего устройства. У дисплея чудовищная яркость, он видимо рассчитан на работу за черным стеклом на ярком солнце, даже при минимальной яркости он как фонарь ночью, поэтому для комфортной эксплуатации его надо либо заклеивать черной пленкой, либо гасить (в моем случае рисовать точки) при ночной эксплуатации.
Для управления всем этим хозяйством я взял LGT8F328P LQFP32 MiniEVB 5V. Её можно заменить на классическую и более дорогую Arduino Pro-Mini 5V, но у ардуино не очень удобно расположены пины I2С, и ее сложнее будет отправить спать на пол минуты, пока собираются показания CO2. Важно использовать именно форм-фактор "pro-mini", поскольку на этих платах нет лишней обвязки, которая тоже потребляет электричество. Так же важно использовать версию на 5В, поскольку напряжение аккумулятора 18650 составляет 3.7В, что многовато для платы, рассчитанной на 3.3В, а вот 5В плата будет работать даже без повышающего преобразователя.
Для зарядки аккумулятора 18650 используется модуль TP4056, в нем все прекрасно, кроме размера, именно он определил толщину моего устройства. Если вместо него использовать, например, вот такой, то и толщину устройства можно сократить, и сразу будет повышающий преобразователь до 5В. На модуле TP4056 есть два светодиода, показывающих состояние зарядки, выпаивать их не хотелось, поэтому индикацию с них я вывел на корпус устройства при помощи световодов. Изначальная идея, приклеить световоды к диодам с помощью прозрачного УФ-клея и согнуть по месту, с треском провалилась - световоды слишком жесткие и никакой клей их не удержит. Но при помощи термофена им удалось придать желаемую форму и необходимость клеить отпала.
Еще мелочи. Самый обычный красный светодиод 3 мм. с сопротивлением 330 Ом, его яркости достаточно, чтоб днем быть красной точкой на корпусе, просвечивая пластик, а ночью - достаточно большим красным пятном, видимым издалека, но не освещающим пол комнаты. И датчик освещения, в этот раз, собранный из фоторезистора 5516 и обычного резистора на 10 Ком. Этот датчик подстраивает яркость дисплея, когда устройство просыпается для измерения, а вот яркостью светодиода управлять не получится. В спящем режиме так же отключается PWM, оставлять его включенным ради лишь яркости диода слишком затратно.
Для удобства печати корпус состоит из 4-х частей: лицевой панели, кружка дисплея, внешних стенок и задней крышки. Распечатанный корпус кажется большим до тех пор, пока не начинаешь укладывать в него все провода. Внутри почти нет никаких крепежей для элементов, только места под дисплей, выключатель, зарядник. Все остальное держится упираясь в провода. В собранном виде устройство массивное из-за веса аккумулятора, внутри ничего не болтается, не смотря на отсутствие крепежа.
Для желающих повторить мою поделку, схема устройства будет очевидна и описана в исходном коде на моем гитхабе, а 3D-модели корпуса можно скачать с моего thingiverse. Для сборки понадобится 7 винтов М3х6 и 2 винта М2х4, супер-клей на случай, если круг с дисплеем будет сидеть не плотно или потребуется зафиксировать датчик света. Яркие диоды-индикаторы питания на платах стоит заклеить парой слоев плотной изоленты, чтоб не просвечивали корпус при работе, особенно ночью. Ну а если не хочется смотреть точки вместо показаний CO2 ночью, то следует еще заклеить дисплей матовой тонировочной пленкой, я использовал матовую 15%, купленную на озоне.