Помните старые классические 8-битные игры? Возможно, вам нравилось проводить свободное время перед домашним компьютером или игровой приставкой. Они вызывали такую ностальгию, и каждый ребенок той эпохи любил их. Теперь им на смену пришла современная высококлассная графика и игровая динамика. Тем не менее, многие люди по-прежнему любят играть в эти классические игры. В настоящее время единственный способ играть в эти игры — через эмуляторы. Но в этом проекте мы рассмотрим как создать такое устройство, которое сможет имитировать эти классические игры. Эта консоль основана на популярной Odroid Go с обновленной прошивкой и новым IPS-дисплеем. А используемая прошивка представляет собой модифицированную версию ретро-прошивки ducalex. Ранее мы создавали аналогичную игровую консоль с использованием Arduino и OLED дисплея.
Кратко принцип работы нашей игровой консоли можно посмотреть в следующем видео.
Необходимые компоненты
- Комплект ESP32 Wrover с флэш-памятью 16 Мб;
- Модуль дисплея Waveshare 2 дюйма, 320x240 IPS с драйвером ST7789V (купить на AliExpress);
- Модуль TP4056 с защитой (купить на AliExpress);
- SMD MOSFET AO3401 с P-каналом (купить на AliExpress);
- слот для SD-карты (купить на AliExpress);
- SMD ползунковый переключатель 1P2T;
- Аудиоразъем 3,5 мм для поверхностного монтажа PJ-327-A;
- Батарея Lipo 3,7 В;
- 2-контактный разъем аккумулятора JST XH;
- Тактильные кнопочные переключатели 6x6x6xmm – 10 шт.
- Светодиод 3 мм;
- 3,3 В активный зуммер;
- резисторы 100 кОм - 2 шт., 10 кОм - 7 шт., 1 кОм - 1 шт. (купить на AliExpress);
- конденсатор 0,01 мкФ - 3 шт. (купить на AliExpress).
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Схема консоли
Схема игровой ретро-консоли на основе модуля ESP32 представлена на следующем рисунке.
Схема построена на основе легкодоступных готовых компонентов. Соединения просты и понятны. Входное питание подключается к модулю TP4056 со встроенной схемой защиты. Если ваша батарея уже имеет встроенную схему защиты, вы можете просто использовать модуль TP4056 без схемы защиты. Аккумулятор подключается к выходу модуля TP4056. Оттуда питание подключается к MOSFET (МОП) транзистору с P-каналом. По умолчанию затвор этого MOSFET подтягивается до уровня VBAT. Когда небольшой ползунковый переключатель включен, затвор будет подключен к земле, и MOSFET транзистор включится. Эта простая схема позволит нам включать и выключать все устройство с помощью крошечного ползункового переключателя.
Мощность MOSFET транзистора распределяется между другими компонентами схемы. Дисплей подключается к комплекту ESP32 Wrover с помощью интерфейса SPI. Яркость подсветки контролируется с помощью ШИМ от GPIO14. SD-карта также подключается по той же линии SPI. Звук выводится с GPIO26 и подключается к аудиоразъему 3,5 мм. Вы можете использовать аудиоразъем для подключения наушников или использовать зуммер с разъемом переключателя аудиоразъема. К GPIO2 подключен светодиод, показывающий статус чтения диска (карты). Когда система занята чтением с SD-карты, загорается светодиод. Все переключатели подключены к различным контактам GPIO, и состояние этих контактов контролируется для обнаружения нажатия клавиши.
Дизайн печатной платы игровой ретро-консоли
Чтобы упростить весь проект, мы разработали для него печатную плату. На изображении ниже показаны размеры печатной платы. Это самодельная печатная плата, вытравленная самостоятельно. Необходимые файлы для изготовления этой печатной платы можно скачать по ссылке GitHub, приведенной в конце этой статьи. Печатную плату вы можете как изготовить самостоятельно, так и заказать ее изготовление на сервисе, с которым вы привыкли работать.
На следующем рисунке показано 2D-представление печатной платы.
На следующем рисунке показана 3D-иллюстрация этой же печатной платы, на которой видно расположение всех компонентов.
Прошивка для игровой ретро-консоли на ESP32
Как упоминалось ранее, используемая прошивка представляет собой модифицированную версию прошивки Ducalex Retro-Go. Исходная прошивка предназначена для использования с дисплеем ILI9341. Поскольку мы используем дисплей IPS с драйвером ST7789V, мы не можем использовать оригинальную прошивку. К счастью, большинство функций дисплея в чем-то схожи для обоих чипов драйверов ЖК-дисплея. Но мы должны изменить коды инициализации дисплея и настройки гаммы. Вы можете найти модифицированный исходный код прошивки в следующем репозитории GitHub Retro-go-ST7789 . Чтобы использовать прошивку, вы можете использовать готовый образ или собрать его самостоятельно. Готовый файл изображения cam можно найти в репозитории Circuit Digest Github, ссылка на который приведена в конце данной статьи.
Поддерживаемые системы :
- Nintendo: NES, SNES (медленно), Gameboy, Gameboy Color, Game & Watch;
- Sega: SG-1000, Master System, Mega Drive/Genesis, Game Gear;
- Coleco: Colecovision;
- NEC: ПК-движок;
- Atari: Lynx;
- Прочее: DOOM (включая моды!).
Особенности прошивки :
- Внутриигровое меню;
- Избранное и недавно сыгранные игры;
- Цветовые палитры GB, настройка и сохранение RTC;
- Цветовые палитры NES, диски PAL, поддержка NSF;
- Больше эмуляторов и приложений;
- Параметры масштабирования и фильтрации;
- Улучшенная производительность и совместимость;
- Турбо-скорость/перемотка вперед;
- Настраиваемый лаунчер;
- Обложка и сохранение предварительного просмотра состояния;
- Несколько слотов для сохранения в каждой игре;
- Файловый менеджер Wi-Fi;
- И многое другое!
Сборка прошивки
Прошивка написана для ESP32 IDF. В настоящее время поддерживаются версии от 4.1 до 4.4, а рекомендуемая версия — 4.3. При использовании любой другой обновленной версии ESP32 IDF сборка может завершиться неудачей. Перейдите по следующей ссылке, чтобы установить и настроить ESP32 IDF версии 4.3 .
После установки и настройки примените следующие исправления к IDF. Патчи находятся в инструментах/патчах и могут быть применены к вашей глобальной установке ESP-IDF, они не нарушат работу других ваших проектов/устройств.
- sdcard-fix: этот патч является обязательным для ODROID-GO (и его клонов).
- Panic-hook: Это поможет пользователям сообщать об ошибках, более подробную информацию см. в разделе «Запись журналов сбоев» ниже. Патч не является обязательным, но рекомендуется.
- Enable-exfat: Включить поддержку exFAT. Я не рекомендую это, но это работает, если вам это нужно.
Чтобы применить исправления, вам необходимо открыть терминал в вашей установке ESP-IDF ($IDF_PATH) и запустить команду согласно шаблону ниже. Вы должны сделать то же самое для всех необходимых патчей.
- patch -p1 < "/path/to/retro-go/tools/patches/sdcard-fix (esp-idf 4.2 и 4.3).diff "
После применения исправлений выполните следующую команду из корневой папки чтобы создать образ прошивки.
- ./rg_tool.py release
Загрузка прошивки
Загрузить прошивку можно одним из следующих способов.
- Использование esptool
- Чтобы использовать ESPtool, убедитесь, что у вас установлен ESP IDF. Инструкции для этого вы найдете в предыдущем разделе. После установки и настройки откройте терминал в той же папке, где находится образ прошивки, и используйте следующую команду для загрузки прошивки.
esptool.py write_flash --flash_size обнаружить 0x0 Retro-go_*.img
- Использование инструмента загрузки ESP32 Flash
- Сначала загрузите инструмент загрузки Flash ESP32.
- Извлеките его в папку и дважды щелкните exe-файл, чтобы запустить его. При появлении запроса выберите ESP32 в поле типа чипа и нажмите «ОК».
- Выберите файл прошивки с расширением img и добавьте адрес 0x00. Выберите правильный COM-порт и нажмите «Стереть». После завершения стирания прошивки нажмите START чтобы загрузить прошивку в модуль.
Теперь можно использовать нашу игровую консоль. Вставьте SD-карту и наслаждайтесь игрой.
Использование прошивки
Чтобы использовать консоль, отформатируйте SD-карту в формате FAT32. Скопируйте папки с именами roms и romart на SD-карту. Имейте в виду, что в папке rom нет образцов игр. Вы должны загрузить нужные вам игры из других источников и поместить их в соответствующую папку rom в папке roms (например, roms Nintendo в папке nes). Вы можете добавить недостающую обложку, создав изображение PNG (160x168, 8 бит) с именем по следующей схеме: /romart/nes/A/ABCDE123.png, где nes — это то же самое, что папка rom, а ABCDE123 — это CRC32 (контрольная сумма) файла игры (нажмите A -> Properties в панели запуска, чтобы найти ее).
Чтобы использовать Wi-Fi, вам нужно будет добавить свою конфигурацию в файл /retro-go/config/wifi.json. Это должно выглядеть следующим образом:
1 2 3 4 |
{ "ssid": "my-network", "password": "my-password" } |
Чтобы использовать файловый менеджер, найдите IP-адрес вашего устройства в меню «О программе» ("about"). Затем на вашем компьютере перейдите по адресу http://192.168.xx/ , чтобы получить доступ к файловому менеджеру.
На видео ниже показан игровой процесс на основе OdroidGo на только что созданном нами устройстве.
Все необходимые файлы для данного проекта вы можете скачать по следующей ссылке.
1 613 просмотров
Hello, will it work on ESP 32 4MB flash ?
Hello, i think yes if you delete some cataloges which you not need.
Здравствуйте. Подскажите будет ли работать на экране ST7735?
Добрый вечер. К сожалению не знаю, не изучал отличия между этими двумя типами дисплеев
а можно использовать дисплей с драйвером st7789 вместо st7789v?
Я думаю можно