Нужны часы, но много хотелок? Сделай сам!

Изначально статью хотел назвать «Как я провел каникулы», но я не успел сделать часы к окончанию новогодних каникул, а потом еще и статью долго писал, поэтому вот.

Это мои новые часы сделал сам :)
Это мои новые часы сделал сам :)

Предыстория.

Когда я устроился в ИД «Комитет» (а это было в конце лета / начале осени 2020 года), я захотел купить себе часы, которые будут показывать и московское время, и новосибирское время. Искал долго, искал везде.

Критерии поиска были следующие:

  • должны показывать время (кто бы сомневался);
  • желательно, чтобы могли показывать два часовых пояса, которые я сам смогу задать;
  • с подсветкой, чтобы их было видно в темноте и чтоб просто яркими были;
  • желательно с разными цветами, просто потому что, и чтобы выбор не ограничивался двумя цветами;
  • чтобы были крупными, не люблю приглядываться.

В общем, губа не дура =D

В итоге немножко остепенился со своими хотелками и взял себе пару часов из ИКЕА, оба белые. На этом я вроде как успокоился — стало удобно сразу видеть и московское, и новосибирское время (не вычитая без конца 4 часа и постоянно ошибаясь).

В темноте вообще не видно ничего
В темноте вообще не видно ничего

Со временем понял для себя в них недостаток — подсветка включается только при переворачивании, не очень удобно, если надо время посмотреть при слабом освещении.

Хочешь увидеть время - вороти часы
Хочешь увидеть время - вороти часы

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

Ламповые часы из статьи
Ламповые часы из статьи

Подумал, закуплюсь материалами на 2 штуки часов, сделаю по аналогии и буду в шоколаде — мои хотелки (не все конечно, но основные) будут удовлетворены. Но что-то пошло не так: )

Меня смутил процесс изготовления плат (да, когда то в универе я этим занимался, но это было еще в прошлом десятилетии, а память уже не та, все таки мне уже 26 лет как никак).

Ну и стал просто читать всякие статьи про часы. И наткнулся на еще одну вдохновляющую статью.

Может показаться, что часы делают только на хабре, но это не так:) Просто привел самые интересные статьи.

Итак, поехали.

Были каникулы, поехал кататься по городу и заодно закупился деталями для проекта.

Нужны часы, но много хотелок? Сделай сам!

Собрал, установил операционную систему raspbian (создана специально для малинки) на sd-карту, подключил и начал процесс создания часов.

Нужны часы, но много хотелок? Сделай сам!

Установил vscode, для raspbian нужно было выбрать Linux ARM или ARM64 сборку тут. Установил гит, установил node.js (да, часы я решил написать именно на js, привычный мне язык программирования, да и развился он до такой степени, что в умных домах уже обитает).

Не знал вообще с чего начать, поэтому стал пробовать управлять пинами по этой обучалке (пришлось докупить breadboard, светодиоды и резисторы). По незнанию купил сильно мощные (которые большие), их даже не использовал, но может потом заюзаю где-нибудь.

Нужны часы, но много хотелок? Сделай сам!

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

Панель состоит из светодиодов SK6812 (по сути это копия светодиодов WS2812, но с отдельным белым светодиодом). Стал искать для нее js-библиотеку. Для своей панели не нашел, но нашел для WS2812. Попробовал ее (результат на фото ниже, логику вывода цифр уже задавал сам).

Настольный вентилятор заюзал для охлаждения малинки
Настольный вентилятор заюзал для охлаждения малинки

Мне захотелось включить белый светодиод. Стал искать дальше. Перепробовал все эти форки. Белый светодиод не загорался. Решил залезть в дерби си++ =O. За основу взял эту либу, ранее пытался ее использовать, но она при установке не компилировала сишный модуль. Копался в си++ коде, копался неделю, добился того, что все стало компилироваться, светодиоды стали работать, но белый светодиод так и не заработал =(.

В конце концов я подумал, зачем мне для часов белые светодиоды, забил (пока что) на попытки запустить их и принялся делать часы. Делал на двух компах — на малинке и на маке (на маке просто код удобнее писать, да-да, губа не дура =D). На маке писал тесты и ту часть, которая не требовала проверки на светодиодах. Получилось хорошо.

Нужны часы, но много хотелок? Сделай сам!

В итоге.

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

Нужны часы, но много хотелок? Сделай сам!

Чтобы решить эту проблему, заказал датчик освещенности, сделаю адаптивную яркость:) . Ниже на фото показал, как примерно может изменяться яркость (на третьей фотке она самая максимальная).

Пытался настроить автозапуск еще, так как малинку, в целях безопасности, отключаю на ночь, и, чтобы включить часы, необходимо запустить малинку, подключить монитор, мышку и клавиатуру и запустить скрипт. Хотелось автоматизировать. Пока не получилось.

Перепробовал кучу решений (эти, эти, также утилиты pm2, forever). В некоторых случаях часы запускаются, но не идут. В некоторых случаях показывалось время последней активности малинки. Думал, возможно дело в интернете — из-за того, что он долго подключается при запуске, часы не могут сразу запуститься. Проверил — нет, дело не в нем. Пока что включаю вручную, позже разберусь, в чем дело.

Мое решение не претендует на идеальное, для меня главное, что оно уже работает =) А дальше буду улучшать и добавлять всякие фишки, типа: по кнопке вывести температуру в Новосибирске (кнопки можно увидеть на 5 фотке выше, красные), дату показать или забабахаю игру — змейка, аналог хромовского дракончика, аналог звездолета и т.д., подключив к малинке геймпад, ну и тому подобное. Сделаю еще корпус, чтобы было красиво и удобно: ).

Замерял, сколько памяти съедает программа, за 10 часов работы вроде немного, большее время не замерял.

Нужны часы, но много хотелок? Сделай сам!

Если кому-то будет интересно, то исходный код лежит тут, ридми как-нибудь потом напишу. Возможно)).

Еще в процессе создания вспомнил свою курсовую, кому интересно, можете почитать =).

6161
48 комментариев

Данил, часы выглядят чудесно — особенно если учесть тот факт, что это практически DYI.

Но тебя самого разве не беспокоит то, что ты мало того, что так повёрнут на времени (что ты, по твоим же словам, даже одно время буквально переворачивал будильники), но ещё и так пристально следишь за его ходом сразу в двух населённых пунктах? 🙁

8
Ответить

Возможно, это Крис Нолан. У него пунктик на времени

12
Ответить

Спасибо))
Не беспокоит)) Для работы мне нужно московское время, т.к. работаю удаленно, следить за двумя часовыми поясами сразу удобно

4
Ответить

А что есть DYI ?

Ответить

полностью согласен. Это очень круто и кастомно)

Ответить

Ждём следующей итерации.

8
Ответить

Комментарий недоступен

2
Ответить