До Нового года осталось совсем немного, а значит самое время делать бесполезные мигающие штуки, у которых цель одна - создавать праздничное настроение. В прошлом году это был Рождественский светильник-арка, сегодня же я предлагаю сделать светодиодную снежинку. Не смотря на то, что ее эффекты зависят только от фантазии, ее конструкция предельно проста. Arduino NANO, лента с адресными светодиодами WS2812B и резистор - это все, что нужно.
Конструкция
Снежинке нужна основа, а в моем распоряжении имеется 3D принтер, и вполне логично, что для этой задачи была создана соответствующая 3D модель. Снежинка состоит из основания, на котором крепятся светодиодные ленты, верхней полупрозрачной крышки и отсека под Arduino, который располагается с обратной стороны. Существует два варианта исполнения отсека, отличаются они лишь расположением окна под разъем. Отсек так же имеет второе назначение - на нем расположено крепление для подвешивания снежинки на стену. А для настольной установки существует специальная подставка.
Да, такой вариант изготовления является весьма удобным, но это вовсе не означает, что этот вариант единственный. Снежинку вполне можно изготовить из вспененного ПВХ пластика, заказать лазерную резку или вообще вырезать из потолочной плитки, например. Были бы желание и фантазия, и "Снежинка из светодиодной ленты и пластиковой панели" - тому подтверждение.
Наша снежинка будет иметь шесть лучей, а каждый луч, в свою очередь, будет иметь шесть светодиодов. Следовательно, нужно нарезать светодиодную ленту на шесть отрезков (для этого на ленте нанесена соответствующая разметка).
Существуют различные вариации подобных светодиодных лент, с количеством светодиодов от 30 до 144 штук на метр. В данном случае используется 74 светодиода на метр, именно под такую ленту спроектирован корпус снежинки. Это важный момент, если вы собираетесь печатать корпус на 3D принтере. К слову, снежинка состоит из 36 светодиодов (6 лучей по 6 светодиодов), а значит, одного метра хватит ровно на две снежинки, еще и два светодиода останется.
Перед приклеиванием отрезков ленты необходимо аккуратно удалить защитное покрытие (если используется лента с защитой), и залудить контактные площадки.
Лента имеет четкое направление, и соединять ее как попало недопустимо, устройство просто не будет работать. Это направление указано непосредственно на ленте.
Для удобного соединения лучи необходимо разместить таким образом, чтобы стрелки на лучах указывали от центра снежинки к ее краям.
После этого можно переходить к непосредственной сборке схемы.
Схема
Схема предельно проста, и наша цель фактически заключается в том, чтобы соединить разрезанную ленту обратно. Выход первого луча (DO) соединяется со входом (DI) второго луча, выход второго со входом третьего, и так далее, до последнего луча снежинки. А питание ленты (5V и GND) соединяется теперь в центре снежинки.
В результате всех соединений к ленте должно быть подключено три провода: вход первого луча снежинки (DI) и два вывода питания (5V и GND). И вот их необходимо подключить к Arduino.
Резистор 330 Ом припаян непосредственно к проводу, и на всякий случай защищен термоусадкой.
Выводы питания светодиодной ленты припаяны к соответствующим контактным площадкам Arduino (5V и GND), и всё это закреплено для надежности термоклеем.
Небольшое отступление
Одним из вариантов питания Arduino является разъем mini USB на борту. При этом, на соответствующих выводах 5V и GND так же появляется питание. И велик соблазн запитать нагрузку (в нашем случае это светодиодная лента) непосредственно от Arduino. Это вполне допустимо, но с небольшими оговорками. Во-первых, потребляемый ток не должен быть более 500 мА. Да, запитать Arduino в дальнейшем можно будет от того же зарядника телефона, но прошивать-то микроконтроллер все равно придется, а если ток будет выше, то USB порт компьютера вероятнее всего уйдет в защиту. И во-вторых сами дорожки на плате не рассчитаны на большой ток. В нашем случае ток при работе снежинки не превышает 200 мА, потому такое подключение вполне позволительно и безопасно. Но если же Вы решите увеличить количество светодиодов, то имейте ввиду этот момент.
Теперь можно поместить плату в отсек. Держится плата за счет торцевой защелки и направляющих, и в дополнительном креплении не нуждается.
Крепится отсек к основанию снежинки при помощи четырех маленьких шурупов со стороны ленты.
Прошивка
Самая сложная часть работы выполнена, осталось прошить микроконтроллер. К счастью, все платы Arduino имеют уже "залитый" загрузчик на борту, что значительно облегчает задачу, так как для прошивки не требуется дополнительное оборудование. Все манипуляции выполняются путем подключения к разъему mini USB Arduino. А так как этот разъем выведен наружу для питания устройства, складывается весьма удачная ситуация, когда для прошивки не потребуется разбирать устройство. Это удобно и при выходе новой прошивки, и при экспериментах по созданию собственных эффектов.
Для программирования используется среда разработки Arduino IDE, которую необходимо скачать с официального сайта (https://www.arduino.cc/en/software).
Открываем скетч "SnowFlake_V1.ino", но перед прошивкой необходимо провести ряд обязательных манипуляций.
Установка библиотеки FastLED
Так как скетч снежинки использует стороннюю библиотеку FastLED, ее необходимо установить. Сделать это можно несколькими способами, я же покажу два.
Способ 1. Менеджер библиотек
Перейдите в меню "Скетч" -> "Подключить библиотеку" -> "Управлять библиотеками...". В строке поиска наберите "fastled" и нажмите "Установка" в поле нужной библиотеки (FastLED by Daniel Garcia).
Способ 2. Архив библиотеки
Если по каким-либо причинам установка библиотеки первым способом невозможна (например, отсутствует интернет), ее можно установить через меню "Скетч" -> "Подключить библиотеку" -> "Добавить .ZIP библиотеку...". Архив библиотеки находится в папке проекта (FastLED-master.zip). Распаковывать его не нужно, указывается именно архив.
Подключение к Arduino
Далее необходимо настроить параметры программируемого устройства. На этом этапе нужно подключить снежинку к USB порту. Выполняется настройка в меню "Инструменты". Всего нам нужно указать три параметра:
Плата: "Arduino Nano".
Процессор: "ATmega328P" или "ATmega328P (Old Bootloader)". Выбор зависит непосредственно от залитого загрузчика. Если контроллер отказывается прошиваться с первым вариантом, просто выберите второй вариант.
Порт: номер порта можно посмотреть в "Диспетчере устройств". Подключенная Arduino определяется как COM порт, и вот его и нужно указать в данном поле.
Загрузка скетча
Все предварительные настройки выполнены, можно переходить к непосредственной загрузке скетча. Для этого нажимаем кнопку "Загрузка" в верхней части экрана (или меню "Скетч" -> "Загрузка" (Ctrl + U)). Если все сделано верно, то после компиляции скетча он будет загружен в Arduino, появится сообщение о том, что загрузка завершена.
Осталось закрыть верхнюю крышку (она тоже крепится маленькими шурупами) и снежинка готова создавать новогоднее настроение.
Демонстрация эффектов