DIY LED Cube: ультимативный гайд для сильных духом. Часть 1. Сборка
В народе говорят, что каждый радиолюбитель должен собрать своими руками хотя бы один радиоприёмник, а каждый настоящий DIY-щик — LED Cube. Действительно, какой же ты радиолюбитель, если не собрал ни одного радио? (смайл)
Со светодиодным кубом тема интересная, но имеет множество «нюансов», поэтому я всё время откладывал построение собственного куба. И, как выяснилось, не зря — если бы я только знал во что ввязываюсь, то скорее всего никогда бы не взялся за этот проект.
На деле всё вылилось в просто-таки экзистенциальный вызов и испытание, которое может пройти только человек с узкой задницей стальными нервами, кучей навыков и умений и непреклонной волей к победе — иначе вся эта конструкция уже на сотом светодиоде полетит через всю комнату в мусорное ведро (или просто тупо не включится после подачи питания).
Но зато, если ты преодолел все трудности и создал это маленькое чудо, то можешь наслаждаться как самим девайсом (а это совершенно замечательная штука, особенно в умелых руках), так и осознанием того, что ты сдал экзамен на звание DIY-щика 80-го уровня (смайл).
❯ Что такое LED Cube?
Я надеюсь, что вы знаете, что такое светодиодный куб — это трёхмерная матрица из светодиодов, установленных в пространстве в виде куба, как правило, 4×4х4, 8×8х8 или 16×16х16. Самым популярным является вариант 8×8х8, который содержит 512 светодиодов — это оптимальный компромисс между визуальными возможностями куба, его стоимостью и трудоёмкостью изготовления.
В общем, основное предназначение подобных девайсов — это декоративная подсветка и «модерновое» оформление рабочего места и интерьера (с чем LED Cube справляется на пять с плюсом).
Но лично мне LED Cube, помимо его основной функции, интересен тем, что это ни что иное как настоящий 3D дисплей и его можно использовать именно в этом качестве, то есть выводить на него нужную информацию.
Немного подробнее: дисплей имеет 512 светодиодов, каждый из которых может отображать состояние какой-либо части сложной системы, например, умного дома. Куб может одновременно (разными цветами) отображать состояние десятков датчиков, как климатических, так, например, и охранных или любую другую активность системы, например сетевую. То есть вся ваша сложная система с десятками датчиков и подсистем может одновременно отображаться на подобном кубе — вам достаточно просто взглянуть на него, чтобы стало понятно состояние сложной системы в целом и состояние всех её отдельных частей.
Итак, резюмируя возможное применение LED Cube:
- Декоративный светильник
- Элемент Hi-Tech оформления интерьера
- 3D дисплей низкого разрешения
- Индикатор состояния сложных IoT систем
- (Совершенно замечательный) стенд для обучения программированию
Ну и кроме всего вышеперечисленного, это просто красиво (смайл).
❯ Выбор платформы
Ок, мы решили взяться за этот проект и построить собственный LED Cube с API и беспроводным управлением, но что взять в качестве основы? Разрабатывать подобный проект с нуля можно, но есть ли смысл тратить время на изобретение очередного велосипеда?
Здравый смысл подсказывает, что лучше изучить чужой опыт и взять в качестве основы самый адекватный, уже реализованный открытый проект LED Cube. А вот с этим, как выяснилось, есть проблемы — проектов светодиодных кубов много, но все они какие-то «мутные» — то концепция неясна, то часть проекта не описана, то отсутствуют в открытом доступе какие-то необходимые части и т. д. и т. п.
Долго я пытался найти нормальный исходный проект, но ничего вменяемого не попадалось. Одно время пытался даже взять в качестве исходного комплекты для сборки кубов на Aliexpress, но там закрытая архитектура и какой-то странный управляющий MCU, что сразу ставит крест на этих вариантах.
В результате поисков самое вменяемое, что мне удалось найти — это проект LED Cube от AlexGyver — открытая схема, ссылки на комплектующие, Arduino Nano в качестве управляющего MCU (а это означает, что мы можем как угодно программировать его), примеры программирования, гербер-файлы, плюс подробная видео-инструкция по сборке. Чего ещё желать? — его то мы и возьмём в качестве основы для нашего проекта.
❯ Архитектура системы
В исходном проекте от AlexGyver управлением кубом занимается Arduino Nano, причём этот контроллер «наглухо» впаивается в плату, что закрывает возможность аппаратной модернизации системы и лишает возможности оснащения куба беспроводным интерфейсом и собственным API, необходимым для интеграции его в IoT системы.
Поэтому нами будут внесены изменения в подсистему управляющего MCU куба. Для начала вместо запайки Arduino Nano в плату, нами будет использоваться установка разъёма (колодок) под Arduino Nano. Как минимум, это даёт нам возможность легко заменять контроллер при выходе его из строя, без перепайки платы и разборки куба.
Далее, при модернизации управляющего контроллера и замене «слабенькой» Arduino Nano на что-нибудь более современное и беспроводное, наподобие ESP8266 или ESP32, эта колодка будет использоваться для установки переходной платы ESP8266/ESP32.
То есть при помощи такого простого действия, как установка колодки под плату контроллера, мы получаем возможность менять управляющие MCU (и соответствующий функционал куба) «как перчатки» и наша плата LED Cube превращается в своеобразный «универсальный стенд» для экспериментов.
Тут возможны три варианта архитектуры:
- Системой управляет Arduino Nano (базовый вариант)
- Системой управляет ESP8266/ESP32 (индикация и беспроводной интерфейс)
- Гибридный вариант Arduino Nano (индикация) плюс ESP8266/ESP32 (интерфейсы)
В практическом плане можно сначала собрать базовый вариант и в своё удовольствие поэкспериментировать с программированием эффектов для 3D дисплея или декоративного светильника. Затем можно собрать платку с ESP8266/ESP32 и прокачать свои навыки по программированию беспроводных и веб-интерфейсов и создать API вашей мечты для управления кубом.
❯ Приступаем начинать
Ну что ж, с вводными и теоретической базой мы закончили, теперь приступаем к практической реализации проекта.
Первое, что нужно сделать — это заказать изготовление печатной платы будущего куба в одном из соответствующих сервисов, а также заказать комплектующие по указанным на сайте проекта ссылкам. А пока всё это хозяйство едет к вам, можно посмотреть видео по сборке от AlexGyver, чтобы быть во всеоружии и примерно представлять что и в какой последовательности вам предстоит делать.
Сервисы по изготовлению печатных плат, как правило, не делают по одной плате и у вас, скорее всего, окажется несколько одинаковых плат. Можно парочку оставить себе, а остальные раздать друзьям или продать желающим приобщиться к высоким технологиям и программированию (тем самым окупив часть расходов на изготовление комплекта плат). Можно также скооперироваться с друзьями или единомышленниками и заказать изготовление плат сразу на всю компанию.
После того, как с Aliexpress приедут остальные комплектующие, ваш стартовый набор будет выглядеть вдохновляюще примерно так.
Ключевой элемент здесь — светодиоды. Выглядят пакетики безобидно, но вы много раз задумаетесь о бренности всего сущего и смысле вашей жизни, пока будете паять ажурную конструкцию из 512 светодиодов. Причём делать это придётся не абы как, а безупречно ровно и безупречно с электрической точки зрения, чтобы какое-нибудь из тысячи соединений не отвалилось в уже собранном кубе без возможности что-либо исправить при помощи паяльника.
В общем, это будет неплохое испытание для вашей безупречности.
❯ Сборка платы
Сборка самой платы куба является относительно простым и тривиальным делом — если вы обладаете начальными навыками пайки, то особых трудностей со сборкой платы куба у вас возникнуть не должно.
Набор комплектующих небольшой, все они однотипные и все посадочные места компонентов обозначены на плате — достаточно просто аккуратно расставить детали по предназначенным для них местам и аккуратно припаять их.
По поводу разводки платы можно сказать следующее: плату я собрал и проверил — с электрической точки зрения она разведена корректно — всё работает так, как и должно работать. Но вот сама разводка мне не очень нравится: есть в ней какая-то «несистемность» — симметрия расположения компонентов нарушена, одна микросхема вообще «прилеплена» на другой стороне платы, резисторы и транзисторы тоже разведены «несистемно», в общем, я бы так никогда не сделал, но это только лишь придирки эстета, к функционалу платы у меня претензий нет.
Выше представлена исправленная и окультуренная принципиальная схема платы куба, из которой хорошо видно, что вся схема — это в основном сдвиговые регистры с необходимой обвязкой, там и деталей то особо нет никаких.
В результате, паяем верхнюю сторону платы, на которой установлены 5 транзисторов управления слоями, микросхема 74HC595 и колодка для установки Arduino Nano (или будущей управляющей платы на ESP8266/ESP32).
Светодиоды и кнопки я не стал распаивать — у меня куб будет управляться либо напрямую из скетча Arduino IDE, либо по беспроводному API через ESP8266/ESP32. Хотя, если вдруг понадобятся, кнопки и светодиоды можно в любой момент допаять.
Нижняя сторона платы. Невооружённым взглядом видны косяки разводки — мало того, что три оставшихся транзистора пришлось распаивать на обратной стороне платы, так они ещё и перекрывают ряды пинов колодки контроллера. В целом удалось всё грамотно «загнуть», но такая разводка платы — это, по большому счёту, не очень серьёзно.
❯ Сборка матрицы светодиодов
Всё, на этом шутки заканчиваются и начинается суровая правда жизни. Далее нам предстоит создать ажурную конструкцию из 512 светодиодов и, если вы не уверены в себе, то это ваш последний шанс отказаться, всё бросить и заняться чем-нибудь более полезным попроще. Правда в этом случае ни светодиодного куба, ни звания DIY-щика 80-го уровня вы не получите, что, согласитесь, весьма обидно (смайл).
Собирать светодиоды в кубическую конструкцию можно разными способами. Как правило, это послойная (поэтажная) сборка массивов 8×8 из 64 светодиодов. Но тут коллега AlexGyver пошёл нестандартным путём и предложил сборку вертикальных (боковых) секций по 64 светодиода.
Скажу честно, я не обладаю такой мощью абстрактного мышления, чтобы аргументированно возражать автору по этому поводу. Мне не очень нравится идея собирать куб не послойно, а боковыми секциями, но тут я решил просто довериться автору и не выступать со своим особым мнением.
Для сборки секций автор предлагает сделать специальный шаблон (матрицу) из макетной платы. Чем больше будет плата — тем легче будет собирать секцию светодиодов. Идеально, чтобы на плату помещались все 64 светодиода, но мне удалось купить только плату размера 18×12 см., что привело к увеличению количества операций по сборке.
Предварительно нужно особым образом согнуть ножки светодиодов. Это занимает всего две операции: сначала нужно согнуть обе ножки в сторону, как показано на фото ниже.
А затем отогнуть нижнюю (длинную) ножку на 90 градусов. Правда эти две несложные операции вам придётся проделать 512 раз.
Затем все 64 светодиода собираются в секцию 8×8 и аккуратно спаиваются в вертикальные и горизонтальные ряды. Тут очень важный момент: паять выводы светодиодов надо не абы как, а на совесть, не допуская ни одной ошибки и плохой пайки. Все 512 светодиодов в 8 секциях должны быть припаяны идеально, то есть правильно и качественно, иначе весь проект может потерпеть крах, когда вы включите куб, а у вас что-то не будет работать.
Это самая трудоёмкая часть проекта, когда паять нужно правильно, точно и качественно и делать это огромное количество раз. Положительным моментом тут сможет быть то, что если вы вначале работы не обладали корочками монтажника 6-го разряда, то по завершении сборки куба сможете преподавать мастерство пайки в ближайшем колледже (смайл).
В результате всей этой титанической работы вы должны получить что-то вроде того, что изображено ниже на фото — 8 вертикальных секций, которые осталось только установить на соответствующие места в печатной плате куба. Перед этим нужно будет проверить все секции на корректность сборки и работоспособность всех установленных светодиодов.
Устанавливать довольно просто — втыкаете ножки от секции светодиодов в предназначенные для них места на печатной плате (пока припаивать ничего не надо). И таким образом устанавливаете все 8 секций.
❯ Окончательная сборка куба
Перед окончательной сборкой куба нужно сказать несколько слов о полупрозрачной плёнке. В оригинальном проекте контроллер Arduino Nano установлен без панельки, непосредственно в плату, поэтому есть возможность полностью покрыть плату полупрозрачной плёнкой.
Плёнка служит для частичного сокрытия деталей печатной платы и отражающей поверхностью при работе светодиодного куба. Плёнка также выполняет и ещё одну функцию — защищает печатную плату от пыли — сдуть осевшую пыль будет гораздо легче с плёнки, чем с печатной платы с кучей деталей.
В нашем проекте Arduino Nano устанавливается на панельку и, кроме того, нам может понадобиться некоторое место для установки дополнительных компонентов при модернизации куба. Поэтому у нас плёнка несколько короче платы и как бы делит её на две части — «законченную» и «технологическую». Что не только не ухудшает внешний вид девайса, а наоборот делает его более интересным и «футуристичным» (это будет хорошо видно после окончательной сборки куба).
После установки всех секций, их нужно выровнять и зафиксировать перемычками горизонтальных слоёв-этажей, а также соединить каждую этажную шину с соответствующем выводом управляющего транзистора.
После этого можно припаять выводы всех секций с обратной стороны платы. Всё это нужно делать аккуратно, не торопясь и не допуская ошибок.
Тут нужно сделать ещё одно важное замечание. Сборка куба состоит из нескольких тысяч элементарных операций, каждая из которых должна быть выполнена абсолютно корректно. Конструкция куба такова, что после его окончательной сборки что-либо исправить крайне проблематично — всё уже оказывается наглухо запаяно и не предполагает возможности для лёгкого доступа и перепайки чего-либо.
Поэтому добиться успеха можно только делая абсолютно всё по сборке куба правильно и с первого раза. А учитывая огромное количество операций, сделать это не так-то просто. Так что имейте в виду этот момент, если всё-таки решитесь реализовать этот проект.
❯ Цветовая гамма
Есть ещё один момент, касающейся цветового оформления куба. В оригинальном проекте куб одноцветный, что, на мой взгляд, на порядок снижает его привлекательность и практическую ценность. В идеале, куб нужно делать из «умных» светодиодов WS2812, но это уже будет совсем другая история, а в нашем случае можно применить псевдо-цветное решение — выполнить разные слои из светодиодов разного цвета. Это будут всё те же обычные светодиоды, но у наблюдателя будет возникать полная иллюзия, что он имеет дело с полноцветным кубом — буйство цветов и красок будет обеспечено.
И, кроме того, выводить различную информацию можно в различные по цвету слои. Например, сделать индикацию состояния метео-датчиков в синем слое, а охранных — в красном и т. п.
Я применил такую раскраску и чередование слоёв, которая себя более, чем оправдала — смотрится такой куб просто отлично.
❯ Результат сборки
Ну и после окончательной сборки остаётся только помолиться и подключить питание. Если вы всё сделали правильно, то вас ожидает совершенно потрясающая красота, которую бесполезно описывать словами — это нужно видеть своими глазами.
К сожалению, фотографии не передают той феерии красок и эффектов, которые выдаёт куб, но общее представление о том, что вас ожидает вы получить можете.
А то, что создавать эффекты для этого куба вы с лёгкостью можете при помощи Arduino-программирования (или любого другого, на ваш вкус) делает этот девайс просто мега-девайсом, который хочется программировать, отложив все остальные дела.
❯ Видео
Ну и напоследок видео различных эффектов. Я не знаю что не так с моими камерами, но ни одна из них не смогла адекватно снять работу куба — на видео только жалкое подобие того, что есть в реальности. На самом деле все цвета светодиодов яркие и насыщенные и в реальности работа LED Cube выглядит на порядок привлекательнее, чем на видео.
Так что по видео можно оценивать только динамику работы эффектов, но не саму красочную картинку, создаваемую кубом. Кстати, все эти всполохи и засветки — это не результат работы куба, а результат некорректной работы алгоритмов подстройки изображения видеокамеры.
❯ Замеченные косяки
Пока я заметил только два косяка в работе куба.
Первый состоит в том, что различные типы (цвета) светодиодов имеют различную яркость свечения. А у нас везде применены типовые ограничивающие резисторы 220 Ом. Поэтому перед сборкой куба нужно подобрать номиналы резисторов для панелей каждого цвета, чтобы искусственным образом выровнять яркость свечения всех светодиодов.
В моём случае куб уже полностью собран и для решения этой проблемы придётся «выкусывать» резисторы, как минимум, самых ярких зелёных светодиодов (нормально выпаять их уже нет возможности без разборки куба) и колхозить их замену на резисторы с большим сопротивлением.
Второй состоит в том, что наблюдается «паразитная» подсветка соседних (по вертикали) с включёнными светодиодов где-то примерно на 5–7% яркости. Это особо не мешает и практически незаметно, но как-то «неаккуратненько». Судя по всему это не аппаратная, а программная проблема — где-то «проскакивают» лишние биты при динамической работе светодиодов. Скорее всего на уровне сдвигового регистра управления слоями. Но это только моё предположение и это всё нужно проверять отдельно.
Но все эти «косяки», по большому счёту, несущественны и даже без их устранения куб работает просто замечательно.
❯ Заключение
Самый сложный этап сборки и запуска LED Cube мы (я) проделали и далее можем приступать к самому интересному — созданию эффектов для этого куба, подключения к нему ESP8266/ESP32 для беспроводного управления, создания API и интеграции его в домашнюю IoT систему. Этим мы и займёмся в следующих статьях цикла о LED Cube.
P.S.
Неплохо было бы собрать ещё один такой куб на «умных» светодиодах WS2812. Если кто знает подобный проект, так же хорошо проработанный, документированный и открытый, как описанный выше — напишите об этом в комментах.
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩