Оглавление:

NeoClock: 7 шагов (с изображениями)
NeoClock: 7 шагов (с изображениями)

Видео: NeoClock: 7 шагов (с изображениями)

Видео: NeoClock: 7 шагов (с изображениями)
Видео: Новые продукты 09.04.2014 2024, Ноябрь
Anonim
Image
Image

Речь идет о создании часов с использованием фантастических неопиксельных колец от Adafruit. Самое интересное в этих часах то, что они на самом деле имеют два кольца неопикселей, одно для индикации часов, а другое для минут, секунд и миллисекунд. Часы показывают точное время с помощью микросхемы DS3234 DeadOn Real Time Clock от Sparkfun. Легко построить и весело модифицировать. Я надеюсь, что это вдохновит других на создание часов или другого искусства с использованием неопиксельных колец.

Для тех из вас, кто хочет получить все мои файлы в удобном для управления формате, не стесняйтесь загружать их из моего репозитория github для этого проекта по адресу

Шаг 1: проектирование часов

Проектирование часов
Проектирование часов
Проектирование часов
Проектирование часов
Проектирование часов
Проектирование часов
Проектирование часов
Проектирование часов

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

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

Шаг 2: проектирование электроники

Проектирование электроники
Проектирование электроники
Проектирование электроники
Проектирование электроники
Проектирование электроники
Проектирование электроники
Проектирование электроники
Проектирование электроники

Разработка электроники сводилась к тому, что я заранее знал, какие элементы в часах мне нужны:

  • Неопиксельные кольца (60 и 24)
  • Ардуино (мозги)
  • Регулировка часов (ардуино не умеют следить за временем)
  • Управление энергопотреблением

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

Первая итерация этого проекта появилась прямо со страницы Adafruit NeoPixel Basic Connections. Я включил диаграмму с веб-сайта, чтобы упростить задачу. Здесь важны две вещи:

  1. Конденсатор емкостью 1000 мкФ необходим для предотвращения повреждения пикселей начальным скачком тока.
  2. Резистор 470 Ом необходим на первом пикселе кольца на 60 отсчетов (этот резистор встроен в кольцо на 24 отсчета)

У Adafruit также есть набор лучших практик NeoPixel, с которыми вам следует ознакомиться, прежде чем продолжить работу над дизайном.

Еще одна проблема - отсчет времени на часах. Встроенных часов на Arduino недостаточно, чтобы сохранять хорошее время в течение длительного периода времени. Еще хуже то, что время на Arduino может каждый раз сбрасывать. Компьютеры решают эту проблему, используя небольшую батарею на микросхеме часов, чтобы отсчитывать время между отключениями питания. Раньше я использовал что-то вроде ChronoDot от Adafruit. Но в этом случае мне нужен был предлог для использования DS3234 (DeadOn RTC) от SparkFun. Вы также можете хранить информацию о дате в DeadOn RTC, если хотите интегрировать ее в часы.

Наконец, необходимо подумать об управлении питанием. Я уже знал, что все должно быть 5 В, но количество необходимого тока казалось загадкой. Распространенным регулятором напряжения в большинстве проектов является L7805. Для этого потребуется напряжение до 24 В и максимальный ток до 1,5 А. Я знал, что у меня валяется настенное сусло 12 В и 1,5 А, поэтому решил, что это будет идеальный (и дешевый!) Регулятор напряжения для этого проекта.

Остальные части собирались доставить из моей коробки запчастей или Radio Shack. Они включали провода, переключатели и разъем питания постоянного тока.

Шаг 3: создание электроники

Создание электроники
Создание электроники
Создание электроники
Создание электроники
Создание электроники
Создание электроники

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

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

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

Электромонтаж прост, но на изображениях важно помнить следующее:

  • Для переключателей Mode и Set потребуются понижающие резисторы. Я использовал резисторы 2,21 Ом, которые у меня были, но подойдет любой небольшой резистор (желательно не менее 1 кОм). Это стабилизирует подключенные входные контакты Arduino, чтобы их можно было отличить от шума при их повышении.
  • Прямоугольный сигнал (SQW) на DS3234 был заземлен, поскольку он не используется.
  • Питание от L7805 передается в Arduino Mini в формате RAW. Всегда помещайте питание Arduino в формат RAW.
  • Первый пиксель неопиксельного кольца 60 имеет резистор 470 Ом, чтобы уменьшить любое повреждение первого пикселя из-за всплесков данных. Это не должно быть проблемой, поскольку 24-разрядный neopixel уже имеет для этого встроенный резистор, но лучше перестраховаться, чем сожалеть.
  • Переключатели Mode и Set представляют собой кнопочные переключатели мгновенного действия SPST.

Цвета проводов:

  • Красный: + 5 В постоянного тока
  • Черный: Земля
  • Зеленый: данные
  • Желтый, Синий, Белый: специальные провода для DS3234

Если вы впервые используете неопиксели, помните, что их можно рассматривать как длинную цепочку. Поэтому может показаться странным говорить о «первом пикселе» в кольце, но на самом деле у каждой цепочки в кольцах есть начало и конец. В этом проекте сначала идут 24 пикселя маленького кольца, а после - 60 пикселей большего кольца. Это действительно означает, что у меня есть цепочка из 84 неопикселей.

Для подключения к Arduino Mini:

  • DS3234 подключается к контактам 10-13
  • Переключатели Mode и Set находятся на контактах 2 и 3.
  • Неопиксельные данные поступают с вывода 6.

Я также рекомендую разместить 6 заголовков в нижней части Arduino Mini, чтобы вы могли программировать его через кабель FTDI.

Важное замечание о токе: эти часы требуют много. Я уверен, что смогу с этим разобраться, но мой практический опыт показывает, что значение, равное или меньшее 500 мА, в конечном итоге приведет к потере энергии. Это проявляется в том, что часы мигают сумасшедшими цветами и не отсчитывают время. Мой последний настенный сусло - 12 В и 1,5 А, и у меня никогда не было коричневого сусла. Однако 1,5 А - это предел, который выдержит регулятор напряжения (и другие части). Так что не превышайте эту сумму.

Шаг 4: кодирование часов

Кодирование часов
Кодирование часов

Полный код часов можно найти в коде NeoClock на GitHub. Я включил файл сюда, но в репозитории произойдут любые изменения.

Я считаю, что написание кода может быть сложной задачей, если вы попытаетесь сделать все сразу. Вместо этого я пытаюсь начать с рабочего примера и создавать функции по мере необходимости. Прежде чем я перейду к этому, я хочу указать, что мой код получен из объединения множества примеров из следующих репозиториев и форума Arduino CC. Всегда отдавайте должное, где это необходимо!

  • https://github.com/adafruit/Adafruit_NeoPixel
  • https://github.com/zeroeth/time_loop
  • https://github.com/sparkfun/DeadOn_RTC

Некоторые примеры кода из этих репозиториев можно найти в моем каталоге примеров кода.

Порядок операций, которые я использовал для создания кода, выглядел примерно так:

  • Подтвердите, что неопиксели работают с помощью примера Strand Test.
  • Попытка запустить часы с кодом временной петли
  • Измените часы, чтобы они работали на двух кольцах вместо одного
  • Добавьте DS3234 для отслеживания времени с помощью примера DeadOn RTC
  • Добавьте режим и установите переключатели
  • Добавьте код Debounce с помощью руководства Arduion Debounce
  • Добавьте несколько цветовых тем для светодиодов часов
  • Добавьте анимацию для отметок 0, 15, 30 и 45 минут.
  • Добавьте точки компаса на часы для ориентации отметок 0, 15, 30 и 45 минут.

Если вы хотите увидеть, как я создал этот код, вы можете использовать GitHub для просмотра каждой фиксации кода. История часов находится в истории фиксации.

Было весело добавлять цветовые схемы, но в итоге я включил в меню только четыре из них. Каждая тема устанавливает определенный цвет для часовой, минутной, секундной и миллисекундной «стрелок». На самом деле варианты здесь безграничны, но я включил темы (перечислены имена методов):

  • setColorBlue
  • setColorRed
  • setColorCyan
  • setColorOrange

Однако вы можете найти эти дополнительные методы в коде:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

Анимации были добавлены, потому что мне понравилась идея, когда старые часы отбивают четыре пятнадцатиминутных отметки на часах. Для этих часов я сделал следующие анимации:

  • 15 минут: Раскрась кольца в красный цвет.
  • 30 минут: раскрасьте кольца в зеленый цвет.
  • 45 минут: Раскрась кольца в синий цвет
  • Начало часа: нарисуйте радугу на двух кольцах.

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

Последний лакомый кусочек касается миллисекунд. Миллисекунды на Arduino отрываются от внутреннего кристалла Arduino, а не от DS3234. Вам решать, хотите ли вы отображать миллисекунды или нет, но я так делал, часы всегда что-то делают. Вас может беспокоить то, что миллисекунды и секунды не всегда совпадают, но на практике никто никогда не упоминал об этом мне, глядя на часы, и я думаю, что это выглядит неплохо.

Шаг 5: проектирование файлов для лазерной резки

Проектирование файлов для лазерной резки
Проектирование файлов для лазерной резки
Разработка файлов для лазерной резки
Разработка файлов для лазерной резки
Проектирование файлов для лазерной резки
Проектирование файлов для лазерной резки
Разработка файлов для лазерной резки
Разработка файлов для лазерной резки

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

  • 1x шпон МДФ - орех
  • 1x Шпон МДФ - Вишня
  • 1x акрил - светло-серый
  • 1x акрил - опал

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

Размеры часов в основном определялись размером неопиксельных колец. Чего я не знал, так это того, какой толщины он должен быть, чтобы в него поместилась электроника. Собрав электронику и зная, что толщина дерева составляет около 5,5 мм, я решил, что мне нужно около 15 мм пространства внутри часов. Это означало три слоя дерева. Но поскольку передняя и задняя часть уже занимают большую часть места в моем дизайне, мне нужно было разбить эти кольца на «ребра», которые я мог склеить позже.

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

Стоимость материалов составляла всего около 20 долларов, но стоимость резки оказалась примерно на 100 долларов больше. Этому способствовали две вещи:

  • Кривые и круги стоят дороже, потому что станок движется по двум осям, а в этой конструкции много изгибов.
  • Растеризация требует большого количества проходов вперед и назад по куску. Отказ от этого сэкономил бы больше всего денег, но мне это понравилось.

После завершения дизайна я отправил файлы EPS в Ponoko, и мои работы были готовы примерно через неделю.

Обратите внимание, что я не включил переключатели Mode и Set или разъем питания постоянного тока в дизайн. Когда я отправил это, я еще не определился с этими частями. Для большей гибкости я оставил их и решил просверлить их позже вручную.

Шаг 6: создание часов

Конструирование часов
Конструирование часов
Конструирование часов
Конструирование часов
Конструирование часов
Конструирование часов
Конструирование часов
Конструирование часов

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

После сборки корпуса я решил просверлить отверстия для переключателей и разъема питания. Небольшая геометрия (как на картинке) помогла мне все выровнять. Используя отдельный кусок дерева снаружи, когда я просверлил (очень осторожно!), Я проделал отверстия и приклеил переключатели и домкрат.

Затем вошла вся электроника. Сначала приклеил неопиксели, а потом конденсатор. Я подключил их к плате отключения питания neopixel. Затем для задней части я протянул провода к переключателям и разъему питания. Еще я включил стабилизатор напряжения L7805.

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

Что касается того, какой пиксель обозначен кодом как «верхний» для каждого кольца, вам необходимо немного отредактировать код. У меня есть два значения в моем коде с именами «inner_top_led» и «outer_top_led». В моих часах «inner_top_led» находился на расстоянии 11 пикселей от начала малого кольца, а «outer_top_led» - на 36 пикселей от начала большого кольца. Если вам случится сориентировать кольца по-другому, вы измените эти значения, чтобы они соответствовали вашей ориентации. Немного поэкспериментируйте, и вы довольно быстро найдете правильное значение.

На этом этапе я проверил, что все работает, как ожидалось.

Но, как и во всем проекте, я столкнулся с проблемой, поскольку понял, что не понял, как все будет держаться. Я заметил, что у меня было около 3/8 дюйма пространства между неопикселями и ребрами, поэтому я направился в Home Depot и купил дюбель 3/8 дюйма и несколько неодимовых магнитов. Я построил маленькие деревянные подставки в трех местах и отшлифовал их, чтобы я мог прикрепить два магнита на каждую подставку (используя суперклей). В итоге у меня осталось 3 пары по 2 стойки в каждой. Затем я приклеил их к раме и закрепил зажимом. Я сделал это, пока клей на подставках был влажным, чтобы все выровнялось, а затем высохло в нужном месте. Это сработало отлично, и мне нравится, что релиз полностью скрыт.

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

Шаг 7: Заключительные мысли

Создавать этот проект было очень весело, и мне понравилось узнавать о неопикселях и DS3234. Мне особенно понравилось, наконец, создать проект, который хорошо выглядел от начала до конца. Есть несколько вещей, которые я бы обновил, если бы сделал это снова, но они второстепенные:

  • Для простоты я выбрал две кнопки вместо трех. Но иметь кнопку, которая позволяла бы мне спускаться так же, как и вверх, было бы неплохо для установки часов.
  • Кнопку режима и кнопку настройки невозможно отличить. Я их часто путаю. Возможно, в будущем я бы поставил их по разные стороны.
  • Я так и не закончил деревянный фасад. Сначала мне понравился необработанный вид, но позже я забеспокоился, что если я испорчу отделку, это будет стоить очень дорого, чтобы исправить это.
  • Растеризация дерева выглядела неплохо, но в будущем я мог бы нарисовать больше деталей для дерева.
  • Также неплохо было бы уменьшить яркость часов, так как в темноте они довольно яркие. Однако затемнение привязано к цвету, и, выяснив, что этот бит занимает слишком много времени, я его отбросил. Я бы, вероятно, снова вложил средства в эту функцию в будущем.

Спасибо, что прочитали это руководство. Надеюсь, вы создадите свои собственные часы или проект неопикселя и поделитесь им со мной. Счастливого строительства!

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