Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
#Круги добра
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Управляйте маятником, чтобы построить самую высокую (и устойчивую) башню из падающих сверху постов. Следите за временем на каждый бросок по полоске справа: если она закончится, пост упадет мимо башни.

Башня

Аркады, Строительство, На ловкость

Играть

Топ прошлой недели

  • SpongeGod SpongeGod 1 пост
  • Uncleyogurt007 Uncleyogurt007 9 постов
  • ZaTaS ZaTaS 3 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
35
AnatoliyB
AnatoliyB
22 часа назад
Arduino & Pi

Pixel Table: от идеи до реализации интерактивного пиксельного стола⁠⁠

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

Первый рабочий прототип

Давайте знакомиться!

Меня зовут Анатолий, и я программист с инженерным бэкграундом. Помимо основной деятельности, бэкенд разработки на Go, меня часто тянет собрать что-нибудь эдакое электронно-светодиодное с использованием микроконтроллеров.

Этап 0: Как всё начиналось

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

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

Стол из интернета

Этап 1: Исследование существующих проектов

В интернете есть сотни проектов НЕинтерактивных (не реагирующих на касания) столов и матриц на адресных светодиодах, они предназначены исключительно для вывода красивых картинок. Вспомним тот же рюкзак с дисплеем от @AlexGyver:

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

Схемотехника у всех подобных проектов весьма простая: один контроллер + несколько сотен адресных светодиодов. Но для добавления игровых функций нужно как-то считывать нажатия.

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

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука
  • Часть разработок не имеет обратной связи на нажатия, а выступают просто красивым светодиодным декором, а нам нужны интерактивные функции для игр и других эффектов. Это в разы усложняет разработку;

  • Все существующие проекты собраны на коленке и имеют огромные недочёты в плане трудозатрат на сборку: несколько сотен проводных соединений и точек пайки, десятки человекочасов работы. Такое нам не подходит, я слишком ленив, чтобы руками всё это паять, а значит нужны печатные платы без проводных соединений, разъём-в-разъём, плата-к-плате, side-by-side;

  • Конструкция корпуса зачастую тоже достаточно сложная, с вырезами/выпилами, с клеем или герметиком. Такое тоже не нравится, нужно что-то максимально простое из обычного мебельного ЛДСП, чтобы можно было заказать раскрой на ближайшем производстве;

Этап 2: Проектирование печатной платы

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

В качестве канала связи рассматривал RS485 и CAN:

  • RS485 подразумевает топологию master-slave, т.е нужно явно опрашивать все ведомые устройства, чтобы избежать коллизий, что будет сложно реализовать для такого количества пикселей;

  • А вот CAN позволяет организовать сеть равнозначных устройств и даже имеет аппаратный механизм арбитража коллизий. Идеальное решение для построения событийной модели обработки нажатий: есть клик – отправили, клика нет – молчим. Короче говоря, сообщения о нажатии отправляются в шину вне очереди, что позволит обрабатывать нажатия в кратчайшие сроки.

В качестве микроконтроллера был выбран самый популярный и дешёвый микроконтроллер с CAN шиной на борту – STM32F103, имеющий к тому же десятки китайских клонов на случай необходимости дальнейшей оптимизации по цене/наличию. Наверняка у каждого здесь есть завалявшаяся дома платка Blue Pill с подобным контроллером. Вот и у меня была.

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

В качестве светодиодов были выбраны обычные RGB адресные WS2812B. Тут всё очевидно – работают независимо при последовательном подключении:

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

В качестве датчика нажатия был выбран оптический сенсор VCNL36821S, комбинирующий в себе светодиод и фотодиод, работающие в ИК диапазоне длин волн 800..1000нм, а значит он не будет реагировать на RGB спектр светодиодов 400..700нм. С другой стороны, это не самое дешёвое решение, но точно одно из самых простых при автоматизированной сборке печатных плат. Один smd элемент и готово, никаких тебе емкостных сенсоров в виде улиток из проволоки (вспоминаем про желание избежать трудоемкости при сборке).

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

VCNL36821S

Сколько датчиков и светодиодов можно подключить к одному контроллеру STM32F103 в корпусе LQFP-48 без использования всякого рода расширителей портов? Все звёзды сошлись на размере сегмента 5х5 = 25 пикселей. В прототипе задействованы абсолютно все ноги контроллера, даже пришлось позаимствовать одну ногу SWD из разъёма для программирования.

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

Одна из сложностей при проектировании печатной платы заключалась в том, что у сенсора VCNL36821S отсутствует возможность задавать адрес I2C, а у микроконтроллера STM32F103 только две шины I2C. Как же быть? Ответ был найден на просторах Stackoverflow и заключался в коммутации линии SDA через диоды Шоттки. Гениально, как мне кажется:

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

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

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

Версия 1.0

Управлять столом будет обычная Raspberry Pi 4B+ вот с такой платой расширения для CAN шины:

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

Сами платы были заказаны в Китае на PcbWay с автоматизированной сборкой, т.е сам я ничего не паял.

Ну и затратная часть на платы:

  • Текстолит * 15 плат = 11 800 ₽

  • Компоненты * 15 плат = 29 600 ₽

  • Авто монтаж * 15 плат = 30 600 ₽

  • Доставка с Китая = 13 560 ₽

  • Итого: 85 560 ₽

Этап 3: Проектирование корпуса

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

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

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

  • Во-первых, такой отступ становится весьма неочевидным в играх, например пинг-понг, когда мячик отражается от невидимой стены;

  • Во-вторых, эстетически это смотрится весьма странно, когда поле светится не всё.

А для дополнительной электроники можно просто сделать двойное дно и доступ для обслуживания.

Оргстекло 3 мм нашел у местных рекламщиков и попросил вырезать прямоугольник нужного размера.

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

В качестве материала корпуса была выбрана фанера, т.к она намного крепче и долговечнее обычной мебельной ЛДСП.

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

Фанеру я сам покрасил в чёрный. Тоже то ещё занятие, больше не хочу, буду сразу брать лакированную.

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

Сетку вырезал на лазерном ЧПУ из фанеры 3 мм, размер каждой ячейки 4х4х4 см.

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

Затраты на корпусные детали:

  • Раскрой сетки из фанеры 3мм = 5 000 ₽

  • Фанера для корпуса стола + раскрой = 4 600 ₽

  • Акрил + резка = 4 200 ₽

  • Краска + валик = 1 750 ₽

  • Метизы, втулки, клей = 830 ₽

  • Покраска своими руками = Бесценно

  • Итого: 16 380 ₽

Этап 4: Написание прошивки и отладка

Для написания кода использовал программы STM32CubeMX и STM32CubeIDE, для прошивки и отладки китайские клоны программатора ST-LINK V2 и логического анализатора Saleae Logic. Вообще обожаю эту связку, никогда ещё программирование и отладка микроконтроллеров не были настолько простыми и доступными.

Из интересного, что можно было бы рассказать про написание прошивки:

Т.к контроллер весьма небольшой, и чтобы не тащить в проект тяжеловесную RTOS, я часто использую самописную систему событий, привязанную к 1 мс таймеру. Занимает буквально сотню строчек кода: установить событие через N мс, проверить готовность события к исполнению, очистить событие. Это покрывает практически все мои нужды по организации логики программы под микроконтроллер и занимает памяти чуть более, чем ничего.

Отдельно хочу рассказать про логику организации мной адресного пространства CAN. Я разбил адресное пространство 2048 адресов на 4 группы:

  • широковещательная команда;

  • целевые команды конкретным сегментам;

  • посылки от сегмента;

  • и в конце простые пакеты с цветами.

В CAN, чем ниже адрес пакета, тем у него выше приоритет. Это означает, что посылки от устройств (с кликом или ответом на запрос) имеют приоритет выше, чем пакеты с цветами. Таким образом, клик всегда будет получен почти мгновенно, даже когда идет активная “отрисовка” картинки и шина занята.

В коде я реализовал поддержку трех разных палитр:

  • RGB6 – 6 бит на цвет, где 3 бита цвет RGB, а 3 бита яркость 0-7;

  • RGB12 – 12 бит на цвет, RRRRGGGGBBBB;

  • RGB24 – 24 бита на цвет.

Т.к в стандартном CAN есть ограничение на 8 байт данных, то приходится делить адресные пространства ещё и на адреса конкретных пикселей внутри сегмента. А т.к на каждые 8 байт данных полезной нагрузки CAN имеет ещё оверхед 47 бит в виде адреса и других заголовков пакета, то с расширением палитры цветов, FPS падает непропорционально. Примерно вот таких значений мне удалось добиться при скорости CAN 500 kbit/s:

  • 75 FPS для RGB6;

  • 38 FPS для RGB12;

  • 13 FPS для RGB24;

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

Для любознательных, ссылки на исходники платы и прошивки будут в конце статьи.

Расходы: бесплатно по ночам.

Этап 5: Финальная сборка и ошибки

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука
  • Собрать всю сетку из таких коротких деревянных ламелей оказалось непросто. Я не предусмотрел достаточные допуски для пазов, детали то и дело не вставали на свои места, приходилось подпиливать и применять силу, в итоге плоскость с оргстеклом получилась неидеальной. В новой версии откажусь от пазов в платах, а ламели из фанеры сделаю длиннее, чтобы конструкция сетки получилась более ровной;

  • Как вы могли заметить, на платах я сделал разъёмы папа-мама на нижней стороне текстолита. Такая конструкция очень удобна при сборке и стоит три копейки, но делает стол абсолютно непригодным для ремонта, т.к нет возможности достать и заменить одну плату, приходится откручивать всех соседей;

  • Оргстекло, которое я нашел на местном производстве, как оказалось, плохо подходит для оптического сенсора, т.к имеет слабую светопропускаемость. Это приводит к очень маленькому полезному сигналу с датчиков и необходимости искать компромисс между ложными срабатываниями и “силой” (читай – площадью) нажатия;

  • Также я допустил небрежность и запитал всю матрицу плат двумя тонкими проводами… Как вы можете догадаться, долго такая сборка не проработала, больше 20А в пике как-никак. Решение простое – подкинуть питание ещё в несколько точек по периметру.

Сопутствующие расходы:

  • Блок питания 5V 150W = 4 560 ₽

  • Raspberry Pi 4B+ = 12 000 ₽

  • Плата расширения CAN = 2 940 ₽

  • USB Type C = 250 ₽

  • Плата аудиоусилителя = 296 ₽

  • Динамики + накладки = 407 ₽

  • Кабель AUX = 274 ₽

  • Разъём питания = 281 ₽

  • Кабель питания = Бесплатно от старого монитора

  • Сборка своими руками = Бесценно

  • Итого: 18 068 ₽

Этап 6: Управляющее ПО на Малинке

Моя любимая часть, моя гордость…

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

Годом ранее, работая над своим основным проектом Pixel Quest, я к нашему бэкенду на Go подключил Lua интерпритатор. С тех пор все игры нашей сети локаций разрабатываются на Lua.

Для Pixel Quest мы сделали открытую систему разработки игр. Что это значит:

  • во-первых, у нас есть визуальный конструктор игр "Пол–это лава", где можно попрактиковаться в покадровой отрисовке игр;

  • а во-вторых, у нас есть собственная онлайн IDE для разработки игровых сценариев на простом скриптовом языке Lua, который может освоить любой толковый школьник за несколько вечеров, при этом исходный код наших игр публично открыт в репозитории на GitHub, что делает обучение ещё проще.

В свой онлайн редактор для удобного тестирования игр мы добавили вот такую 3D визуализацию:

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

Почему нас сравнивают с Roblox?

Роблокс даёт возможность игрокам самим разрабатывать игры и даже зарабатывать на них, и мы в перспективе хотим сделать что-то похожее. А ещё на ютубе нашу игру “Безопасный цвет” постоянно сравнивают с играми “Color blocks” или “Block party” из Roblox, хотя когда я её разрабатывал, я ещё ничего не знал о Роблоксе...

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

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

Визуальный покадровый конструктор игр Пол – это лава

Этап 7: Версия 2.0

Для будущей версии я переразвёл печатную плату с учетом предыдущего опыта, а именно:

  • сделал разъёмы не горизонтальными, а вертикальными, таким образом можно будет вынимать и устанавливать отдельные платы. Платы между собой будут соединяться П-образными штырьками;

  • удвоил количество светодиодов, чтобы получить более яркую и сочную картинку, а также резервирование на случай выхода светодиода из строя;

  • сделал плату размером 4х5 пикселей, чтобы избавиться от “рамки” по краям и получить поле нужного размера 24х15 для совместимости с игровыми комнатами, а также расширить диапазон возможных CAN адресов с 16 до 32, что даст возможность строить столы большего размера;

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

Нашёл в Китае и протестировал новое более тонкое и более прозрачное оргстекло, которое даёт более чёткий рисунок граней пикселей и увеличивает полезный сигнал с датчиков в три раза, что делает игру более комфортной, а ложные срабатывания сводит к нулю.

Заключение

Pixel Table: от идеи до реализации интерактивного пиксельного стола Опрос, Электроника, Сборка, Raspberry pi, Видео, Длиннопост, Своими руками, Программирование, Игры, Разработка, Alexgyver, Вертикальное видео, Короткие видео, Без звука

Небольшое видео, суммирующее вышесказанное:

Сам прототип с видео сейчас стоит и радует детей на одной из наших локаций, а именно в городе Смоленске.

Ссылки на исходники печатных плат, прошивки под микроконтроллер и другие полезные материалы по проекту можно найти вот в этом телеграм посте (будет обновляться): t.me/pixel_quest/360. Там же в канале будет выкладываться и новая информация по проекту.

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

Далее хотим попробовать наладить серийное производство. Мы считаем, что потенциал у проекта огромный, хотелось бы его развивать.

Какие сценарии развития продукта мы видим:

  • Установка в школы программирования или робототехники для обучения детей. Я сам разработчик и сам когда-то посещал подобный кружок программирования, думаю такой яркий стол сможет вызвать дополнительный интерес у ребят к разработке. А тем более возможность прийти поиграть в свою игру на большом пиксельном полу!

  • Установка в виде вендинговых игровых автоматов в ТЦ и для привлечения внимания к нашему основному бизнесу;

  • Размещение на локациях Pixel Quest в качестве дополнительного развлечения;

  • Использование в качестве отладочного стенда для тестирования ПО, игр и различных эффектов в миниатюре.

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

Как вы считаете, в каком направлении больше перспектив?
Всего голосов:
Показать полностью 21 4 1
[моё] Опрос Электроника Сборка Raspberry pi Видео Длиннопост Своими руками Программирование Игры Разработка Alexgyver Вертикальное видео Короткие видео Без звука
15
0
user10840478
user10840478
3 месяца назад

Ответ на пост «AlexGyver лицемер»⁠⁠1

Это абсолютно нормальная история что этот гайвер эксплуатирует аудиторию своего канала для достижения личных целей! Его конечный результат это заработок денег! Стал бы он тратить время на создание подобного контента в котором вы можите без заморочек собрать какое либо устройство на ардуине? Нет конечно, он зарабатывает деньги на своём контенте, создавая иллюзию "благородного радиолюбителя"...

И конечно же ему плевать на чужое мнение, так как деньги важнее!

К сожалению мы живём в мире, где плевать на чесность, правду и искренность!

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

Справедливость Alexgyver Негатив Блогеры Текст Ответ на пост
6
6
Jonsoff
5 месяцев назад

Волшебный фонарь⁠⁠

Сделал фонарь из дуба. Ручка самодельная, из латуни. Электронная начинка - "Огненная Wi-Fi лампа GyverLamp".

Волшебный фонарь Alexgyver, Фонарь, Своими руками, Электроника, Волшебство, Лампа, Светильник, Пайка, Видео, YouTube, Короткие видео, Длиннопост, Видео ВК
Волшебный фонарь Alexgyver, Фонарь, Своими руками, Электроника, Волшебство, Лампа, Светильник, Пайка, Видео, YouTube, Короткие видео, Длиннопост, Видео ВК
Показать полностью 2
[моё] Alexgyver Фонарь Своими руками Электроника Волшебство Лампа Светильник Пайка Видео YouTube Короткие видео Длиннопост Видео ВК
0
3263
1100001001
1100001001
8 месяцев назад
Arduino & Pi

Идеальный подарок: от идеи до реализации Bluetooth-колонки в виде головы Бендера⁠⁠

Идеальный подарок: от идеи до реализации Bluetooth-колонки в виде головы Бендера Электроника, Сборка, Alexgyver, Бендер (Футурама), Arduino, Esp32, Bluetooth, Колонки, Видео, Вертикальное видео, Длиннопост

Один уже готов к приключениям, а второй всё ещё в процессе сборки.

Давайте знакомиться!

Меня зовут Артём, и я занимаюсь созданием или адаптацией различных технологичных (и не очень) устройств. Это моя первая статья, и я долго шёл к её написанию, преодолевая неуверенность. Желание поделиться опытом и, возможно, помочь кому-то в реализации своих проектов оказалось сильнее сомнений. Итак, вот моя история.

Как всё началось

Однажды я наткнулся на ролик от @AlexGyver на YouTube, где он создавал интернет-радио в виде головы Бендера. В тот момент меня застала моя девушка, которой так понравилась идея, что она попросила сделать нечто подобное для её старшего брата.

Мне эта затея тоже показалась интересной, и я сразу приступил к работе. Мы решили, что устройство будет Bluetooth-колонкой: слушать музыку с телефона, на мой взгляд, гораздо удобнее, чем через интернет-радио. Тем более, модуль ESP32, использованный в проекте, уже поддерживал Bluetooth. Оставалось лишь немного доработать прошивку.

Я подумал, что кто-то мог уже решить эту задачу. Как говорил Исаак Ньютон: "Если я видел дальше других, то потому, что стоял на плечах гигантов" И действительно, я нашёл готовое решение, которое смог адаптировать под свои задачи. Однако это было лишь начало: впереди меня ждала долгая, но увлекательная работа.

Этап первый. Печать корпуса

Первым шагом стало создание корпуса головы Бендера. Для этого я использовал свой проверенный 3D-принтер Ender 3 Pro, модернизированный экструдером Creality Sprite Pro и датчиком автоуровня Creality CR Touch.

Перед началом печати я быстро прикинул, какие компоненты буду использовать, как организую питание и насколько сильно придётся модифицировать корпус. Решение запитать устройство через USB Type-C оказалось удачным: корпус не пришлось дорабатывать, так как удалось найти разъёмы, которые идеально подошли к готовым отверстиям.

Для подготовки моделей я использовал PrusaSlicer, хотя в последнее время присматриваюсь к OrcaSlicer. Главное — не забыть про поддержки: однажды я это упустил, и деталь получилась далёкой от задуманного.

Для печати я выбрал недорогой серый PLA-пластик от HI-Tech-Plast. Несмотря на противоречивые отзывы, материал полностью справился с задачей. В других проектах я также использовал филамент этой фирмы и лишь однажды столкнулся с проблемой — пластик оказался перепутанным, из-за чего пришлось начинать печать заново.

Настройки печати:

• Высота слоя: 0,28 мм.

• Температура сопла: 210°C.

Печать всех деталей, включая антенны, визор и подставки, заняла около 20 часов.

Постобработка

После печати начался этап постобработки, включавший:

1. Удаление поддержек.

2. Шлифовку наждачной бумагой для устранения неровностей.

3. Финальную обработку для придания поверхности гладкости и блеска.

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

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

Корпус был полностью готов. Теперь можно переходить к подбору электронных компонентов и созданию печатной платы.

Этап второй. Подбор и заказ компонентов

Вот список всех компонентов и их примерная стоимость на конец 2024 года, включая печать корпуса:

Компонент ---------- | Количество | ---------- Стоимость (руб.)

ESP32 TYPE-C ---------- | 1 | ---------- 214

Rotary Encoder Module ---------- | 1 | ---------- 109

PCM5102A DAC ---------- | 1 | ---------- 336

PAM8403 ---------- | 1 | ---------- 78

AIYIMA 2Pcs 40MM ---------- | 1 | ---------- 884

Logic Level Shifter ----------| 1 | ---------- 24

Display Control Module ----------| 5 | ---------- 685

LED Matrix (white) ---------- | 2 | ---------- 753

LED Matrix (yellow) ----------| 3 | ---------- 646

Type-C разъём ---------- | 1 | ---------- 32

Печать корпуса ---------- | — | ---------- 623

Итоговая стоимость: 4384 руб.

Подбор компонентов

Идеальный подарок: от идеи до реализации Bluetooth-колонки в виде головы Бендера Электроника, Сборка, Alexgyver, Бендер (Футурама), Arduino, Esp32, Bluetooth, Колонки, Видео, Вертикальное видео, Длиннопост

Сложно найти — легко потерять: матрицы для глаз и рта, которые определяют характер проекта.

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

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

С остальными компонентами проблем не возникло. Их список был представлен на странице проекта AlexGyver, что значительно облегчило поиск.

Ключевые моменты выбора:

• ESP32 с USB Type-C стал идеальным решением благодаря удобству подключения к компьютеру для прошивки. Кабели с microUSB у меня постоянно теряются, а Type-C давно стал стандартом.

• AIYIMA 40MM (динамики) — отличный выбор для проекта. Их компактный размер идеально вписался в конструкцию корпуса, а качество звука оказалось выше моих ожиданий.

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

Планирование следующего этапа

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

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

Пока все компоненты едут из Китая, самое время переключиться на проектирование печатной платы. Это важный этап, который позволит собрать все элементы воедино и создать надёжное устройство.

Этап третий. Проектирование печатной платы

Идеальный подарок: от идеи до реализации Bluetooth-колонки в виде головы Бендера Электроника, Сборка, Alexgyver, Бендер (Футурама), Arduino, Esp32, Bluetooth, Колонки, Видео, Вертикальное видео, Длиннопост

На распутьи ста дорог: поиск оптимальной компоновки для печатной платы.

Итак, начался этап проектирования печатной платы. Работа оказалась непростой: с самого начала я столкнулся с проблемой отсутствия готовых посадочных мест для модулей. Готовых решений я не нашёл, поэтому пришлось создавать их вручную. Это создавало некоторые трудности, особенно для модуля PCM5102. У него боковые ножки не совпадают с шагом сетки 2,54 мм, а точных размеров модуля в интернете не оказалось — были только габариты самой платы. В итоге мне пришлось несколько раз распечатывать разводку платы на бумаге и подгонять её вручную, проверяя, как компоненты ложатся на свои места.

Для изготовления печатной платы в домашних условиях я использовал фоторезист (негативный пленочный) и односторонний фольгированный стеклотекстолит. Процесс выглядел следующим образом:

1. Подготовка текстолита.

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

2. Нанесение фоторезиста.

На чистую поверхность текстолита я наносил фоторезист, после чего прокатывал плату через ламинатор для плотного приклеивания.

3. Засветка ультрафиолетом.

На подготовленную плату с фоторезистом я накладывал заранее распечатанный на прозрачной пленке негативный шаблон платы. Для засветки использовал самодельную ультрафиолетовую лампу, собранную из светодиодов и управляемую микроконтроллером ATTiny13A. Засветка занимала около 200 секунд при расстоянии 10 см между лампой и платой.

4. Проявка.

После засветки плата погружалась в раствор кальцинированной соды. Для этого я разводил пол чайной ложки соды на 500 мл воды. Точное количество соды не критично — главное, чтобы фоторезист начал проявляться.

5. Травление.

Травление проводилось в растворе хлорного железа (200–300 г на 1 литр воды). На травление обычно уходит 40–60 минут, в зависимости от температуры раствора и толщины слоя меди.

6. Удаление фоторезиста.

После травления я смывал остатки фоторезиста ацетоном, оставляя чистые дорожки меди.

После всех этих этапов плата была готова для пайки компонентов и последующей сборки устройства.

Этап четвёртый. Тестирование компонентов в полусобранном виде

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

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

Я думаю, многие, кто пытался собрать Бендера, сталкивались с подобными трудностями. Вот шаги, которые помогли мне справиться с этим:

1. Хорошая пайка контактов.

Все соединения должны быть надёжными, без «холодной пайки».

2. Минимизация длины проводов.

Длина проводов, соединяющих матрицы с платой управления, должна быть минимальной. У меня это расстояние составило всего 4–5 см. На этапе тестирования длина проводов была больше, что приводило к сбоям в работе.

3. Устранение шумов.

Для подавления шумов в цепи питания звукового тракта я добавил два конденсатора по 3300 µF на 6,3 В:

◦ Первый конденсатор установил на плату управления, куда подключалось питание.

◦ Второй напаял на контакты питания второй матрицы рта.

Эти конденсаторы полностью устранили шипение в звуке.

Конденсаторы были подобраны экспериментальным путем и у вас они могут отличатся.

Кроме того, я разделил питание следующим образом:

• ESP32 питалась через встроенный стабилизатор.

• PCM5102 подключил отдельно через стабилизатор AM1117-3.3.

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

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

Теперь немного о прошивке.

Я использовал прошивку от BendeRadioBt, не внося в неё изменений. Компиляцию проводил в среде Arduino IDE версии 2.1.1. Единственное уточнение: для успешной компиляции нужно установить версию платформы в Boards Manager не выше ESP32 by Espressif 2.0.17. Это связано с особенностями библиотеки btAudio.

На этом этапе серьёзных проблем больше не возникло. Всё заработало как задумано, и я с нетерпением приступил к следующему этапу.

Этап V. Империя наносит ответный удар: сборка

Идеальный подарок: от идеи до реализации Bluetooth-колонки в виде головы Бендера Электроника, Сборка, Alexgyver, Бендер (Футурама), Arduino, Esp32, Bluetooth, Колонки, Видео, Вертикальное видео, Длиннопост

Оно начало собираться

Первым делом нужно установить Rotary Encoder Module. Провода к этому модулю я сделал чуть длиннее, чтобы они выходили за пределы корпуса головы.

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

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

Особое внимание следует уделить верхним уголкам платы — их нужно срезать. После этого плата идеально становится на место, а разъём ESP32 оказывается на уровне глаз. Это удобное решение: через визор, убрав глаза, можно обновлять прошивку или регулировать уровень звука на PAM8403. Для дополнительной фиксации все элементы закрепляются двумя болтами.

На следующем этапе я установил разъём питания USB Type-C на корпус. В завершение приклеил заглушку внизу головы Бендера с помощью клея Момент Кристалл. Это крепление достаточно надёжное, но при необходимости позволяет снять заглушку.

Заключение

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

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

На этом моя история о колонке-голове Бендера завершена, но у меня в запасе ещё много интересных проектов, которыми я хотел бы поделиться. Спасибо всем, кто дочитал до конца!

ссылка на прошивку.

https://github.com/im-tortik/BendeRadioBt

В завершение: демонстрация рабочего экземпляра

Показать полностью 4 2
[моё] Электроника Сборка Alexgyver Бендер (Футурама) Arduino Esp32 Bluetooth Колонки Видео Вертикальное видео Длиннопост
167
6
IvanumASS
IvanumASS
8 месяцев назад

Модификация маленького клеевого пистолета⁠⁠

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

[моё] YouTube Своими руками Ремонт техники Alexgyver Arduino Видео
0
9
metisluvre
metisluvre
9 месяцев назад
Сообщество Ремонтёров - Помощь

Помощь в выборе подсветки Ambilight?⁠⁠

Помощь в выборе подсветки Ambilight? Компьютерная помощь, Подсветка, Alexgyver, Паяльник, Своими руками

После первой установки адаптивной подсветки по инструкции от AlexGyver не смог жить без нее. Установил на монитор и ТВ (для просмотра кино от ПК) . После перехода на новый монитор решил попробовать готовый пакет от Giant4 (остается только приклеить и настроить, почти без пайки).
Но после перехода на новый ТВ понял, что эти два варианта не очень сподручны, так как требуется постоянная работа ПК, а мне хотелось чтобы оно работало без. Есть такие варианты на маркетплейсе, например вот эта коробочка, её я и приобрел.
Из плюсов конечно же, что оно устанавливается по HDMI между ПК (или другим источником видеосигнала HDMI) и ТВ.
Минусов оказалось больше. Собственно по этому поводу и пост.
-Нет возможности регулировать чувствительность и глубину зон, никаких настроек вообще нет.
-Подсветка часто отрабатывает такой рандом, что резко выбивает из погружения, особенно всплески зеленого там где тупо чернота.
-Лента оказалась не ws2812b, где каждый дион самостоятельный, а ws2811, где три диода идут подряд как один.
-Со временем еще и начал замечать, что видеосигнал пропадает на время, мигает картинка, возможно эта коробочка не поддерживает иногда какой-то тип HDR.
В общем, разочарование. Сейчас думаю возвращаться к первоначальному варианту, но пока этого не совершил, вопрос:
Есть ли такие готовые варианты, которые убирают большинство этих минусов?
Можно ли как-то перепрошить текущий вариант? (Обновления проверял, их нет)

Показать полностью 1
[моё] Компьютерная помощь Подсветка Alexgyver Паяльник Своими руками
4
44
NabludatelX
10 месяцев назад
Инженериум DIY

Ответ на пост «Как паять паяльником? Большой урок»⁠⁠2

Вот видео где человек реально объясняет как паять и посмотрите какой он паяльник использует

YouTube Alexgyver Самоделки Своими руками Пайка Урок Видео Ответ на пост
19
NabludatelX
10 месяцев назад
Инженериум DIY

Ответ на пост «Как паять паяльником? Большой урок»⁠⁠2

Омг снова про 400 градусов, это наверное твой ночной кошмар «250,270,300 почему температура растет, 330, нееет, остановись, 370, стой стой, 400 градусов, нееееееет (просыпается в холодном поту, поворачивает голову на право рядом лежит шишка и мирно спит) фух это всего лишь сон, пойду сниму видео»
П.с в коментах автор только и приводит этот аргумент

[моё] YouTube Alexgyver Самоделки Своими руками Пайка Урок Ответ на пост Текст
32
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии