Тот самый DOOM

Еще одна интерпретация легендарного Doom, портированная на микроконтроллер ESP32.

Тот самый DOOM

История создания

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

Техническое задание

Ключевые критерии для устройства: компактный форм-фактор, 2,8-дюймовый дисплей, встроенный аудиовыход мощностью 1 Вт и удобный доступ к слоту microSD для быстрой смены контента без разборки корпуса. В качестве системы управления — классические тактовые кнопки, питание от Li-ion аккумулятора емкостью порядка 1000 мАч.

Электрическая схема

Принципиальная схема.
Принципиальная схема.

Сердцем системы выступает ESP32 Wrover DevKit с 4 МБ PSRAM. В качестве средства вывода выбран SPI-дисплей ILI9341 (2,8 дюйма), за усиление аудио отвечает модуль на базе NS8002. Поскольку прямое питание от литиевого аккумулятора нецелесообразно, предусмотрен DC-DC преобразователь (использован стандартный на 5В), а 3,3В для карты памяти формируется средствами самого МК.

Компоненты

Наименование

Описание

Кол-во

МК

ESP32 Wrover DevKit SPI 4Mb

1

LCD

ILI9341 2,8“ SPI

1

MicroSD

Слот для MicroSD

1

DC-DC

Модуль преобразователя 3.7В => 5В

1

NS8002

Аудиоусилитель, 3Вт

1

Динамик

FBF28-6F, 8 Ом, 1.5Вт

1

АКБ

Li-ion LP803040 1200mAh

1

Переключатель

Движковый, SS12F20G3

2

Резистор

SMD 0805, 10 кОм

6

Резистор

DIP 0.125 Вт, 100 кОм

1

Конденсатор

100 мкФ, 6.3×5мм

2

Конденсатор

100 нФ, 0805

4

Разъем

Гнездо PBS-20, 2.54 мм

1

Джойстик

5-позиционный навигационный модуль

1

Кнопки

Тактовые 12х12 с колпачками

2

Детали
Детали

Особенности сборки:

  • Выбор Wrover обусловлен наличием достаточного объема PSRAM; встроенный ЦАП позволяет реализовать звуковые эффекты.

  • Дисплей ориентирован на драйвер ILI9341, но прошивка легко адаптируется под популярный ST7789.

  • Управление перемещением реализовано через навигационный модуль, заменяющий полноценный джойстик.

  • Предусмотрен физический тумблер для быстрого отключения аудиопотока.

Монтаж и программная часть

Печатная плата была разработана в Sprint-Layout и изготовлена методом ЛУТ в домашних условиях. При разводке пришлось прибегнуть к перемычкам, чтобы обеспечить доступ к портам USB и слоту карты памяти.

Плата
Плата

Прошивка осуществляется через среду Espressif ESP-IDF. Используется проверенный проект порта PRBOOM для ESP32.

git clone https://github.com/espressif/esp-idf.git
cd esp-idf
./install.sh
source ./export.sh

Команды для развертывания проекта:

git clone https://github.com/jkirsons/doom-espidf
cd doom-espidf
esptool --chip esp32 --port /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset \ write_flash -z --flash_mode dio --flash_freq 40m --flash_size detect 0x1000 \ build/bootloader/bootloader.bin 0x10000 build/esp32-doom.bin 0x8000 build/partitions.bin

Для кастомизации пинов или параметров дисплея воспользуйтесь командой `make menuconfig` перед сборкой.

Для игры потребуются стандартные файлы `prboom.wad` и `doom.wad` (WAD-архивы), которые необходимо записать в корень microSD. При возникновении проблем с запуском (белый экран), воспользуйтесь Serial-монитором для отладки файловой системы.

Конструкция корпуса

Для печати на 3D-принтере спроектирован корпус, учитывающий габариты всех компонентов.

Корпус
Корпус

Нюансы сборки корпуса:

  • Дисплей жестко фиксируется в рамке; углы матрицы можно слегка подточить для идеальной посадки.

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

  • Кнопки «Огонь» и «Действие» монтируются на отдельном фрагменте макетной платы.

  • Для надежной фиксации элементов внутри рекомендуется использовать термоклей, а для внешних декоративных панелей — дихлорэтан.

Итог

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

 

Источник

Читайте также