Нужны часы, но много хотелок? Сделай сам!
Изначально статью хотел назвать «Как я провел каникулы», но я не успел сделать часы к окончанию новогодних каникул, а потом еще и статью долго писал, поэтому вот.
Предыстория.
Когда я устроился в ИД «Комитет» (а это было в конце лета / начале осени 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 ?
Do Yourself It 🤭
так-то DIY https://ru.wikipedia.org/wiki/DIY
Так-то это была самоирония из-за моей слишком явной опечатки 😌
Не выкупил))
полностью согласен. Это очень круто и кастомно)
Ждём следующей итерации.
Комментарий недоступен
Кстати, где бы такую штуку купить...
На Aliexpress есть:
Данил, ты точно свою фамилию правильно написал? ;-)
Ахах =D точно))
Комментарий недоступен
True.
Никогда не понимал людей, изобретающих велосипед, часы или другую подобную давно изобретенную хрень )) Пустая трата времени
Комментарий недоступен
А эти не время показывают?)
Комментарий недоступен
Часы на raspberry?
Да что с тобой не так?
В следующий раз собери часы на PC...
Лучше кластер использовать. Для надежности.
Слушайте, node.js для часов...
Бурные аплодисменты 😁
А вообще круто, хабр переехал сюда
Я тоже люблю делать своими руками... но тут я пошел и купил себе divoom pixoo.
Комментарий недоступен
Возможно кому-то тусклые, но время видно))
А когда долго рядом с ними сидишь, понимаешь, что яркость норм, не отвлекает
Вот так выглядит без рассеивания)) глаза выжигает вживую и это при минимальной яркости
Комментарий недоступен
У меня все мысль взять E-ink и собрать бесполезный дашбоард на распберри. Спасибо, пошел гуглить :)
!! Хочу часы на e-ink, потому что не люблю лампочки светящие в глаз. Но пока все, что видела из экранов, было не самым бюджетным для того чтобы было не жалко попробовать и забить, если не получится:( (баксов 200, кажется)
Комментарий недоступен
На первую полосу, пожалуйста
Зачем rasp когда есть esp8266 c кучей проектов часов + выкачивают погоду по wifi https://www.hackster.io/FilippoOnesti/esp8266-clock-using-max7219-led-matrix-display-b036c7 https://www.youtube.com/watch?app=desktop&v=2I_us9NhIvM
Просто захотелось)) чтоб дорабатывать и добавлять всякое интересное
Вот что делает желание с упорством)) Красавчик)
вот что делает отсутствие образования, конструирование всякой дичи.
Комментарий удален модератором
Во сколько они обошлись?
Почему не стали покупать что-то вроде радио-часов, мастерить небольшую полочку и ставить сверху еще одни?
Интересно выглядит
Можно же было просто купить два 10" андроидных планшета и поставить Weather Night Doc free. А если взять старые модели с microHdmi то и подключить к любому монитору.
Можно, но такое решение не совсем подходит, если хочется дорабатывать и добавлять всякие модули и делать прикольные штуки с ними))
Видел на гугл-маркет программу,которая позволяет свой дизайн часов, поищите.
Полезная вещь. Если добавить дату тоже будет великолепно.👍
Данил, если я правильно понял проблему, то надо отдельный модуль часов реального времени с внешним питанием (там всего-то батарейка CR2032). Тогда часы будут идти всегда, даже когда Малина спит или выключена. И тогда вся ее задача сводится к выводу данных модуля на лед. матрицу.
Либо обновлять время из интернета.
Не совсем поняли проблему, я пробовал дожидаться, когда подключится интернет и только потом запускать часы - результат такой же, не уверен, что модуль часов поможет, но как вариант да
Комментарий удален модератором
Смотря для чего подойдёт)) если заморачиваться и делать подобные часы то нужно подбирать подсветку с адресными диодами, но лучше панель светодиодную взять
Если просто для освещения то подойдёт и можно без контроллера, а просто блок питания купить
В моем случае я использую Raspberry pi model b+
Классно!
+
+
+