Ничего не найдено :(
    В гостях у Самоделкина! » Электроника » Сверхминиатюрная игровая консоль на 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


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



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



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






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

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

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

    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 / История оценок)

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

    1 комментарий
    Korolev
    Жалко
    автора Instructables под ником 陳亮
    У него, видимо, нет ни смартфончика, ни планшетика, не на чем поиграть! smile

    Привет, Гость!


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

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

    Войти

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

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

    Онлайн чат

    Опрос
    А Вы знаете, что на сайте оплачиваются отчеты о создании самоделок?

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

    Все комментарии