Andrey Ovcharov

маленькое невинное хобби

Часы на светодиодных матрицах и esp8266

Давным-давно, в староглиняные времена, а именно пять лет назад, я сделал себе комнатные часики на светодиодных матрицах, контроллере AtMega и чипе DS1307.

Матричные часы, первая версия

В целом, часы получились очень неплохие и мы ими постоянно пользовались всё это время. Хотя идеальными назвать их весьма сложно.

  • Bluetooth модуль для установки времени без кнопок просто сдох без объявления войны через пару лет. Пришлось его выпаять. Да и ставить время через него было тем ещё удовольствием — приходилось подключаться терминалом и вручную писать команды.
  • Кнопки оказались ужасными — повинуясь каким-то своим циклам их то вообще не нажать, то выстреливают серией ложных нажатий. Все пляски с устранением дребезга и перепайкой результата не возымели, пришлось повесить на проводках весьма распространённую тактовую кнопку и проблема была решена. Но выглядит неэстетично.
  • Разъем Mini USB оказался довольно хлипким. Хоть провод и не дёргали каждый день, но он всё равно умудрился разболтаться и часы начали терять питание при малейшем касании провода.
  • Точность хода — ещё одна загадка века и неизлечимый глюк. Могли месяцами идти секунда в секунду, а потом начать внезапно уползать на несколько минут в день. Появлялся и исчезал этот глюк сам по себе.
  • Всякие календари, бегущие строки с сообщениями и дни недели никому на самом деле не нужны. По опыту на эти часы смотрят только если нужно узнать текущее время, а сидеть и пырить на них с немым вопросом “а не напишут ли они чего интересненькое?” как-то некогда. Поэтому только часы и минуты, и никакой анимации кроме мигающих точек.

Старые матричные часы после пяти лет ежедневной эксплуатации и устранения багов

А это значит, что пришло время работы над ошибками и улучшения хорошего.

На этот раз я не стал заморачиваться с одной платой для матриц и электроники. Размер получается 160х40мм, что уже а) не лезет в бесплатную версию Eagle CAD и б) в производстве тоже стоит негуманно. Куда проще и дешевле купить на алиэкспресс готовый дисплейный модуль на четыре матрицы (~3евро), а всю электронику собрать отдельно на маленькой платке.

В качестве “мозга” используется модуль ESP8266 esp12e. Стоит копейки, имеет на борту встроенный WiFi и кучу дурных мегагерц. Программируется через Arduino или Mongoose OS. Я пробовал обе среды, но в Ардуине C++ и больше библиотек. Остановился на нём.

Для собственно времени — таймер реального времени DS3231. Встроенный кварцевый резонатор, температурная коррекция и куда более высокая точность хода. Ещё одни часы на такой микросхеме уже полтора года показывают точное время.

При наличии WiFi на борту заниматься установкой времени вручную смысла нет уже никакого. Есть прекрасный протокол NTP — вот оттуда пусть и берут. А для автоматического перехода на зимнее/летнее время есть готовые библиотеки. Поэтому без кнопок.

Звуковая пищалка и всякие бирюльки, которыми за пять лет никто не пользовался, были выкинуты из схемы совершенно безжалостно.

Собранный модуль “мозга” для новых часов

Вся схема в результате проста, как валенок. Модуль esp8266, таймер, батарейка, разъемы и всякая мелочь для обвески.

Демон криворукости, конечно, и тут подарил сочный глюк — яркий светодиод питания рядом с датчиком освещённости. Светодиод пришлось убрать, да он и не нужен — на морде и так 256 штук светодиодов есть.

Собранную схему можно начинать программировать.

Для начала я написал и отладил модуль управления дисплеем. Сперва просто точечки в нужных координатах, потом буковки, а уже как-нибудь потом будет анимация (если вдруг понадобится). Для отладки пользовался сборкой Node MCU со встроенным USART — так гораздо удобнее, не надо никаких кнопок для программирования нажимать, а всю периферию для отладки можно подключить через разъёмы.

Более-менее отлаженную программу уже можно заливать в собранный “мозг”

Потребление устройства — порядка 0.3А при дневном освещении. В предыдущей версии примерно столько же. Основной потребитель здесь — светодиоды. Могучие алгоритмы отправки “мозга” в сон (отключать WiFi нафиг если не нужно получать точное время, например) особо ничего не сэкономят.

Для “корпуса” я вырезал из белого плексигласа прямоугольник по размеру дисплея. К нему будет всё крепиться красивыми аккуратными винтиками М3.

Светодиодные матрицы установлены в панельках, так что их можно легко достать, чтобы добраться для крепёжных отверстий.

Заодно я перепаял разъем для управления матрицей. Изначально штырьки торчали наружу за габариты корпуса, а теперь занимают гораздо меньше места.

Привинчиваем части устройства к плексигласовой основе.

У светодиодных матриц чёрное покрытие. Его можно легко убрать обычной наждачной бумагой. На более равномерном светлом фоне цифры и буквы выглядят более контрастно и легче читаются.

А если сверху наклеить белую матовую плёнку, так и вообще поверхность становится совершенно однородной. Хотя яркость и теряется немного.

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

Матричные часы — два поколения рядом

Сейчас новые часы заняли своё место на стене. Посмотрим, что покажет долговременная эксплуатация. Один из плюсов Ардуино с ESP8266, кстати — обновлять прошивку можно прямо через WiFi, что должно существенно облегчить исправление глюков, если таковые появятся.

Исходники всего этого безобразия выложены на гитхаб .