Оглавление:

Светодиодные часы с использованием неопикселей: 4 шага (с изображениями)
Светодиодные часы с использованием неопикселей: 4 шага (с изображениями)

Видео: Светодиодные часы с использованием неопикселей: 4 шага (с изображениями)

Видео: Светодиодные часы с использованием неопикселей: 4 шага (с изображениями)
Видео: Часы из неопикселей WS2812B с коррекцией времени по интернету . 2024, Июль
Anonim
Светодиодные часы с использованием неопикселей
Светодиодные часы с использованием неопикселей
Светодиодные часы с использованием неопикселей
Светодиодные часы с использованием неопикселей
Светодиодные часы с использованием неопикселей
Светодиодные часы с использованием неопикселей
Светодиодные часы с использованием неопикселей
Светодиодные часы с использованием неопикселей

Добро пожаловать в мою статью о том, как сделать светодиодные часы с использованием 60 неопикселей.

Вы найдете 3 прикрепленных PDF-файла: один предназначен для сегментов часов, другой - для основы и, наконец, один является шаблоном, помогающим склеить части вместе.

Итак, чтобы завершить это, вам понадобятся следующие

  • Кольцо из 60 неопикселей занимает 4 четверти. поиск по запросу "ws2812 ring 60" (12,00 £)
  • Поиск RTC для "модуля DS3231" (2,50 фунта стерлингов)
  • Arduino Nano (4 фунта стерлингов)
  • Фанера толщиной 3 мм / 1/8 дюйма.
  • кусочки проволоки. надеюсь, у вас будет немного под рукой?
  • Блок питания USB 5в. Типа, на котором ваши дети разрушили разъем.

Ниже представлены элементы Lipo с батарейным питанием, но после тестирования часы потребляли слишком много энергии, поэтому аккумулятор был заменен сетевым USB-блоком питания.

  • dc-dc converter поиск "boost converter" (3 фунта стерлингов)
  • Схема зарядки TP4056 поиск "tp4056" (2 £)
  • LiPo 1000 мАч, одиночный элемент. выполните поиск по запросу "1000 мАч липо 3,7" ИЛИ "503450 липо" (8,00 фунтов стерлингов)

Номер LiPo - 503450, и было бы неплохо узнать, что это означает 50 мм в длину, 34 мм в ширину и 5,0 в глубину.

Шаг 1: деревянные биты

Деревянные биты
Деревянные биты
Деревянные биты
Деревянные биты
Деревянные биты
Деревянные биты

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

Когда все кусочки вырезаны, вы должны сначала проверить, как они все подходят друг к другу, а затем склеить их все. Я построил 3 слоя поверх плана часов, чтобы убедиться, что все было правильно круглым. Также убедитесь, что нижние части находятся в правильной ориентации, а весь средний срез установлен в перевернутом виде, чтобы вы перекрывали стыки.

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

Серия изображений также показывает, как собирается основание.

Шаг 2: Подключение светодиодного кольца

Подключение светодиодного кольца
Подключение светодиодного кольца
Подключение светодиодного кольца
Подключение светодиодного кольца
Подключение светодиодного кольца
Подключение светодиодного кольца
Подключение светодиодного кольца
Подключение светодиодного кольца

Не так много можно сказать об этом шаге, но на всякий случай, если вы не использовали полосу WS2812LED, они умны, поэтому у каждого есть данные, входящие и выходящие. В дугах из 15 светодиодов печатная плата обрабатывает все соединения, но когда вы присоединяетесь к секциям, вам необходимо выполнить подключения питания и данные. Вы не можете ошибиться в соединениях, потому что они находятся в круге, однако, когда вы закончите круг, у вас должно быть одно звено, отсутствующее на ВХОДЕ / ВЫХОДЕ данных, чтобы вы могли подключить провода к ВХОДУ данных. В том месте, где провода подключаются к входу данных, будет первый светодиод или, если он правильно пронумерован, НУЛЬ.

Я задавался вопросом, как лучше всего прикрепить кольцо светодиодов к деревянному кольцу? но в конце концов я решил использовать ткацкий шнур и ткацкий станок по окружности, пропуская каждый раз светодиоды.

Шаг 3: Подключение Arduino Nano и питания

Подключение Arduino Nano и Power
Подключение Arduino Nano и Power
Подключение Arduino Nano и Power
Подключение Arduino Nano и Power
Подключение Arduino Nano и Power
Подключение Arduino Nano и Power

Сначала я решил использовать LiPo в этом проекте, но когда я попробовал его, батарея разрядилась за ночь. Сначала я подумал, что батарея может быть неисправной, поэтому я измерил ток и обнаружил, что схема потребляет 73 мА, что означает, что на батарее это будет больше. Фактически, я измерил ток в батарее (до повышающего преобразователя) и обнаружил, что он превышает 110 мА. Таким образом, было очевидно, что эти часы не будут работать от батареи.

Поэтому вместо этого я предпочитаю использовать зарядное устройство USB на 5 В. У меня есть множество мертвых USB-зарядных устройств из-за того, что двое маленьких детей злоупотребляют разъемами.

Так как мы используем светодиоды WS2812, у нас есть только 3 подключения к Arduino Nano.

  • Власть
  • Земля
  • Данные IN. Оранжевый к D2 на Nano

Затем у нас есть RTC, у которого всего 4 провода.

  • Мощность 5 Вольт
  • Земля
  • SCL (часы I2C) от синего до A5 на Nano
  • SDA (данные I2C) от желтого до A4 на Nano

Наконец, нам нужно питание, и оно поступает на клемму питания 5 В на Nano. Vin рассчитан на напряжение выше 5 вольт (то есть 7-12 вольт) и землю.

Шаг 4: Программа

Мне очень нравится программировать, просто я не очень в этом разбираюсь.

Проблема 1

Секунды и минуты правильно представлены в виде числа от 0 до 59. Однако первый светодиод и, следовательно, ноль находятся внизу. Так что это нужно было исправить.

недействителен правильноPos (int A)

{if (A 30) {A = A - 31; }} temp = A; }

Проблема 2

Я попытался очистить все светодиоды перед отображением нового положения, однако из-за этого светодиоды начали мигать. Поэтому я решил включить следующий светодиод, а затем выключить предыдущий. Это сработало нормально ?? НЕТ, потому что, если бы новая позиция была равна нулю, он попытался бы выключить -1. так что этим занимались одновременно.

void deletePrevious (интервал B)

// удаляем предыдущий светодиод, если он был нулевым, то // выключаем 59, иначе просто вычтите 1 // и выключите тот. {if (B == 0) {strip.setPixelColor (59, 0, 0, 0); // Все выключено} else {strip.setPixelColor (B - 1, 0, 0, 0); // все выключено}}

Проблема 3

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

если (сек == мин-1)

{strip.setPixelColor (мин-1, 0, 30, 0); }

Проблема 4

Вещи начинают выглядеть хорошо, так давайте смешаем цвета, когда они попадают в одно и то же положение?

если (мин == сек)

{strip.setPixelColor (mins, 15, 13, 0); // зеленый и красный, чтобы сделать желтый. }

Проблема 5

Часы начинаются в 24-часовом формате. так что сначала нужно исправить

если (часы> 12)

{часы = часы -12; }

Проблема 6

И давайте не будем забывать, что в сутках 24 часа, а у меня 60 светодиодов. Легко действительно умножить на 5

часы = часы * 5;

Проблема 7

Сделав все вышесказанное, теперь у нас есть час, прыгающий через 4 светодиода, было бы намного лучше, если бы он использовал все светодиоды и правильно показывал доли часа? Опять же, это было легко исправить, я просто добавил исходное число минут, разделенное на 12, к часам.

часы = часы + (addMin / 12);

Проблема 8

Когда индикатор часов или минут находится внизу, секунды исчезают на одну секунду раньше.

часы = если (мин == 0)

{if (secs == 59) {strip.setPixelColor (59, 0, 30, 0); // зеленый}} if (hours == 0) {if (secs == 59) {strip.setPixelColor (59, 0, 30, 0); // зеленый}}

Проблема 9

Установка времени. Я решил сделать эту сборку очень простой, чтобы не включать кнопки для регулировки времени. Так что просто нужно подключить часы к компьютеру и загрузить новое время. Просто раскомментируйте раздел ниже и установите необходимое время, а затем загрузите программу. После исправления повторно прокомментируйте строку и повторно отправьте программу, иначе, если вы потеряете питание, она перезапустит настройку и снова загрузит старое время.

// 12 апреля 2020 года в 23:20 вы должны позвонить:

//rtc.adjust(DateTime(2020, 4, 12, 23, 20, 0));

Рекомендуемые: