Нужны часы, но много хотелок? Сделай сам!
Изначально статью хотел назвать «Как я провел каникулы», но я не успел сделать часы к окончанию новогодних каникул, а потом еще и статью долго писал, поэтому вот.
Предыстория.
Когда я устроился в ИД «Комитет» (а это было в конце лета / начале осени 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 часов работы вроде немного, большее время не замерял.
Если кому-то будет интересно, то исходный код лежит тут, ридми как-нибудь потом напишу. Возможно)).
Еще в процессе создания вспомнил свою курсовую, кому интересно, можете почитать =).
Данил, часы выглядят чудесно — особенно если учесть тот факт, что это практически DYI.
Но тебя самого разве не беспокоит то, что ты мало того, что так повёрнут на времени (что ты, по твоим же словам, даже одно время буквально переворачивал будильники), но ещё и так пристально следишь за его ходом сразу в двух населённых пунктах? 🙁
Возможно, это Крис Нолан. У него пунктик на времени
Спасибо))
Не беспокоит)) Для работы мне нужно московское время, т.к. работаю удаленно, следить за двумя часовыми поясами сразу удобно
А что есть DYI ?
полностью согласен. Это очень круто и кастомно)
Ждём следующей итерации.
Комментарий недоступен