» » Сверхминиатюрная игровая консоль на RetroPie

Сверхминиатюрная игровая консоль на RetroPie



Это не первая и не последняя в мире игровая консоль на RetroPie, но среди множества аналогичных предлагаемая конструкция автора Instructables под ником 陳亮 выделяется миниатюрностью: размеры приблизительно как у более минималистической консоли Arduboy.

Устройство выполнено на основе платы Raspberry Pi Zero, подойдёт вариант как с WiFi, так и без. Первое удобнее, второе - энергоэффективнее. На неё мастер поставил «шляпу» LCD HAT фирмы Waveshare. Важно выбрать более новый вариант «шляпы» - с 1,3-дюймовым дисплеем, имеющим разрешающую способность в 240х240. Да, квадрат, но Instagram и Polaroid тут ни при чём. На этой «шляпе», помимо дисплея, есть джойстик и кнопки. В состав Raspberry Pi Zero не входит гребёнка. Если она нужна, её надо впаять самостоятельно. Чтобы консоль не получилась слишком толстой, нужна гребёнка с 8-миллиметровыми штырями. Такую мастер не нашёл и укоротил 12-миллиметровую. Она состоит из двух рядов по 20 штырьков каждый. В зазор между платами поместилась LiPo-батарея размерами 45х23х5 мм со встроенной схемой защиты. Ёмкость на ней не указана. К ней 陳亮 добавил очень миниатюрный контроллер заряда размерами 10х10 мм, который хорош всем, но может заряжать батарею лишь в медленном режиме током всего в 50 мА. Двухцветный светодиод, показанный рядом, не обязателен. Из дополнительных компонентов потребовались: механический выключатель питания, ремешок, четыре потайных винта с резьбой М2,5 длиной в 14 мм.











Корпус и кнопки - 3D-печатные, мастер выложил все необходимые для их повторения файлы на Thingiverse. Печатать их можно как одним, так и разными цветами, в авторском варианте они следующие: Layer123.stl - угольно-чёрный, Layer4.stl - прозрачный жёлтый, Layer5.stl - прозрачный оранжевый, Layer678.stl - прозрачный красный, ButtonHead.stl - прозрачные красный, синий и зелёный (три кнопки), CrossButtonHead.stl - тёмно-красный (а это D-pad).

Стабилизатор PAM2306 на Raspberry Pi Zero может работать при малом падении напряжения, он будет вырабатывать 3,3 В на выходе, даже когда напряжение на входе упадёт до 3,5 В. На одном заряде аккумулятора консоль, потребляя при отключённом WiFi от 100 до 200 мА, работает около 90 минут, при этом расходуется около 90% ёмкости батареи. Плата, на которой WiFi отсутствует аппаратно, проработает ещё дольше.

Мастер соединяет «малинку» и «шляпу» между собой гребёнкой с 12-миллиметровыми штырями, но пока не припаивает её:



Выкусывает лишнее, и штыри становятся 8-миллиметровыми:



Припаивает гребёнку к одной плате, а ответную часть - к другой:



Соединяет с остальными компонентами:



По такой схеме, составленной в текстовом виде:



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

Помещает всё, кроме Raspberry Pi, в деталь корпуса, распечатанную из файла Layer4.stl, под выключатель там предусмотрено посадочное место:



Поверх устанавливает деталь, распечатанную из файла Layer5.stl:



Затем - Raspberry Pi:



И заднюю стенку - это файл Layer678.stl:



Помещает винты на свои места:



Переворачивает всю конструкцию, кладёт на места кнопки, напечатанные из файла ButtonHead.stl, но пока не D-pad:



Закрывает передней панелью, распечатанной из файла Layer123.stl:



Переворачивает и закручивает винты:



Устанавливает на ось джойстика D-pad, распечатанный из файла CrossButtonHead.stl:



Качает RetroPie, выбрав опцию Raspberry Pi 0/1, и homebrew-игры. Качает дополнительные файлы: mk_arcade_joystick_rpi и rpi-fbcp, выбрав опцию скачивания в ZIP-архиве.

Записывает на карту памяти скачанный образ RetroPie. Если просто скопировать файл, ничего не заработает. Нужно воспользоваться одним из способов, в зависимости от того, какая ОС у вас на десктопе.

Способ для Linux

Способ для MacOS

Способ для Windows

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

Помещает на карту памяти архивы mk_arcade_joystick_rpi-master.zip и rpi-fbcp-master.zip.

В конец файла config.txt на карте памяти помещает строку:

dtoverlay=dwc2


В файл codlin.txt после ключевого слова rootwait помещает: modules-load=dwc2,g_ether

Получается:

dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID


Создаёт на карте памяти пустой файл ssh, на MacOS у мастера команда такая:

touch /Volumes/boot/ssh


В 3D-печатном корпусе уже предусмотрены выемки под USB-разъём и слот для карты памяти, поэтому установить карту и подключить шнур не сложнее, чем в плеер, например:




Вскоре после загрузки RetroPie на консоли ОС компьютера опознает виртуальную сетевую карту. Как только это произойдёт, мастер вводит команду:

ssh pi@retropie.local


Пароль по умолчанию - raspberry, его 陳亮 сразу же меняет командой passwd.

В конец файла /etc/modules он добавляет:

spi-bcm2835
flexfb
fbtft_device


Создаёт файл /etc/modprobe.d/fbtft.conf следующего содержания:

options flexfb setaddrwin=0 width=240 height=240 init=-1,0x11,-2,120,-1,0x36,0x70,-1,0x3A,0x05,-1,0xB2,0x0C,0x0C,0x00,0x33,0x33,-1,0xB7,0x35,-1,0xBB,0x1A,-1,0xC0,0x2C,-1,0xC2,0x01,-1,0xC3,0x0B,-1,0xC4,0x20,-1,0xC6,0x0F,-1,0xD0,0xA4,0xA1,-1,0x21,-1,0xE0,0x00,0x19,0x1E,0x0A,0x09,0x15,0x3D,0x44,0x51,0x12,0x03,0x00,0x3F,0x3F,-1,0xE1,0x00,0x18,0x1E,0x0A,0x09,0x25,0x3F,0x43,0x52,0x33,0x03,0x00,0x3F,0x3F,-1,0x29,-3
options fbtft_device name=flexfb gpios=reset:27,dc:25,cs:8,led:24 speed=125000000 bgr=1 fps=60 custom=1 height=240 width=240


Вытаскивает файлы из одного из двух архивов, заранее скопированных на карту (см. выше):

unzip /boot/rpi-fbcp-master.zip


Компилирует и устанавливает:

cd rpi-fbcp-master/
mkdir build
cd build
cmake ..
make
sudo install fbcp /usr/local/bin/fbcp


Запускает:

/usr/local/bin/fbcp &


В конец файла /boot/config.txt добавляет:

disable_overscan=1
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt=240 240 60 1 0 0 0
dtparam=spi=on


Распаковывает другой архив:

unzip /boot/mk_arcade_joystick_rpi-master.zip


Запускает редактор и открывает файл конфигурации геймпада:

cd mk_arcade_joystick_rpi-master/
vi mk_arcade_joystick_rpi.c


Находит строку static const int mk_arcade_gpio_maps[] и делает её такой:

static const int mk_arcade_gpio_maps[] = {6,19,5,26,13,21,16,20,0,0,0,0};


Сохраняет файл, компилирует и устанавливает модуль:

sudo mkdir /usr/src/mk_arcade_joystick_rpi-0.1.5/
sudo cp -a * /usr/src/mk_arcade_joystick_rpi-0.1.5/
export MKVERSION=0.1.5
sudo -E dkms build -m mk_arcade_joystick_rpi -v 0.1.5
sudo -E dkms install -m mk_arcade_joystick_rpi -v 0.1.5


Проверяет кнопки:

sudo modprobe mk_arcade_joystick_rpi map=1
jstest /dev/input/js0

В конец файла /etc/modules добавляет:

mk_arcade_joystick_rpi


Создаёт файл /etc/modprobe.d/joystick.conf следующего содержания:

options mk_arcade_joystick_rpi map=1


Скачанные ранее (см. выше) файлы с homebrew-играми раскидывает из папки /boot по папкам ~/RetroPie/roms/$CONSOLE, где $CONSOLE - название платформы, для которой они предназначены.

Запускает raspi-config:

sudo raspi-config


Настраивает:

Выбирает сеть WiFi (только для платы, где он есть): 2 Network Options -> N2 Wi-fi -> вводит данные о своей сети
Делает, чтобы загрузка не приостанавливалась для появления сети: 3 Boot Options -> B2 Wait for Network at Boot -> No -> OK
Указывает часовой пояс: 4 Localisation Options -> I2 Change Timezone -> выбирает свой часовой пояс
Отключает последовательный порт: 5 Interfacing Options -> P6 Serial -> No -> No -> OK

Сверхминиатюрная игровая консоль на RetroPie











Запускает скрипт настройки RetroPie:

sudo ~/RetroPie-Setup/retropie_setup.sh


Оптимизирует разрешение под 1,3-дюймовый экран: C Configuration / Tools -> 805 configedit -> 1 -> 0 -> 2 Render Resolution -> O Video output resolution -> OK -> Cancel -> Cancel -> Cancel
Меняет тему на подходящую для такого дисплея (нужно, чтобы WiFi был подключён): 812 esthemes -> 14 Pixel-tft -> OK -> 1 carbon -> 2 Uninstall








У «шляпы» всего три отдельных кнопки, плюс одна встроенная прямо в D-pad. А разрешение дисплея - 240х240. Мастер предпочитает платформу NES, где разрешающая способность - 256 x 240. Чтобы изображение не искажалось, он решил его кадрировать. Тем читателям, которые собираются играть в игры только для NES, он рекомендует в конец файла /opt/retropie/configs/nes/retroarch.cfg добавить строки:

video_fullscreen_x = "0"
video_fullscreen_y = "0"
video_scale_integer = true


А в конец файла /opt/retropie/configs/all/retroarch-core-options.cfg - строку:

quicknes_use_overscan_h = "disabled"


Кнопки геймпада эмулируемой NES раскидывает по кнопкам консоли согласно рисунку:



Пользователям, привыкшим к кнопкам Turbo, придётся отвыкать. Мастер запускает редактор и открывает файл настроек EmulationStation:

Туда помещает текст:

<?xml version="1.0"?>
/opt/retropie/supplementary/emulationstation/scripts/inputconfiguration.sh


Сохранив файл и закрыв редактор, снова запускает его, но уже с файлом настроек RetroArch:

vi /opt/retropie/configs/all/retroarch/autoconfig/GPIO\ Controller\ 1.cfg


И туда помещает текст:

input_device = "GPIO Controller 1"
input_driver = "udev"
input_start_btn = "11"
input_exit_emulator_btn = "11"
input_down_axis = "+1"
input_right_axis = "+0"
input_state_slot_increase_axis = "+0"
input_select_btn = "10"
input_left_axis = "-0"
input_state_slot_decrease_axis = "-0"
input_up_axis = "-1"
input_a_btn = "0"
input_b_btn = "1"
input_reset_btn = "1"
input_enable_hotkey_btn = "10"


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

sudo systemctl disable asplashscreen
sudo systemctl disable dphys-swapfile
sudo systemctl disable hciuart
sudo systemctl disable keyboard-setup
sudo systemctl disable nmbd
sudo systemctl disable raspi-config
sudo systemctl disable smbd
sudo systemctl disable nfs-config


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

В файле /boot/cmdline.txt выставляет параметры так:

dwc_otg.lpm_enable=0 console=tty1 root=PARTUUID=14a75fe9-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait loglevel=3 consoleblank=0 plymouth.enable=0 logo.nologo fastboot quiet


А эту строку превращает в комментарий, поместив впереди решётку:

#dtoverlay=dwc2


Перезагружает устройство. Выключает командой:

sudo halt


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

Как читатель уже догадался, читая файлы конфигурации, приведённые выше, клавише Start соответствует нажатие на D-pad посередине. Этим же нажатием, когда игра не запущена, можно вызвать меню настроек. Там мастер выбирает следующие пункты:

UI SETTINGS -> SCREENSAVER SETTINGS -> SCREENSAVER AFTER -> 1 minute

OTHER SETTINGS -> POWER SAVER MODES -> INSTANT


Помещает ремешок в предназначенное для него «ухо»:



Готово, можно пользоваться:



Ниже представлены различные цветовые решения консоли:






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

Дверной звонок из музыкальной игрушки

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

10
Идея
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
10
Описание
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
10
Исполнение
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
Итоговая оценка: 10 из 10 (голосов: 1 / История оценок)

Добавить комментарий

    • smilesmilesxaxaokdontknowyahoonea
      bossscratchfoolyesyes-yesaggressivesecret
      sorrydancedance2dance3pardonhelpdrinks
      stopfriendsgoodgoodgoodwhistleswoontongue
      smokeclappingcraydeclarederisivedon-t_mentiondownload
      heatirefullaugh1mdameetingmoskingnegative
      not_ipopcornpunishreadscarescaressearch
      tauntthank_youthisto_clueumnikacuteagree
      badbeeeblack_eyeblum3blushboastboredom
      censoredpleasantrysecret2threatenvictoryyusun_bespectacled
      shokrespektlolprevedwelcomekrutoyya_za
      ya_dobryihelperne_huliganne_othodifludbanclose
1 комментарий
  1. Korolev
    Жалко
    автора Instructables под ником 陳亮
    У него, видимо, нет ни смартфончика, ни планшетика, не на чем поиграть! smile

Добрый день, Гость!


Зарегистрируйтесь

Или войдите на сайт, если уже зарегистрированы...

Войти

Добавьте самоделку

Добавьте тему

Онлайн чат

Опрос
А Вы уже рассказали на сайте о своей самоделке?

Последние комментарии

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

Введите электронную почту и получайте письма с новыми самоделками. Не более одного письма в день.