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

Пикабомбер

Аркады, Пиксельная, 2D

Играть

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

  • Oskanov Oskanov 8 постов
  • alekseyJHL alekseyJHL 6 постов
  • XpyMy XpyMy 1 пост
Посмотреть весь топ

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

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

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

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

Новости Пикабу Помощь Кодекс Пикабу Реклама О компании
Команда Пикабу Награды Контакты О проекте Зал славы
Промокоды Скидки Работа Курсы Блоги
Купоны Biggeek Купоны AliExpress Купоны М.Видео Купоны YandexTravel Купоны Lamoda
Мобильное приложение

Esp32

С этим тегом используют

Arduino Электроника Самоделки YouTube Esp8266 Своими руками Ardublock Все
141 пост сначала свежее
23
CyberLabs
CyberLabs
3 месяца назад
Arduino/Ардуино проекты

"Эффект Матрицы" на матрице WS2812B⁠⁠

В области программирования и электроники даже самые простые задачи порой требуют немалых усилий, особенно когда дело касается создания визуальных эффектов. Одним из таких эффектов является "эффект Матрицы" — падающие строки зеленых символов, ставшие символом одноименного фильма. Я решил создать этот эффект на и микроконтроллере ESP32 C3 и светодиодной матрице 8x8 с светодиодами WS2812. Однако на практике задача оказалась гораздо более сложной, чем я предполагал. В этой статье я поделюсь своим опытом и расскажу, как ChatGPT помог мне справиться с этой задачей.

Поиск готового решения

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

Обращение к ChatGPT

Чтобы избежать долгих часов написания кода, я решил попробовать ChatGPT. и подробно описал свою задачу: мне нужно создать анимацию падающих пикселей, имитирующую "эффект Матрицы". ChatGPT предложил использовать библиотеку FastLED для управления светодиодами и генерации случайных пикселей, которые будут "падать" вниз.

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

Финальный результат

После множества попыток и доработок я наконец нашел оптимальный вариант кода и адаптировал его под свои нужды. В результате мне удалось создать эффект, который напоминал знаменитые падающие строки из "Матрицы". Пиксели плавно перемещаются сверху вниз, создавая иллюзию бесконечного потока данных. Результаты своей работы я запечатлел в видео, которое прикрепил к статье.

Схема

"Эффект Матрицы" на матрице WS2812B Esp32, Arduino, Матрица, Самоделки, Светодиодная панель, Видео, Вертикальное видео, Короткие видео, Длиннопост, Матрица (фильм)

Подключение ESP32 C3 SuperMini к светодиодной матрице WS2812

Использованные компоненты

  • ESP32 C3 SuperMini

  • Матрица 8x8 WS2812

  • Провода Dupont

Код

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

Выводы

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

В заключение — это проект, будет интересен как новичкам, так и опытным разработчикам. Если у вас есть доступ к таким инструментам, как ChatGPT, не бойтесь экспериментировать и пробовать новое!

Показать полностью 1
[моё] Esp32 Arduino Матрица Самоделки Светодиодная панель Видео Вертикальное видео Короткие видео Длиннопост Матрица (фильм)
11
150
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
3 месяца назад

Видос о том, как я сделал игровую консоль с OLED-ом из старого смартфона⁠⁠

С запозданием в 5 дней, конечно, но лучше чем ничего)

[моё] Гаджеты Смартфон Телефон Моддинг Своими руками Esp32 Микроконтроллеры Видео YouTube
9
2326
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
3 месяца назад

Как я превратил старый смартфон в игровую консоль с возможностью звонить⁠⁠

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Осторожно: эта статья точно будет интересной, ведь в ней мы смоделируем, спроектируем и запрограммируем своё видение N-Gage 2! Я очень старался сделать статью интересной даже для тех читателей, кто не разбирается в теме 3D-печати и программирования микроконтроллеров :)

Я очень люблю ретро-игры и игровые консоли. Иногда я люблю позалипать в какую-нибудь классику с NES, Sega Mega Drive или, например, PSP. Однако особое место в моём сердечке занимает игровой телефон Nokia N-Gage, который, к сожалению, не получил продолжения, как и его более современный собрат — Sony Ericsson Xperia Play. Недавно я пересматривал свою коллекцию девайсов и обнаружил на полочке Galaxy S4 Mini. И тут я подумал: а что если...

❯ Предисловие

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

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Почти два года назад в моей голове уже возникала идея сделать «портативку» из полурабочего гаджета. В то время я хотел рассказать читателям о том, что многие старые девайсы можно использовать в качестве одноплатных компьютеров и HMI-панелей благодаря наличию пятачков с шиной UART на плате, с которой можно легко взаимодействовать в Android-приложениях! В качестве реального примера использования я взял планшет с нерабочим тачскрином, подключил через UART геймпад, разработанный на базе RP2040 и написал программу, которая читает UART и инжектит состояние кнопок напрямую в драйвер ввода:

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Именно для того чтобы закончить этот проект я приобрел себе Ender3 V2

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

Недавно я осматривал свою коллекцию гаджетов и на полочке с смартфонами Samsung обнаружил легендарный Galaxy S4 Mini, который мне когда-то дарил один из читателей. У смартфона отсутствовала задняя крышка, средняя часть корпуса была немного ободрана, однако несмотря на почтенный возраст в 12 лет, смартфон продолжал нормально работать и даже AMOLED-матрица у него ничуть не выгорела!

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

И тут в моей голове что-то щёлкнуло: я вспомнил что S4 Mini — смартфон с довольно неплохим железом для эмуляторов и очень крутым даже по современным меркам AMOLED дисплеем. На моей памяти, в мире не выходило ни одного серийного игрового телефона в монолитном корпусе с OLED-матрицей, а тут ещё рядом лежал оригинальный N-Gage, который я недавно купил в утиле и восстановил после воды. Я взвесил все за и против, прикинул схему и конструктив будущего устройства и принялся мастерить...

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Всё начинается с кубика...

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

  • В первую очередь, нам необходимо продумать как геймпад будет общаться с нашим устройством. За исключением моего хака с UART'ом, у нас есть два варианта: первый — микроконтроллер выполняет роль USB-HID устройства (прикидываясь клавиатурой) и подключается к OTG-хосту гаджета. Среди плюсов этого подхода можно выделить низкую задержку, однако минусов гораздо больше. Например, далеко не все старые устройства поддерживают OTG и могут быть проблемы с реализацией одновременной работы USB-хоста и зарядки (зависит от реализации OTG в каждом конкретном устройстве). А второй вариант — это Bluetooth-HID, который работает почти с любыми Android устройствами, однако потребляет чуть больше энергии и может иметь небольшой инпут-лаг.

    После расследования выяснилось, что у S4 Mini OTG нет, а значит остается лишь один вариант — Bluetooth. Среди дешевых микроконтроллеров с BT выделяется лишь ESP32, который стоит буквально три пачки доширака. Его мы с вами и выберем.

  • Далее нам необходимо придумать внешний вид устройства. Изначально мне хотелось, чтобы гаджет по форм-фактору и эргономике напоминал оригинальный N-Gage. Но поскольку мне не хотелось делать слишком длинную «колбасу» и бюджета по свободному пространству в корпусе откровенно не хватало, пришлось пойти на некоторые ухищрения — например, расположить блок кнопок вертикально.

  • Теперь самое сложное — смоделировать более-менее адекватный корпус и подогнать детали так, чтобы их хоть как-то можно было состыковать и закрепить. Я в 3D-печати новичок, а в вопросах проектирования корпусов — вообще неотесанный селюк, поэтому мне оставалось лишь смоделировать в блендере выпуклый меш, импортировать в TinkerCad и затем CSG'шками вырезать в нём дырки отверстия.

  • И самое легкое — написать прошивку для микроконтроллера и спаять всё вместе, дабы наши кнопочки не просто прикольно щелкали, но и на практике работали в системе!

Звучит как приключение на 5 минут. Но вот как на практике? Давайте посмотрим!

❯ Моделируем корпус

В первую очередь я сел моделировать корпус устройства и прикидывать его размеры. В TinkerCad'е CSG'шками сделать корпус по референсу проблематично (по крайней мере для меня), поэтому я решил смоделировать основу в блендере. Я взял рендеры N-Gage с фронтальной части, установил камеру в ортографическую проекцию и принялся повторять контур корпуса оригинального телефона. После этого я создал грани на одной половинке корпуса, продублировал все вершины и отзеркалил их с другой стороны. Таким образом, корпус получился одинаковым (кривым) с обеих сторон.

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Далее я убрал лишние рёбра посередине и вытянул корпус по оси Z с помощью инструмента Extrude. Теперь это напоминает поделку семикласника на уроке обращения с рубанком:

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Внимательные читатели могли заметить косяк, который из-за затенения я не замечал вплоть до первой печати

Дальше я использовал инструмент Inset faces, дабы создать новые грани на плоскости и вытянуть из них фронтальную часть корпуса. Таким образом, мы получаем ровные и мягкие стенки, которые затем можно смягчить ещё больше с помощью модификатора Bevel:

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Однако сейчас геометрия нашего корпуса полая, внутри неё ничего нет. Чтобы добавить внутренние стенки, мы воспользуемся модификатором Boolean (CSG) в блендере: дублируем геометрию нашего корпуса, немного уменьшаем её по оси X и Y (чем меньше дубль, тем толще будут стенки), и затем сдвигаем немного вниз, а затем на основном объекте корпуса добавляем модификатор Boolean, устанавливаем режим Difference, ставим дубль в качестве второго объекта и жмём Apply. Теперь у нашего корпуса внутри отнюдь не пустота!

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Далее экспортируем модель в STL, импортируем её в TinkerCad и берём линейку в зубы. Пора замерять габариты нашего устройства и размер дисплея.

Поскольку S4 Mini уж очень скругленный, я аппроксимировал его размеры до прямоугольника (ни слово про мыло!). Над этим прямоугольником я расположил прямоугольник размером с дисплей, который и вырежет нам пространство для этого самого дисплея:

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

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

❯ Геймпад

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

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

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Ошметки текстолита можно счистить надфилем или просто подровнять канцелярским ножом

Для реализации обработки кнопок есть несколько подходов:

  • «В лоб»: самый простой и самый подходящий для геймпадов. На один входной GPIO микроконтроллера вешается подтягивающий резистор и кнопка, которая коммутирует массу. Главный плюс такого подхода — возможность зажимать сколько угодно кнопок одновременно, а если ножек на микроконтроллере не хватает, то всегда можно использовать сдвиговый регистр!

  • На резисторах: требует наличия ADC в микроконтроллере. Принцип работы заключается в том, что на выходе каждой кнопки установлен резистор определенного номинала. В прошивке микроконтроллера опытным путем задается диапазон значений ADC, который соответствует нажатой кнопке. Такой подход иногда используется в планшетах для обработки кнопок по типу включения, громкости и т.п.

  • Матричный: используется в клавиатурах, в том числе и в телефонах. Позволяет реализовать 16-кнопочную клавиатуру всего с 8-ю сигнальными линиями, однако с таким подходом нельзя нажимать сразу несколько кнопок кнопок в одной «линии» одновременно. Этим и страдали некоторые китайские игровые консоли, на которых нельзя было одновременно зажать вверх и влево или A и B!

Поскольку у нас всего 10 кнопок, мы выберем первый подход. Для этого мы подведем общую массу к нашей макетке, от которой пустим перемычки (дорожки) к каждой кнопке, а с другой стороны подпаяем провода, которые пойдут на входы в наш микроконтроллер.

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

После этого я наконец-то напечатал первую примерочную болванку, в которой всё помещалось идеально! Время от раздумий до первой болванки — ~5-6 часов:

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

❯ Стыкуем корпус

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

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

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

А она ей как раз!

С крестовиной всё чуточку сложнее: сначала я сделал монолитную в стиле GameBoy, однако из-за того что расстояние между кнопками относительно маленькое, при нажатии на стрелку иногда нажималась и вторая кнопка. Поэтому я решил её разделить на несколько частей, оставив характерный рельеф посередине для лучшей тактильности. Я печатал много разных вариантов: подгонял зазоры для уменьшения люфта и добавлял тактильные выемки, однако остановился на классическом варианте. Далее встал вопрос как закрепить плату с геймпадом с обратной части корпуса. Я долго думал и прикидывал варианты: хотел и саморезы вкручивать, и гайки вплавлять, но потом придумал что самым лучшим и надежным решением будут салазки приклеенные на дихлорэтан, которые при желании можно снять не ломая корпус, но которые будут хорошо выдерживать постоянное усилие со стороны игрока!

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Мне кажется что это невероятный говнокод и костыль от мира инженеров. Напишите своё мнение на этот счёт в комментариях.

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

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Нарезаем модель в слайсере и печатаем! Как по мне, получилось очень даже стильно. Да, кто-то скажет, мол, видно, что это колхоз, не Industrial-grade, но как по мне для самоделки вполне на уровне!

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

На этом разработка корпуса наконец-то закончена!

❯ Пишем прошивку

Теперь, когда корпус нашего устройства готов и элементы в нём более-менее стыкуются, можно перейти к написанию прошивки. Как я уже говорил ранее, в качестве микроконтроллера я решил выбрать ESP32 благодаря копеечной цене и наличию неплохого BT-стека:

В качестве основы я взял официальный сэмпл BT HID-устройства с гитхаба Espressif. Собрав прошивку и протестировав что всё работает нормально, я принялся адаптировать её под свои задачи. Сначала я написал код для опроса кнопок: устанавливаем GPIO в режим входа с подтяжкой к высокому уровню, затем по запросу итерируемся по массиву с GPIO и заносим состояние кнопок в отдельный массив:

uint8_t input_gpio_mapping[] = {
INPUT_GPIO_LEFT,
INPUT_GPIO_RIGHT,
INPUT_GPIO_UP,
INPUT_GPIO_DOWN,
INPUT_GPIO_A,
INPUT_GPIO_B,
INPUT_GPIO_C,
INPUT_GPIO_D,
INPUT_GPIO_E,
INPUT_GPIO_F
};

uint8_t input_key_states[INPUT_KEYS_COUNT];

void input_initialize_hw()
{
for(int i = 0; i < INPUT_KEYS_COUNT; i++)
{
gpio_reset_pin(input_gpio_mapping[i]);
gpio_set_direction(input_gpio_mapping[i], GPIO_MODE_INPUT);
gpio_set_pull_mode(input_gpio_mapping[i], GPIO_PULLUP_ONLY);
}
}

void input_update_key_state()
{
for(int i = 0; i < INPUT_KEYS_COUNT; i++)
input_key_states[i] = !gpio_get_level(input_gpio_mapping[i]); // TODO: Implement timestamp-based debouncing
}

У любых механических кнопок есть особенность, которая называется дребезг. Случается она в момент когда мы отпускаем кнопку, но при этом размыкатель ещё не полностью поднялся в крайнее верхнее положение. Бороться с этим можно по разному, самый простой способ — программный, когда мы обновляем состояние кнопки только когда прошло определенное время (измеряемое в миллисекундах) с момента прошлого апдейта.

Все HID-устройства описываются специальным дескриптором, однако формат пакетов с репортами о состоянии устройства у них очень сильно отличается: мышки передают ускорение по осям X и Y, а также состояние кнопок, клавиатуры передают до 8-нажатых клавиш одновременно (наследие PS/2), а у геймпадов целый ворох стандартов (DirectInput, XInput... чего только нет. Кстати именно поэтому внешние геймпады обычно имеют несколько режимов). Алгоритм отправки репортов очень прост: 60 раз в секунду проверяем состояние кнопок, если какие-то нажаты — заполняем буфер с нажатыми клавишами и затем отправляем репорт хост-устройству.

// Internal input keycode mapping to HID
int hid_key_mapping[] = {
HID_KEY_DOWN_ARROW,
HID_KEY_LEFT_ARROW,
HID_KEY_UP_ARROW,
HID_KEY_RIGHT_ARROW,
HID_KEY_Z,
HID_KEY_LEFT_GUI,
HID_KEY_V,
HID_KEY_ENTER,
HID_KEY_C,
HID_KEY_X
};
uint8_t hid_report[8];

vTaskDelay(1000 / portTICK_PERIOD_MS);

while(1) {
input_update_key_state();

vTaskDelay((1000 / 60) / portTICK_PERIOD_MS);
if (sec_conn) {
int hid_report_offs = 0;
memset(&hid_report, 0, sizeof(hid_report));

// Not more than 8 keys pressed at once
for(int i = 0; i < INPUT_KEYS_COUNT; i++)
{
if(hid_report_offs == 8)
break;

if(input_key_states[i])
{
hid_report[hid_report_offs] = hid_key_mapping[i];
hid_report_offs++;
}
}

esp_hidd_send_keyboard_value(hid_conn_id, 0, &hid_report, hid_report_offs);
}
}

Вуаля! Всё работает идеально!

❯ Доводим ПО смартфона

Мы уже почти дошли до финала, осталось лишь чуть-чуть доработать прошивку смартфона! Для этого, его сначала необходимо рутировать: ставим CWM через Odin и устанавливаем SuperSU!

Поскольку кнопку включения я не предусмотрел в корпусе, было решено реализовать автостарт устройства от зарядки — прямо как на айфоне! Большинство смартфонов при отображении анимации зарядки на самом деле загружают ядро Linux и запускают специальную программу. Если эту программу подменить на перезагрузку в обычный режим — мы получим автостарт устройства!

На смартфонах Samsung за это отвечает бинарник /system/bin/lpm или же /system/bin/playlpm. Изначально я хотел сделать жёсткую ссылку на программу reboot, которая не работала пока не были запущены какие-то Samsung'овские службы. Затем я узнал что есть возможность напрямую направить ядру запрос о перезагрузке устройства с помощью sysrq.

Далее был написан простенький скрипт:

#!/system/bin/sh
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger

Который тоже не работал. И я понял что lpm нужно подменять другой самопальной программой. Так была написана и собрана с помощью NDK вот такая мелкая утилита, с которой уже всё заработало:

int main(int argc, char** argv)
{
system("echo 1 > /proc/sys/kernel/sysrq");
system("echo b > /proc/sysrq-trigger");
}

Далее необходимо было решить вопрос с виртуальными кнопками: поскольку в корпусе консоли виден только дисплей смартфона без кнопки Home, нам нужен был способ как-то управлять системой. Для этого было достаточно лишь пропатчить build.prop и добавить qemu.hw.mainkeys=0. В S4 Mini программные кнопки работают немного кривовато (только в портретной ориентации - т.е в нашем случае в режиме смартфона), но в целом пойдет. Я ещё немного поигрался в build.prop ради фана и добавил упоминания N-Gage :)

❯ Аппаратные доработки

Далее необходимо было решить вопрос с зарядкой. Как я уже говорил выше, было решено использовать Type-C. Я заказал разъём на плате, разобрал смартфон и кинул перемычки с цепи питания и сигнальных линий на разъем.

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

У Samsung'ов в те годы были не совсем стандартные разъемы с кучей пластика и к VBus'у аккуратно подпаяться немного проблематично

Теперь нужно решить задачу запитывания микроконтроллера. ESP32 в режиме BLE кушает целые 130мА (что очень много, телефоны нулевых кушали меньше с учетом параллельно работающего GSM-тракта!) в режиме активной передачи данных. Поскольку на самой плате с ESP32 используется LDO AMS1117 с высоким dropout-напряжением в 1.2В, для использования с обычным литий-ионным аккумулятором необходимо было использовать ULDO с дропаутом в ~0.3В...

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

  • 0.8В-1.2В - VCore, это шина питания ядер процессора. Именно на ней работает вся или почти вся внутренняя логика системы на кристалле.

  • 1.2V-1.8V VRef - обычно это референсное напряжение для работы процессора с внешней логикой. Впрочем, с таким напряжением может быть и одна из шин питания для каких-то модулей (например камеры), это зависит от платформы.

  • 3.3V - Ну, здесь всё очевидно. 3.3В — одно из самых распространенных напряжений в микроэлектронике и может использоваться в широком спектре модулей. Например оно может использоваться для запитки модуля камеры, различных датчиков, контроллера тачскрина, усилителя и т.п. Именно эта шина питания в идеале нам и нужна.

Однако 3v3 уровни могут быть и логическими. Крайне не рекомендую вешать нагрузку аж в целых 130мАч на какую-нибудь цифровую линию, есть неиллюзорный риск спалить процессор или контролер питания. Лучше всего брать эту шину питания с здоровых decoupling-конденсаторов, однако имейте ввиду что шина может быть нагружена другими устройствами и вы со своей нагрузкой в сотню миллиампер можете увести КП в защиту!

В случае с S4 Mini у меня был сервис-мануал с схемой, где я принялся искать нужное напряжение. Изначально у меня была возможность взять 3.3В с питания eMMC, однако по ходу изучения схемы я заметил ещё одну подходящую шину питания — 3P0 (т.е 3В ровно), которая питает Wi-Fi, ИК-порт и тачскрин.

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Я решил заглянуть в даташит на микроконтроллер и убедился, что он умеет работать в том числе и при 3В на входе, однако это пороговое напряжение при котором может работать чип. Если питание нестабильное и проседает, то МК либо зависнет, либо упадет в ресет. Однако я был уверен что на выходе DC-DC с КП смартфона точно должно быть всё нормальным. Я быстренько вывел перемычку и запитал МК буквально «в воздухе», проверил что всё работает стабильно, а затем припаял несколько жилок с LVDS-кабеля и закрепил УФ-маской.

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

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

На МК ничего не слиплось — просто на момент фотографии мне всё ещё не пришёл флюкс-офф)

И вот, наконец-то моё детище собрано! Давайте же посмотрим что я там насобирал!

❯ Тестируем

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

В целом, я считаю что у меня это вполне получилось. Помимо функций самой звонилки, Android 4.4 всё ещё вполне может порадовать владельца базовым серфингом сети (большинство сайтов не откроется... ну нам и опеннета хватит!) и мессенджерами - здесь пока ещё работают и Telegram, и ВК в лице в Kate Mobile. Однако есть определенный нюанс... я взял GT-I9190 - т.е односимочную 3G-версию S4 Mini. А как известно, 3G в России уже практически не используется, поэтому вне Wi-Fi придется ограничится EDGE :)

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Вчера я сделал анонс статьи на Пикабу и несколько читателей задали резонный вопрос: это же буквально смартфон 2013 года, он же, на первый взгляд, ничего не умеет в современных реалиях. Однако спешу вас заверить что под капотом всё не так уж и плохо! 400'ого Snapdragon'а хватает для большинства мобильных игр тех лет, не говоря уже об эмуляторах. При этом в отличии от старших 600'ых снапов (тогда 800'ый ещё не вышел), он не слишком сильно греется и более лоялен к и без того не самому объёмному аккумулятору!

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

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

Когда запускаешь любимый Super Mario Bros на офигенной AMOLED-матрице, то сразу понимаешь что весь проект был затеян точно не зря. После отключения линейного фильтра и растягивания картинки на весь экран, то диву даешься какие тут сочные цвета - не как на ЭЛТ-телевизоре, но тоже очень годно! Эмулятор работает очень шустро!

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Ещё раз ноапомню что справа не рамка, а забагованные софт-кнопки. А вот сверху - рукопопие :)

Давайте же перейдем к чему-то ещё более пестрому и "графонистому" - а именно к Sega Mega Drive с оригинальным Соником! Здесь игра точно также летает, звук не хрипит, а картинка выглядят максимально приятной. Когда-то AMOLED-матрицы Samsung ругали за PenTile и немного не естественную цветовую схему... но в эмуляторах она как-будто какой-то шарм придает.

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Далее предлагаю опробовать DOS'овскую классику - Wolfenstein 3D. Помимо "вольфа", я хотел добавить в тесты также и Quake... но порты попались кривые и не запускались. Очевидно что игра, которая шла даже на 286'ом, будет отлично летать на S4 Mini:

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, Esp32, Микроконтроллеры, Samsung, Android, Arduino, Длиннопост

Ну и нативные игрушки здесь тоже работают неплохо. В какие-нибудь аркады типа Angry Brids, Fruit Ninja или Asphalt можно поиграть с большим удовольствием!

❯ Заключение

Вот такой незамысловатый и полезный девайс у нас с вами сегодня получился. Вы можете собрать такой и сами, схему, код прошивки и исходные файлы моделей я выкладываю на своём Github. Корпус можно "пощупать" в TinkerCad.

Сама разработка заняла всего 7 дней, большая часть времени ушла на подгонку деталей. Да, эту неделю я определенно точно почти не спал и даже один раз попсиховал. Однако все время разработки мне было дико весело и интересно. Ну, а что ещё пареньку в 23 года то нужно, кроме как писать код, копаться в девайсах и ТАЗах!?

Жду ваше мнение о моей самоделке в комментариях! А если вам интересна тематика ремонта, моддинга и программирования для гаджетов прошлых лет, подписывайтесь на мой Telegram-канал «Клуб фанатов балдежа», куда я публикую бэкстейджи статей, иногда полезные посты ну и немножечко щитпоста! Если вам интересны мои видео той же тематики — предлагаю подписаться на мой YouTube-канал.

Как вам статья?
Всего голосов:
Как вам девайс?
Всего голосов:

Важно

Друзья! Для подготовки статей с разработкой самопальных игрушек под необычные устройства, объявляется розыск телефонов и консолей! В 2000-х годах, китайцы часто делали дешевые телефоны с игровым уклоном — обычно у них было подобие геймпада (джойстика) или хотя бы две кнопки с верхней части устройства, выполняющие функцию A/B, а также предустановлены эмуляторы NES/Sega. Фишка в том, что на таких телефонах можно выполнять нативный код и портировать на них новые эмуляторы, чем я и хочу заняться и написать об этом подробную статью и записать видео! Если у вас есть телефон подобного формата и вы готовы его задонатить или продать, пожалуйста напишите мне в Telegram (@monobogdan) или в комментарии. Также интересуют смартфоны-консоли на Android (на рынке РФ точно была Func Much-01), там будет контент чуточку другого формата :)

А также я ищу старые (2010-2014) подделки на брендовые смартфоны Samsung, Apple и т. п. Они зачастую работают на весьма интересных чипсетах и поддаются хорошему моддингу, парочку статей уже вышло, но у меня ещё есть идеи по их моддингу! Также может у кого-то остались самые первые смартфоны Xiaomi (серии Mi), Meizu (ещё на Exynos) или телефоны Motorola на Linux (например, EM30, RAZR V8, ROKR Z6, ROKR E2, ROKR E5, ZINE ZN5 и т.п, о них я хотел бы подготовить специальную статью и видео т. к. на самом деле они работали на очень мощных для своих лет процессорах, поддавались серьезному моддингу и были способны запустить даже Quake!). Всем большое спасибо за донаты!

Статья подготовлена при поддержке TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud чтобы не пропускать новые статьи каждую неделю!

Показать полностью 24 2
[моё] Опрос Рукоделие с процессом Поделки Смартфон Гаджеты Телефон Игры Консоли Своими руками Программирование Esp32 Микроконтроллеры Samsung Android Arduino Длиннопост
232
10
darkcorp
darkcorp
3 месяца назад

Визуализация WiFi с помощью ESP32⁠⁠

Чувак сделал визуализацию работы wifi с помощью собственной антенны и чипов ESP32:

Вот что он пишет:

В качестве научного ассистента в Институте телекоммуникаций Штутгартского университета я работаю над многоантенными системами типа (распределенного) массивного MIMO, уделяя особое внимание платформам для измерения беспроводных каналов и алгоритмам обработки измерений каналов (классическим и на основе глубокого обучения).

Однажды мой (невероятно талантливый) коллега Марк Гогер предложил использовать для измерения каналов сверхдешевые чипы ESP32 вместо программно-определяемых радиостанций. Сначала я был настроен весьма скептически, но когда он показал мне минималистичный прототип, который он спаял, я был заинтригован идеей возможности продемонстрировать свои алгоритмы в реальном времени с помощью сигналов WiFi. В серии бакалаврских/исследовательских работ мои отличные студенты Тим Шнайдер, Дэвид Энгельбрехт и Дэвид Келлнер помогли мне разработать антенную решетку ESP32 "ESPARGOS".

Измеренный набор данных CSI, используемый для визуализации AoA / TDoA: https://espargos.net/datasets/data/espargos-0005/

Исходный код локализации AoA / TDoA (требует незначительных изменений для применения к набору данных espargos-0005): https://github.com/Jeija/ToA-AoA-Augmented-ChannelCharting/

Более подробная информация доступна на сайте проекта антенной решетки ESP32 "ESPARGOS": https://espargos.net/

Исходный код библиотеки Python + демоверсии: https://github.com/ESPARGOS/pyespargos (каталог "demos/camera" для демоверсии "WiFi camera")

Круто! Для меня это на уровне квантовой физики. Наверняка этим заинтересуются военные или спецслужбы, придя однажды с вопросом: что вам известно про проект Бесовец?

Показать полностью
Wi-Fi Своими руками Python Esp32 Видео YouTube
10
58
feeld
feeld
3 месяца назад
Arduino & Pi
Серия Свои умные светильники

Свои умные светильники часть 2⁠⁠

И так, второй пост из серии про светильники. В нём я покажу актуальную версию своей умной базы, новые плафоны и новые анимации. Расскажу о дальнейших планах.
В этом посте будет очень много фотографий, GIF изображений и рассуждений.

Для затравки


Этап второй - я назову его: Развитием.


Начну с конструкции и изменений, а так же что послужило причиной этих изменений:

Причины:

  • DC-DC преобразователь на 2 Ампера(3 Ампера в пике и с радиатором) не подходил. Он жутко грелся, а лента в пике по расчетам могла потреблять до 5 ампер, поэтому предыдущая конструкция была жутко доколхожена вторым DC-DC модулем в параллель для хоть какого то запаса по амперажу, но это тоже особо не помогло. Поэтому два дешевых модуля были заменены на XL4016E 9A. Так как они полностью удовлетворяют моим требованиям по размеру, мощности и цене.

  • Добавления акселерометра для одной очень замысловатой анимации.

  • Перенос порта питания на другое место и соответственно изменения модели под это дело.

И вот какую внутрянку я получил, после некоторых мытарств.

Свои умные светильники часть 2 Инженер, Электроника, Своими руками, Гаджеты, Esp32, Декор, Светильник, Луна, Планета, Космос, Ночник, Лампа, Освещение, Оригинально, Arduino, Фонарь, Пайка, Свет, Интерьер, Дизайн, Видео, Без звука, Вертикальное видео, Короткие видео, Длиннопост

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

Свои умные светильники часть 2 Инженер, Электроника, Своими руками, Гаджеты, Esp32, Декор, Светильник, Луна, Планета, Космос, Ночник, Лампа, Освещение, Оригинально, Arduino, Фонарь, Пайка, Свет, Интерьер, Дизайн, Видео, Без звука, Вертикальное видео, Короткие видео, Длиннопост

Вот так. На этом цилиндре намотана уже сама лента. (не промоделивал, так как не видел в этом смысла для себя, а занятие гнуть компоненты во фьюжене, это мега мучительно)

Поверх собственно ленты, на следующий выступ, одевается рассеиватель, а сверху скрепляется все крышкой.

Свои умные светильники часть 2 Инженер, Электроника, Своими руками, Гаджеты, Esp32, Декор, Светильник, Луна, Планета, Космос, Ночник, Лампа, Освещение, Оригинально, Arduino, Фонарь, Пайка, Свет, Интерьер, Дизайн, Видео, Без звука, Вертикальное видео, Короткие видео, Длиннопост

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

В реальности цилиндр с LED лентой выглядит вот так:

Свои умные светильники часть 2 Инженер, Электроника, Своими руками, Гаджеты, Esp32, Декор, Светильник, Луна, Планета, Космос, Ночник, Лампа, Освещение, Оригинально, Arduino, Фонарь, Пайка, Свет, Интерьер, Дизайн, Видео, Без звука, Вертикальное видео, Короткие видео, Длиннопост

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

Это что касается конструкции и железа. Что касается софтверной части, ох и много же там было проблем. Ниже опишу и проблемы и все

  • Проект был сделан в скетче, что со временем усложнило его модификацию, отладку и работу с ним в целом. Работа в Arduino IDE мягко скажем, не была столь удобной. Поэтому проект был перенесен на VS Code в связке с PIO, где произошел рефакторинг и разделение всех функций на отдельные файлы прям как по ООП. (эх, если б я был профи и знал заранее, я бы не потратил столько времени на этот этап)

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

  • Отсутствие серверной части. Я хочу видеть подключенные лампы к сети интернет, на какой прошивке они сейчас, какой аптайм у них, какой город у пользователя и какая анимация включена. Иметь возможность перепрошивки удаленно на выбранную прошивку и возможность смены анимации так же удаленно. Удаленно в этом контексте, это через интернет, без открытия портов, знания IP адреса и тд и тп. Вообщем, статистическая и прочая информация для технической поддержки в будущем. Она может каким то образом изменятся, в дальнейшем, но фундамент необходимо сделать.

  • Отстутствие сервера для поддержки "интернета-вещей", тоесть лампой можно управлять только находясь в одной локальной сети, то это категорически не устраивало меня, все таки в современных реалиях, хочется видеть статус той же лампы онлайн и 24\7. А так же, это стесняло меня в некоторых анимациях, о которых я расскажу позже.

  • Как оказалось, фаза луны отображалась не в реальном времени, а расчитывалась по расчетам. Что в целом не плохо, но зная реальное время, эти расчеты не нужны. Тоже надо было пофиксить.

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

    Вообщем, описывать все проблемы дословно, я не вижу смысла и так понятно, что багов лагов и проблем, там было ООЧЕНь много. Прям сверхдошиша. Не долго думая, приступил к исправлению.

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

Свои умные светильники часть 2 Инженер, Электроника, Своими руками, Гаджеты, Esp32, Декор, Светильник, Луна, Планета, Космос, Ночник, Лампа, Освещение, Оригинально, Arduino, Фонарь, Пайка, Свет, Интерьер, Дизайн, Видео, Без звука, Вертикальное видео, Короткие видео, Длиннопост

Интерфейс версии 2.0, адаптивный и под мобильные устройства и под ВЕБ версию.

Свои умные светильники часть 2 Инженер, Электроника, Своими руками, Гаджеты, Esp32, Декор, Светильник, Луна, Планета, Космос, Ночник, Лампа, Освещение, Оригинально, Arduino, Фонарь, Пайка, Свет, Интерьер, Дизайн, Видео, Без звука, Вертикальное видео, Короткие видео, Длиннопост

Блок системных настроек.

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

Свои умные светильники часть 2 Инженер, Электроника, Своими руками, Гаджеты, Esp32, Декор, Светильник, Луна, Планета, Космос, Ночник, Лампа, Освещение, Оригинально, Arduino, Фонарь, Пайка, Свет, Интерьер, Дизайн, Видео, Без звука, Вертикальное видео, Короткие видео, Длиннопост

Если доступно обновление.

Так же, сделал приятную мелочь и бонус, в процессе обновления естественно у нас появляется прогресс-бар с процентным заполнением и текущим статусом процесса (качается прошивка, распаковывается, обновляется и тд) и сама лампа в этот момент начинает плавно переливаться голубым цветом, что дополнительно уведомляет пользователя об обновлениях.

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

Свои умные светильники часть 2 Инженер, Электроника, Своими руками, Гаджеты, Esp32, Декор, Светильник, Луна, Планета, Космос, Ночник, Лампа, Освещение, Оригинально, Arduino, Фонарь, Пайка, Свет, Интерьер, Дизайн, Видео, Без звука, Вертикальное видео, Короткие видео, Длиннопост

Постучись в мою дверь.

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

И вот видео работы:

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

Устроено все весьма просто и стандартными методами. Протокол MQTT, свой сервер и базовая аутентификация, которая зашифрована и хранится уже в памяти ESP. + уникальный ID формируется из MAC адреса для каждого устройства, который не изменяется при перепрошивках или перезагрузках, возможно в будущем я упрощу этот механизм, но пока сам прототип работает и это радует. Это потребовало от меня множества усилий, но это одна из самых главных фич которые мне нравятся самому. Естественно для этого режима(как и для всех) работают настройки и установки такие как: якрость, высота подсветки, чувствительность и цвет) реализовано это всё с помощью акселерометра и вполне стандартных алгоритмов фильтрации шумов(спасибо универу, за специальность в области сигналов и фильтрации шумов и тд, наконец то пригодилось). Грубо говоря, ничего сложного.

Погодная анимация


Куда сложнее, это была следующая анимация. Симуляция режима погоды.
В интерфейсе это выглядит очень просто. Нет никаких настроек (в этом и смысл).

Свои умные светильники часть 2 Инженер, Электроника, Своими руками, Гаджеты, Esp32, Декор, Светильник, Луна, Планета, Космос, Ночник, Лампа, Освещение, Оригинально, Arduino, Фонарь, Пайка, Свет, Интерьер, Дизайн, Видео, Без звука, Вертикальное видео, Короткие видео, Длиннопост

Погодная анимация

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

Вот например, погода для Санкт-Петербурга и для Сочи. (1 и 2 видео соответственно). В СПБ- Облачно, а в Сочи шел небольшой дождь. (и да, я показываю на примере Марса)

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

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

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

Так же, есть Температурный режим этой анимации. Он просто показывает цветом свечения, текущую температуру на улице. Диапазон можно задать самому, от -20 до + 30 градусов по умолчанию, где -20 это максимально синий цвет, а +30, максимально красный. Эти цвета так же можно изменить в настройках. И так же естественно все в Live режиме меняется.

Новая анимация луны

У меня остался бракованный плафон, так как принтер почему то решил что он допечатал. (да, я бракодел) и на нём я тестирую всякое.

Вот как выглядит секторность и фазы луны.
У анимации луны есть ряд настроек:
Режим работы:

  • Реалистичное время. (не думаю что стоит пояснять, что на небе - то на лампе)

  • Ускоренное время. (можно задать какое то количество минут, за которое луна сменится от полностью темной, до полной луны)

  • Ручной режим. ( на видео выше, мы можем изменить фазу вручную, от 0 до 12)

Интерпретация:

  • Реалистичная (Всегда горит строго 180 градусов луны) как и в реальной жизни, у луны всегда есть темная сторона)

  • Артистичная (В процессе того как луна меняет фазы, она как бы заполняется от 0 до 360 градусов и в итоге будет гореть вся сфера)

  • Минималистичная (всегда горит 1 из 12 столбцов, он перемещается как месяц) (на видео)

Ну и конечно остальные настройки, такие как цвет, яркость и тд. Кому что по душе.

Админка.

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

Свои умные светильники часть 2 Инженер, Электроника, Своими руками, Гаджеты, Esp32, Декор, Светильник, Луна, Планета, Космос, Ночник, Лампа, Освещение, Оригинально, Arduino, Фонарь, Пайка, Свет, Интерьер, Дизайн, Видео, Без звука, Вертикальное видео, Короткие видео, Длиннопост

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

Что в планах дальше?

В планах дальше, это:

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

  • Доработать некоторые баги, например сейчас смена цветов не всегда происходит в Live режиме, это связано с JS и миллиардами запросов, к устройству.

  • Собрать полноценное Android приложение, зачатки уже есть, я могу с приложения изменять анимации и их параметры, но показывать пока не буду, так как это совсем ранний прототип и я только изучаю этот вопрос. Но у меня по сути дела, есть почти полноценный API для работы с устройством, так что вопрос написания приложения не кажется мне уж очень сложной задачей.

  • Интеграция в Apple Home и Алису. В Apple Home, тестово уже прокидывал, но крайне упрощенную версию лампы. С полноценной лампой пока не вышло, но работаю в этом направлении. В Алису, слышал что можно через MQTT, но на стадии изучения этого вопроса.

  • Интеграция с Home Assistance - можно считать сделана, так как будет через MQTT, а MQTT в устройстве уже есть, осталось написать пару функций и готово, возможно для самого HA надо будет написать своё дополнение, что бы пользователь не парился с добавлением кода в Configuration.yaml и тд. Вообщем как то надо это придумать попроще чем уже протоптанная неоднократно мною дорожка.

  • Многое многое другое.

Если вам интересна реализация этих планов, подписывайтесь тут или на мой тг. Там я буду чаще постить какие то отрывки которые не требуют оформления и выделения времени на написание поста)
https://t.me/magic_lamps

Всем мир)

Показать полностью 10 4
[моё] Инженер Электроника Своими руками Гаджеты Esp32 Декор Светильник Луна Планета Космос Ночник Лампа Освещение Оригинально Arduino Фонарь Пайка Свет Интерьер Дизайн Видео Без звука Вертикальное видео Короткие видео Длиннопост
13
13
feeld
feeld
3 месяца назад
Серия Свои умные светильники

Свои умные светильники часть 1⁠⁠

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

В чём умность спросите вы? По сути, ни в чем. Это такая же маркетинговая уловка, как и все умные светильники сейчас на рынке. По сути, это очень сильно настраиваемый и кастомизируемый светильник под конкретного человека. Так же впоследствии сделал и простую версию под E27. С лампой от Xiaomi, что дало почти во всех аспектах тот же вау-эффект, но с гораздо меньшими трудозатратами. Вот фото.

Для ЛЛ - Там вообщем то внизу, описание процесса создания своего велосипеда, с фоточками, результатами и так далее)

Свои умные светильники часть 1 Своими руками, Электроника, Инженер, Гаджеты, Светильник, Декор, Для дома, Идея для дома, Ночник, Освещение, Лампа, Arduino, Оригинально, Esp32, Длиннопост

Светильник луна, в его базовой версии с умной лампой от Xiaomi.

Свои умные светильники часть 1 Своими руками, Электроника, Инженер, Гаджеты, Светильник, Декор, Для дома, Идея для дома, Ночник, Освещение, Лампа, Arduino, Оригинально, Esp32, Длиннопост

Как это выглядит без надетого плафона.

Но поскольку, писать постик на пикабу, о том, как я распечатал все и вкрутил лампочку - это весьма скучное занятие, да и в этом нет ничего особо похвального, сказ я буду вести о том, как я все таки делал свой светильник, со своей конструкцией, электроникой и софтом.


Этап Первый - я назову его вовлечением.

После увиденного на сайте, у меня сразу в голове появилась идея, а почему бы мне, не взять вот этот светильник Луны, модифицировать корпус под то как мне надо и сделать свою начинку, не брать E27, а на адресной LED ленте и микроконтроллере, да что бы ещё и в умный дом интегрировалось и в алису и без костылей и с нормальным user-friendly интерфейсом и туда уже прикрутить своих анимаций, каких только вздумается. Сказано - сделано. Засел во Fusion 360 и сделал первую итерацию корпуса.

Свои умные светильники часть 1 Своими руками, Электроника, Инженер, Гаджеты, Светильник, Декор, Для дома, Идея для дома, Ночник, Освещение, Лампа, Arduino, Оригинально, Esp32, Длиннопост

Внутрянка, а сверху надевался цилиндр, на котором и была сама лента намотана собственно.

Конструкция была не замысловата и состояла всего из нескольких компонентов:

  • Сама ESP32-Dev

  • DC-DC модуль, который питал ленту, а так же саму ESP32 5 вольтами.

  • Горстка бонок М3

  • Стандартный порт питания 2.5 мм.

  • Лента на чипах WS2812B.

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

Свои умные светильники часть 1 Своими руками, Электроника, Инженер, Гаджеты, Светильник, Декор, Для дома, Идея для дома, Ночник, Освещение, Лампа, Arduino, Оригинально, Esp32, Длиннопост

Фото процесса.

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

  • Необходимо, что бы моя умная лампа, без проблем подходила на замену к обычной базе с цоколем Е27.

  • Добавить различные забавные, а так же удобные анимации, такие как: Огонь, Градиент, Температура свечения,Радуга, Статичный цвет, отображение фаз луны (в реалтайме) и ещё пару очень интересных анимаций, о которых я расскажу далее.

  • Веб интерфейс + приложение под Android/IOS в перспективе.

  • Интеграция в Home Assistance и\или интеграция в Apple Home/Алису.

  • Автообновление для ESP32 по воздуху. То-есть что бы с сервера подтягивался бинарник, сравнивалась версия и при необходимости она(ESP) сама перепрошивалась на актуальную версию.

  • Регулируемые анимации, каждая со своими параметрами и так далее. Вообщем опять же, настройки.

  • Каким то образом реализовать это все самому и без особых знаний в программировании, ну тоесть они есть, да, но я не программист со стажем, а 3д дизайнер и инженер.

    Ну и собственно, вот такой веб интерфейс получился за пару дней кодинга:

Свои умные светильники часть 1 Своими руками, Электроника, Инженер, Гаджеты, Светильник, Декор, Для дома, Идея для дома, Ночник, Освещение, Лампа, Arduino, Оригинально, Esp32, Длиннопост

Грубо говоря совсем ранняя альфа версия.


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

А вот с плафоном, вышло не очень. Из наличия филамента, был серый, и я подумал, что серая луна - будет выглядеть отлично и замечательно(ага ага). И как обычно это бывает, 31 декабря, у меня почти на финале, растягивается, а затем рвется ремень на 3д принтере из за чего получили вот такой дефект печати:

Свои умные светильники часть 1 Своими руками, Электроника, Инженер, Гаджеты, Светильник, Декор, Для дома, Идея для дома, Ночник, Освещение, Лампа, Arduino, Оригинально, Esp32, Длиннопост

Эту боль, не передать словами... 2 дня печати, 300 грамм филамента ушли по итогу в помойку.

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

По итогу, секторная анимация заработала хорошо и отображала текущую фазу луны, а так же и остальные анимации.

Свои умные светильники часть 1 Своими руками, Электроника, Инженер, Гаджеты, Светильник, Декор, Для дома, Идея для дома, Ночник, Освещение, Лампа, Arduino, Оригинально, Esp32, Длиннопост

Прошу прощение за фото, но вот так выглядит анимация самой малой фазы луны. Лучше фото из архива не нашлось.


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

Свои умные светильники часть 1 Своими руками, Электроника, Инженер, Гаджеты, Светильник, Декор, Для дома, Идея для дома, Ночник, Освещение, Лампа, Arduino, Оригинально, Esp32, Длиннопост

Финал очка)

Как я делал версию 2.0 для себя, я расскажу в следующем посте серии про светильники который выйдет уже очень скоро)
Там ждет и изменение конструкции, и добавление датчиков, новых модулей, и решение проблем перегрева, и проблем питания, а так же, новый красивый веб интерфейс, приложение для Android, обновление серверной части, админка и многое многое другое. Вообщем много много интересного.

А пока он не вышел, вы можете подписаться на мой тг, в скором времени (в данный момент у меня случился небольшой переезд) я начну поститить туда ещё и фотографии и видео процесса создания умного светильника.
https://t.me/magic_lamps

Показать полностью 8
[моё] Своими руками Электроника Инженер Гаджеты Светильник Декор Для дома Идея для дома Ночник Освещение Лампа Arduino Оригинально Esp32 Длиннопост
0
2
user10214948
4 месяца назад

Проблемы с настройкой ESP32⁠⁠

Всем привет, у меня есть плата XIAO ESP32 S3, код на ней пишу через Arduino IDE 2.3.4. На данный момент плата работает следующим образом:

1. При включении питания, плата запускается и раздает bluetooth.

2. Если кто-то подключается к плате по bluetooth - на плате начинает мигать лампочка.

3. После этого плата выключается.

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

CODE:

#include <BleKeyboard.h>

BleKeyboard bleKeyboard;

#define LED_PIN 21

void setup() {

Serial.begin(115200);

pinMode(LED_PIN, OUTPUT);

Serial.println("🔵 Run bluetooth...");

bleKeyboard.begin();

}

void loop() {

if (bleKeyboard.isConnected()) {

Serial.println("✅ Device connected!");

// Мигание лампочки

for (int i = 0; i < 10; i++) {

digitalWrite(LED_PIN, HIGH);

delay(250);

digitalWrite(LED_PIN, LOW);

delay(250);

}

Serial.println("⏳ Shutdown after 5 seconds...");

delay(5000);

Serial.println("💤 Deep sleep.");

esp_deep_sleep_start();

} else {

Serial.println("❌ Waiting for connection...");

delay(1000);

}

}

Показать полностью
Esp32 Arduino Текст
1
3261
1100001001
1100001001
5 месяцев назад
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 Колонки Видео Вертикальное видео Длиннопост
166
Посты не найдены
О Нас
О Пикабу
Контакты
Реклама
Сообщить об ошибке
Сообщить о нарушении законодательства
Отзывы и предложения
Новости Пикабу
RSS
Информация
Помощь
Кодекс Пикабу
Награды
Команда Пикабу
Бан-лист
Конфиденциальность
Правила соцсети
О рекомендациях
Наши проекты
Блоги
Работа
Промокоды
Игры
Скидки
Курсы
Зал славы
Mobile
Мобильное приложение
Партнёры
Промокоды Biggeek
Промокоды Маркет Деливери
Промокоды Яндекс Путешествия
Промокоды М.Видео
Промокоды в Ленте Онлайн
Промокоды Тефаль
Промокоды Сбермаркет
Промокоды Спортмастер
Постила
Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии