Прикроватный ночник, который может превратиться в кубик Рубика. Он случайным образом раскладывает кубик, а затем собирает его. Ночник кубик Рубика также может управляется через Bluetooth.
История
Некоторое время назад я играл с кубиком Рубика и подумал о замене квадратиков на RGB-светодиоды. Это привело к созданию небольшой прикроватной лампы, которая анимирует процесс сборки кубика Рубика. Ею также можно управлять через Bluetooth, хотя в настоящее время она поддерживает только самые простые команды.
Видео работы устройства
3D-печать
3D-печать следует выполнить до сборки печатных плат (PCB) для обеспечения точного выравнивания светодиодов с деталями Rubik Matrix Top & Sides.stl и Rubik Matrix Bottom.stl.
Настройки слайсера для 3D-печати
"Rubik Lamp Cover.stl" — белый цвет, высота слоя 0.2 мм, без поддержек.
"Rubik Matrix Top & Sides.stl" — 5 штук, черный цвет, высота слоя 0.2 мм, без поддержек.
"Rubik Matrix Bottom.stl" — высота слоя 0.2 мм, без поддержек. Первые два слоя печатайте белым цветом, а остальные — черным.
"Rubik Base Top.stl" — белый цвет, высота слоя 0.2 мм, без поддержек.
"Rubik Base Bottom.stl" — белый цвет, высота слоя 0.2 мм, без поддержек.
Сборка. Этап 1
На верхней и боковых печатных платах (PCB) размещаются 9 RGB-светодиодов WS2812B, 6 конденсаторов 0.1мкФ (корпус 0805) и 5 резисторов 0 Ом (корпус 0805). Нижняя плата содержит на один светодиод меньше для размещения опоры, а файлы Eagle предоставляются для заказа или самостоятельного изготовления, например, методом ЛУТ.

При пайке SMD-компонентов мне гораздо проще использовать паяльную пасту, а не припой в катушке. Используйте напечатанную на 3D-принтере деталь Rubik Matrix Top & Sides.stl, чтобы максимально точно выровнять светодиоды перед их припаиванием.
Сборка. Этап 2
Соедините проводами верхнюю и боковые платы друг с другом. Я использовал свой тестер для WS2812B, чтобы проверять каждый модуль по мере их подключения. После того как все провода будут припаяны, поместите модули внутрь плафона лампы (Lamp Cover).

Сборка. Этап 3
Добавьте низкопрофильный конденсатор емкостью 2200 мкФ / 10 В (подойдет любой конденсатор емкостью более 470 мкФ, главное, чтобы он поместился внутри куба) на нижнюю плату со светодиодами. Убедитесь, что он расположен на достаточном расстоянии от платы, чтобы осталось место для крепления трубки и прокладки проводов через эту трубку.

Припаяйте провода от нижней платы к остальной части куба. Затем подключите 3 провода, которые пройдут через трубку вниз, к основанию лампы.
Сборка. Этап 4
Снимите нижнюю печатную плату и установите латунную трубку в нижнюю часть. Возможно, вам придется приложить некоторое усилие, чтобы вставить ее в крепление до упора. Обязательно придерживайте само крепление, в которое вставляете стержень, иначе оно сломается. Также вставьте стержень в верхнюю часть основания (base top).

Установите нижнюю печатную плату (PCB) и протяните три провода через центр латунной трубки. Используйте суперклей, чтобы приклеить нижнюю часть к корпусу лампы. Я рекомендую еще раз протестировать светодиоды перед тем, как делать это.
Сборка. Этап 5
Соберите плату микропроцессора. При пайке SMD-компонентов мне гораздо проще использовать паяльную пасту, а не припой в катушке. Настройте стабилизатор напряжения на 5 В перед тем, как зафиксировать его на плате. Выключатель, контроллер ATtiny1614, резистор 0 Ом (0805) и резистор 330 Ом (0805) припаиваются с обратной стороны печатной платы (PCB). 3-контактный штыревой разъем (male header) и стабилизатор располагаются на верхней стороне платы. Соедините проводами плату микропроцессора (MPU), Bluetooth-модуль HC-06 и разъем питания постоянного тока (DC). Зафиксируйте платы на своих местах с помощью термоклея.

Программирование
Микроконтроллер ATtiny1614 нового поколения использует вывод RESET и UPDI-программатор для прошивки, в отличие от более старых моделей, таких как ATtiny85. Для программирования можно собрать самодельный UPDI-программатор на базе Arduino Nano, следуя руководству «Create Your Own UPDI Programmer» по добавлению плат megaTinyCore в IDE. Подробную инструкцию по созданию программатора можно найти на сайте Create Your Own UPDI Programmer.

Как только плата будет установлена в IDE, выберите её в меню «Инструменты» (Tools).

Выберите плату, микросхему, тактовую частоту, COM-порт, к которому подключена плата Arduino Nano, и программатор. В качестве программатора необходимо установить jtag2updi (megaTinyCore). Откройте скетч и загрузите его в микроконтроллер ATtiny1614.
Управление лампой с помощью кнопки
Одна кнопка включает и выключает лампу, переключает режимы работы, а также позволяет регулировать яркость.
Чтобы включить устройство, нажмите кнопку. Оно вернется в последний режим, в котором находилось при выключении. Если нажать кнопку еще раз через 3 секунды, лампа выключится. (Время определяется параметром NEXT_BUTTON_TIMEOUT)
После включения, если удерживать кнопку дольше 1/2 секунды, яркость будет увеличиваться с шагом 50 мс. После достижения максимальной яркости она перейдет к минимальной. (Время определяется параметрами BRIGHTNESS_INITIAL_TIMOUT и BRIGHTNESS_TIMOUT)
После включения лампы, если кнопку нажать еще раз (короткое нажатие) в течение 3 секунд, произойдет переключение между режимами работы. Режимы работы:
- Все светодиоды белые
- Все светодиоды красные
- Все светодиоды зеленые
- Все светодиоды синие
- Каждая грань светодиода изначально имеет свой цвет и циклически меняется по цветовому кругу
- Все грани светодиодов имеют одинаковый цвет и циклически меняются по цветовому кругу
- Анимированный кубик Рубика (см. видео)
- Кубик Рубика с управлением по Bluetooth
Управление лампой через Bluetooth
Для работы Bluetooth лампу необходимо включить. Подключитесь к HC06 (в списке доступных устройств Bluetooth отображается как HC05) и запустите приложение последовательного терминала. (В Play Store есть множество вариантов). После подключения просто отправляйте команды из одной буквы. Вот они:
R or r - Switch to RED light
G or g - Switch to GREEN light
B or b - Switch to BLUE light
W or w - Switch to WHITE light
J or j - Switch to RAINBOW SIDE light
K or k - Switch to RAINBOW CUBE light
C or c - Switch to CUBE mode
При переключении в режим CUBE применяются только следующие команды. Кроме того, заглавная буква вращает грань, срез или куб по часовой стрелке, а строчная буква — грань, срез или куб против часовой стрелки.
F or f - Rotate Front face
B or b - Rotate Back face
U or u - Rotate Upper face
D or d - Rotate Lower face
L or l - Rotate Left face
R or r - Rotate Right face
M or m - Rotate Middle vertical slice
S or s - Rotate Inner middle slice
E or e - Rotate Middle horizontal slice
X or x - Rotate Cube about the X axis
Y or y - Rotate Cube about the Y axis
Z or z - Rotate Cube about the Z axis
W or w - Switch to WHITE light (leaves CUBE mode)
Вы также можете отправлять "последовательность" команд. Это имеет смысл только в режиме кубика. Например, вы можете отправить "Fru", что означает вращение передней грани по часовой стрелке, затем правой грани против часовой стрелки и, наконец, верхней грани также против часовой стрелки.
Заключение
Благодаря интеграции Bluetooth-подключения открываются возможности для создания будущего приложения, в котором кубиком можно будет управлять с помощью сенсорного экрана. Я также хотел бы написать полноценный инструмент для решения кубика Рубика.
Обновления
05.01.2021 - V3 - Исправлена ошибка в режиме Bluetooth
