Оглавление:

LEDura - Аналоговые светодиодные часы: 12 шагов (с изображениями)
LEDura - Аналоговые светодиодные часы: 12 шагов (с изображениями)

Видео: LEDura - Аналоговые светодиодные часы: 12 шагов (с изображениями)

Видео: LEDura - Аналоговые светодиодные часы: 12 шагов (с изображениями)
Видео: LEDura (Demonstration) : LED clock using Arduino and addressable LED ring 2024, Июль
Anonim
LEDura - Аналоговые светодиодные часы
LEDura - Аналоговые светодиодные часы
LEDura - Аналоговые светодиодные часы
LEDura - Аналоговые светодиодные часы
LEDura - Аналоговые светодиодные часы
LEDura - Аналоговые светодиодные часы

Проекты Tinkercad »

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

Часы могут отображать не только время, но и температуру в помещении, и они могут стать очень красивым украшением комнаты. Каждые 15 минут часы также создают некоторые спецэффекты - видео показывает их все, обязательно посмотрите. С помощью 2 кнопок и потенциометра пользователь может выбирать между различными режимами и изменять цвета по своему желанию. Я также обновил его, чтобы автоматически затемнять светодиоды, если в комнате становится темно, чтобы пользователь не беспокоился ночью.

Часы можно разместить на столе, прикроватном столике или повесить на стену.

Примечание: изображения не так хороши, как реальный вид из-за высокой яркости.

Шаг 1. Как читать?

Как это читать?
Как это читать?

Часы имеют 2 кольца - меньшее для отображения часов и большее для отображения минут и секунд. Некоторые светодиоды светятся постоянно - это так называемый компас, указывающий основные положения часов. На часовом кольце он представляет 3, 6, 9 и 12 часов, на минутном кольце - 15, 30, 45 и 0 минут.

Шаг 2: что вам понадобится

Что вам понадобится
Что вам понадобится

Материалы:

  • 1x Arduino Nano (вы также можете использовать любой другой Arduino)
  • 1x модуль DS3231 RealTimeClock
  • 1x адресуемое светодиодное кольцо - 60 светодиодов
  • 1x адресуемое светодиодное кольцо - 24 светодиода
  • 2x кнопки (НЕТ - нормально открытые)
  • 1x 100кОм потенциометр
  • 1x блок питания 5 В (мощность 1 А)
  • 1x разъем питания
  • Некоторые провода
  • 1x резистор 10кОм
  • 1x фоторезистор
  • Prefboard (необязательно)
  • Разъемы проводов клеммной колодки (опционально)
  • Древесина толщиной 25 мм, размер не менее 22 x 22 см
  • 1мм тонкий мат ПВХ пластик размер 20смx20xm

Инструменты:

  • Основные инструменты для строительной электроники (паяльник, плоскогубцы, отвертка и т. Д.)
  • Сверлильный станок
  • Пистолет для горячего клея
  • Наждачная бумага и немного лака для дерева
  • Станок с ЧПУ (может быть, у кого-то есть)

Шаг 3: компоненты электроники - предыстория

Компоненты электроники - Предпосылки
Компоненты электроники - Предпосылки
Компоненты электроники - Предпосылки
Компоненты электроники - Предпосылки
Компоненты электроники - Предпосылки
Компоненты электроники - Предпосылки

DS3231

Мы могли определить время, используя встроенный осциллятор и таймер Arduinos, но я решил использовать специальный модуль часов реального времени (RTC), который может отслеживать время, даже если мы отключим часы от источника питания. Плата DS3231 имеет аккумулятор, который обеспечивает питание, когда модуль не подключен к источнику питания. Он также более точен на более длительных периодах времени, чем источник часов Arduinos.

DS3231 RTC использует интерфейс I2C для связи с микроконтроллером - очень простой в использовании, и нам нужно всего 2 провода для связи с ним. В модуле также есть датчик температуры, который будет использоваться в этом проекте.

Важно: если вы планируете использовать неперезаряжаемую батарею для модуля RTC, вам следует отпаять резистор 200 Ом или диод 1N4148. В противном случае аккумулятор может взорваться. Более подробную информацию можно найти по этой ссылке.

Светодиодное кольцо WS2812

Я решил использовать кольцо из 60 светодиодов, чтобы отслеживать минуты, и кольцо из 24 светодиодов в течение нескольких часов. Вы можете найти их на Adafruit (кольцо neoPixel) или в некоторых дешевых версиях на eBay, Aliexpress или других интернет-магазинах. Среди адресуемых светодиодных лент существует большое разнообразие, и если вы впервые играете с ними, я рекомендую вам прочитать некоторые описания использования - вот несколько полезных ссылок:

https://www.tweaking4all.com/hardware/arduino/adr…

https://randomnerdtutorials.com/guide-for-ws2812b…

Адресная светодиодная лента имеет 3 разъема: 5V, GND и DI / DO. Первые два предназначены для питания светодиодов, последний - для данных. Будьте осторожны при подключении кольца к Arduino - ваша линия данных должна быть подключена к выводу DI (data IN).

Ардуино

Я использую Arduino Nano, потому что он маленький и достаточный для этого проекта. Вы можете использовать практически любой другой Arduino, но тогда вы должны быть осторожны при подключении к нему всего. Кнопки и светодиодные кольца могут быть на одних и тех же контактах, но разъемы I2C (для модуля RTC) могут отличаться от платформы к платформе - ознакомьтесь с их таблицей данных.

Шаг 4: Электроника - источник питания

Электроника - Блок питания
Электроника - Блок питания

И Arduino, и светодиодная лента должны иметь источник питания 5 В, чтобы мы знали, какое напряжение необходимо. Поскольку светодиодный индикатор горит, он потребляет довольно много ампер, мы не можем подключить его напрямую к Arduino, который может выдерживать максимум 20 мА на своем цифровом выходе. По моим измерениям, светодиодные кольца вместе могут потреблять до 500 мА. Поэтому купил переходник на ток до 1А.

Таким же блоком питания мы хотим запитать Arduino и светодиоды - здесь нужно быть осторожным.

Предупреждение! Будьте особенно осторожны при тестировании светодиодной ленты - адаптер питания НЕ должен быть подключен к Arduino, когда Arduino также подключен к ПК с помощью USB-разъема (вы можете повредить USB-порт вашего компьютера).

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

Шаг 5: Электроника - Пайка

Электроника - Пайка
Электроника - Пайка
Электроника - Пайка
Электроника - Пайка
Электроника - Пайка
Электроника - Пайка
Электроника - Пайка
Электроника - Пайка

Когда вы соберете все детали, пора их спаять.

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

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

Шаг 6: Программное обеспечение - Фон

IDE Arduino

Мы собираемся запрограммировать Arduino с помощью специального программного обеспечения: Arduino IDE. Если вы впервые играете с Arduino, я рекомендую вам ознакомиться с некоторыми инструкциями о том, как это сделать. В сети уже есть множество руководств, поэтому я не буду вдаваться в подробности.

Библиотека

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

Если вам интересно, как добавить внешнюю библиотеку в Arduino IDE, вы можете проверить некоторые уже сделанные инструкции.

Для модуля часов я использовал библиотеку Arduino для часов реального времени (RTC) DS3231 (ссылка), которую вы можете легко установить в Arduino IDE. Когда вы находитесь в среде IDE, нажмите «Скетч» → «Включить библиотеку» → «Управление библиотеками…», а затем отфильтруйте свой поиск по названию выше.

Примечание. По некоторым причинам в настоящее время я не могу добавлять файлы.zip. Вы можете найти библиотеку в моем репозитории GitHub.

Шаг 7. Программное обеспечение - Код

Программное обеспечение - Код
Программное обеспечение - Код
Программное обеспечение - Код
Программное обеспечение - Код

Состав

Приложение состоит из 4 файлов:

  • LEDclokc.ino Это основное приложение Arduino, в котором вы можете найти функции для управления всеми часами - они начинаются с префикса CLOCK_.
  • LEDclokc.h здесь определены подключения контактов и некоторые конфигурации часов.
  • ring.cpp и ring.h вот мой код для управления светодиодными кольцами.

LEDclock.h

Здесь вы найдете все определения часов. Вначале есть определения для проводки. Убедитесь, что они совпадают с вашими подключениями. Затем есть настройки часов - здесь вы можете найти макрос для количества режимов, которые есть у часов.

LEDclock.ino

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

При нажатии кнопки 1 режим переменной повышается на 1, при нажатии кнопки 2 повышается тип переменной. Мы используем эти переменные, чтобы определить, какой режим часов мы хотим видеть. Если обе кнопки нажимаются одновременно, вызывается функция CLOCK_setTime (), чтобы вы могли изменить время на часах.

Более поздний код считывает значение потенциометра и сохраняет его в переменной - при этом пользователь этой переменной может изменять цвета часов, яркость и т. Д.

Затем есть оператор switch-case. Здесь мы определяем, в каком режиме сейчас находятся часы, и в этом режиме вызывается соответствующая функция, которая устанавливает цвета светодиодов. Вы можете добавить свои собственные режимы часов и переписать или изменить функции.

Как описано в библиотеке FastLED, вы должны вызвать в конце функцию FastLED.show (), которая переводит светодиоды в цвет, который мы предварительно установили для них.

Вы можете найти гораздо более подробные описания между строками кода

Полный код прилагается ниже в файлах ниже.

СОВЕТ: вы можете найти весь проект в моем репозитории GitHub. Здесь код также будет обновлен, если я внесу в него какие-либо изменения.

Шаг 8: сделайте часы

Сделать часы
Сделать часы
Сделать часы
Сделать часы
Сделать часы
Сделать часы

Рамка часов

Я построил корпус часов с помощью станка с ЧПУ и дерева толщиной 25 мм. Вы можете найти эскиз, нарисованный в ProgeCAD, прикрепленный ниже. Прорези для светодиодного кольца немного больше, потому что производители предоставляют замеры только внешнего диаметра - внутренний может сильно отличаться… Сзади часов много места для электроники и проводов.

Кольца из ПВХ

Поскольку светодиоды довольно яркие, их хорошо как-то рассеять. Сначала я попробовал использовать прозрачный силикон, который рассеивает покрытие, но он довольно грязный, и его сложно сделать поверх него гладким. Поэтому я заказал кусок «молочного» ПВХ пластика размером 20х20 см и вырезал в нем два кольца на станке с ЧПУ. Вы можете использовать наждачную бумагу, чтобы смягчить края, чтобы кольца скользили в прорезях.

Боковые отверстия

Затем пора просверлить отверстия для кнопок, потенциометра и разъема питания. Сначала нарисуйте каждую позицию карандашом, затем просверлите отверстие. Здесь все зависит от типа кнопок - я выбрал кнопки со слегка изогнутой головкой. У них диаметр 16 мм, поэтому я использовал сверло по дереву такого размера. То же самое касается потенциометра и разъема питания. Обязательно потом сотрите все карандашные рисунки.

Шаг 9: нарисуйте дерево

Рисуем в лесу
Рисуем в лесу
Рисуем в лесу
Рисуем в лесу
Рисуем в лесу
Рисуем в лесу

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

Чтобы круги были красиво круглыми, я использовал кусок алюминия, просверлил в нем отверстие и проследил края отверстия паяльником (см. Рисунок). Убедитесь, что вы крепко держите алюминий, чтобы он не соскользнул во время рисования. И будьте осторожны при этом, чтобы избежать травм.

Если вы делаете рисунки и хотите, чтобы они были хорошо выровнены с пикселями часов, вы можете использовать «Режим обслуживания», который покажет вам, где будут располагаться пиксели (см. Главу «Сборка»).

Защитите древесину

Когда часы вас устроят, пора отшлифовать их и покрыть лаком для дерева. Я использовал очень мягкую наждачную бумагу (номинал 500), чтобы смягчить края. Рекомендую использовать прозрачный лак для дерева, чтобы цвет дерева не менялся. Нанесите небольшое количество лака на кисть и потяните по направлению к однолетникам в древесине. Повторить минимум 2 раза.

Шаг 10: Ассамбль

Assamble
Assamble
Assamble
Assamble
Assamble
Assamble

Сначала установите кнопки и потенциометр на свои места - если у вас слишком большие отверстия, вы можете использовать горячий клей, чтобы закрепить их на месте. Затем вставьте кольцевую полоску в разъемы и подключите ее провода к Arduino. Перед тем, как приклеить светодиодное кольцо на свое место, хорошо убедиться, что светодиодные пиксели находятся в нужном месте - по центру и выровнены с рисунком. Для этой цели я добавил так называемый режим обслуживания, в котором будут отображаться все важные пиксели (0, 5, 10, 15,… на минутном кольце и 3, 6, 9 и 12 на часовом кольце). Вы можете войти в этот режим, нажав и удерживая обе кнопки перед подключением источника питания к разъему. Вы можете выйти из этого режима, нажав любую кнопку.

Когда вы выровняете светодиодные кольца, нанесите немного горячего клея и удерживайте их, пока клей не затвердеет. Затем возьмите кольца из ПВХ и снова: нанесите немного горячего клея на светодиоды, быстро разместите их и подержите пару секунд. В конце концов, когда вы уверены, что все работает, вы можете приклеить плату (или Arduino) к дереву горячим клеем. Совет: не наносите слишком много клея. Просто небольшое количество, чтобы он держался в одном месте, но вы можете легко удалить его, если захотите что-то изменить позже.

В самом конце вставьте батарейку типа «таблетка» в ее держатель.

Шаг 11: Обновление - Фоторезистор

Апгрейд - Фоторезистор
Апгрейд - Фоторезистор
Апгрейд - Фоторезистор
Апгрейд - Фоторезистор
Апгрейд - Фоторезистор
Апгрейд - Фоторезистор

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

Для этого я использовал датчик освещенности - фоторезистор. Его сопротивление значительно возрастет; до нескольких мегаом в темноте и всего несколько сотен ом, когда на него светит свет. Вместе с обычным резистором они образуют делитель напряжения. Таким образом, когда сопротивление светового датчика изменяется, изменяется и напряжение на аналоговом выводе Arduino (которое мы можем измерить).

Перед пайкой и сборкой любой схемы целесообразно сначала смоделировать ее, чтобы вы могли увидеть поведение и внести исправления. С помощью Autocad Tinkercad вы сможете это сделать! Всего несколькими щелчками мыши я добавил компоненты, подключил их и написал код. В моделировании вы можете увидеть, как яркость светодиодов изменяется в зависимости от номинала фоторезистора. Это очень просто и понятно - вы можете играть с этой схемой.

После моделирования пришло время добавить функцию к часам. Я просверлил отверстие в центре часов, приклеил фоторезистор, подключил его, как это видно на схеме, и добавил несколько строк кода. В файле LEDclock.h вы должны включить эту функцию, объявив USE_PHOTO_RESISTOR как 1. Вы также можете изменить яркость комнаты, при которой часы будут затемнять светодиоды, изменив значение CLOCK_PHOTO_TRESHOLD.

Шаг 12: Наслаждайтесь

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

Я нашел вдохновение в каком-то очень интересном проекте в Интернете. Если вы решили построить часы самостоятельно, обратите внимание и на них! (NeoClock, Wol Clock, Arduino Colourful Clock) Если вы когда-нибудь решите попробовать следовать инструкциям, я надеюсь, что вы найдете это таким же приятным, как и я.

Если вы столкнетесь с какими-либо проблемами в процессе создания, не стесняйтесь задавать мне любые вопросы в комментариях - я с радостью постараюсь на них ответить!

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