Категории: Часы

Неопиксельные часы с анимацией

Основной элемент этих часов светодиодное неопиксельное кольцо (WS2812). Кольцо состоит из адресуемых, красного, зеленого и синего, (RGB) светодиодов. Яркость каждого цвета можно регулировать независимо, обеспечивая до 16,8 миллионов цветов. Микропроцессор в этих часах необходим, чтобы получить время из Интернета и дать команду, какие светодиоды и каким цветом должны загореться.
Инструменты и материалы:
-Светодиодное кольцо WS2812 60 пикселей;
-ESP8266 Wemos D1;
-Резистор 470 Ом;
-Электролитический конденсатор 1000 мкФ;
-Винты M3 x 12 — 2 шт;
-Гайки M3 — 2 шт;
-Многожильный кабель;
-Суперклей;
-Разъем питания;
-Саморезы;
-Блок питания 5В 3А;
Шаг первый: проект
Физический корпус настольных часов основан на размерах неопиксельного кольца. Мастер хотел, чтобы дизайн был минималистичным и имел сглаженные линии дизайна, чтобы вещь не только показывала время, но и была привлекательна на вид.
Для работы у часов не должно быть кнопок или переключателей. Синхронизация времени будет проходить по сети.
Для питания часов используется сетевой адаптер питания. Мастер подсчитал, что для каждого светодиода потребуется 15 мА, а на каждом неопикселе три светодиода. Для всего кольца может потребоваться максимальный ток 45 мА x 60 = 2,7 А.
Корпус был разработан с помощью программы FreeCAD и состоит из двух ключевых компонентов. Держатель кольца — это защитный кожух для неопикселей, который открывает только переднюю лицевую поверхность неопикселей, скрывая соединения проводов сзади. В основании находится микропроцессор и разъем питания. Эти элементы будут соединятся с помощью суперклея, а доступ к электронике будет через панель в основании устройства.
Для этого проекта был выбран микропроцессор ESP8226. Он достаточно быстрый, имеет встроенную антенну и может связываться с сетью по беспроводной сети. Эти устройства дешевы, и их легко программировать с помощью платформы Arduino IDE.
Шаг второй: сетевой протокол времени
Ключевой задачей микропроцессора является подключение к Интернету и получение времени UTC с сервера с использованием протокола сетевого времени (NTP). Образец клиента NTP включен в IDE Arduino. Принцип его работы заключается в получении IP-адреса случайного сервера времени из списка доступных. Это значит, что мы всегда сможем синхронизировать время, даже если один из серверов времени отключится.
Затем микропроцессор отправляет пакет данных на сервер времени, который запрашивает время и ожидает возврата 48-байтового пакета данных. После получения пакет разбивается на байты для восстановления метки времени. Преобразуется в число и представляет количество секунд с 1 января 1900 года.
Например, вот типичные 48 байтов, возвращаемых в пакете данных: 28 1 13 227 0 0 0 16 0 0 0 32 78 73 83 84 227 40119 255 0 0 0 0 0 0 0 0 0 0 0 0 227 40 120 43 108 18 197 18 32 27 40 120 43 108 18 234 100
Отметка времени хранится в четырех байтах, начиная с байта 40 (выделено синим шрифтом). Затем они преобразуются в двоичное число b11100011 00101000 01111000 00101011 = 3811080235. Время Unix начинается 1 января 1970 года, но сделанные вычисления относятся к 1 января 1900 года, поэтому нужно убрать секунды, рассчитанные на 70 лет (2208988800 ).
время с 1 января 1900 г. (3811080235) — 1 января 1970 г.(2208988800) = время с 1 января 1970 г.(1602091435)
Когда мы вычисляем 1602091435 секунд с 1 января 1970 года, это число преобразуется в 17:23:55 7 октября 2020 года. В реальном времени весь процесс выполнения запроса, отправки пакета данных и выполнения вычислений занимает несколько миллисекунд.
Шаг третий: стрелки часов
Каждая «стрелка» часов представлена неопикселем своего цвета: красный — часы, синий — минуты, зеленый — секунды. Если посмотреть на традиционные часы, легко понять, как движутся минутная и секундная стрелки, перескакивая на следующую цифру. Часовая стрелка движется медленно и равномерно, в том числе между цифрами. Эту функция мастер тоже реализовал, чтобы стрелка медленно вращалась вокруг кольца.
Каждые 15 минут на часах запускается различный набор светового шоу с более длинным набором эффектов в полдень и полночь. Компания Adafruit разработала несколько отличных анимированных световых эффектов, и они доступны бесплатно, если установлена их библиотека neopixel (Examples → Adafruit Neopixel → strandtest). К ним мастер добавил эквивалент «звонка» в конце светового шоу, которое отображается как белый светодиодный индикатор, заполняющий четверть часа.
Шаг четвертый: британское летнее время
Так как мастер проживает в Великобритании, он вводит корректировку для летнего и зимнего времени. Такая корректировка должна быть «зашита» в код, поскольку у микроконтроллера нет внутренних часов, как, например, на Рассбери.
Подробно этот шаг мы разбирать не будем, поскольку обзор самоделки производится для русскоязычной аудитории, где перевод часов не актуален. Желающие могут ознакомится с этим шагом на сайте-источнике, в конце статьи.
Шаг пятый: неопиксельное кольцо
Первое, что нужно сделать при сборке часов — это собрать кольцо. Обычно продавец поставляет его в виде 4 сегментов.
Сборку необходимо аккуратно разобрать, а неровные края можно отпилить алмазным напильником. Эти четыре сегмента должны точно образовывать круг.

Чтобы закрепить кольцо, был напечатан временный шаблон. Сегменты закрепляются на нем с помощью скотча.
Дальше припаиваются все соединения кроме одного. Это точка, в которой данные подаются на кольцо, и она будет расположена в позиции 6 часов.
Нужно подготовить три провода. Они припаиваются под прямым углом к кольцу. Красный — для питания +5 В (Vcc), черный — для земли, а зеленый — для последовательного ввода данных. На линии данных нужно припаять резистор 470 Ом.
SitesReady

Только те, кто предпринимают абсурдные попытки, смогут достичь невозможного. - Альберт Эйнштейн

Share
Опубликовано
SitesReady

Последние записи

Кабачковая икра с яблоками и грибами

Ингредиентыкабачки ( без шкурки и семян) - 2 кгпомидоры - 1 кгшампиньоны - 300 глук…

4 дня ago

Вяленые сливы на зиму

Ингредиентыслива (без косточек) — 1 кгчеснок — 3-4 зубчикаперец чили — 0,5 шт.соль — 0,5…

4 дня ago

Сладкие консервированные помидоры с лимонной кислотой

Ингредиентыпомидоры — 1,5 кгсладкий перец — 0,5 шт.чеснок — 3-4 зубчикасоль — 2 ст.л.сахар —…

5 дней ago

Маринованные огурцы с мятой

Ингредиентыогурцы мелкие и средниестебли укропа и зонтики - 0.5 пучкаветочки мяты - 1 пучокчеснок -…

6 дней ago

Томаты в собственном соку

Ингредиентыпомидоры -2 кгвинный укусу светлый- 2 с.л.Пошаговый рецепт приготовленияДля приготовления томатов в собственном соку вымыть…

1 неделя ago

Соус из томатов с зеленью и чесноком

Ингредиентыпомидоры -1 кгзелень (петрушка, укроп, кинза) -200 г.чеснок - -3-4 зубчикаострый перец -1/2 шт.черный молотый…

2 недели ago

Мы используем файлы cookie.