Делаем сеговский джойстик с USB
Для того, чтобы собрать такой джойстик, нам понадобиться сам джойстик от Sega MegaDrive-2 и USB клавиатура.
1. Покупаем клавиатуру и джойстик
Клавиатуру я взял самую дешевую, которую нашел, так как от нее нам понадобиться только контроллер с USB проводом:

2. Разбираем клавиатуру и джойстик

3. Нам нужно выбрать кнопки на клавиатуре, которые мы будем использовать
Определяем по дорожкам, какие контакты на контроллере нужно замыкать для каждой из кнопок.
Подробно описывать не буду, так как платы клавиатур отличаются распиновкой контактов.
[W], [A], [S], [D] — Вверх, Влево, Вниз, Вправо;
[J,] [K], [L], [U], [I], [O] — A, B, C, X, Y, Z;
[E] — Start;
[F5] — Mode (буду использовать для быстрого сохранения).

4. Отпаиваем провод от джойстика

5. Припаиваем к контроллеру провода

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

7. Припаиваем контроллер

8. Всю полученную конструкцию запихиваем в корпус джойстика

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

10. Играем
Проверив джойстик на компьютере, я подключил его к планшету. На него я установил эмулятор GENPlusDroid. На планшете играть оказалось даже удобнее.

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

Бывшие некогда популярные 8- и 16-битные видеоприставки уже давно утратили свое лидерство на рынке игровых развлечений и вытеснены новыми поколениями консолей. Однако, игры, написанные в те времена, когда оперативная память исчислялась всего несколькими десятками килобайт, частота процессора — единицами мегагерц, а код и данные игры «влазили» в ПЗУ объемом порядка сотни килобайт, и по сей день не утратили своей «играбильности» и актуальности, и еще вполне могут конкурировать с современными многогигабайтными гигагерцовыми монстрами по степени интересности. Сегодня существует множество различных эмуляторов старых приставок, а китайской промышленностью по сей день выпускаются как сами приставки, так и джойстики для них.
В журнале «Радио» №1 за 2007 г. опубликована статья С.Рюмика с описанием адаптера, позволяющего подключить к шине USB компьютера до четырех джойстиков от приставок Dendy, либо до двух джойстиков от SEGA MegaDrive-II или Sony PlayStation. Автор использует микроконтроллер ATMega8-16PI в корпусе DIP для прошивки которого на плату выведен разъем ISP-интерфейса последовательного программирования.
Для работы с разным видами и разным количеством джойстиков предложен набор прошивок (всего 9 штук). Поскольку при подключении нескольких джойстиков вемя опроса увеличивается пропорционально их числу, для получения минимального времени отклика (для прошивки на один джойстик оно составляет 10мс, для двух — 20мс, для четырех — 40мс) есть смысл «заливать» именно ту прошивку, которая предназначена для этого количества джойстиков. Т.к. устройство подключается к ПК через шину USB, для смены прошивки вместо ISP-программатора очень удобно использовать USB-bootloader. Я развел печатную плату под SMD-компоненты и добавил в схему кнопку S1, которая служит для включения режима загрузчика. В результате схема адаптера выглядит так:

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

Схема подключения джойстиков SEGA:

Схема подключения джойстиков Sony PlayStation:

Так выглядит плата:

Адаптер в корпусе:

Загрузчик записывается ISP-программатором, провода от которого можно подпаять к соответствующим выводам МК на печатной плате. Если в качестве программатора используется связка usbasp + avrdude, то следующей командой можно записать фьюзы:
После успешной установки загрузчика программатор уже не понадобится, а загрузка нужной прошивки производится командой
По ссылкам ниже можно скачать схему и разводку печатных плат в Eagle, прошивку загрузчика и прошивки адаптера для разных джойстиков. Также эти прошивки вместе с авторскими вариантами печатных плат и схемой можно загрузить с ftp-сервера журнала «Радио».
Как подключить джойстик от SEGA к компьютеру
Автор
Введение
Вопрос подключения джойстика встал передо мной, когда
в один прекрасный день я запустил эмулятор сеговских ромов в надежде
вспомнить былое. После 15 минут игры на клавиатуре руки сильно устали и
желание продолжать отпало. Не долго думая, полез в инет в поисках схемы.
Схем и драйверов оказалось довольно много, и все имели свои
специфические особенности. Из за этого , к слову, мне пришлось
перепаивать подключение 2 раза. Причиной тому было то невозможность
джойстиков работать под XP, то кривость драйверов не распознающих
нажатия кнопок и т.д.. В общем, я нашел оптимальный вариант, как схемы,
так и драйвера. Данная статья поможет человеку не знающему, но
жаждущему, сделать все с первого раза. Многие могут воспротивиться, мол
купить же можно геймпад! Да, купить можно все, но это же не интересно!
Да и потом куда приятнее играть в сеговские игрушки на сеговском же
джойстике. Кстати, самый дешевый геймпад это 300р, а нормальный 600-800.
Здесь же мы получаем 2 джойстика за 130р. И так приступим…
Разбираемся с железом
Джойстик для сеги стоит (в моем городе) 65 рублей. Я
купил сразу 2 штуки. Еще нам понадобится разъем LPT типа «папа» (со
штырьками), паяльник, припой, кислота паяльная, пассатижи, трубка
термоусадочная, USB – штэкер, отвертки, «моск» и руки.
Для начала необходимо узнать цвета проводов
соответствующие номерам дырочек разъема DB-9 (джойстик). Я просто сточил
пластмассу на штекере при помощи наждака.

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



Как видно из схемы питание я брал от USB. На мой
взгляд, оттуда надежнее, чем из самого порта LPT. Питание на самом деле
очень важная вещь, ведь от него зависит стабильность работы девайса.
Сильно низкое или сильно высокое напряжения могут сказываться на реакции
джойстика на кнопки: или они будут срабатывать не с первого нажатия или
захватывать еще какие то с собой (например, при нажатии на A будет
автоматически срабатывать еще и Y).

Теперь можно закрыть кожух разъема. Далее необходимо
разобрать джойстик для добавления пары элементов. Когда джойстик вскрыт
на плате виден ряд контактов куда припаян сам провод. Необходимо найти
провод, отвечающий за питание (у меня был черный). Между ним и самой
платой нужно вставить еще диод КД522 (как правильно поставить сморите на
рисунке выше) и резистор на 800Ом.

Опять же к вопросу о питании. 5 Вольт что дает USB
мне показались великоваты. Диод обеспечивает падение напряжения примерно
на 0.5В, таким образом в джойстик идет 4.5В. Резистор же нужен для
ограничения тока (это необходимо для модда джойста, о чем позже). Итак,
подробную махинацию с внедрением двух компонентов необходимо проделать и
над вторым джойстиком. Все собираем, и можно подключать. Сначала в LPT,
потом в USB!
Пересекаем финишную черту после первого круга, и заходим на второй…
Драйвера, дровишки…
Куда же без них родных. Самый лучший драйвер – это
PPJoy, последняя версия 0.83. Сейчас я расскажу, как его установить и
настроить на работу с нашими джойстиками.
Установка стандартна. Во время прогресса может
выскакивать окно, что данное оборудование не тестировалось на
совместимость с XP, жмем все равно продолжить. Когда все встало
запускаем Configure Joysticks. Появится вот такое окно:

Жмем кнопку Add(добавить). В появившемся окне выбираем параметры как на рисунке

Жмем опять Add. Готово контроллер добавлен.

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


Выбираем «нет, не в этот раз»

Выбираем установку из указанного места

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

После этой установки снова появится сообщение с
необходимостью установить драйвер, только на этот раз для HID
совместимого контроллера. Все делаем так же. Драйвера ставятся опять же
из той же папки.
Один джойстик добавлен. Добавляем второй. В окне PPJoy Joystick and Gamepad Configurations Utillite жмем «Add(добавить)».
В появившемся окне выставляем параметры как на рисунке.

Жмем «Add». Снова появится окно с предложением
ставить драйвера. Делаем все также, как в предыдущем случае. После
установки получим 2 установленных джойстика.
Как подключить геймпады от SEGA к ПК
Всем привет! Этот пост для тех, кто хочет поиграть в сегу га эмуляторе с оригинальными геймпадами. Я расскажу относительно дешевый и простой способ подключить их к ПК.
Ну как простой. Способ требует прямых рук и не особо много мозгов.

В итоге получится Что то вроде этого(перемычки на первом экземпляре получились немного другие).Итак, что нам понадобится?
1)Скетч для ардуино, библиотека для ардуино и схема печатной платы.Их я тебе дам
2)Текстолит, Arduino Pro micro, 2 разъема DB9m и пара проводков.Их я тебе не дам.

Ну и собсна это основное, не считая инструмента и мелких расходников.
Начнем того, где достать нужные детали
1)Arduino Pro micro-вам поможет старый добрый aliexpress(внимательно смотрите какую версию вы заказали с micro или mini usb)
2)Текстолит нужен будет односторонний, купить можно там же где и ардуинку или же пройтись по радиотехническим магазинам.
3)Разъем DB9m можно найти на старых материнских платах(некоторые люди наверное задавались вопросом для чего он используется вообще).За неимением старых материнских плат можно посмотреть опять же в радиотехническом магазине или в любом сервисе попросить выпаять с доноров
Теперь можно приступать к производству печатной платы
В интернете много роликов как сделать печатную плату в домашних условиях
Я делал все это лазерно утюжной технологией, или же просто ЛУТ.
Приложу просто pdf файл для печати в масштабе 100%(обязательно, так как могут не сойтись посадочные места). Советую посмотреть ролик у AlexGyver на тему ЛУТ, он там подробно описывает как все это легко и просто.
После этого нужно будет просверлить отверстия для микроконтроллера, разьемов и перемычек.Красным я отметил нужные перемычки.

Это моя первая плата, прошу сильно не ругать.
Далее нужно все припаять на свои места (со стороны чистого текстолита).
После этого уже можно залить скетч в ардуинку и проверять работу геймпадов через панель управления(в разделе устройств ввода-вывода появится геймпад с названием Arduino pro micro)
Признаюсь, скетч и библиотека были лихо украдены у парня с зарубежного форума, имя к сожелению не запомнил
Как залить в микроконтроллер скетч? Опять же в интернете много видеоуроков. И опять же советую ролики AlexGyver.
Скажу только, что прошивать ардуинку надо как arduino micro(В программе arduino IDE в верхней строке Инструменты>Плата>Arduino micro)
Вот ссылка на архив с библиотекой, скетчем и pdf для печатной платы
https://yadi.sk/d/cMauVKkTFL5B7Q
Ну вроде все:)
Если будут вопросы — отвечу.
Если будут указаны ошибки — учту.
Всем удачи, люблюцелую.
1) на Aliexpress есть переходники, для подключения классических геймпадов к USB
2) там же можно взять геймпад реплику с USB коннектором



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

Топ 25 наборов для самостоятельной сборки и пайки

Комплект электронных компонентов для сборки личного мультиметра (тестера). Предстоит самому собрать и припаять детали в нужном месте, чтобы аппарат заработал. Ссылка на источник
2) Регулятор напряжения

Набор «собери сам» для сборки регулятора напряжения с трансформатором. Работает от сети 220 вольт. Преобразует от 0 до 18 вольт. ссылка

Сборные настольные часы со светодиодами. Для любителей электроники и пайки и сборки своими руками. ссылка
4) Лодка с дистанционным управлением

Научно-познавательный набор «сделай сам» — катер с пультом управления на бутылках. Ссылка
5) Настольная лампа

Очень простой набор для сборки небольшой настольной лампы. Ссылка на источник
6) Датчик землетрясения

Деревянный конструктор для сборки детектора землетрясения. Ссылка

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

Интересный набор для сборки электромобиля. Ссылка
9) Электромагнитная пушка

Электромагнитная пушка для самостоятельной сборки . ссылка

Забавный DIY робот-копилка для сборки, который любит есть монетки и другие металлические предметы. Ссылка

Набор для пайки и создания волчка (юла) со светодиодами. ссылка
12) Музыкальная колонка

Большой набор для сборки колонки. Ссылка

Набор для создания устройства с дуговым зажиганием. Ссылка на источник
14) Игровая приставка

Комплект деталей для сборки простой игровой приставки. ссылка

Довольно сложный в устройстве Arduino-робот. Вам предстоит не только его собрать, но и запрограммировать. Ссылка
16) Индикатор уровня звука

Дешевый и простой набор электронных компонентов для сборки. Ссылка
17) Детектор металла

Еще один дешевый наборчик с деталями детектора металла (металлоискателя). Ссылка на источник

Набор деталей для сборки датчика определения уровня алкоголя. Ссылка
19) Тренировочная плата

Набор SMD компонентов для обучения пайке на плату. Ссылка

Набор сборный для детей и взрослых для развития навыков пайки и принципа работы электроники. Ссылка

Обучающий комплект для сборки FM Радио. Ссылка
22) Детектор ядерного излучения

Интересный набор для пайки и сборки дозиметра радиации. Ссылка
23) Карманный фонарик

Простой набор для создания мини фонарика. ссылка

Комплект деталей для сборки собственного спиннера. Ссылка
25) Компьютер Z80 Орион Про

Набор для сборки одноплатного компьютера. Ссылка на источник

Топ 20 электронных комплектов «сделай сам» для самостоятельной сборки, пайки и программирования
1) Зарядная станция

Набор для сборки зарядной станции с солнечной панелью с трекером для отслеживания положения солнца. Для работы требуются знания в Arduino (Ардуино). Ссылка на источник

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

Обучающий комплект для сборки дома с различными способностями, например, если датчик ‘почует’ дым, то срабатывает сигнализация, если начинается дождь (капает вода на сенсор), то закрываются окна и тд. Ссылка на набор
4) Поливочный робот

Набор для создания устройства для автоматической поливки цветов. Ссылка

Комплект для сборки руки-манипулятора с пультом управления. Ссылка
6) Электронные весы

Весы для сборки в деревянном корпусе и электронной ‘начинкой’. Ссылка

Умный робот для программирования на ‘гусеницах’. Ссылка на источник

Классный ультразвуковой радар. ссылка

Набор для создания рисующего робота. Ссылка на набор

Набор для сборки и программирования робота-машинки с камерой. Ссылка

Ходячий и танцующий робот-гуманоид. Ссылка

Комплект деталей для сборки любого робота на Ваш вкус. ссылка
13) Мусорное ведерко

Умное мусорное ведро с автоматическим открыванием крышки. ссылка на источник
14) Дозатор мыла

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

Эмоциональный робот для сборки из 635 деталей. Ссылка на модель

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

Arduino программируемая рука. Ссылка

Необычный термометр с гигрометром. Ссылка

Робот-паук для самостоятельной сборки и программирования. Ссылка на источник.

Топ 25 электронных устройств ‘сделай сам’ для самостоятельной сборки и пайки
1) Вентилятор с регулировкой скорости

Комплект «собери сам» для самостоятельной сборки и пайки электронных компонентов, в завершенном виде мы получаем устройство вентилятора с платой управления скорости его вращения. Идеально подойдёт для обучения пайке и принципа работы электроники в целом. Стоит такой набор 128 рублей с бесплатной доставкой. Ссылка на источник
2) Светодиодное сердечко

Набор для создания светодиодного светильника с формой красного сердца. Стоит такой 40 рублей. Ссылка
3) Катушка Теслы

Комплект сборки мини-катушки Тесла. Стоит 83 рубля. Ссылка
4) Мигающий светильник

Набор для сборки и пайки микросхем , светодиодов и других электронных компонентов для получения платы весёлого светильника. Стоит комплект 260 рублей. Ссылка
5) Стартовый набор Arduino

Набор начального уровня для любителей сборки, пайки и программирования проектов на Ардуино. Стоит такой около 1 800 руб. Ссылка
6) Набор для создания арфы

Набор ‘сделай сам’ музыкальный инструмент лазерная арфа. Стоит около 600 руб. Ссылка
7) Анализатор спектра

Набор для пайки Анализатор звукового спектра со светодиодными индикаторами. Стоит 105 рублей. ссылка
8) Индикатор заряда батареи

Комплект для сборки индикатора уровня заряда аккумуляторов 3,7В — 12В. Стоит 130 рублей. Ссылка на источник
9) Электронные часы

Набор электронных компонентов для сборки цифровых часов с будильником и светящимися по кругу светодиодами . Стоит около 800 руб. Ссылка
10) Регулятор напряжения

Комплект «сделай сам» LM7805 модуль питания с регулятором напряжения. Стоит 37 рублей. Ссылка
11) Генератор сигналов

Генератор сигналов DIY Kit ICL8038 12V набор для сборки и самостоятельной пайки. Стоит 98 рублей. Ссылка

Электронное пианино для сборки. Состоит из одной октавы нот. Стоит 115 рублей. Ссылка
13) Тестовый модуль

Электронный комплект LED Logic Pen. Стоит 67 рублей. ссылка
14) Модуль диммера 100 Вт

Набор «сделай сам» с переключателем потенциометра, модуль регулирования скорости для Arduino. Стоит 44 рубля. ссылка
15) Макетная плата

Набор для сборки макетной платы ATMEGA8. Стоит 150 руб. ссылка

Набор для сборки модуля преобразования переменного тока в постоянный. Стоит 37 рублей. ссылка
17) Радио своими руками

Набор для сборки FM-радиоприёмника. Стоит около 550 руб. Ссылка
18) Новогодняя ёлка

Набор для сборки 3D ёлочки с разноцветными светодиодами. Стоит такая около 280 рублей. ссылка
19) Умный робот 4WD

Набор для сборки умного робота-автомобиля. стоит такой около 2500 руб. ссылка
20) Дверной звонок

Набор для сборки звонка. Стоит 67 рублей. ссылка
21) Комплект деталей для Ардуино

Набор деталей для сборки недостающих элементов в проектах Arduino и др. Стоит такой 173 рубля. ссылка
22) Высоковольтный генератор

Стоит такой набор 123 рубля. ссылка
23) Усилитель звука

Плата усилителя звука для самостоятельной сборки. Стоит такая 115 рублей. ссылка
24) Воздушный катер

Набор для сборки лодки-катера с дистанционным управлением. Вам лишь потребуется найти 2 бутылки. Стоит такой набор около 800 руб. Ссылка

Набор для сборки планетохода (луноход, марсоход) с солнечными панелями. Аппарат может работать как от батареек, так и от солнечной энергии напрямую. Стоит такой набор 598 руб. Ссылка на источник.
Вот так, в это солнечное воскресное утро, кто-то просто взял и выкинул чьё-то детство


Топ 25 электронных компонентов стоимостью до 39 рублей с бесплатной доставкой, найденных на Алиэкспресс
1) Металлический плёночный резистор 100 штук

Электронный компонент резистор. Стоит такой набор 35 рублей с бесплатной доставкой. Ссылка на источник.
2) Светодиоды 100 штук

Набор белых светодиодов. Стоит около 38 рублей. Ссылка
3) Повышающий модуль

Регулируемый повышающий модуль со входом TypeC. 9V, 12V, 15V, 18V, 24V. Стоит такой 31 рубль. Ссылка
4) SMD резисторы 100 штук

Набор резисторов 100 штук. Стоит такой набор 30 рублей. Ссылка на источник
5) Модуль зарядки

Зарядная плата для литий-ионных батарей. Стоит такая 28 рублей. Ссылка
6) Двухсторонняя плата-заготовка

Плата для пайки различных электронных компонентов для проектов Arduino и др. Стоит маленькая плата 16 рублей с бесплатной доставкой. Ссылка
7) Отсек для батареек

Стоит такой 30 рублей. Ссылка
8) Сенсорный модуль

Электронная плата с сенсорным модулем. Стоит такая 33 рубля. Ссылка
9) Понижающий преобразователь

Понижающий модуль для радиоуправляемых моделей. Входное напряжение: 4,75-23в. Выходное напряжение: 1,0 V-17V. Стоит такая плата 33 рубля Ссылка
10) Плата расширения

Модуль с платой для карты памяти для различных электронных проектов или модернизации существующих=)) Стоит такая 38 рублей. ссылка

Стоит такой 26 рублей. ссылка
12) Светодиоды 10 штук

3 вольтовые светодиоды набор. Стоит 33 рубля. ссылка
13) Инфракрасный модуль

ИК модуль датчика препятствий. Стоит такая плата 38 рублей. ссылка
14) Модуль двигателя

Плата привода двигателя, обычно применяется в робототехнике. Стоит такая 39 рублей. ссылка
15) Переходник на DIP-адаптер 10 штук

Стоит такой набор 33 рубля. ссылка
16) Температурный датчик

Водонепроницаемый NTC термистор 10K 1%. Стоит такой 25 рублей с бесплатной доставкой, как и всё в нашей подборке=). Ссылка на источник
17) Плата для самодельного внешнего аккумулятора

Модуль с зарядкой и выходом USB. Стоит такой 33 рубля. Ссылка
18) Цифровой модуль датчика барометрического давления

Стоит такой датчик 39 рублей. Ссылка
19) Модуль обнаружения дождя

Плата обнаружения капель воды. Стоит такая 39 рублей. Ссылка
20) Лазерный передатчик

Стоит такая плата 39 рублей. Ссылка
21) Звуковой сигнал

Модуль звукового сигнала 95 дБ, 3-24 В. Стоит такой 37 рублей. Ссылка
22) Модуль часов

Стоит такая плата 35 рублей. Ссылка
23) Переходник с батареек Крона 9V

Стоит такой кабель-переходник 31 рубль. Ссылка
24) Маркер с тонким стержнем

Маркер чёрный с тонким кончиком для нанесения различных заметок и опознавательных знаков на электронике. Стоит такой 28 рублей. Ссылка.
25) Штекер Банан

Штекер + разъём «мама-папа» 4 мм. Стоит такой 39 рублей. Ссылка на источник
Уважаемые читатели! Информация актуальна на момент размещения поста.

Мечта детства

Нашел на просторах. Если баян,то извиняюсь.За такое в детстве можно было душу продать. И вот интересно: сколько по времени этот человек такую коллекцию собрал и сколько сейчас такая стОит?

Топ 17 интересных устройств для самостоятельной сборки
1) Преобразователь электрической энергии в магнитную

Набор электронных компонентов для самостоятельной сборки и пайки устройства электромагнитной пушки, за счёт преобразования энергии оно способно выстреливать снаряды, а именно металлические цилиндры. Увлекательный набор, способствующий развитию знаний в области электроники, пайки и физике. Ссылка на источник
2) Анализатор звукового спектра

Комплект «Сделай сам» светодиодный анализатор. Ссылка
3) Поливатель цветов

Набор для сборки устройства для автоматического полива цветов. Ссылка
4) Музыкальный спектр 2

Набор для сборки 12-ти канального светодиодного анализатор спектра. Ссылка
5) Музыкальная ёлка

Набор для создания музыкальной колонки со светодиодной ёлкой. Ссылка
6) Анализатор спектра v3

Музыкальный анализатор с разноцветными светодиодами. Ссылка
7) Дуговой трансформатор

Набор для самостоятельной сборки генератора высокого напряжения для дугового зажигания. Ссылка на источник
8) Часы настольные

Набор для сборки электронных часов со светодиодами. Ссылка

Набор для самостоятельной сборки и пайки FM радио. Потребуется лишь подключить наушники или колонку. Ссылка
10) Модуль усилителя

Плата двухканального усилителя OCL высокой мощности 100 Вт с 4 транзисторами высокой мощности и двумя независимыми стереоканалами. Ссылка

Набор для самостоятельной сборки настольного вентилятора. Ссылка

Сложный набор для создания радио. Вам потребуется самостоятельно и правильно припаять детали в нужном месте чтобы оно заработало. Ссылка
13) Умный автомобиль

Набор для создания машинки, которая может объезжать препятствия. Ссылка
14) Игровая приставка на скорость реакции

Забавная игрушка для самостоятельной сборки. Ссылка

Комплект для самостоятельного изготовления электронного пианино. Ссылка на источник
16) Стрелочный светофор

Набор для сборки световых маячков. Ссылка

Набор электронного конструктора для Arduino (проектов Ардуино) для самостоятельной сборки и программирования. Ссылка на источник

Сам себе игровая консоль: превращаем планшет с нерабочим тачскрином в игровой девайс из 8 кнопок и микроконтроллера

К сожалению, в наше время многие старые, но весьма неплохие по характеристикам гаджеты отправляются напрямую в помойку, и их владельцы не подозревают, что им можно найти применение. Сервер, мультимедийная-станция, да даже просто как TV-приставка — люди в упор не замечают сфер, где старенький планшет мог бы быть полезен. Но как быть, если посвящаешь жизнь портативным гаджетам, кодингу и копанию в железе? Правильно: сделать довольно мощную игровую консоль из старого планшета самому! Сегодня вам расскажу, как я сделал свою портативную приставку из планшета с нерабочим тачскрином, Raspberry Pi Pico и 8 кнопок! За рабочим результатом прячется несколько дней работы: поиск UART на плате, разработка контроллера геймпада на базе RPi Pico, написание приложения-сервиса, которое слушает события и отправляет их в подсистему ввода Linux в обход Android. Интересно? Тогда жду вас под катом!
❯ Мотивация
Прошло уже практически 10 лет с того момента, как у меня появилась моя первая портативная консоль. Несмотря на то, что я был заядлым ПК-игроком, я уже успел посмотреть на PS3 и PSP, но денег на их покупку у меня особо не было, да и к тому времени уже был в наличии Android-планшет. Но к моему 13-летию в 2014 году, когда я ходил и выбирал себе будущий девайс на день рождения, отец и мама решили подарить мне мою первую портативную консоль. Изначально, я уговаривал её купить мне целых два девайса, но бюджет был ограничен 4.000 рублей, а я хотел взять смартфон Fly IQ239 и консоль JXD S601 одновременно:

Однако, увидев здоровую 7-дюймовую консоль в магазине TREC (думаю, жители южной части РФ помнят такой), мама уговорила меня взять именно её, мотивируя это «ну и чего ты будешь тыкаться в этот мелкий экран? Возьми большую». После покупки гаджета, я был доволен: играл какие-то игрушки с ретро-платформ, устанавливал игры на Android, сидел в ВК через Kate Mobile. Что еще нужно было школяру? Однако, планшет прожил у меня недолго: с очередного лага я психанул и ударил по нему кулачком, унеся на тот свет и дисплей и тачскрин. Так консолька и пролежала в подвале около 8 лет. Впрочем, мне продолжали импонировать подобные устройства и в прошлом году я купил и написал про несколько подобных девайсов.

Несколько месяцев назад, мой читатель Кирилл Севостьянов с Хабра прислал мне HTC HD2 в качестве донора и планшет Prestigio PMP7170B3G, который был рабочим, но… у него отказал тачскрин. Я всё думал, чего бы с ним сделать и решил реализовать игровую консольку своими руками из подручных средств. Идея крутилась в голове довольно давно, но реализовал я её только сейчас.
❯ Что нам нужно сделать?
Итак, что должно быть у портативной консоли? Чипсет, дисплей, звук, ОС — это всё нам уже предоставляет планшет. Нам остаётся лишь сделать свой геймпад. Давайте подумаем, что нам будет нужно для того, чтобы его сделать и передавать от него события на планшет:
Контроллер для геймпада: тут нам подойдет практически любой микроконтроллер, который работает от 3.3в. Выбор большой: Arduino Pro Mini 3.3v, ESP32, RPi Pico. Я остановился на последнем: недавно я взял себе две штучки «пощупать» их — и они мне очень понравились!
Физический интерфейс: с планшетом нужно как-то общаться. У нас есть три варианта: USB (не факт, что поддержка преобразователей включена в ядре), UART и SPI/I2C на пятачках тачскрина (потребуют написания драйвера т. к. в android-устройствах нет прямого доступа к SPI/I2C из userland’а). Я остановился на UART: его легко найти на большинстве китайских планшетов, а если не получилось — то на помощь может прийти схема платы.
Программная реализация: как это будет работать? Я решил реализовать геймпад в виде сервиса на Android, который слушает состояния кнопок с UART и «инжектит» события напрямую в драйвер ввода. Таким образом, поддержка нашего геймпада появляется даже в самой системе — можно управлять менюшкой или приложениями как с клавиатуры!
С планом определились, пора начать с программной части: сначала нам обязательно понадобится ROOT-доступ. Его получение на разных девайсах отличается — на prestigio уже был порт CWM и я просто поставил SuperSU. Без ROOT доступа мы не сможем использовать UART!

Теперь нам нужно найти пятачки UART на плате. Разведен он не везде, но в случае устройств на MediaTek — почти всегда, ещё и пятачки подписаны. На моём планшете он нашёлся сразу: был между двух металлических экранов и соответствовал 4-ому каналу UART. Получить к нему доступ можно в /dev/ttyMT3. Я использую ESP32 в качестве UART преобразователя: подпаиваемся к RX/TX, запускаем putty и заходим в adb shell. Определяем бодрейт (скорость) нашего UART порта — на MediaTek он обычно равен 921600, на других чипсетах — 115200. Пытаемся что-то вывести и хоба — мы уже можем «поболтать» с планшетом!

❯ Приложение-сервис
Итак, у нас уже есть доступ к UART и мы можем общаться с планшетом из внешнего мира. Но получить события с кнопок пол дела, нужно их ещё и послать в систему. Для этого есть целых три способа:
InputManager.injectInputEvent — именно этим методом пользуется команда input, которую вы можете использовать через adb. Но увы, он работает только при наличие разрешения INJECT_EVENTS, который доступен только системным приложениям — находятся они в /system/app и подписаны тем же сертификатом, что и остальная прошивка.
Модуль uinput дает возможность создать виртуальное устройство ввода и посылать события из userland’а — т. е. из прикладного приложения. У моего планшета было устройство /dev/uinput, но lsmod показывал, что сам модуль не загружен. Так что отметаем — он есть не везде.
Прямой инжект событий в character устройство — весьма грязный хак, который позволяет инжектить события, не притворяясь системным приложением, но имеет некоторые ограничения. Именно его я и выбрал и о ограничениях ниже.
Сначала нам нужно узнать, какие кнопки поддерживают загруженные устройства ввода в системе. Для этого используем команду getevent -li. Там есть разные устройства ввода, в том числе и тачскрин (если вам нужно симулировать нажатия на экран), мне же подошёл драйвер физических кнопок mtk-kpd. Он занимается обработкой кнопок громкости, включения и т. п. Тут важно обратить внимание на то, что если попытаться послать кнопку, которое устройство не реализует (например пробел), то ничего не произойдет:

Инжект событий я писал на C, т. к. это требовало прямой записи input_event, а в Java прокинул его через Jni. Концепция простая: открываем устройство /dev/input/event2 и посылаем в него события ввода и синхронизации (это обязательно!), которые затем Android читает и обрабатывает:
#include <linux/uinput.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <android/log.h>
#include <jni.h>
int uinput;
extern «C» JNIEXPORT void JNICALL Java_com_monobogdan_inputservicebridge_InputNative_init(JNIEnv *env, jclass clazz) <
uinput = open(«/dev/input/event2», O_WRONLY);
__android_log_print(ANDROID_LOG_DEBUG , «Test», uinput >= 0 ? «Open event OK» : «Failed to open event»); >
void emit(int fd, int type, int code, int val) <
struct input_event ie; ie.type = type;
ie.code = code; ie.value = val;
ie.time.tv _sec = 0;
ie.time.tv _usec = 0;
write(fd, &ie, sizeof(ie)); >
extern «C» JNIEXPORT void JNICALL Java_com_monobogdan_inputservicebridge_InputNative_sendKeyEvent(JNIEnv *env, jclass clazz, jint key_code, jboolean pressed) <
__android_log_print(ANDROID_LOG_DEBUG , «Test», «Send»);
emit(uinput, EV_KEY, key_code, (bool)pressed ? 1 : 0);
emit(uinput, EV_SYN, SYN_REPORT, 0);
>
Основной обработкой занимается сервис, который я реализовал в отдельном потоке: он слушает события с UART и посылает соответствующие изменения состояния через sendKeyEvent. На вход приходят простые сообщения вида:
U L где U/D — нажато, не нажато, а L — однобайтовый идентификатор кнопки. В случае L — это влево, R — вправо и т. п. Вся доступная раскладка хранится в словаре. Причём само чтение из UART реализовано костылем с чтением «чужого» stdout, т. к. android-приложения не умеют сами по себе работать с root правами. В теории, это могло дать неприятный оверхед, но на практике никакого серьезного инпут лага это не создает. Не забываем сделать устройство event записываемым — ставим ему права 777:
package com.monobogdan.inputservicebridge;
public class InputListener extends Service <
private static final int tty = 3;
private InputManager iManager;
private Map<Character, Integer> keyMap;
private Method injectMethod;
private Process runAsRoot(String cmd)
<
try <
return Runtime.getRuntime().exec(new String[] < "su", "-c", cmd >);
>
catch (IOException e)
<
e.printStackTrace();
return null;
>
>
@override
public void onCreate() <
super.onCreate();
// According to linux key map (input-event-codes.h)
keyMap = new HashMap<>();
keyMap.put(‘U’, 103);
keyMap.put(‘D’, 108);
keyMap.put(‘L’, 105);
keyMap.put(‘R’, 106);
keyMap.put(‘E’, 115);
keyMap.put(‘B’, 158);
keyMap.put(‘A’, 232);
keyMap.put(‘C’, 212);
InputNative.init();
try <
runAsRoot(«chmod 777 /dev/input/event2»).waitFor();
> catch (InterruptedException e) <
throw new RuntimeException(e);
>
Executors.newSingleThreadExecutor().execute(new Runnable() <
@override
public void run() <
Process proc = runAsRoot(«cat /dev/ttyMT» + tty);
BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
while(true)
<
try <
String line = reader.readLine();
if(line != null && line.length() > 0) <
Log.i(«Hi», «run: » + line);
boolean pressing = line.charAt(0) == ‘D’;
int keyCode = keyMap.get(line.charAt(2));
Log.i(«TAG», «run: » + keyCode);
InputNative.sendKeyEvent(keyCode, pressing);
>
>
catch(IOException e)
<
e.printStackTrace();
>
/*try <
Thread.sleep(1000 / 30);
> catch (InterruptedException e) <
e.printStackTrace();
>*/
>
>
>);
>
@override
public IBinder onBind(Intent intent) <
return null;
>
>
Таким образом, если мы отправляем с ПК «D L» — система считает, что мы зажали стрелку влево, а U L — считает что мы отпустили. Но если mtk-kpd поддерживает стрелки и еще некоторые действия без каких либо проблем, то enter в список обрабатываемых кнопок не входит: придется мудрить! И тут нам приходит на помощь механизм трансляции кодов кнопок в действия: они хранятся в специальных файлах .kl в /system/usr/keylayout/. Я назначил DPAD_CENTER на… кнопку регулировки громкости звука! Ну, а почему бы и нет. 🙂 Таким образом можно переназначить уже имеющиеся кнопки громкости на, например, start/select.

❯ Геймпад
После того, как сервис был готов и отлажен, нужно было реализовать хардварную часть проекта — сам геймпад. В качестве контроллера я, как уже говорил, выбрал Raspberry Pi Pico на базе МК RP2040 — бодреньком контроллере с двумя ARM Cortex-M0 ядрами. Стоит копейки, а в отличии от ESP’шек, его SDK не такое перегруженное и выглядит более приближенным к bare-metal.

На данный момент, я решил развести все кнопки на бредборде — макетной плате без пайки, т. к. макеток для пайки у меня под рукой не было. Сделал примитивный геймпад:

Развел на соответствующие GPIO:

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

А почему бы не попробовать поиграть в какую-нибудь игру? Ну мы же консоль вроде делаем: берём эмулятор NES, биндим кнопки в настройках и наслаждаемся игрой в Марио!
❯ Заключение
Реализация этого проекта заняла у меня не так уж и много времени: всего около 3-х дней работы по вечерам. Вероятно кто-то спросит: «а чего ты просто Bluetooth геймпад не купил?». Так это не прикольно ведь. Гораздо приятнее играть в девайс, к которому ты приложил руку сам. Более того, не у всех старых планшетов есть BT. Обошёлся на данной стадии проект недорого: планшет мне подарили бесплатно (точно также у вас дома может лежать подобный), RPi Pico — 350 рублей, кнопки по 10 рублей/штучка.
В целом, я сам по себе обожаю копаться в различных железках и их софтварной части (вспомнить хотя-бы статью про перекомпиляциюu-boot из вендорских исходников для нонейм консоли), а созидать что-то свое вообще вызывает какие-то нереальные всплески эндорфина — оно и понятно! 🙂
Однако несмотря на то, что мы уже имеем рабочий «прототип», проект далёк от завершения: я намерен довести его до конца и окончательно перевоплотить старый планшет в автономную игровую консоль (и рассказать об этом во второй части статьи). Для этого мне понадобится распечатать корпус и кнопки на 3D-принтере. К сожалению, у меня в городе ни у кого особо нет 3D-принтеров, поэтому начну копить на Ender 3, а от вас, читателей, с удовольствием почитаю мнение в комментариях и советы касательно выбора принтера!
