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

Арканоид Пикабу

Арканоид, Аркады, Веселая

Играть

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

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

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

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

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

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

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

Arduino + Рукоделие с процессом

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

Электроника Ardublock Самоделки YouTube Своими руками Вертикальное видео Видео ВК Ручная работа Рукоделие Творчество Поделки Хобби Все
46 постов сначала свежее
12
tokyoquest
tokyoquest
4 месяца назад
Косплей

Как я сделал маску Ренча из Watch Dogs 2 на esp32⁠⁠

Привет, Пикабу!

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

Тут есть мат, дилетантство, шизофренические текстовые конструкции и огромное количество моментов, в которых захочется сказать "Автор, ты совсем еблан?"

Погнали!

Дело началось в августе 2023 года, когда я впервые для себя открыл такой тип досуга как косплей-фестивали, а в частности Томскую Con.Версию. Тогда же у меня с товарищем возникла идея сделать косплей на персонажей из нашей общей любимой игры - Watch Dogs 2 - Ренча и Маркуса.

Как я сделал маску Ренча из Watch Dogs 2 на esp32 Косплей, Watch Dogs, Крафт, Рукоделие с процессом, Мат, Пятничный тег моё, Arduino, Видео, Без звука, Короткие видео, Вертикальное видео, Длиннопост

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

Как минимум, потребуется маска, о создании которой я сегодня и хочу написать.

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

Как я сделал маску Ренча из Watch Dogs 2 на esp32 Косплей, Watch Dogs, Крафт, Рукоделие с процессом, Мат, Пятничный тег моё, Arduino, Видео, Без звука, Короткие видео, Вертикальное видео, Длиннопост

вот такую маску хотели купить изначально

Идея то появилась, а как реализовать – неясно. Хотелось видеть анимации, полную поддержку эмотиконов и качество чуть лучше, чем подвал в Шэньчжэне.

Пошёл гуглить. Нагуглил уже известный всем вариант маски с очками Chemion, еще какую-то фигню и чего-то загрустил.

От грусти полез шерстить гитхаб и тут меня ждал успех. Мы смогли найти опенсорсный проект маски от TomMakesThings построенный на базе светодиодных матриц MAX7219, Arduino и базовой простой как три копейки пластиковой маски с того же али. Мало того, этот проект соответствовал всем нашим требованиям, управлялся по блютузу и имел кайфовое приложение.

Долго не думая, мы почти сразу начали закупаться компонентами.

С алиэкспресса были заказаны: шасси маски, паяльные расходники, а Arduino Uno я решил заменить на ESP32 (из-за дешевизны и уже встроенного блютуза).

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

“Придется переписывать код” – подумал я, заказал матрицы и ушел в запой на 4 дня.

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

Как я сделал маску Ренча из Watch Dogs 2 на esp32 Косплей, Watch Dogs, Крафт, Рукоделие с процессом, Мат, Пятничный тег моё, Arduino, Видео, Без звука, Короткие видео, Вертикальное видео, Длиннопост

Процесс ардуинокода, костылей, а также самоненависти (вот до чего доводят с++, особенно если твой максимум - "Hello, World!")

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

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

Ушел в тильт на пару дней и чуть было не решил забить нафиг на весь косплей, но вдруг случилось неожиданное – великий и ужасный @AlexGyver, выкатывает проект (радио-голова Бендера) ровно на тех же MAX7129, которые использовались в маске от TomMakesThings и реализует в нем почти то же самое, что надо нам.

Как я сделал маску Ренча из Watch Dogs 2 на esp32 Косплей, Watch Dogs, Крафт, Рукоделие с процессом, Мат, Пятничный тег моё, Arduino, Видео, Без звука, Короткие видео, Вертикальное видео, Длиннопост

Наглядно видно насколько матрицы большие для использования в этом проекте

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

Как я сделал маску Ренча из Watch Dogs 2 на esp32 Косплей, Watch Dogs, Крафт, Рукоделие с процессом, Мат, Пятничный тег моё, Arduino, Видео, Без звука, Короткие видео, Вертикальное видео, Длиннопост

Заказал, оплатил, получил. Заказал так же и сами модули MAX7219.

Как я сделал маску Ренча из Watch Dogs 2 на esp32 Косплей, Watch Dogs, Крафт, Рукоделие с процессом, Мат, Пятничный тег моё, Arduino, Видео, Без звука, Короткие видео, Вертикальное видео, Длиннопост

Так-то лучше! Теперь и матрицы чётко по размеру, и через "визор" маски можно видеть окружающий мир.

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

Как я сделал маску Ренча из Watch Dogs 2 на esp32 Косплей, Watch Dogs, Крафт, Рукоделие с процессом, Мат, Пятничный тег моё, Arduino, Видео, Без звука, Короткие видео, Вертикальное видео, Длиннопост

схема подключения матриц к есп32 (да, для такого дилетанта как я требуется схема даже для очень простых вещей)

Неопределенный срок оказался длинной в два дня. Мне стало скучно и одним осенним утром я скупил ВООБЩЕ ВСЕ логические конвертеры, какие я смог найти в наличии и сел собирать по новой, теперь уже не на коленке и под банку пива, а на трезвую голову и с моральной поддержкой.

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

Куда же без косяков… белые дисплеи, купленные на замену стоковым красным, подключаются по схеме “общий анод”, а модули max7219 работают только с дисплеями “общий катод”.

Где-то тут были тщетные попытки переписать библиотеку под работу с общеанодными дисплеями, но почти сразу было понятно, что дело гиблое и надо бы покупать дисплеи и матрицы заново...

Как я сделал маску Ренча из Watch Dogs 2 на esp32 Косплей, Watch Dogs, Крафт, Рукоделие с процессом, Мат, Пятничный тег моё, Arduino, Видео, Без звука, Короткие видео, Вертикальное видео, Длиннопост

Новый день – новые траты! 

Ну теперь-то всё точно должно получиться! Жду посылку.

Посылки пришли довольно быстро, матрицы были подкинуты на скорую руку к еспшке ииии.. да! Всё взлетело, заработало и красиво начало моргать светодиодами.

Ура, товарищи, победа! Теперь дело оставалось за малым, ещё раз переписать (а вернее, откатить) код к моменту, где всё работало, запихнуть железки в маску и проверить как всё это выглядит в деле.

На этот момент проект, который по сути своей можно было бы сделать за месяц (учитывая ожидание посылок с али), растянулся уже на 3 с половиной месяца... Криворуким быть тяжело!

Приступил к сборке:

Как я сделал маску Ренча из Watch Dogs 2 на esp32 Косплей, Watch Dogs, Крафт, Рукоделие с процессом, Мат, Пятничный тег моё, Arduino, Видео, Без звука, Короткие видео, Вертикальное видео, Длиннопост

Подогнал по месту:

Протестировал переключение анимаций:

Ну и передал сиё творение счастливому владельцу)

Как я сделал маску Ренча из Watch Dogs 2 на esp32 Косплей, Watch Dogs, Крафт, Рукоделие с процессом, Мат, Пятничный тег моё, Arduino, Видео, Без звука, Короткие видео, Вертикальное видео, Длиннопост

Послесловие

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

Наш разраб фигачит вообще адовые проекты.

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

Берётся готовый проект с гитхаба, он не тестится, тестить — это не про нашего разраба. Он берет этот проект, размазывает его по функциям и начинает рефакторить. Добавляет в него огромное количество костылей, хаков, спизженного кода со StackOverflow для вязкости, немного фиксов сверху. Все это компилится до дыма. Потом снимается с Arduino IDE, и разраб остужается на балконе. Потом он заливает это все на esp32 и, щедро полив анекдотами, отдаёт мадесте. Пишет пост на пикабу, шкрябая по клавиатуре. Пишет и приговаривает полушепотом: "ух, бля".

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

Показать полностью 10 4
[моё] Косплей Watch Dogs Крафт Рукоделие с процессом Мат Пятничный тег моё Arduino Видео Без звука Короткие видео Вертикальное видео Длиннопост
3
2329
monobogdan
monobogdan
Посты о ремонте и моддинге ретрогаджетов.
TECHNO BROTHER
4 месяца назад

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

Как я превратил старый смартфон в игровую консоль с возможностью звонить Опрос, Рукоделие с процессом, Поделки, Смартфон, Гаджеты, Телефон, Игры, Консоли, Своими руками, Программирование, 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
22
v.azhure
v.azhure
10 месяцев назад
Серия Самоделки для гонок

Линейный актуатор для симуляторов на 3Д принтере (ну почти)⁠⁠

На Ютубе выкладывал давно уже, а сюда забыл выложить. Исправляюсь.

Линейный актуатор для симуляторов на 3Д принтере (ну почти) Электроника, Arduino, Своими руками, Рукоделие с процессом, Stm32, Видео, Длиннопост

Линейный актуатор необходим мне для имитации нагрузок и наклонов во время движения на игровом автомобиле в автосимуляторах.

Существуют готовые системы, но стоят каких-то заоблачных денег.

Линейный актуатор для симуляторов на 3Д принтере (ну почти) Электроника, Arduino, Своими руками, Рукоделие с процессом, Stm32, Видео, Длиннопост

В основном цена это серво мотор, механика и главное софт.

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

А так же корпус не из литого алюминия, а напечатанный на 3д принтере. Что-то сделал на домашнем станке с чпу (алюминиевую пластину и печатную плату)

Линейный актуатор для симуляторов на 3Д принтере (ну почти) Электроника, Arduino, Своими руками, Рукоделие с процессом, Stm32, Видео, Длиннопост

Я серьёзно модернизировал китайский станок. В результате от оригинального станка осталась только рама. О процессе модернизации я могу рассказать в другом сообщении, если вам будет интересно.

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

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

Линейный актуатор для симуляторов на 3Д принтере (ну почти) Электроника, Arduino, Своими руками, Рукоделие с процессом, Stm32, Видео, Длиннопост
Линейный актуатор для симуляторов на 3Д принтере (ну почти) Электроника, Arduino, Своими руками, Рукоделие с процессом, Stm32, Видео, Длиннопост

Управление мотором осуществляется при помощи драйвера HBS86H. Питание обеспечивается от источника постоянного тока напряжением 60 В. Все компоненты размещены в компактном корпусе, который изготовлен из МДФ, листов ABS и стоек, созданных с помощью 3D-принтера.

Линейный актуатор для симуляторов на 3Д принтере (ну почти) Электроника, Arduino, Своими руками, Рукоделие с процессом, Stm32, Видео, Длиннопост

Винт имеет тип SFU 1610, то есть он совершает 10 мм хода за один оборот. Поскольку шаговые двигатели не обладают такой высокой скоростью, как сервоприводы (800-1000 оборотов в минуту против 3000 оборотов у сервоприводов), то шаг винта играет важную роль. Сначала я приобрёл винт 1605, но затем решил его заменить.

В итоге удалось добиться скорости 120 мм/с, в то время как зарубежные аналоги работают со скоростью 400 мм/с. Максимальное перемещение составляет 85 мм, тогда как у аналога этот показатель равен 60 мм.

Вот такие вот углы можно получить:

Линейный актуатор для симуляторов на 3Д принтере (ну почти) Электроника, Arduino, Своими руками, Рукоделие с процессом, Stm32, Видео, Длиннопост
Линейный актуатор для симуляторов на 3Д принтере (ну почти) Электроника, Arduino, Своими руками, Рукоделие с процессом, Stm32, Видео, Длиннопост
Линейный актуатор для симуляторов на 3Д принтере (ну почти) Электроника, Arduino, Своими руками, Рукоделие с процессом, Stm32, Видео, Длиннопост
Линейный актуатор для симуляторов на 3Д принтере (ну почти) Электроника, Arduino, Своими руками, Рукоделие с процессом, Stm32, Видео, Длиннопост

Это фотографии первой версии с тремя "ногами".

Софт собственной разработки. Написан преимущественно на C#. Интерфейс программы на английском, т.к. основная масса подписчиков на Ютубе иностранцы.

Поддерживаются практически все известные автосимуляторы:

Линейный актуатор для симуляторов на 3Д принтере (ну почти) Электроника, Arduino, Своими руками, Рукоделие с процессом, Stm32, Видео, Длиннопост
Линейный актуатор для симуляторов на 3Д принтере (ну почти) Электроника, Arduino, Своими руками, Рукоделие с процессом, Stm32, Видео, Длиннопост

Если кого заинтересовало, то вот видео по теме:

Релизы софта: https://github.com/vazhure/vAzhureRacingHub/releases

Исходные тексты: https://github.com/vazhure/vAzhureRacingHub

Мой Discord: https://discord.gg/ynHCkrsmMA

✌

Показать полностью 12 2
Электроника Arduino Своими руками Рукоделие с процессом Stm32 Видео Длиннопост
0
Партнёрский материал Реклама
specials
specials

Только каждый третий пикабушник доходит до конца⁠⁠

А сможете ли вы уложить теплый пол, как супермонтажник?

Проверить

Ремонт Теплый пол Текст
104
AlexZealot
1 год назад
Рукодельники

Кто празднику рад, тот накануне пьян, или как я "умную" гирлянду делал⁠⁠

Всем привет

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

Этап первый. Теоретический.

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

Итак, техническое задание.

У меня работали две гирлянды, собранные на WS2812b под управлением маленькой платки Arduino Nano (родом из Китая) с микроконтроллером ATmega328p. Как это водится в Китае - маркировка чипа была почти нечитаемой, прошивка заливалась раза с третьего-четвёртого. Но система работала, и даже не тормозила.

Гирлянд было две: одна висела на ёлке и состояла из 126 последовательно соединённых светодиода, оконная гирлянда состояла из 74 светодиодов и представляла собой 9 линий светодиодов переменной длины, соединённых последовательно.

В старой гирлянде было крайне неудобно включать/выключать подсветку и переключать режимы. Это же необходимо встать с дивана, подойти к устройству, нажать кнопку. Соответственно, в новой системе необходимо реализовать управление через мобильный телефон. Так же, стоит учесть, что в моём доме ёлка стоит около окна, и будет видно сразу две гирлянды. Соответственно, стоит предусмотреть возможность обмена данными между этими гирляндами для возможности синхронизации режимов. Причём, синхронизация должна быть не "приколоченной намертво", а вполне себе опциональной.

Подбор железа

Исходя из ТЗ становится очевидно, что достаточно просто поменять контроллер с старой-доброй атмеги на что-то из семейства ESP. Эта система на кристалле (да, именно так её называет производитель, SoC) из коробки имеет на борту достаточно шустрое ядро, WiFi и приличный объём памяти. Но, имеет место быть небольшой конфликт: рабочее напряжение пинов ESP 3.3В. А напряжение питания WS2812b составляет от 3.5 до 5.3В, исходя из даташита. Причём, "протокол" передачи данных для светодиодов подразумевает формирование прямоугольных испульсов, кодирующих 24 бита цвета для каждого светодиода. Уровень "0" в этой последовательности должен быть <0.3VDD (напряжение питания), уровень "1" >0.7VDD.

Я покопался в своих закромах и обнаружил две платы Wemos D1 mini (на базе ESP8266) и одну плату LOLIN S2 mini (на базе ESP32-S2). Обе платы имеют всю необходимую обвязку для подключения внешнего питания 5В и подтягивающие резисторы для запуска МК. Там же, в закромах родины нашёл весьма удобные макетные платы под форм-фактор этих устройств.

Кто празднику рад, тот накануне пьян, или как я "умную" гирлянду делал Своими руками, Esp8266, Esp32, Arduino, Умный дом, Самоделки, Электроника, Длиннопост, Рукоделие с процессом

Макетная плата для Wemos D1. К LOLIN S2 mini тоже подходит, но маркировака пинов не совпадёт

Это снимает проблему согласования напряжения питания ESP и WS2812b. Но возникает опасение, что уровень логической "1" от контроллера будет недостаточным для формирования управляющего сигнала. Ведь, согласно даташиту, уровень "1" >0.7VDD. А питание светодиодов у нас 5В, соответственно, требуемый уровень логической единицы равен 0,7 * 5 = 3,5В. Тут я пошёл по пути экспериментов, быстренько набросал схемку на бредборде и проверил, а как оно, заведётся, или нет. Ведь, исходя из моего опыта общения с контроллерами семейства STM32, уровня 3.3В должно быть вполне достаточно. И оно завелось!

Подбор ПО

Очевидно, что прошивка будет самописная. Надеяться, что вот сейчас я зайду в гугл, забью "прошивка ESP8266 с моими требованиями" и все найдётся и заработает достаточно наивно. Да и неспортивно это. В случае с ESP есть два основных фреймворка для написания прошивки. Профессиональный ESP-IDF с его ориентированностью на чистый С и Arduino IDE с ядром ESP. Причём второе - это, по сути своей, обёртка вокруг ESP-IDF. Так как у меня была хоть и ущёрбная, но рабочая прошивка для Arduino Nano, написанная в Arduino IDE, я остановился на втором варианте.

Этап второй. Практическая реализация в железе.

Схема в общем виде выглядит так:

Кто празднику рад, тот накануне пьян, или как я "умную" гирлянду делал Своими руками, Esp8266, Esp32, Arduino, Умный дом, Самоделки, Электроника, Длиннопост, Рукоделие с процессом

Ничего сложного и интересного. Единственное, для одной из систем одна из кнопок была заменена на устройство bme280, работающее по протоколу I2C. Интересно отслеживать влажность в помещении и уровень давления. Показания температуры врут безбожно: датчик находится слишком близко к ESP, которая имеет привычку сильно нагреваться. Спаять устройство по этой схеме не представляет ничего сложного. Но ведь хочется сделать всё красиво. А значит нужен корпус для устройства и система крепления гирлянды. С корпусом всё довольно просто. Минут 30 в Компас3D, час работы 3D принтера и в руках корпус, подогнанный под конкретное спаянное устройство. Магия термоклея, и на выходе получается вполне себе симпатичный прибор:

Кто празднику рад, тот накануне пьян, или как я "умную" гирлянду делал Своими руками, Esp8266, Esp32, Arduino, Умный дом, Самоделки, Электроника, Длиннопост, Рукоделие с процессом

Безусловным плюсом будет возможность заменить плату в случае необходимости

С системой крепления всё чуточку интереснее. Если на ёлку крепить гирлянду не требуется (просто берём и обматываем гирлянду вокруг дерева), то на окно требуется крепёж. Тут возможно реализовать два варианта: установить гирлянду непосредственно перед окном, но за шторой. Тогда праздничное настроение будет создано людям, гуляющим на улице и смотрящим на мой седьмой этаж. Либо размещать гирлянду перед шторой. Тогда праздничное настроение будет у всех, находящихся в комнате. Я пошёл по второму пути. Штора крепится на гардину с Т-образными пазами. И вновь на помощь приходит компас и 3D-принтер. В каждой точке, из которой спускается светодиодная гирлянда была изготовлена вот такая сборка из двух деталей:

Кто празднику рад, тот накануне пьян, или как я "умную" гирлянду делал Своими руками, Esp8266, Esp32, Arduino, Умный дом, Самоделки, Электроника, Длиннопост, Рукоделие с процессом

Бонусом, такая конструкция хорошо фиксирует сборки проводов, и конструкция получается довольно добротной. Следующей "железной" проблемой стало то, что провод со светодиодами достаточно лёгкий, и гирлянда отказывалась висеть вертикально. И вновь 3D принтер спасает положение. Я напечатал несколько тематических грузиков, и привязал их на тоненькие верёвочки. Получилось весьма достойно:

Кто празднику рад, тот накануне пьян, или как я "умную" гирлянду делал Своими руками, Esp8266, Esp32, Arduino, Умный дом, Самоделки, Электроника, Длиннопост, Рукоделие с процессом

Этап третий. Программное обеспечение aka прошивка

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

Принцип работы системы прост до ужаса. Намертво зашиты константы с SSID/PASS моей локальной WiFi сети и IP адреса всех гирлянд, участвующих во взаимодействии. Arduino IDE хорош, в первую очередь, невероятным количеством библиотек. Итак, что есть сейчас, и для чего используется.

  1. Разумеется, WiFi, для подключения к локальной сети. SSID и пароль забиты в дефайны, что есть хардкод, и вообще моветон

  2. FastLED для управления WS2812b. Реализован простейший алгоритм отслеживания потребляемого гирляндой тока и ограничение оного к возможностям источника питания. Работает, на мой взгляд, лучше встроенного в библиотеку.

  3. WebServer для поднятия странички управления гирляндой, если сильно лень подходить и нажимать кнопку. Я не сильно дизайнер, но страничка получилась довольно простой и информативной.

  4. UDP для общения между гирляндами. Да, я знаю, что есть ненулевой шанс потери данных, поэтому пришлось реализовать достаточно простой алгоритм проверки корректности пришедших данных. Битые пакеты отбрасываются. Вроде бы это не очень хорошо, но я тут не космический корабль запускаю, и не ядерным реактором управляю. Если синхронизация произойдёт на 100мс позже, то ничего страшного. Хардкод в данном случае - IP-адреса гирлянд, участвующих в обмене информацией, жестко прописанные в роутере.

  5. ArduinoOTA. Лень каждый раз подключать ESP напрямую к компу, когда хочется что-то поменять в прошивке. А так всё выходит просто: обновились по воздуху, и радуемся.

Кто празднику рад, тот накануне пьян, или как я "умную" гирлянду делал Своими руками, Esp8266, Esp32, Arduino, Умный дом, Самоделки, Электроника, Длиннопост, Рукоделие с процессом

Web-страничка для управления гирляндой

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

Кто празднику рад, тот накануне пьян, или как я "умную" гирлянду делал Своими руками, Esp8266, Esp32, Arduino, Умный дом, Самоделки, Электроника, Длиннопост, Рукоделие с процессом

Примеры гирлянды, которую мне лень снимать сейчас :)

Кто празднику рад, тот накануне пьян, или как я "умную" гирлянду делал Своими руками, Esp8266, Esp32, Arduino, Умный дом, Самоделки, Электроника, Длиннопост, Рукоделие с процессом

Примеры гирлянды, которую мне лень снимать сейчас :)

Кто празднику рад, тот накануне пьян, или как я "умную" гирлянду делал Своими руками, Esp8266, Esp32, Arduino, Умный дом, Самоделки, Электроника, Длиннопост, Рукоделие с процессом

Примеры гирлянды, которую мне лень снимать сейчас :)

В сухом остатке получилось несколько устройств, на которые не стыдно посмотреть, которые не стыдно показать и которые работают и радуют глаз. Возможно, когда разберусь с текущими проектами - вернусь к доработке гирлянд. Избавиться от хардкода, что не очень сложно и чуть улучшить синхронизацию (заставить гирлянду-мастера передавать не только свой текущий режим, но и конкретный тик из millis() для более эффектного внешнего вида) и всё, пожалуй. Сделать полноценное Android-приложение, управляющее гирляндами. Возможно, имеет смысл сделать отдельный сервер на полновесной ESP32, который собирал бы данные с гирлянд, и синхронизировал их при необходимости. Но это уже вопрос полноценного самописного умного дома, т.к. к такому серверу можно подключить любое устройство на базе ESP. Для работы с MQTT так же есть полноценные библиотеки. В общем, проект получился достаточно простым, но интересным с точки зрения возможности масштабирования.

На этом всё, спасибо, что дочитали. Ссылок на телегу не будет, это всё от лукавого :)

Показать полностью 9
[моё] Своими руками Esp8266 Esp32 Arduino Умный дом Самоделки Электроника Длиннопост Рукоделие с процессом
26
318
kotto
kotto
2 года назад
Arduino & Pi

Эти электронные часы... Upd добавил фото дисплея⁠⁠

У всех бунт, колбаса и счётчики набирают десятки тысяч рейтинга...

Посмотрим на что способны пол года моей работы))

Плата, схема и 3D модель выполнены в Altium designer. Модель в формате step поможет умельцам в создании корпуса.

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

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

Эти электронные часы... Upd добавил фото дисплея Часы, Электроника, Самоделки, Arduino, Техника, Видео, YouTube, Длиннопост, Рукоделие с процессом
Эти электронные часы... Upd добавил фото дисплея Часы, Электроника, Самоделки, Arduino, Техника, Видео, YouTube, Длиннопост, Рукоделие с процессом
Показать полностью 2
Часы Электроника Самоделки Arduino Техника Видео YouTube Длиннопост Рукоделие с процессом
34
108
Ysonn
Ysonn
2 года назад
Рукодельники

Простой двойной термометр⁠⁠

Привет всем) И неожиданно моим 25 подписчикам, не думал что кому то моё рукоблудие интересно, но приятно. И сегодня будет простая самоделка. Но в целом полезная. И так, начинаю потихоньку утеплять балкон и появилась идея понимать сколько у меня на балконе температура и влажность заодно) Ну и плюс когда выхожу с утра курить даже не заглядываю в телефон что бы посмотреть погоду на улице, а тут вышел и прям перед глазами, не ну удобно же. Идея есть, осталось реализация. И так, для этой идеи как всегда начнём со схемы. Всё максимально просто. Берем arduino nano, DHT22 две штуки и LCD1602

Простой двойной термометр Самоделки, Рукожоп, Рукоделие с процессом, Своими руками, Электроника, Arduino, Длиннопост, Термометр, Гигрометр

Далее всё собираем на макетной плате и проверяем

Простой двойной термометр Самоделки, Рукожоп, Рукоделие с процессом, Своими руками, Электроника, Arduino, Длиннопост, Термометр, Гигрометр
Простой двойной термометр Самоделки, Рукожоп, Рукоделие с процессом, Своими руками, Электроника, Arduino, Длиннопост, Термометр, Гигрометр

Отлично, работает. Теперь всё это дело надо собрать в корпус и спаять. Берем значит пластиковую коробочку для корпуса купленную на радиорынке(100Х60Х25), для экрана и ардуино, и распред коробку для того что бы вывести датчик на улицу.Для начала вырезаем отверстие под экран и красим. Как всегда, грунт, краска, лак матовый.

Простой двойной термометр Самоделки, Рукожоп, Рукоделие с процессом, Своими руками, Электроника, Arduino, Длиннопост, Термометр, Гигрометр

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

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

Простой двойной термометр Самоделки, Рукожоп, Рукоделие с процессом, Своими руками, Электроника, Arduino, Длиннопост, Термометр, Гигрометр

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

Простой двойной термометр Самоделки, Рукожоп, Рукоделие с процессом, Своими руками, Электроника, Arduino, Длиннопост, Термометр, Гигрометр
Простой двойной термометр Самоделки, Рукожоп, Рукоделие с процессом, Своими руками, Электроника, Arduino, Длиннопост, Термометр, Гигрометр

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

Простой двойной термометр Самоделки, Рукожоп, Рукоделие с процессом, Своими руками, Электроника, Arduino, Длиннопост, Термометр, Гигрометр

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

Ну и получаем такую картину в собранном виде

Простой двойной термометр Самоделки, Рукожоп, Рукоделие с процессом, Своими руками, Электроника, Arduino, Длиннопост, Термометр, Гигрометр

у и теперь крепим на балкон, и смотрим что у нас тут получается. Провода я пока спрятать в кабель канал не успел =(

Простой двойной термометр Самоделки, Рукожоп, Рукоделие с процессом, Своими руками, Электроника, Arduino, Длиннопост, Термометр, Гигрометр
Простой двойной термометр Самоделки, Рукожоп, Рукоделие с процессом, Своими руками, Электроника, Arduino, Длиннопост, Термометр, Гигрометр

Код можно найти по ссылке. В целом данная самоделка еще проходит тестирование но получилось вроде как не плохо а главное работает и мне нравится. Да и надпись видно из комнаты. Если появятся какие либо обновления в корпусе иили коде, дам знать. По цене не подскажу, так как в прошлых постах всем не понравилось что я не учитваю свой труд, инстурмент, электричество и так далее))))) Как всегда готов для новых идей, предложений, и критики. Я помню про другие проекты просто пока времени вообще нет, но обязательно сделаю. До новых встреч =)

Показать полностью 11
[моё] Самоделки Рукожоп Рукоделие с процессом Своими руками Электроника Arduino Длиннопост Термометр Гигрометр
52
481
se1ik
se1ik
2 года назад
Рукодельники

Светодиодные часы для стадиона⁠⁠

Закончился мой хобби-проект часов, вот как это было.

Светодиодные часы для стадиона Своими руками, Arduino, Видео, Длиннопост, Рукоделие с процессом

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

Светодиодные часы для стадиона Своими руками, Arduino, Видео, Длиннопост, Рукоделие с процессом

Здание центра единоборств, город Усть-Лабинск, фото из интернета.

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

Светодиодные часы для стадиона Своими руками, Arduino, Видео, Длиннопост, Рукоделие с процессом

Эскиз, фото из интернета.

Был закуплен материал, запчасти и начата сборка. Основа - аллюминиевый уголок, на нем лента 240 светодиодов на метр, четыре платы с управлением на сдвиговых регистрах и основная плата с ардуиной. Время берётся с GPS-модуля, также есть датчик света для регулирования яркости, модуль часов реального времени, но программно он не задействован, и другие детали.

Светодиодные часы для стадиона Своими руками, Arduino, Видео, Длиннопост, Рукоделие с процессом

Модули управления.

Светодиодные часы для стадиона Своими руками, Arduino, Видео, Длиннопост, Рукоделие с процессом

В процессе изготовления сегментов часов.

Светодиодные часы для стадиона Своими руками, Arduino, Видео, Длиннопост, Рукоделие с процессом

Тесты.

Выглядит колхозно, но издалека невидно.

Светодиодные часы для стадиона Своими руками, Arduino, Видео, Длиннопост, Рукоделие с процессом

Проверка перед установкой.

Светодиодные часы для стадиона Своими руками, Arduino, Видео, Длиннопост, Рукоделие с процессом
Светодиодные часы для стадиона Своими руками, Arduino, Видео, Длиннопост, Рукоделие с процессом
Светодиодные часы для стадиона Своими руками, Arduino, Видео, Длиннопост, Рукоделие с процессом
Светодиодные часы для стадиона Своими руками, Arduino, Видео, Длиннопост, Рукоделие с процессом
Светодиодные часы для стадиона Своими руками, Arduino, Видео, Длиннопост, Рукоделие с процессом

Вот такие часы получились. Как там и были.

Светодиодные часы для стадиона Своими руками, Arduino, Видео, Длиннопост, Рукоделие с процессом
Показать полностью 13 2
[моё] Своими руками Arduino Видео Длиннопост Рукоделие с процессом
61
228
dnepr4444
2 года назад
Arduino & Pi

DIY часы со статистикой игрока в "Мире танков"⁠⁠

DIY часы со статистикой игрока в "Мире танков" Своими руками, Электроника, Esp8266, Часы, World of Tanks, Самоделки, Arduino, Видео, Длиннопост, Рукоделие с процессом

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

DIY часы со статистикой игрока в "Мире танков" Своими руками, Электроника, Esp8266, Часы, World of Tanks, Самоделки, Arduino, Видео, Длиннопост, Рукоделие с процессом

Из ESP8266, светодиодной матрицы, кнопки и гнезда получились вот такие часы. Матрица была 8*32, мне показалась маловата. К ней прицепил еще одну 8*8. Корпус из пластика, обклеен плёнкой. С декоративными уголками пришлось повозиться, подгонять углы. Дисплей - бутерброд из прозрачного пластика, плёнки для тонировки авто и бумажной кальки чтоб рассеивать немного точки светодиодов.

Шрифт и стрелки сам рисовал в каком-то редакторе, найденном на просторах интернета. Главная для меня заморочка была с JSON, так как никогда до этого с ним не сталкивался. Немного помог сын программист.

Алгоритм работы такой: 1. подключаемся к Wi-Fi. 2. Тянем время с NTP сервера. 3. Через API танкового сервера берём статистику, если она отличается от сохранённой, перезаписываем. 4. Выводим текущее время. 5. Раз в 15 минут или по нажатию кнопки выводим бегущую строку со статой.

Я не волшебник, я только учусь)))))))

Показать полностью 1 1
[моё] Своими руками Электроника Esp8266 Часы World of Tanks Самоделки Arduino Видео Длиннопост Рукоделие с процессом
54
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии