Трёхцветный светодиодный 3D-куб 8x8x8 с возможностью программирования через Arduino и вывода своих анимаций + Акриловый корпус к нему: Наборы для самостоятельной сборки
- Цена: $24.23 + 16.75$ + 2.5$
- Перейти в магазин
Этот светодиодный куб позволяет не просто воспроизводить запрограммируемую в его контроллер последовательность анимаций, но и создавать их самому в среде Arduino IDE и выводить их на куб через интерфейс UART. Обзор насыщенный, поэтому ввёл содержание, где кликнув по нужному разделу или пункту, сразу можно попасть в указанное место в тексте без длительного скроллинга. Чтобы вернуться к содержанию обзора, в тексте будет попадаться кнопка [МЕНЮ].
Внимание, трафик! Размер обзора — 20 Мб.
Предметы обзора:
1) Светодиодный куб 8x8x8 с поддержкой Arduino — 24.23$
2) Акриловый корпус 12x12x14см — 16.75$
1. Упаковка
— Комплектация
— Содержимое пакетика с радиодеталями
2. Сборка. Последовательность
— Шаг 1: Подготовка светодиодов
— Шаг 2: Спайка светодиодов
— Шаг 3: Материнская плата
— Шаг 4: Припаивание стеклотекстолитовых 8-контактных стоек
— Шаг 5: Припаивание светодиодных сеток к стойке
— Как выглядит полностью собранный куб
— Габариты и вес полностью собранного куба
3. Как создать и вывести свои фигуры. Работа с массивами. Подключение к Arduino
— Немного вводной по массивам
— Почему тип данных char?
— Почему массив нужен на 64 элемента?
— Синхронизация Ардуино и Куба. Процедура передачи массивов на куб
— Рисование своей графики и преобразование её в массив символов
4. ✪ Самая интересная часть: демонстрационные видео + моя наработка
— Стандартные анимации (+видео)
— Анализ музыкального спектра (+видео)
— Анимированный вывод на куб показаний c датчика температуры и влажности DHT22 (+видео)
5. Особенности, о которых нужно знать
— Припой
— Флюс
— Жало и температура
— Порядок расстановки групп светодиодов по цвету
— Питание и замеры тока
6. Выводы и мысли. Плюсы и минусы
— Достоинства
— Недостатки
7. Альтернативы 8x8x8
8. Ссылки на дополнительные материалы
[МЕНЮ]
Весь комплект был изначально плотно обёрнут в несколько слоёв поролона — с этим всё хорошо. Отложив стенки акрилового корпуса, в пакете с остальными компонентами увидел вложенную бумажку со ссылкой на инструкцию по сборке куба.



Комплектация
1) Акриловый корпус — 6 стенок
2) Основная материнская плата стеклотекстолитовая
3) Стеклотекстолитовые 8-контактные стойки
4) 3 пакетика со светодиодами (256 красных, по 128 синих и зелёных)
5) Микроконтроллер STC 15F2K60S2
6) USB-кабель питания 3.5мм (Nokia)
7) Кабель акустический 3.5мм (муж.-муж.)
8) Пакетик с радиодеталями
9) Пакетик с шурупами и гайками для акрилового корпуса
10) Пульт дистанционного управления

Материнская плата изготовлена из стеклотекстолита и должен отметить, плотная и крепкая, на изгибы руками не поддаётся, ощущается хорошее качество. В ней просверлено 64 сквозных отверстий — это не спроста, поскольку именно эта плата и будет играть роль трафарета при спаивании светодиодной группы, поэтому пилить-сверлить свой трафарет уже не придётся, что плюс:






Если её положить на верхнюю стенку акриловой стенки, то она будет лежать практически впритык к пазам, в которые вставляются другие стенки из акрила:

Три пакетика со светодиодами, с опознавательными кружочками соответствующего цвета. Красных светодиодов столько же, сколько зелёных и синих вместе взятых, т.е. 256шт. красных и по 128 — синих и зелёных. Однако на самом деле их должно быть побольше, потому что и покупатели, и продавцы понимают, что среди них могут оказаться бракованные или пользователь испортит некоторые во время пайки, поэтому признаком вежливости и хорошего тона является досыпка лишних светодиодов сверху:

Размер одного такого — 3мм

Микроконтроллер STC 15F2K60S2, 40-выводной, в DIP-корпусе. Все процессом управлять будет он один, хотя в других наборах по сборке кубов вдобавок обычно идёт несколько микросхем сдвигового регистра

Четыре стойки, из стеклотекстолита, 8-контактные, по 4 контакта с каждой плоской стороны. Тоже по ощущениям сделаны качественно:

Два кабеля, один — USB, для подключения питания к кубу, имеет круглый штекер 3.5мм, который использовался раньше в старых телефонах Nokia. Второй кабель аудио 3.5мм, для подключения источника звука к кубу:

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


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



Восемь пар винтов и гаек для скрепления стенок акрилового корпуса

[МЕНЮ]
Содержимое пакетика с радиодеталями
1) Инфракрасный приёмник в экранирующем кожухе
2) Четыре разноцветных светодиода
3) Различные разъёмы:
— Два одинаковых круглых аудио разъёма 3.5 мм
— Круглый разъём для подключения питания
— UART-разъём 3S1P для приёма команд с Ардуино
4) 64 цанговых контакта для светодиодной сетки
5) Резистор 10кОм

[МЕНЮ]
Шаг 1: Подготовка светодиодов
Выводы у всех светодиодов необходимо загнуть определённым образом. Это будет довольно объёмная работа, поскольку проделать эту операцию нужно не менее 512 раз.
В этом деле я использовал пинцет. Обхватываю им светодиод таким образом, чтобы его выводы были устремлены кверху, при этом чтобы катод (короткий минусовой вывод) был слева, а анод (длинный плюсовой) вывод — был справа. Под самый корень загибаю пальцем катод вперёд. Затем пинцетом обхватываю уже сам анод (длинный плюсовой вывод) так, чтобы катод был параллелен губкам пинцета, а анод загибаю под углом 90 градусов по отношению к катоду:

Анимированная инструкция для более ясного понимания:

Небольшая кучка уже готовых светодиодов:

[МЕНЮ]
Шаг 2: Спайка светодиодов
Прежде, чем использовать материнскую плату в роли трафарета для формирования светодиодных сеток, к ней нужно сперва припаять те четыре разноцветных светодиода — они на этом этапе будут играть роль стоек-ножек:


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

Сверху надо положить ещё одну такую же стойку:

Зажать пальцами, чтобы выводы не гуляли и спаять аноды (плюсовые выводы) светодиодов:

Теперь верхнюю стойку можно убрать, она уже не понадобиться:

Во второй ряд поместить третий светодиод, его катод (минусовой вывод) спаять с катодом соседнего светодиода:


Припаиваем четвертый светодиод, как обычно: катод — к катоду соседнего диода, анод — к аноду соседнего диода. Дальше — аналогично с другими светодиодами до конца, чтобы в итоге получилась сетка 2x8.

Обратите внимание: анодные выводы светодиодов в идеале расположены чуть выше катодных выводов светодиодов, поскольку последние мы загибали под самый корень, а первые — через губки пинцета:

В итоге у меня получилось три кучки мини-сеток 2x8, слева направо: синие (8шт.), красные (16шт.) и зелёные (8шт.).
От каждого цвета — лишних светодиодов осталось примерно по 20 штук, остатки в хозяйстве пригодятся.
На всякий случай, на этом этапе, нужно эти сетки проверить на предмет выявления бракованных/перегретых светодиодов. Мультиметр ставится в режим прозвонки цепи, плюсовой щуп соединяется с общим анодом, тем временем минусовым щупом поочерёдно касаемся катодов светодиодов и наблюдаем за яркостью свечения светодиодов.

Если всё в порядке, можно приступить к спаиванию этих мини-сеток в полноценные сетки 8x8, на плате-трафарете они располагаются согласно цвету. Точно также — катоды спаиваются с катодами соседних светодиодов.


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

[МЕНЮ]
Шаг 3: Материнская плата
Припаиваем радиодетали к плате:
1) Резистор
2-3) Аудиоразъёмы 3.5мм
4) 4-контактный разъём
5) Инфракрасный приёмник
7) Посадочный сокет под микроконтроллер (согласно ключу)

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


Облудить цанговые контакты нужно и с другой стороны платы — для усиления:

Устанавливаем микроконтроллер:

[МЕНЮ]
Шаг 4: Припаивание стеклотекстолитовых 8-контактных стоек к плате
Припаяем стойки к плате. Они 8-контактные (по 4 контакта с каждой стороны) и ориентироваться при этом нужно согласно ключу в виде белых треугольников:

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



Поскольку контакты расположены здесь очень близко друг к другу, то если в других случаях на качество используемого припоя можно в общем-то закрыть глаза, то в случае с контактами стоек такая халатность не пройдёт — «будут коротыши» гарантированно. Эту стойку я перепаивал раз наверно семь. Непропай позже исправил.


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

[МЕНЮ]
Шаг 5: Припаивание светодиодных сеток к стойке
Теперь нужно аккуратно посадить две сетки катодами на цанговые контакты — занятие это довольно хлопотное, понадобится не одна пара рук, поскольку если например с одного края вставить выводы в контакты, то сетка с другого края наоборот начинает стремиться вверх из-за упругости конструкции.

Аноды светодиодов на этом изображении смотрят вверх — их нужно загнуть к контактам платы, для последующего их припаивания к ним.

После припаивания, точно также по порядку расправляемся с другими компонентами:
1) Припаиваем стойку
2) Размещаем две светодиодные сетки на цанговых конактах
3) Загибаем аноды, припаиваем их к контактам стойки


— т.е. как вы поняли, одна стойка рассчитана на две сетки 8x8
Завершённая конструкция выглядит так:







Подаём питание — работает, отлично.

Отмываю всё от флюса, собираю корпус. Если вам удалось собрать куб, то корпус то точно соберёте без проблем.
Крафт-бумага отклеивается без труда, однако акрил хорошо притягивает пыль и легко царапается. К комплектным шурупам с гайками не было шайбочек. Корпус после сборки хоть и не значительно, но при приложении усилия люфтит. Много денег просят за него.



Как выглядит полностью собранный куб


Габариты и вес полностью собранного куба
Габариты: 14x12см
Вес: 323гр.

[МЕНЮ]
Прежде, чем перейти к обзору программной составляющей, окинем взглядом разъём подключения к Ардуино. Это четырёх-контактный разъём 3S1P, использовать будем из них три контакта — RX, 5V и GND:
RX (куб) <- TX (Arduino)
5V (куб) <-> 5V (Arduino)
GND (куб) <-> GND (Arduino)
Четвёртый контакт предполагаю, что TX, но мы ничего принимать с куба не будем, поэтому он не используется. Мы будем только передавать на куб свои пакеты данных. Для подачи питания на куб можно использовать как круглый разъём, так и первый контакт разъёма 3S1P, — как по мне, второй вариант удобнее. Напряжение должно быть 5В, от 3.3В куб не заработает.

Немного вводной по массивам
Массивы в программировании бывают многомерными и одномерными. С многомерными я и сам не совсем разобрался, они сложны и вовсе не обязательны в нашем деле, поэтому рассматриваться здесь будут одномерные массивы. Представляют собой структуру данных, идущих в памяти один за другим. Структура эта — есть набор ячеек (элементов массива), которые могут быть пусты, все или частично заполнены данными, а также изменены по ходу выполнения программы. Количество этих ячеек — есть размерность массива.
Объявленный в коде массив может выглядеть так:
или так:
Доступ (индексация) к определённой ячейке массива с целью её считывания выглядит так:
Для доступа к определённому диапазону ячеек массива часто используется цикл for(;;){}. Попробуем на примере просто обнулить все элементы массива:
Почему char?
Этот тип переменных, если мы работаем с Ардуино (AVR), имеет размер 1 байт, в котором 8 бит — это соответствует разрешению одной стороны куба — 8 светодиодов. Кроме char ещё можно использовать uint8_t или тип byte в среде Arduino IDE. Просто char имеет диапазон от -127 до 127, с ключевым словом unsigned (беззнаковый) — от 0 до 255, т.е. мы будем работать только с положительными значениями.
Почему массив нужен на 64 элемента?
Во-первых, для корректного отображения на кубе нарисованной нами графики. Если послать на куб массивы других размерностей, то выведется непонятная «каша».
Во-вторых, как мы выше уже отметили, один элемент типа char имеет размер 1 байт (8 бит). Если условно поделить куб на вертикальные столбцы, в каждом из которых 8 светодиодов, то получим 64 столбца, или 64 байта, в каждом из которых 8 бит (8 светодиодов). Почему именно на вертикальные столбцы я поделил куб, чуть ниже наглядно покажу.

[МЕНЮ]
Синхронизация Ардуино и Куба. Процедура передачи массивов на куб
Предполагается, что куб уже подключен к Ардуино в соответствии с распиновкой, рассмотренной выше. Подаём питание на оба устройства. На кубе сначала загорятся верхние красные светодиоды, но не все, частично, в одном углу каждую секунду будут загораться по ещё одному красному светодиоду (на видео ниже увидите).Это процесс ожидания кубом каких либо команд по UART и в течении 10 секунд мы должны послать с Ардуино специальную служебную команду — (0xAD), которая переведёт куб в режим постоянной работы с Ардуино (пока есть питание). Помимо этого нужно определить скорость работы UART 38400. В коде это выглядит так — сначала прописываем скорость, потом саму команду:

И давайте попробуем послать что-нибудь на куб. Отправлять мы будем конечно же массив, 64-элементный, но непосредственно перед каждой отправкой массива, нужно посылать на куб уже другую служебную команду — (0xF2). При передаче массива указываем имя массива, через запятую его размерность 64:
Отправим пока единицу. Объявлен 64-элементный массив, в первом элементе которого записана единица.
Общий код выглядит так:

На кубе загорелся один светодиод в правом нижнем углу задней стенки — этот светодиод является началом или самым первым элементом массива:

Теперь отправим максимальное значение для типа char — 255 (или 0xFF в шестнадцатеричной системе счисления):

Теперь загорится весь столбик из 8 светодиодов, т.е. уже понятно, что каждый элемент массива — вертикальный столбик из 8 светодиодов (8 бит):

[МЕНЮ]
Рисование своей графики и преобразование её в массив символов
Для начала ознакомимся с принципом рисования графики на примере редактора символов для светодиодных матриц разрешением 8x8. Нарисуем в левом окошке букву «T», а в окошке справа автоматически будет калькулироваться массив символов. На этом примере — элементы массива расположены в столбик — это не принципиально, т.к. эти элементы можно расположить и в одной строке. Элементы тут представлены в шестнадцатеричной системе счисления:

Элементы массива в привычной нам десятичной системе счисления:

А вот так выглядят элементы в бинарной (двоичной) системе счисления:

Обратите внимание, если обвести контуром все единицы, то увидите очертания нашей буквы «T»:

Теперь, казалось бы, можно скопировать массив символов и вставить в код для последующего вывода буквы «T» на куб. Можно конечно:

Только тут будет одна загвоздка: буква «Т» повёрнута на 90 градусов и просто лежит на боку. Это из-за особенностей конструкции сеток светодиодов.

Поэтому для рисования графики для куба мы будем пользоваться программой 3D8S Alpha.

По идее она служит для прямого вывода анимаций на кубе, но эта версия куба такую возможность не поддерживает. Мы будем прибегать к этой программе только для рисования и копирования сгенерированного массива символов для последующей вставки в код Ардуино.
Нарисуем в самом верхнем левом окошке всё ту же букву «Т», и тем временем автоматически скалькулируется массив символов, на последней строчке, куда указывает красная стрелка на скриншоте:

Наблюдательный глаз заметит, что последовательность символов несколько отличается от той, которая была при рисовании точно такой же буквы на рассматриваемом выше ресурсе с редактором символов.
Скопируем эту строчку и вставим её в 64-элементный массив pcube:

Загружаем код на плату Ардуино, получаем нормальную прямостоящую букву «T»:

Продублируем эти элементы на вторую строчку:

Заливаем код на плату, и получаем на выходе уже двухслойную букву «T»

Но что, если вывести эту букву на переднюю стенку? Можно конечно первые 56 элементов массива pcube заполнить нулями, а символами, формирующими букву «T» — занять оставшиеся 8 элементов массива:

— но это довольно утомительно, прописывать все элементы массива. Поэтому массив pcube мы сделаем 8-элементным, — он будет содержать только букву «T» и этот массив мы посылать уже не будем на куб, т.к. для этого создадим другой массив, буферный mBuffer[64], в который мы будем, используя цикл for(;;){}, копировать элементы из массива pcube и затем уже посылать его по UART на куб. Как это выглядит в коде:

— индексация буферного массива mBuffer начинается с 56-го элемента и заканчивается последним 63-м элементом, и при каждом проходе в эти элементы последовательно копируются все 8 элементов массива pcube, где индекс [i-56].
Прошиваем Ардуино и видим на выходе букву «T» уже на передней стенке куба:

[МЕНЮ]
Стандартные анимации (+видео)
Анализ музыкального спектра (+видео)
Реализация этой фичи как-то особо не впечатлила, ожидал большего.
Клавиша «0» — перевод куба в этот режим.
Клавиша «1» — возвращает куб к стандартному воспроизведению анимаций
Анимированный вывод на куб показаний c датчика температуры и влажности DHT22 (+видео)
Меня не столько привлекает возможность создания каких-то новых абстрактных анимаций, сколько вывод на куб какой-то действительно полезной информации. Например с датчика температуры и влажности DHT22. Но при этом согласен, статичное отображение мало интересно, поэтому простую анимацию я всё же реализовал — это пролёт букв и цифр с задней стенки куба на переднюю. В коде объявлено три массива типа unsigned char:
massBukov[56], содержащий буквы M, Y, S, K, U, B, T
massNumber[40], содержащий цифры от 0 до 9
massBUF[64], буферный массив, посылаемый в куб.
Поскольку разрешение одной стороны куба 8x8, то выводить на неё мы можем максимум двухзначное число, которое будет формироваться в зависимости от показаний датчика. Перед выводом числовых показаний будет появляться буква, соответствующая типу показаний, например «В» — это влажность, а «Т» — температура.
При запуске программы реализовал вывод названия многим знакомого ресурса, на котором этот обзор и выложен. После этого циклически выводится температура и влажность на куб.
Для успешной компиляции этого скетча требуется наличие библиотеки DHT.
[МЕНЮ]
Припой
Важную роль здесь играет. По моей просьбе один товарищ мне как-то привёз моток ленточного припоя. И всё бы ничего, но именно при припаивании стеклотекстолитовых стоек к материнской плате я убедился, насколько дряной и отвратительный этот припой. Нормально припаять близко расположенные контакты им не получится, поскольку вместо четырёх контактов образуется два или вовсе один. И даже если тонким жалом удалось припаять контакты без явных соплей, то дело этим не ограничиться, так как при прозвонке соседних контактов всё равно будут коротыши уже из-за микроскопических соплей, которые можно рассмотреть под микроскопом. Из-за плохого припоя мне пришлось перепаивать контакты на стойках раз пять, однако вместе с тем я убедился, насколько качественно сделаны эти стойки и материнская плата, в ином случае — на них бы давно поотваливались бы дорожки. Дряной припой после пайки обычно имеет матовую поверхность, хороший же припой — блестит после пайки и явных соплей не образовывается.
Флюс
На протяжении всего процесса построения куба я использовал флюс KIngbo 218. Светодиоды боятся перегрева, но благодаря флюсу, касание их выводов нагретым жалом составляло где-то полсекунды. Флюс наносил шприцем с тонкой иглой, что экономило его. В итоге на всё про всё у меня израсходовалось где-то 1.5 кубика флюса. Поскольку работа предстоит объёмная, то пайкой лучше заниматься с вытяжкой наподобие как у меня.
Жало и температура
В основном использовалось жало типа «копытце» T12-BCM3 — для формирования светодиодных сеток и пайки радиодетатей к материнской плате. Для припаивания стеклотекстолитовых стоек применял жало T12-D16. Температура нагрева всегда оставалась 320 градусов.
Порядок расстановки групп светодиодов по цвету
Вовсе не обязательно следовать задумке продавца и паять светодиоды именно так (рис.1), когда каждый цвет представляет собой горизонтальный слой. Можно поступить иначе, когда например передняя панель полностью состоит из красных светодиодов, а задняя — зелёная, при этом синий остаётся посередине (рис.2):

Питание и замеры тока
Как и было выше сказано, есть два способа запитать куб током — это через круглый разъём на его левой стороне и через 4-контактный разъём на передней стороне. Номинальное напряжение 5В. Разумеется я померил ток потребления.
Понятное дело, что если мы имеем дело с анимацией, то потребление тока будет колебаться.
Со включенной нижней подсветкой (4 разноцветных светодиода) диапазон токопотребления составил 50-80мА:


С отключенной нижней подсветкой этот диапазон значительно уменьшился до 25-47мА


Я бы сказал, это небольшое энергопотребление, поэтому этот куб без труда можно запитать от смартфона с поддержкой OTG через USB-OTG кабель:

[МЕНЮ]
Сборка этого куба — занятие не для слабонервных. Потребуется много усердия и терпения, чтобы его построить. На сборку я потратил два дня: один световой день у меня ушёл только лишь на формирование светодиодных сеток, и 5-6 часов следующего дня — уже на сборку всего остального. Очень хотелось поскорее его собрать.
Мои впечатления о нём в целом положительные, поскольку это не просто игрушка, а уже дорабатываемый девайс, который предлагает реальный простор для творчества благодаря поддержке Ардуино. Для меня это также возможность наглядно отточить навыки работы с массивами, без которых в серьёзных проектах уже никак не обойтись. Это различные операции, например как кольцевой сдвиг определённого диапазона элементов массива в указанную сторону, который часто применяется в навесных дисплеях для вывода бегущей строки.
Однако нашлась кучка моментов, которые мне не понравились — это реализация анализа музыкального спектра, самая лишняя и ненужная вещь здесь, но это на мой взгляд. У вас может быть иное мнение.
Функционал пульта ДУ не задействован на 100%, всего четыре рабочие кнопки — не густо.
Хотя плюсик тут есть — это возможность выключить нижнюю подсветку из экономных или эстетических соображений, т.к. у кого-то она может вызвать ощущение «китайской игрушечности». Если берёте самую дешёвую версию куба с поддержкой Ардуино и без пульта, то скорее всего отключить нижнюю подсветку уже не получится, но и тут есть выход — светодиоды можно просто выпаять потом, коснувшись толстым жалом паяльника сразу обоих выводов светодиода.
Однако задействовать все кнопки пульта вполне реально, если написать соответствующий код для Ардуино, подключив уже к нему инфракрасный приёмник и тогда можно будет, используя пронумерованные клавиши, переключаться между своими анимациями или выводом данных, например между курсами валют, температурой и временем. Правда тут уже без ESP8266 не обойтись. В общем, сам факт возможности вывода полезной информации посредством Ардуино делает куб весьма интересным для исследования и реализации полезных его свойств.
Достоинства:
— Развитие мелкой моторики
— Зрелищно выглядит в темноте
— Понятная и толковая инструкция для сборки
— Довольно качественная плата и стойки из стеклотекстолита
— Есть простор для творчества благодаря поддержке Ардуино
— Светодиодов и цанговых контактов продавец досыпает с запасом
— Нет необходимости делать трафарет самому — плата им и является
Недостатки:
— Продавец не консультирует по поводу доработки куба до более дорогой версии
— Отверстия под стеклотекстолитовые стойки на плате — шире самих стоек
— Пару команд, поддерживаемых пультом — не серьёзно. Нет батарейки
— Цанговые контакты перекашиваются. Их хлопотно паять
— Акриловый корпус имеет люфт. Царапается. Дорого
— Плохая реализация анализа звукового спектра
[МЕНЮ]
Кратко прокомментирую альтернативные варианты, доступные для покупки.
На выбор есть несколько модификаций кубов, с поддержкой карт памяти, с динамиками для воспроизведения музыки, однако из более дорогих версий интерес представляет модификация под номером 4, умеющая посредством USB-TTL конвертера напрямую выводить графику, нарисованную в программе 3D8S — эта модификация может быть интересна тем, кто не умеет программировать. Остальные возможности вроде карт памяти, динамиков, анализов спектра, пультов — лично по моему мнению просто переплата денег за ненужные фичи. Если умеете программировать, то рекомендую взять самую дешёвую версию с поддержкой Ардуино под номером 2. На али стоимость дешевле, чем на ebay.
Кроме того, каждой модификации существует несколько видов — трёхцветная (как в обзоре), и одноцветная, т.е. все светодиоды одного цвета, и этих цветов доступно всего пять: красный, белый, синий, зелёный и розовый. Только мне не понятно, почему розовая версия самая дорогая из них.
1) Самая простая и дешёвая версия куба, без поддержки Ардуино
EBAY: Трёхцветный - 20$ + 2.5$ (доставка) || Одноцветный - 18.30-21.30$ + 2.5$ (доставка)
AliExpress: Трёхцветный - 17.48$ || Одноцветный - 16.28-18.68$
2) C поддержкой работы от Ардуино
EBAY: Трёхцветный - 21$ + 2.5$ (доставка) || Одноцветный - 19$ + 2.5$ (доставка)
AliExpress: Трёхцветный - 18.67$ || Одноцветный - 17.71-20$
3) Поддержка Ардуино + пульт ДУ + муз.спектр
EBAY: Трёхцветный - 24.23$ + 2.5$ (доставка) || Одноцветный - 23-27$ + 2.5$ (доставка)
AliExpress: Трёхцветный - 25.78$ || Одноцветный - 25.28-27.38$
4) Поддержка Ардуино + пульт ДУ + муз.спектр + работа напрямую с ПК через программу 3D8S
EBAY: Трёхцветный - 28$ + 2.5$ (доставка) || Одноцветный - 27-30$ + 2.5$ (доставка)
AliExpress: Трёхцветный - 27.39$ || Одноцветный - 26-29$
5) Муз.спектр + работа напрямую с ПК через программу 3D8S + слот для карт памяти
EBAY: Трёхцветный - 35.83$ + 2.5$ (доставка) || Одноцветный - 35.68-38$ + 2.5$ (доставка)
AliExpress: Трёхцветный - 29.34$ || Одноцветный - 28.5-30$
6) Пульт ДУ + муз.спектр + работа напрямую с ПК через программу 3D8S + слот для карт памяти + динамик для воспроизведения музыки
EBAY: Трёхцветный - 30$ + 2.5$ (доставка) || Одноцветный - 29-30$ + 2.5$ (доставка)
AliExpress: Трёхцветный - 36$ || Одноцветный - 35-36$
1) Китайская фото-инструкция (+ видео проверки светодиодов) по сборке куба
2) Китайская инструкция по подключению и синхронизации куба и Ардуино (+ тестовый скетч)
3) Программа 3D8S Alpha (для рисования фигур и преобразования их в массивы)
[МЕНЮ]
Внимание, трафик! Размер обзора — 20 Мб.
Предметы обзора:
1) Светодиодный куб 8x8x8 с поддержкой Arduino — 24.23$
2) Акриловый корпус 12x12x14см — 16.75$
Навигация по обзору
1. Упаковка
— Комплектация
— Содержимое пакетика с радиодеталями
2. Сборка. Последовательность
— Шаг 1: Подготовка светодиодов
— Шаг 2: Спайка светодиодов
— Шаг 3: Материнская плата
— Шаг 4: Припаивание стеклотекстолитовых 8-контактных стоек
— Шаг 5: Припаивание светодиодных сеток к стойке
— Как выглядит полностью собранный куб
— Габариты и вес полностью собранного куба
3. Как создать и вывести свои фигуры. Работа с массивами. Подключение к Arduino
— Немного вводной по массивам
— Почему тип данных char?
— Почему массив нужен на 64 элемента?
— Синхронизация Ардуино и Куба. Процедура передачи массивов на куб
— Рисование своей графики и преобразование её в массив символов
4. ✪ Самая интересная часть: демонстрационные видео + моя наработка
— Стандартные анимации (+видео)
— Анализ музыкального спектра (+видео)
— Анимированный вывод на куб показаний c датчика температуры и влажности DHT22 (+видео)
5. Особенности, о которых нужно знать
— Припой
— Флюс
— Жало и температура
— Порядок расстановки групп светодиодов по цвету
— Питание и замеры тока
6. Выводы и мысли. Плюсы и минусы
— Достоинства
— Недостатки
7. Альтернативы 8x8x8
8. Ссылки на дополнительные материалы
[МЕНЮ]
1. Упаковка
Весь комплект был изначально плотно обёрнут в несколько слоёв поролона — с этим всё хорошо. Отложив стенки акрилового корпуса, в пакете с остальными компонентами увидел вложенную бумажку со ссылкой на инструкцию по сборке куба.



Комплектация
1) Акриловый корпус — 6 стенок
2) Основная материнская плата стеклотекстолитовая
3) Стеклотекстолитовые 8-контактные стойки
4) 3 пакетика со светодиодами (256 красных, по 128 синих и зелёных)
5) Микроконтроллер STC 15F2K60S2
6) USB-кабель питания 3.5мм (Nokia)
7) Кабель акустический 3.5мм (муж.-муж.)
8) Пакетик с радиодеталями
9) Пакетик с шурупами и гайками для акрилового корпуса
10) Пульт дистанционного управления

Материнская плата изготовлена из стеклотекстолита и должен отметить, плотная и крепкая, на изгибы руками не поддаётся, ощущается хорошее качество. В ней просверлено 64 сквозных отверстий — это не спроста, поскольку именно эта плата и будет играть роль трафарета при спаивании светодиодной группы, поэтому пилить-сверлить свой трафарет уже не придётся, что плюс:






Если её положить на верхнюю стенку акриловой стенки, то она будет лежать практически впритык к пазам, в которые вставляются другие стенки из акрила:

Три пакетика со светодиодами, с опознавательными кружочками соответствующего цвета. Красных светодиодов столько же, сколько зелёных и синих вместе взятых, т.е. 256шт. красных и по 128 — синих и зелёных. Однако на самом деле их должно быть побольше, потому что и покупатели, и продавцы понимают, что среди них могут оказаться бракованные или пользователь испортит некоторые во время пайки, поэтому признаком вежливости и хорошего тона является досыпка лишних светодиодов сверху:

Размер одного такого — 3мм

Микроконтроллер STC 15F2K60S2, 40-выводной, в DIP-корпусе. Все процессом управлять будет он один, хотя в других наборах по сборке кубов вдобавок обычно идёт несколько микросхем сдвигового регистра

Четыре стойки, из стеклотекстолита, 8-контактные, по 4 контакта с каждой плоской стороны. Тоже по ощущениям сделаны качественно:

Два кабеля, один — USB, для подключения питания к кубу, имеет круглый штекер 3.5мм, который использовался раньше в старых телефонах Nokia. Второй кабель аудио 3.5мм, для подключения источника звука к кубу:

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


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



Восемь пар винтов и гаек для скрепления стенок акрилового корпуса

[МЕНЮ]
Содержимое пакетика с радиодеталями
1) Инфракрасный приёмник в экранирующем кожухе
2) Четыре разноцветных светодиода
3) Различные разъёмы:
— Два одинаковых круглых аудио разъёма 3.5 мм
— Круглый разъём для подключения питания
— UART-разъём 3S1P для приёма команд с Ардуино
4) 64 цанговых контакта для светодиодной сетки
5) Резистор 10кОм

[МЕНЮ]
2. Сборка. Последовательность
Шаг 1: Подготовка светодиодов
Выводы у всех светодиодов необходимо загнуть определённым образом. Это будет довольно объёмная работа, поскольку проделать эту операцию нужно не менее 512 раз.
В этом деле я использовал пинцет. Обхватываю им светодиод таким образом, чтобы его выводы были устремлены кверху, при этом чтобы катод (короткий минусовой вывод) был слева, а анод (длинный плюсовой) вывод — был справа. Под самый корень загибаю пальцем катод вперёд. Затем пинцетом обхватываю уже сам анод (длинный плюсовой вывод) так, чтобы катод был параллелен губкам пинцета, а анод загибаю под углом 90 градусов по отношению к катоду:

Анимированная инструкция для более ясного понимания:
Небольшая кучка уже готовых светодиодов:

[МЕНЮ]
Шаг 2: Спайка светодиодов
Прежде, чем использовать материнскую плату в роли трафарета для формирования светодиодных сеток, к ней нужно сперва припаять те четыре разноцветных светодиода — они на этом этапе будут играть роль стоек-ножек:


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

Сверху надо положить ещё одну такую же стойку:

Зажать пальцами, чтобы выводы не гуляли и спаять аноды (плюсовые выводы) светодиодов:

Теперь верхнюю стойку можно убрать, она уже не понадобиться:

Во второй ряд поместить третий светодиод, его катод (минусовой вывод) спаять с катодом соседнего светодиода:


Припаиваем четвертый светодиод, как обычно: катод — к катоду соседнего диода, анод — к аноду соседнего диода. Дальше — аналогично с другими светодиодами до конца, чтобы в итоге получилась сетка 2x8.

Обратите внимание: анодные выводы светодиодов в идеале расположены чуть выше катодных выводов светодиодов, поскольку последние мы загибали под самый корень, а первые — через губки пинцета:

В итоге у меня получилось три кучки мини-сеток 2x8, слева направо: синие (8шт.), красные (16шт.) и зелёные (8шт.).
От каждого цвета — лишних светодиодов осталось примерно по 20 штук, остатки в хозяйстве пригодятся.
На всякий случай, на этом этапе, нужно эти сетки проверить на предмет выявления бракованных/перегретых светодиодов. Мультиметр ставится в режим прозвонки цепи, плюсовой щуп соединяется с общим анодом, тем временем минусовым щупом поочерёдно касаемся катодов светодиодов и наблюдаем за яркостью свечения светодиодов.

Если всё в порядке, можно приступить к спаиванию этих мини-сеток в полноценные сетки 8x8, на плате-трафарете они располагаются согласно цвету. Точно также — катоды спаиваются с катодами соседних светодиодов.


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

[МЕНЮ]
Шаг 3: Материнская плата
Припаиваем радиодетали к плате:
1) Резистор
2-3) Аудиоразъёмы 3.5мм
4) 4-контактный разъём
5) Инфракрасный приёмник
Примечание. Если нужно, чтобы сигнал с пульта принимался со всех сторон, экранирующий кожух можно снять6) Разъём питания
7) Посадочный сокет под микроконтроллер (согласно ключу)

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


Облудить цанговые контакты нужно и с другой стороны платы — для усиления:

Устанавливаем микроконтроллер:

[МЕНЮ]
Шаг 4: Припаивание стеклотекстолитовых 8-контактных стоек к плате
Припаяем стойки к плате. Они 8-контактные (по 4 контакта с каждой стороны) и ориентироваться при этом нужно согласно ключу в виде белых треугольников:

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



Поскольку контакты расположены здесь очень близко друг к другу, то если в других случаях на качество используемого припоя можно в общем-то закрыть глаза, то в случае с контактами стоек такая халатность не пройдёт — «будут коротыши» гарантированно. Эту стойку я перепаивал раз наверно семь. Непропай позже исправил.


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

[МЕНЮ]
Шаг 5: Припаивание светодиодных сеток к стойке
Теперь нужно аккуратно посадить две сетки катодами на цанговые контакты — занятие это довольно хлопотное, понадобится не одна пара рук, поскольку если например с одного края вставить выводы в контакты, то сетка с другого края наоборот начинает стремиться вверх из-за упругости конструкции.

Аноды светодиодов на этом изображении смотрят вверх — их нужно загнуть к контактам платы, для последующего их припаивания к ним.

После припаивания, точно также по порядку расправляемся с другими компонентами:
1) Припаиваем стойку
2) Размещаем две светодиодные сетки на цанговых конактах
3) Загибаем аноды, припаиваем их к контактам стойки


— т.е. как вы поняли, одна стойка рассчитана на две сетки 8x8
Завершённая конструкция выглядит так:







Подаём питание — работает, отлично.

Отмываю всё от флюса, собираю корпус. Если вам удалось собрать куб, то корпус то точно соберёте без проблем.
Крафт-бумага отклеивается без труда, однако акрил хорошо притягивает пыль и легко царапается. К комплектным шурупам с гайками не было шайбочек. Корпус после сборки хоть и не значительно, но при приложении усилия люфтит. Много денег просят за него.



Как выглядит полностью собранный куб


Габариты и вес полностью собранного куба
Габариты: 14x12см
Вес: 323гр.

[МЕНЮ]
3. Как создать и вывести свои фигуры. Работа с массивами. Подключение к Arduino
Прежде, чем перейти к обзору программной составляющей, окинем взглядом разъём подключения к Ардуино. Это четырёх-контактный разъём 3S1P, использовать будем из них три контакта — RX, 5V и GND:
RX (куб) <- TX (Arduino)
5V (куб) <-> 5V (Arduino)
GND (куб) <-> GND (Arduino)
Четвёртый контакт предполагаю, что TX, но мы ничего принимать с куба не будем, поэтому он не используется. Мы будем только передавать на куб свои пакеты данных. Для подачи питания на куб можно использовать как круглый разъём, так и первый контакт разъёма 3S1P, — как по мне, второй вариант удобнее. Напряжение должно быть 5В, от 3.3В куб не заработает.

Немного вводной по массивам
Массивы в программировании бывают многомерными и одномерными. С многомерными я и сам не совсем разобрался, они сложны и вовсе не обязательны в нашем деле, поэтому рассматриваться здесь будут одномерные массивы. Представляют собой структуру данных, идущих в памяти один за другим. Структура эта — есть набор ячеек (элементов массива), которые могут быть пусты, все или частично заполнены данными, а также изменены по ходу выполнения программы. Количество этих ячеек — есть размерность массива.
Объявленный в коде массив может выглядеть так:
unsigned char pcube[64]; // пустой 64-элементный массив pcube типа char
или так:
unsigned char pcube[64] = {23, 73, 12, 13, 98, 44, 85, 39, 30, 73}; // 64-элементный массив pcube типа char, чьи первые 8 ячеек заполнены данными
Доступ (индексация) к определённой ячейке массива с целью её считывания выглядит так:
unsigned char pcube[64] = {23, 73, 12, 13, 98, 44, 85, 39, 30, 73}; // 64-элементный массив pcube типа char, чьи первые 8 ячеек заполнены данными
unsigned char value = 0; // переменная типа char
value = pcube[0]; // в переменную value записали первый элемент массива и value стала содержать 23
Примечание. Как можно заметить, если мы работаем с массивом в программе, то индексация его элементов с целью прочесть их или изменить, всегда начинается с нуля, т.е. если у 64-элементного массива pcube[64] индекс первого элемента имеет 0 (pcube[0]), то индекс у самого последнего его элемента будет уже 63 (pcube[63]). Если посчитать от 0 до 63, то всего как раз и получится 64 элемента.
Для доступа к определённому диапазону ячеек массива часто используется цикл for(;;){}. Попробуем на примере просто обнулить все элементы массива:
for (int x=0; x<64; x++){
pcube[x] = 0; // циклически присваиваем каждому элементу массива 0
}
Почему char?
Этот тип переменных, если мы работаем с Ардуино (AVR), имеет размер 1 байт, в котором 8 бит — это соответствует разрешению одной стороны куба — 8 светодиодов. Кроме char ещё можно использовать uint8_t или тип byte в среде Arduino IDE. Просто char имеет диапазон от -127 до 127, с ключевым словом unsigned (беззнаковый) — от 0 до 255, т.е. мы будем работать только с положительными значениями.
Почему массив нужен на 64 элемента?
Во-первых, для корректного отображения на кубе нарисованной нами графики. Если послать на куб массивы других размерностей, то выведется непонятная «каша».
Во-вторых, как мы выше уже отметили, один элемент типа char имеет размер 1 байт (8 бит). Если условно поделить куб на вертикальные столбцы, в каждом из которых 8 светодиодов, то получим 64 столбца, или 64 байта, в каждом из которых 8 бит (8 светодиодов). Почему именно на вертикальные столбцы я поделил куб, чуть ниже наглядно покажу.

[МЕНЮ]
Синхронизация Ардуино и Куба. Процедура передачи массивов на куб
Предполагается, что куб уже подключен к Ардуино в соответствии с распиновкой, рассмотренной выше. Подаём питание на оба устройства. На кубе сначала загорятся верхние красные светодиоды, но не все, частично, в одном углу каждую секунду будут загораться по ещё одному красному светодиоду (на видео ниже увидите).Это процесс ожидания кубом каких либо команд по UART и в течении 10 секунд мы должны послать с Ардуино специальную служебную команду — (0xAD), которая переведёт куб в режим постоянной работы с Ардуино (пока есть питание). Помимо этого нужно определить скорость работы UART 38400. В коде это выглядит так — сначала прописываем скорость, потом саму команду:
void setup(void){
Serial.begin(38400); // скорость работы UART
Serial.write(0xAD); // команда на перевод куба в режим работы с Ардуино
}
Примечание. Во избежание путаницы в дальнейшем, предлагаю условно считать передней (лицевой) стороной куба ту, где расположен 4-контактный разъём UART. Левой стороной — где расположен круглый разъём питания, правой стороной — где припаяны четыре стеклотекстолитовые стойки, а задней стороной — ту, которая находится напротив лицевой стороны.

И давайте попробуем послать что-нибудь на куб. Отправлять мы будем конечно же массив, 64-элементный, но непосредственно перед каждой отправкой массива, нужно посылать на куб уже другую служебную команду — (0xF2). При передаче массива указываем имя массива, через запятую его размерность 64:
Serial.write(0xF2); // команда кубу непосредственно перед отправкой массива
Serial.write(pcube, 64);// посылаем массив
Отправим пока единицу. Объявлен 64-элементный массив, в первом элементе которого записана единица.
Общий код выглядит так:

На кубе загорелся один светодиод в правом нижнем углу задней стенки — этот светодиод является началом или самым первым элементом массива:

Теперь отправим максимальное значение для типа char — 255 (или 0xFF в шестнадцатеричной системе счисления):

Теперь загорится весь столбик из 8 светодиодов, т.е. уже понятно, что каждый элемент массива — вертикальный столбик из 8 светодиодов (8 бит):

[МЕНЮ]
Рисование своей графики и преобразование её в массив символов
Для начала ознакомимся с принципом рисования графики на примере редактора символов для светодиодных матриц разрешением 8x8. Нарисуем в левом окошке букву «T», а в окошке справа автоматически будет калькулироваться массив символов. На этом примере — элементы массива расположены в столбик — это не принципиально, т.к. эти элементы можно расположить и в одной строке. Элементы тут представлены в шестнадцатеричной системе счисления:

Элементы массива в привычной нам десятичной системе счисления:

А вот так выглядят элементы в бинарной (двоичной) системе счисления:

Обратите внимание, если обвести контуром все единицы, то увидите очертания нашей буквы «T»:

Теперь, казалось бы, можно скопировать массив символов и вставить в код для последующего вывода буквы «T» на куб. Можно конечно:

Только тут будет одна загвоздка: буква «Т» повёрнута на 90 градусов и просто лежит на боку. Это из-за особенностей конструкции сеток светодиодов.

Поэтому для рисования графики для куба мы будем пользоваться программой 3D8S Alpha.

По идее она служит для прямого вывода анимаций на кубе, но эта версия куба такую возможность не поддерживает. Мы будем прибегать к этой программе только для рисования и копирования сгенерированного массива символов для последующей вставки в код Ардуино.
Нарисуем в самом верхнем левом окошке всё ту же букву «Т», и тем временем автоматически скалькулируется массив символов, на последней строчке, куда указывает красная стрелка на скриншоте:

Наблюдательный глаз заметит, что последовательность символов несколько отличается от той, которая была при рисовании точно такой же буквы на рассматриваемом выше ресурсе с редактором символов.
Скопируем эту строчку и вставим её в 64-элементный массив pcube:

Загружаем код на плату Ардуино, получаем нормальную прямостоящую букву «T»:

Продублируем эти элементы на вторую строчку:

Заливаем код на плату, и получаем на выходе уже двухслойную букву «T»

Но что, если вывести эту букву на переднюю стенку? Можно конечно первые 56 элементов массива pcube заполнить нулями, а символами, формирующими букву «T» — занять оставшиеся 8 элементов массива:

— но это довольно утомительно, прописывать все элементы массива. Поэтому массив pcube мы сделаем 8-элементным, — он будет содержать только букву «T» и этот массив мы посылать уже не будем на куб, т.к. для этого создадим другой массив, буферный mBuffer[64], в который мы будем, используя цикл for(;;){}, копировать элементы из массива pcube и затем уже посылать его по UART на куб. Как это выглядит в коде:

— индексация буферного массива mBuffer начинается с 56-го элемента и заканчивается последним 63-м элементом, и при каждом проходе в эти элементы последовательно копируются все 8 элементов массива pcube, где индекс [i-56].
Прошиваем Ардуино и видим на выходе букву «T» уже на передней стенке куба:

[МЕНЮ]
4. Самая интересная часть: демонстрационные видео + моя наработка
Стандартные анимации (+видео)
Анализ музыкального спектра (+видео)
Реализация этой фичи как-то особо не впечатлила, ожидал большего.
Клавиша «0» — перевод куба в этот режим.
Клавиша «1» — возвращает куб к стандартному воспроизведению анимаций
Анимированный вывод на куб показаний c датчика температуры и влажности DHT22 (+видео)
Меня не столько привлекает возможность создания каких-то новых абстрактных анимаций, сколько вывод на куб какой-то действительно полезной информации. Например с датчика температуры и влажности DHT22. Но при этом согласен, статичное отображение мало интересно, поэтому простую анимацию я всё же реализовал — это пролёт букв и цифр с задней стенки куба на переднюю. В коде объявлено три массива типа unsigned char:
massBukov[56], содержащий буквы M, Y, S, K, U, B, T
massNumber[40], содержащий цифры от 0 до 9
massBUF[64], буферный массив, посылаемый в куб.
Поскольку разрешение одной стороны куба 8x8, то выводить на неё мы можем максимум двухзначное число, которое будет формироваться в зависимости от показаний датчика. Перед выводом числовых показаний будет появляться буква, соответствующая типу показаний, например «В» — это влажность, а «Т» — температура.
При запуске программы реализовал вывод названия многим знакомого ресурса, на котором этот обзор и выложен. После этого циклически выводится температура и влажность на куб.
Для успешной компиляции этого скетча требуется наличие библиотеки DHT.
Скетч для вывода температуры и влажности на куб
// Вывод температуры и влажности с датчика DHT22
// Питание 5В, сигнальный вывод датчика подключается ко 2 выводу Ардуино и притягивается через 10К резистор к 5В
#include "DHT.h"
#define DELAYS 150
#define LAYER 8
#define COLUMN_COUNT 64
DHT dht(2, DHT22); // Вывод #2 для датчика
void printMass(unsigned char *massP);
void printNum(unsigned char number);
void printMain(void);
unsigned char des, ed, h, t;
unsigned char massBUF[64];
unsigned char massBukov[56] = {
0xFF, 0xFF, 0x30, 0x1C, 0x1C, 0x30, 0xFF, 0xFF, // M
0xF0, 0xF8, 0x1C, 0x0F, 0x0F, 0x1C, 0xF8, 0xF0, // Y
0x4C, 0xDE, 0x9B, 0x99, 0x99, 0xD9, 0x7B, 0x32, // S
0x00, 0x81, 0xC3, 0x66, 0x3C, 0x18, 0xFF, 0xFF, // K
0xFC, 0xFE, 0x07, 0x03, 0x03, 0x07, 0xFE, 0xFC, // U
0x00, 0x00, 0x2C, 0x7E, 0x52, 0x7E, 0x7E, 0x00, // В
0x00, 0x60, 0x60, 0x7E, 0x7E, 0x60, 0x60, 0x00 // Т
};
unsigned char massNumber[40] = {
0x00, 0x7C, 0x44, 0x7C, // 0 // 0
0x00, 0x00, 0x7C, 0x00, // 1 // 4
0x00, 0x74, 0x54, 0x5C, // 2 // 8
0x00, 0x7C, 0x54, 0x54, // 3 // 12
0x00, 0x7C, 0x10, 0x70, // 4 // 16
0x00, 0x5C, 0x54, 0x74, // 5 // 20
0x00, 0x5C, 0x54, 0x7C, // 6 // 24
0x00, 0x7C, 0x40, 0x40, // 7 // 28
0x00, 0x7C, 0x54, 0x7C, // 8 // 32
0x00, 0x7C, 0x54, 0x74 // 9 // 36
};
void setup(void) {
dht.begin();
_delay_ms(DELAYS);
Serial.begin(38400);
Serial.write(0xAD); //команда кубу на работу от Ардуино
printMass(massBukov,COLUMN_COUNT,LAYER);
printMass(massBukov+8,COLUMN_COUNT,LAYER);
printMass(massBukov+16,COLUMN_COUNT,LAYER);
printMass(massBukov+24,COLUMN_COUNT,LAYER);
printMass(massBukov+32,COLUMN_COUNT,LAYER);
}
void loop(void) {
h = dht.readHumidity();
t = dht.readTemperature();
printNum(h);
_delay_ms(500);
printMass(massBukov+48,COLUMN_COUNT,LAYER);
_delay_ms(600);
printNum(t);
_delay_ms(600);
printMass(massBukov+40,COLUMN_COUNT,LAYER);
_delay_ms(600);
}
void printMass(unsigned char *massP, int razmer, int sdv){
for(int z=0 ; z<8 ; z++)
massBUF[z] = massP[z];
for(int y=0; y<8; y++){
printMain();
for (int i=razmer-1 ; i>=0 ; i--){
massBUF[i] = i<sdv?0:massBUF[i-sdv];
}
_delay_ms(DELAYS);
}
}
void printMain(void){
Serial.write(0xf2);
Serial.write(massBUF, COLUMN_COUNT);
}
void printNum(unsigned char number){
ed = number%10; //единицы
des = number/10; //десятки
for (int i=0; i<4; i++){
massBUF[4+i] = massNumber[des*4+i];//десятки
massBUF[i] = massNumber[ed*4+i]; //единицы
}
printMass(massBUF,COLUMN_COUNT,LAYER);
_delay_ms(DELAYS);
}
[МЕНЮ]
5. Особенности, о которых стоит знать
Припой
Важную роль здесь играет. По моей просьбе один товарищ мне как-то привёз моток ленточного припоя. И всё бы ничего, но именно при припаивании стеклотекстолитовых стоек к материнской плате я убедился, насколько дряной и отвратительный этот припой. Нормально припаять близко расположенные контакты им не получится, поскольку вместо четырёх контактов образуется два или вовсе один. И даже если тонким жалом удалось припаять контакты без явных соплей, то дело этим не ограничиться, так как при прозвонке соседних контактов всё равно будут коротыши уже из-за микроскопических соплей, которые можно рассмотреть под микроскопом. Из-за плохого припоя мне пришлось перепаивать контакты на стойках раз пять, однако вместе с тем я убедился, насколько качественно сделаны эти стойки и материнская плата, в ином случае — на них бы давно поотваливались бы дорожки. Дряной припой после пайки обычно имеет матовую поверхность, хороший же припой — блестит после пайки и явных соплей не образовывается.
Флюс
На протяжении всего процесса построения куба я использовал флюс KIngbo 218. Светодиоды боятся перегрева, но благодаря флюсу, касание их выводов нагретым жалом составляло где-то полсекунды. Флюс наносил шприцем с тонкой иглой, что экономило его. В итоге на всё про всё у меня израсходовалось где-то 1.5 кубика флюса. Поскольку работа предстоит объёмная, то пайкой лучше заниматься с вытяжкой наподобие как у меня.
Жало и температура
В основном использовалось жало типа «копытце» T12-BCM3 — для формирования светодиодных сеток и пайки радиодетатей к материнской плате. Для припаивания стеклотекстолитовых стоек применял жало T12-D16. Температура нагрева всегда оставалась 320 градусов.
Порядок расстановки групп светодиодов по цвету
Вовсе не обязательно следовать задумке продавца и паять светодиоды именно так (рис.1), когда каждый цвет представляет собой горизонтальный слой. Можно поступить иначе, когда например передняя панель полностью состоит из красных светодиодов, а задняя — зелёная, при этом синий остаётся посередине (рис.2):

Питание и замеры тока
Как и было выше сказано, есть два способа запитать куб током — это через круглый разъём на его левой стороне и через 4-контактный разъём на передней стороне. Номинальное напряжение 5В. Разумеется я померил ток потребления.
Понятное дело, что если мы имеем дело с анимацией, то потребление тока будет колебаться.
Со включенной нижней подсветкой (4 разноцветных светодиода) диапазон токопотребления составил 50-80мА:


С отключенной нижней подсветкой этот диапазон значительно уменьшился до 25-47мА


Я бы сказал, это небольшое энергопотребление, поэтому этот куб без труда можно запитать от смартфона с поддержкой OTG через USB-OTG кабель:

[МЕНЮ]
6. Выводы, мысли и идеи
Сборка этого куба — занятие не для слабонервных. Потребуется много усердия и терпения, чтобы его построить. На сборку я потратил два дня: один световой день у меня ушёл только лишь на формирование светодиодных сеток, и 5-6 часов следующего дня — уже на сборку всего остального. Очень хотелось поскорее его собрать.
Мои впечатления о нём в целом положительные, поскольку это не просто игрушка, а уже дорабатываемый девайс, который предлагает реальный простор для творчества благодаря поддержке Ардуино. Для меня это также возможность наглядно отточить навыки работы с массивами, без которых в серьёзных проектах уже никак не обойтись. Это различные операции, например как кольцевой сдвиг определённого диапазона элементов массива в указанную сторону, который часто применяется в навесных дисплеях для вывода бегущей строки.
Однако нашлась кучка моментов, которые мне не понравились — это реализация анализа музыкального спектра, самая лишняя и ненужная вещь здесь, но это на мой взгляд. У вас может быть иное мнение.
Функционал пульта ДУ не задействован на 100%, всего четыре рабочие кнопки — не густо.
Хотя плюсик тут есть — это возможность выключить нижнюю подсветку из экономных или эстетических соображений, т.к. у кого-то она может вызвать ощущение «китайской игрушечности». Если берёте самую дешёвую версию куба с поддержкой Ардуино и без пульта, то скорее всего отключить нижнюю подсветку уже не получится, но и тут есть выход — светодиоды можно просто выпаять потом, коснувшись толстым жалом паяльника сразу обоих выводов светодиода.
Однако задействовать все кнопки пульта вполне реально, если написать соответствующий код для Ардуино, подключив уже к нему инфракрасный приёмник и тогда можно будет, используя пронумерованные клавиши, переключаться между своими анимациями или выводом данных, например между курсами валют, температурой и временем. Правда тут уже без ESP8266 не обойтись. В общем, сам факт возможности вывода полезной информации посредством Ардуино делает куб весьма интересным для исследования и реализации полезных его свойств.
Достоинства:
— Развитие мелкой моторики
— Зрелищно выглядит в темноте
— Понятная и толковая инструкция для сборки
— Довольно качественная плата и стойки из стеклотекстолита
— Есть простор для творчества благодаря поддержке Ардуино
— Светодиодов и цанговых контактов продавец досыпает с запасом
— Нет необходимости делать трафарет самому — плата им и является
Недостатки:
— Продавец не консультирует по поводу доработки куба до более дорогой версии
— Отверстия под стеклотекстолитовые стойки на плате — шире самих стоек
— Пару команд, поддерживаемых пультом — не серьёзно. Нет батарейки
— Цанговые контакты перекашиваются. Их хлопотно паять
— Акриловый корпус имеет люфт. Царапается. Дорого
— Плохая реализация анализа звукового спектра
[МЕНЮ]
7. Альтернативы 8x8x8
Кратко прокомментирую альтернативные варианты, доступные для покупки.
На выбор есть несколько модификаций кубов, с поддержкой карт памяти, с динамиками для воспроизведения музыки, однако из более дорогих версий интерес представляет модификация под номером 4, умеющая посредством USB-TTL конвертера напрямую выводить графику, нарисованную в программе 3D8S — эта модификация может быть интересна тем, кто не умеет программировать. Остальные возможности вроде карт памяти, динамиков, анализов спектра, пультов — лично по моему мнению просто переплата денег за ненужные фичи. Если умеете программировать, то рекомендую взять самую дешёвую версию с поддержкой Ардуино под номером 2. На али стоимость дешевле, чем на ebay.
Кроме того, каждой модификации существует несколько видов — трёхцветная (как в обзоре), и одноцветная, т.е. все светодиоды одного цвета, и этих цветов доступно всего пять: красный, белый, синий, зелёный и розовый. Только мне не понятно, почему розовая версия самая дорогая из них.
1) Самая простая и дешёвая версия куба, без поддержки Ардуино
EBAY: Трёхцветный - 20$ + 2.5$ (доставка) || Одноцветный - 18.30-21.30$ + 2.5$ (доставка)
AliExpress: Трёхцветный - 17.48$ || Одноцветный - 16.28-18.68$
2) C поддержкой работы от Ардуино
EBAY: Трёхцветный - 21$ + 2.5$ (доставка) || Одноцветный - 19$ + 2.5$ (доставка)
AliExpress: Трёхцветный - 18.67$ || Одноцветный - 17.71-20$
3) Поддержка Ардуино + пульт ДУ + муз.спектр
EBAY: Трёхцветный - 24.23$ + 2.5$ (доставка) || Одноцветный - 23-27$ + 2.5$ (доставка)
AliExpress: Трёхцветный - 25.78$ || Одноцветный - 25.28-27.38$
4) Поддержка Ардуино + пульт ДУ + муз.спектр + работа напрямую с ПК через программу 3D8S
EBAY: Трёхцветный - 28$ + 2.5$ (доставка) || Одноцветный - 27-30$ + 2.5$ (доставка)
AliExpress: Трёхцветный - 27.39$ || Одноцветный - 26-29$
5) Муз.спектр + работа напрямую с ПК через программу 3D8S + слот для карт памяти
EBAY: Трёхцветный - 35.83$ + 2.5$ (доставка) || Одноцветный - 35.68-38$ + 2.5$ (доставка)
AliExpress: Трёхцветный - 29.34$ || Одноцветный - 28.5-30$
6) Пульт ДУ + муз.спектр + работа напрямую с ПК через программу 3D8S + слот для карт памяти + динамик для воспроизведения музыки
EBAY: Трёхцветный - 30$ + 2.5$ (доставка) || Одноцветный - 29-30$ + 2.5$ (доставка)
AliExpress: Трёхцветный - 36$ || Одноцветный - 35-36$
8. Ссылки на дополнительные материалы
1) Китайская фото-инструкция (+ видео проверки светодиодов) по сборке куба
2) Китайская инструкция по подключению и синхронизации куба и Ардуино (+ тестовый скетч)
3) Программа 3D8S Alpha (для рисования фигур и преобразования их в массивы)
[МЕНЮ]
Самые обсуждаемые обзоры
+81 |
6756
133
|
+35 |
3006
103
|
Мань ну як? :)
Однозначно + в карму
Вот это достойный обзор! Спасибо!
John Dubs — Current Events (Original Mix)
Natlife — Water Planet (NatLife Asking The Planet Sun Mix)
и surf rock из второго видео, на всякий случай:
The Original Surfaris — Exotic
220$
:(
youtu.be/tFre3wmwgtU
Ещё полтора года назад, когда я впервые увидел светодиодный куб на одном забугорном сайте, это был тоже частный проект, мечтал повторить эту разработку, однако программировать тогда я совсем не умел, потом научился и набрёл на обозреваемый девайс, который по возможностям оказался даже лучше того забугорного проекта.
И внешний корпус склеить бы по швам…
4. Самая интересная часть: демонстрационные видео + моя наработка.
— он там идёт в виде текста, его нужно просто выделить, скопировать и вставить в среду ArduinoIDE
Здесь минимум нужен вариант на 32x32x32:
Правда до ESP всё никак руки не доберутся, так как разработкой новой gsm-сигналки занимаюсь.
Спасибо!
И я хочу себе такой кубик сделать.
PS. обновил ссылку. Программа находится в папке ledcube8x8x8/software/alpha/
А все инструкции нормально скачиваются, по кнопке «скачать всё»
Нажимаю «Clone or download» и ничего не происходит.
Может там предварительно регистрироваться надо?
Инструкции скачал без проблем.
В нем нажмите «Download ZIP»
Спасибо!
Буду присматриваться (пока теоретически, на покупку денег нет).
Залить текст без участия Ардуино (я так понял — непосредственно в контроллер STC) — будет наверняка весьма проблематично. Хотя на этом форуме велась интересная дискуссия. Но опять-таки, чтобы несколько кубов… Наверно интереснее гораздо реализовать бегущую строку на плоской матрице, состоящей из WS2812-светодиодов с пиксельной адресацией.
Купил «максимальный» вариант — с разъемом для TF, пультом и динамиком.
На плате есть четыре места для планарных микросхем. Туда паять что-то надо?
В пакетике самих микросхем нет.
Но к контактным площадкам микросхем идут какие то дорожки. Видимо есть какой то вариант с буферными микросхемами или регистрами. Совершенно не понятно как оно может работать в обход этих микросхем.
А спросить у продавца вряд ли получится с моим знанием английского. Буду собирать как есть. Никак не могу от него добиться ссылки на редактор «3D8S TF Animation Editor». В крайнем случае буду пользовать тот, что Вы выложили «3D8S Alpha».
Вот то, что он мне выслал (на бумажке, а потом по почте, когда я стал приставать к нему «где программа»):
drive.google.com/drive/folders/0B5FDcRwkbQ5BQjEyT1NUeEhlT1U?usp=sharing
А на Вашей плате есть такие незадействованые места для микросхем?
drive.google.com/drive/folders/0B5FDcRwkbQ5BdHlvSjd6MmhUc28
drive.google.com/drive/folders/0B5FDcRwkbQ5BSG9KeWFtTkN2TXc
Тут можно взять, исполняемый файл *.jar — github.com/aguegu/DotMatrixJava/
Пришлите пожалуйста ссылку на тот лот, что брали.
По одной ссылке я ходил, а вот та, которая "...Uc28" — мимо прошла, не заметил.
Получается зря я на него «бочку катил» — сам дурак.
А я уже собирался спор открывать.
Огромное спасибо. Вы мне глаза открыли. И продавец разъяснение прислал (с картинками) — как для тупых.
А брал здесь:
https://aliexpress.com/item/item/New-for-TF-card-3D-8-8x8x8-mini-multicolor-mp3-music-light-cubeeds-kit-built-in/32810741903.html
Но теперь уже к продавцу никаких претензий быть не может.
Я ему пять звезд поставил.
Материал есть, осталось куб собрать (если ещё не собран)
и на Вашей плате они есть. (по бокам от разъема процессора)
С Новым Годом!
Собрал я таки Куб. Анимация звука действительно не радует глаз. Встроенный динамик с жутким скрипом воспроизводит музыку (отключил немедленно).
Кроме того какие то «грабли» с картой памяти:
Вроде и опознает и читает с нее, а дальше — ни-че-го.
Формат FAT32, пробовал 1 и 2 Гб. Файлики "*.DAT", которые там записаны прекрасно воспроизводятся в режиме предпросмотра по COM-порту с компа.
Где-то что-то оборвано, но где и что? Как без схемы это вычислить? И еще могут быть два режима работы " SD и SPI ".
Может кто знает — где взять схему? Поделитесь пожалуйста!
матрицу хотябы 32*32*32 (а лучше 128^3)
и можно полноценно показывать цветные 3Д картинки в полном объеме...) даже кино наверное смотреть выйдет )
только кто этим будет управлять?