28 апреля 2014 г.

Измеряем температуру

Ох, последние пару недель задались! Ни пары часов похобствовать. Но вчерась таки выколупал немного времени и занялся интересным. Во-первых, добавил новый TAG в облако тем: EasyHome 2, где буду описывать этапы создания своей версии "удобного дома" - системы автоматическим управлением квартирой (насколько ей вообще можно управлять).
Во-вторых (на втором месте не по значению, а в порядке снятия со стека), изменились иконки, в том числе и логотип. Все стало в едином стиле, за что отдельное спасибо одному очень хорошему человеку по имени Кирилл!
Это все были минорные изменения. Из мажорного...

Изменение первое: кнопки управления

Добавлены кнопки управления. Настоящие механические с подсветкой!

Изменение второе: температура и влажность за бортом

Привинтил датчик температуры и влажности Oregon THGN132N от погодной станции. Подробности, как это делается, я рассказывал около года назад (ну и летит же время!). Батарейки почти сели, так что датчик не способен передать данные на хоть сколько приличное состояние. Хотя, возможно, проблема еще и в приемнике: несмотря на то, что микруха может завестись от 3.3В, на которых работает Arduino DUE, вероятней всего, коэффициент усиления все же недостаточный. Для начала поменяю батарейку, а если не поможет, придется мутить преобразователь уровней 5В<->3.3В. Откровенно говоря, не очень эти датчики меня впечатляют: могли бы и поменьше "брехать", учитывая их стоимость. Скорее всего, со временем, выковыряю из них начинку и всуну туда Arduino Pro Mini и кошерный DHT22, он же АМ2302 с каким-нибудь радиомодулем.

Изменение третье: температура и влажность в квартире

В качестве измерителя температуры и влажности в помещении был выбран старый добрый DHT22. А вот тут возникло "оба на!". Дело в том, что в отличие от всех остальных *duino, сделанных на 8-битных AVR, в DUE и паре ее клонов вместо сердца пламенный мотор - 32-битный ARM. Перевожу: большинство библиотек пока еще не адаптированы для этого чипа. Лезть в даташиты, зарываться в мегабайты мануалов и пилить библиотеку - это не путь истинного лентяя. Пришлось основательно покопаться, но найти готовую либку для работы с этим датчиком. Разумеется, пришлось ее слегка допилить: у меня сердце кровью начинает обливаться, когда ReadOnly (по сути) поля класса голой жопой торчат наружу и могут быть подвергнуты изменению. Я глубоко убежден, что данные, даже публичные, должны быть глубоко в яйце, яйцо - в утке, утка - в зайце, а у зайца должны быть сеттеры и геттеры для доступа к этим данным.

На коленке

В итоге 3-часового процесса, применив дзэн "если заработает на коленке, будет жить", получил вполне жизнеспособный прототип. Есть мысль, что подсветка дисплея и кнопок должна включаться автоматически. В каком случае? А вот об этом - в следующий раз!
P.S. Вот так сейчас выглядит прототип. Интерфейс пока не переводил на русский: проблема та же, что и с картинками - ломает рисовать шрифты, коих надо два.

UPD от 2014.05.02
Замена батарейки, как и ожидалось, ни к чему не привела. Пришлось замутить преобразователь уровней, в качестве которого подошел обычный резистивный делитель.

Комментариев нет:

Отправить комментарий