
Вступление
Приветствуем! Представляем вашему вниманию миниатюрную игровую консоль в формате брелока, позволяющую запустить легендарный Doom на базе Arduino Nano.
Этот проект является глубоко переработанной и усовершенствованной версией существующей разработки.
Особенности устройства:
Консоль отличается невероятной компактностью. В качестве визуального интерфейса используется OLED-дисплей SSD1306, построенный на технологии органических светодиодов. Экран обладает отличной контрастностью и доступен в нескольких цветовых исполнениях (белый, желтый, голубой).
Корпус устройства спроектирован для 3D-печати: все необходимые параметры для слайсера включены в документацию.
Автономность обеспечивает встроенный аккумулятор с возможностью подзарядки через разъем Type-C. Индикация процесса зарядки реализована с помощью светодиода. Также предусмотрена возможность перепрошивки устройства для запуска других игр или демонстрации анимаций через дополнительный порт Type-C.
Заинтригованы? Давайте приступим к сборке!
Необходимые компоненты
Для создания брелока подготовьте следующий список комплектующих:
-
Arduino Nano (вариант с разъемом Type-C, без распаянных пинов);
-
OLED-дисплей SSD1306 (разрешение 128×64);
-
Тактовые кнопки (6x6x5 мм);
-
Микропереключатель с фиксацией (5.8×5.8 мм);
-
Модуль зарядки TP4056 (с разъемом Type-C);
-
Литий-полимерный аккумулятор 850 мАч 3.7В (или аналогичный с габаритами не более 59x19x8.5 мм);
-
Вплавляемые резьбовые вставки М2.5 (размером М2.5x3x4 мм);
-
Винты М2.5 (длиной 5 мм).
Сборка
Этап 1 «Прототипирование на макетной плате»

Прежде чем переходить к финальной пайке, соберите схему на макетной плате, чтобы убедиться в работоспособности всех узлов.
Для проверки соедините компоненты согласно схеме. Для тестирования системы питания подключите выводы аккумулятора к контактам B+ и B- платы зарядки, а выходы OUT+ и OUT- соедините с линией питания (VCC) и общей землей (GND) макетной платы соответственно.

Схема подключения дисплея:
-
GND — к GND на Arduino;
-
VCC (VDD) — к 3.3V на Arduino;
-
SDA — к A4;
-
SCL (SCK) — к A5.
Назначение портов для кнопок:
-
Общий вывод всех кнопок соединяется с GND.
-
«Вверх» — D8;
-
«Вниз» — D3;
-
«Влево» — D6;
-
«Вправо» — D7;
-
«Огонь» — D10.
ВНИМАНИЕ: перед подключением Arduino к ПК обязательно отсоединяйте аккумулятор от макетной платы!
Этап 1.2 «Прошивка устройства»
Для оптимизации веса скетча и исключения необходимости в зуммере, аудиодорожка была удалена.
Скачайте архив с исходным кодом и распакуйте его.

Загрузите файл Doom_no_sound.ino в Arduino IDE:

ПРЕДУПРЕЖДЕНИЕ: при подключении Arduino к ПК обязательно отсоединяйте аккумулятор от макетной платы!
Выберите корректный COM-порт и загрузите код. При успешной прошивке на дисплее появится заставка DOOM с приглашением «please fire».
Демонстрация работы
Если всё прошло успешно, двигаемся дальше!
Этап 2 «Компактный монтаж и пайка»
-
Закрепите плату зарядки на торце аккумулятора при помощи двустороннего скотча.

-
Выполните разводку проводов к кнопкам согласно принципиальной схеме.

-
Демонтируйте кнопку Reset с платы Arduino Nano. Припаяйте управляющие кнопки. Кнопку «Огонь» закрепите над микроконтроллером, отступив от порта Type-C менее сантиметра. Будьте предельно внимательны: контакты не должны соприкасаться с процессором или другими токоведущими дорожками платы.

-
Соедините SDA с A4, SCL с A5. Припаяйте провод общего питания (VCC) экрана к выводу 3V3 на Arduino. GND экрана соедините с общей землей.
-
Сформируйте «платформу» для дисплея: наклейте на Arduino слой двустороннего скотча, а поверх него — тонкую диэлектрическую пластину (картон или пластик). Закрепите OLED-панель на этой платформе при помощи двустороннего скотча.

Этап 3 «3D-печать и сборка корпуса»
Для корпуса рекомендуется использовать прочные материалы, такие как PETG. Для печати можно воспользоваться принтером уровня Elegoo Neptune 4 Pro. Тщательно настройте параметры поддержек и «разглаживания» (ironing) для получения качественного результата.
Скачать STL-файлы корпуса можно здесь.
Рекомендации по печати:
-
Корпус (body): заполнение 20%, поддержки включены.
-
Крышки (front/back cover): заполнение 20%, без поддержек.
-
Кнопки: заполнение 80%, без поддержек.
Сборка корпуса:
При необходимости обработайте поверхности наждачной бумагой, чтобы убрать следы поддержек. Вплавьте резьбовые вставки М2.5 с помощью паяльника в соответствующие отверстия. Установите кольцо для крепления брелока.
Этап 4 «Финальная интеграция»

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

Припаяйте выключатель питания: соедините центральный контакт с выходом модуля зарядки (OUT+), а боковой — с пином Vin платы Arduino. Заизолируйте соединения термоусадкой. Соберите корпус, зафиксировав крышки на винты М2.5. Установите кнопки на свои места.
Результат должен выглядеть примерно так:


Заключение
Поздравляем с завершением проекта! Если возникли сложности, задавайте вопросы в комментариях или пишите авторам в личные сообщения. Будем рады увидеть фотографии ваших готовых устройств.
В ближайшее время мы планируем расширить функционал консоли, добавив новые прошивки с другими играми и визуальными эффектами.
Над проектом работали:

Dimon406
Инженер, разработчик ПО.

Romka-Krutoy
Программист, энтузиаст фотосъемки.

