Приблизительно в начале 2025-го года я решил попробовать 3D-печать и разработку печатных плат. Одна идея мотивировала меня на это — сделать свою игровую приставку. Но больше всего мне хотелось, чтобы она была полноценной и без колхоза. Мне кажется, на днях я частично достиг эту цель, когда сделал свою приставку, которую назвал Arduboy WOW.

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

Если вас интересуют спорные схемотехнические решения или разработка DIY приставок без понимания, зачем делать все слишком просто, то можете уверенно продолжать читать дальше.

Рекомендации к чтению

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

Вы можете перейти сразу к интересующемуся вам разделу, но повествование идет последовательно и думаю вам было бы интересно узнать как все развивалось со временем.

❯ Оглавление

  1. Введение

  2. Часть первая: SlimBoy и симулятор

  3. Часть вторая: приставка на LGT8F328P

  4. Часть третья: Arduboy WOW

    1. Источники вдохновения

    2. Модули

    3. Первое тестирование: плюсы и минусы модулей

    4. Печатная плата

    5. Корпус

    6. Софт

  5. Обзор Arduboy WOW

  6. Выводы

❯ Введение

❯ Немного об Arduboy

Прежде, чем начать статью, хочу немного поговорить про такую приставку как Arduboy, чтобы мы все вместе были на одной волне.

Картинка Arduboy FX-C взятая с arduboy.com
Картинка Arduboy FX-C взятая с arduboy.com

Вы безусловно знаете, что такое Game Boy, так в своем названии Arduboy на него ссылается, только приставка Ardu идет от Arduino. Другими словами эта приставка на микроконтроллере, это основное, что меня заинтересовало в ней, когда в первый раз про неё услышал. Просто мне было интересно сделать приставку как раз на микроконтроллере, а Arduboy это одна из первых, кто такие приставки популяризировал еще в 2016-м году.

Её успех пытались повторить другие приставки, но почему-то у них ничего не вышло. Вы можете подумать, что это не похоже на правду, т.к. за такое время вышло множество приставок, как же так? Причина в том, что это в отличие от ретро-консолей, например, те, которые выпускает Anbernic, это устройство еще более нишевое. Объясню по-другому, когда вы берете приставку в руки, вы скорее всего делаете это потому, что хотите поиграть, здесь же акцент смещен с игр на их разработку. Если хотите еще доказательств, то та же отсылка к Arduino в названии Arduboy тоже указывает, что она больше для программирования.

На самом деле я знаю один успешный проект похожий на Arduboy, это Microsoft Arcade, но он принципиально отличается — это уже экосистема с десятками приставками, а не одной. Поэтому их сравнивать прямо не стоит. Но предполагаю, что в Microsoft Arcade заметили успех Arduboy и решили сделать его подход еще более доступным. Например, там есть визуальное программирование и симуляторы, но об Microsoft Arcade поговорим в другой раз.

Мне кажется, основная причина успеха Arduboy кроется в том, что изначально она получилась качественной (только посмотрите как она выглядит и насколько тонкая) и это позволило сформировать вокруг неё хорошее сообщество. Сообщество же создало множество, где-то более 300, игр. Если посмотрите на аналоги, то там либо игр заметно меньше, либо их портируют с Arduboy, как это делали, например, в ESPboy, про что вы можете почитать на Хабре.

Сейчас, думаю, мы на одной волне, дальше по необходимости эту тему еще раскрою, но один момент еще лучше привести, это важные пункты из технических характеристик:

  • В Arduboy используется 8-битный микроконтроллер ATmega32u4 (16 МГц, 32 КБ ПЗУ, 2.5 КБ ОЗУ), его можно встретить например на платах Arduino Leonardo, отличительная особенность — это наличие аппаратного USB.

  • Используется монохромный OLED экранчик на 1.3 дюйма.

  • А в Arduino FX есть внешняя флеш память на 16 МБ на которую можно установить больше сотни игр.

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

❯ Моя мотивация

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

Сейчас, когда я уже собрал свою приставку и успокоился, слабо помню почему так сильно хотел её собрать. Возможно раз я занимаюсь разработкой игр, то казалось отличной идеей сделать свою приставку. Но когда начал делать первые свои электронные устройства, то понял, что для меня этот проект пока не подъемный. Это легко было понять, т.к. принципиальная схема Arduboy есть в открытом доступе и я слабо понимал её целиком.

Изначальная идея была сделать полностью свою приставку, не Arduboy. Но как оказалось, эта идея очень проблемная, если не говорить плохая для меня. Все потому, что даже если я её соберу, то слабо понимаю что с ней делать и потеряю мотивацию. Поэтому почти всегда возвращался к мысли взять готовый проект и пока научиться на нем. А после того, как появится хорошее понимание, чем полностью моя приставка будет лучше, например, Arduboy, то тогда браться за неё.

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

Поэтому шло время, я делал разные устройства и набирался опыта, пока в какой-то момент не подошел к своей цели. Но давайте я расскажу, как я начал подступать к своей с самого начала.

❯ Часть первая: SlimBoy и симулятор

Фото устройства, взятое из репозитория SlimBoy
Фото устройства, взятое из репозитория SlimBoy

Это было больше года назад, я слабо еще паял и ни разу не разводил печатные платы, поэтому первая мысль, которая у меня была, это собрать свою приставку на симуляторе. Нашел такую интересную программу как SimulIDE и сразу захотел собрать Arduboy, но столкнулся с проблемой, что нет поддержки ATmega32u4, а все остальное в ней есть, например, OLED дисплей, кнопки и динамик. Посмотрел в других программах, в них тоже нет поддержки ATmega32u4, поэтому надо было искать какой-нибудь выход и я нашел. Вместо ATmega32u4 использовать ATmega328, который стоит в Arduino Nano.

Моя принципиальная схема в SimulIDE
Моя принципиальная схема в SimulIDE

Но больше того, кто-то уже сделал форк репозитория Arduboy с поддержкой ATmega328 и назвал его SlimBoy. В нем, правда, есть отличия, вместо SPI интерфейса для дисплея, используется I2C, но это оказалось то, что надо, т.к. как раз I2C дисплей был в SimulIDE. В итоге у меня получилось запустить игру от Arduboy на симуляторе и я даже написал небольшую статью об этом, поэтому много об этом писать здесь не буду.

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

❯ Часть вторая: приставка на LGT8F328P

Прошло где-то 3 месяца.

Фото получившейся приставки на LGT8F328P
Фото получившейся приставки на LGT8F328P

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

Остался вопрос, какая будет эта печатная плата, что будет на ней? И на самом деле сейчас смотреть на принципиальную схему и разводку этой печатной платы очень интересно, видно с чего все начиналось и как сильно я заблуждался. Давайте приведу все как есть:

Принципиальная схема приставки на LGT8F328P. Питается от повербанка, т.к. переключатель питания отломался
Принципиальная схема приставки на LGT8F328P. Питается от повербанка, т.к. переключатель питания отломался
Топология приставки на LGT8F328P
Топология приставки на LGT8F328P

❯ Проблемные решения

Вид изнутри, особенно странное подписал, ниже это подробнее раскрыто
Вид изнутри, особенно странное подписал, ниже это подробнее раскрыто

LGT8F328P

Здесь мне захотелось использовать LGT8F328P, вместо ATmega328P, потому что считал, что его проще достать, он дешевле и по всем характеристикам лучше. Но все это оказалось не принципиально. Потому, что даже если я и хотел делать устройство на продажу, то сейчас понимаю, что это очень далеко от реальности: рынок DIY приставок очень нишевый и если выходить, то с каким-то уникальным предложением.

Но давайте пойдем дальше, потому что здесь есть чему удивиться. На самом деле принципиальная схема очень похожа на то, что было в SimulIDE, но если взгляните что за компоненты используются, то сразу все поймете.

CR2032

Давайте начнем с самого значимого — для питания приставки я решил использовать CR2032. На тот момент мне казалось, что это надо попробовать, если идея хорошая, то будет хорошо, если нет, то нет. И когда я запустил приставку, то светодиоды индикации и экран еле светился, не помню какие еще были проблемы, но почти сразу я решил припаять модуль повышения напряжения с 3В на 5В. В моей голове была мысль, что если я установил не правильное напряжение, установлю правильное и будет работать хорошо.

Когда повысил напряжение, то все стало светить нормально, но до того момента как начинала работать пищалка. После нескольких звуков, напряжение резко просаживалось и устройство перезапускалось. В сети я прочитал, что надо поставить конденсатор, но это не помогло. Сейчас же я понимаю, что очень странная была идея делать приставку на CR2032, но возможно надо было попробовать.

0.9 дюймовый OLED дисплей

И это далеко не все проблемы. Если вы посмотрите на размеры, то увидите, что используется крайне маленький экранчик. Мне казалось, что принципиальной разницы какой дисплей использовать нет, потому что это прототип и надо проверить свои идеи по большей части. Да, идею проверил и она так себе. В оригинальной приставке был 1.3 дюймовый дисплей, надо было хотя бы его делать.

Силиконовые кнопки

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

Переключатель питания

Следующая особенность оказалось для меня на тот момент открытием, потому что я не думал, что если поставлю переключатель питания, то он оторвется почти сразу. А оказалось все просто, я использовал одностороннюю печатную плату без металлизации отверстий, поэтому этот переключатель еле держится за небольшой слой меди. Хотя бы мог площадки сделать побольше, но нет.

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

❯ Выводы и огорчение

Сравнение приставки на LGT8F328P и Arduboy WOW
Сравнение приставки на LGT8F328P и Arduboy WOW

Хотя я привел здесь много спорных решений, но одно является ключевым, почему я считаю этот проект неудавшимся — на данной приставке не запускаются игры с оригинального Arduboy. Т.е. я собрал её, а прикоснуться к сообществу не могу.

И последствия самые демотивирующие. Допустим захочу делать игру для такой приставки, а получившийся бинарный файл не запуститься у других. Как решение компилировать под LGT8F328P отдельно и под ATmega32u4 отдельно — но разве это нормально? Нет.

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

❯ Часть третья: Arduboy WOW

Прошел почти год, когда я был готов делать третий заход на Arduboy, но в этот раз у меня был план:

  1. Самое важное: на моей приставке должны запускаться все игры с оригинального Arduboy.

  2. Никаких покупных модулей, все делается самостоятельно как в настоящем производстве, другими словами, на одной печатной плате. (Если вы купите Arduboy и посмотрите внутрь, то было бы странно увидеть там припаянный модуль OLED дисплея с AliExpress.)

  3. Было бы неплохо добавить что-то свое.

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

Предыдущие главы я начинал с принципиальной схемы, давайте забежим вперед и я сразу покажу, что у меня получилось:

Принципиальная схема Arduboy WOW V2, уже исправленное
Принципиальная схема Arduboy WOW V2, уже исправленное

Эта самая сложная принципиальная схема, которую я когда либо делал. Поначалу я думал, что как только её сделаю, то сразу закажу, но почти быстро вспомнил, что всегда говорил, что сначала прототипирую печатные платы на фрезерном станке, чтобы потом заказать все без проблем. Поэтому было решено собрать прототип приставки на макетке из модулей, полностью сделанных самостоятельно. Если говорить проще, разбить приставку на модули, допустим модуль OLED дисплея, сначала он должен работать самостоятельно, а потом подключить их все вместе.

Поэтому дальше я буду рассказывать об этих модулях, на самом деле это очень хорошая идея и наиболее интересная, но по времени очень выматывает. Все же, если вы не спешите, то проще развести один раз большую плату, заказать её, поправить ошибки, заказать еще раз, и может быть еще раз заказать. Но сделать каждый модуль по отдельности, досконально разобраться как оно работает, это было мне то, что надо.

❯ Источники вдохновения

Прежде, чем перейти к самой разработке, к модулям, стоит рассказать, что я вдохновлялся этим проектом с OSHWLab. Там лежит подробная принципиальная схема, но больше всего мне понравился ее форм фактор. (Кстати, разводки нет и в интернете очень мало где есть принципиальные схемы с разводкой Arduboy, либо все они достаточно примитивные.) Еще на Авито я встретил такого же форм фактора платы, где мне понравились повернутые на 45 градусов кнопки. И еще, если поищете Arduboy на Ozon, то тоже увидите похожие устройства. Это все дало мне понимание, что я могу это все повторить, в отличие от оригинального Arduboy, который очень тоненький, клавиши все литые, не на 3D-принтере (точно не FDM). Но главное мне не хотелось делать приставку такой тоненькой и маленькой.

❯ Модули

Модули целиком с подписями
Модули целиком с подписями

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

На этом фото видны все модули:

  1. Главный модуль

  2. Дисплей

  3. Клавиатуры

  4. Аудио

  5. Флеш память

  6. Светодиодная индикация

  7. Модуль заряда (и USB)

Каждый модуль я старался сделать законченным, чтобы он работал от 5 или 3 вольт, но не везде это получилось, а где-то и не нужно было. Поэтому где можно вставлял регулятор, но конвертер уровней из 3 в 5 забыл поставить, но это я только сейчас понимаю, когда стал делать следующий проект.

Главный модуль

Принципиальная схема главного модуля
Принципиальная схема главного модуля

На этом модуле располагается ATmega32u4 в LQFP корпусе, потому что мне так проще его паять, не QFN. Все модули очень простые и этот не исключение, здесь по сути регулятор напряжения, кварц на 16 МГц и светодиод по питанию. Хотел добавить вывод для программатора, но решил, что программировать его буду с помощью беспаячной макетной платы, потому что все нужные выводы будут выведены.

Основная сложность была понять какие выводы оставить на гребенке, но это легко решилось, подсмотрев в принципиальную схему Arduboy. Другая сложность была, что нужна большая и длинная беспаечная макетная плата, но это дело поправимое.

Дисплей

Принципиальная схема модуля дисплея V2, т.е. SSD1309
Принципиальная схема модуля дисплея V2, т.е. SSD1309
Если вставить дисплей 1.3 дюйма в стенд, то он тоже заработает
Если вставить дисплей 1.3 дюйма в стенд, то он тоже заработает

А вот тут началось самое интересное. Я хотел добавить чего-то своего и добавил вместо 1.3 дюймового дисплея, 1.54 дюймовый. Но сначала я сделал модуль с дисплеем на 1.3 дюйма, который завелся без проблем и если сейчас его поставить на место 1.54 дюймового, то он будет исправно работать, т.е. он совместим.

И после того, как я протестировал 1.3 дюймовый дисплей и стал делать 1.54 дюймовый, то столкнулся с тем, что схем в сети очень мало, практически нет, поэтому первый вариант такого модуля у меня не заработал. Вскоре нашел ошибку, надо было подать питание на VCC, тогда как по даташиту на 1.3 дюймовом не надо было.

Экранчик ожил, но светил очень тускло, не понятно что было делать, но решение осталось одно, читать даташит и по даташиту было очевидно, что на VCC можно падать напряжение побольше, вплоть до 15В, поэтому решено было поставить повышатель напряжения (Step-Up DC-DC) на микросхеме MT3608.

Экспериментально, с помощью лабораторного блока питания, выяснил, что с 8В неплохо светит и задал напряжение на дисплей 7.8В.

Но как вы могли понять, 1.54 дюймовы дисплей является не родным для Arduboy, поэтому пришлось еще повозиться, чтобы заставить его работать правильно, но про это я распишу в программной части. Скажу больше, 1.3 дюймовый экран это SSD1306, а 1.54 дюймовый — SSD1309, даже исходя из этого можно понять, что может что-то пойти не так.

Клавиатуры

Принципиальная схема клавиатуры
Принципиальная схема клавиатуры

В принципиальной схеме, все говорит само за себя: много кнопок, которые замыкаются на землю.

Единственное, что важно это то, что я решил попробовать новые для себя — квадратные бесшумные силиконовые SMD кнопки. Эти кнопки очень часто где встречают и они есть в устройствах из списка вдохновений, который я писал выше. Они и правда очень удобные, но кажется, после того как плотно поиграл в приставку, начали отваливаться (иногда не срабатывали нажатия в игре Arduventure), поэтому в следующей раз попробую еще что-то другое, есть идеи.

Аудио

Принципиальная схема модуля на 8002A
Принципиальная схема модуля на 8002A

Звуковой динамик — это следующее после дисплея, что я принципиально нового добавил в Arduboy. Но сначала я сделал простую пищалку, но мне хотелось изменять громкость с помощью колесика и громкость у пищалки изменялась, но не линейно. Поэтому в какой-то момент задумался, а можно заменить пищалку на динамик? И оказалось, что очень даже можно, все работает и звук издает очень похожий, может быть даже лучше. Ключевой момент, использовать для этих целей усилитель, я быстренько нашел 8002A, он очень простой, моно, максимум на 3Вт, но больше всего мне понравилось, что если подать звуковой сигнал через делитель (колесико) на вход, то получается регулировать громкость равномерно.

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

Флеш память

Принципиальная схема модуля флеш памяти
Принципиальная схема модуля флеш памяти

В оригинальном Arduboy не было флеш памяти, они её добавили в Arduboy FX. На ней хранятся все игры, поэтому добавить её надо было обязательно. Схема принципиальная достаточно простая, но позже возникла одна проблема, что я припаял микросхему на 8 МБ памяти, а многие готовые сборки рассчитаны на 16 МБ, поэтому пришлось выпаивать, но эта не сильная проблема, т.к. микросхемы на 16 МБ у меня уже были.

Светодиодная индикация

Принципиальная схема модуля световой индикации
Принципиальная схема модуля световой индикации

В оригинальной схеме есть индикационные светодиоды и я захотел их тоже добавить. Было предположение, когда я тестировал это еще на SlimBoy, что они загораются не одновременно, а поочередно, поэтому и подумал, а может быть объединить их в один? Посмотрел, что они управляются низким сигналом и взял светодиод с общим анодом, в который может светить красным, зеленым или синим. То, что нужно.

Модуль заряда

Принципиальная схема модуля заряда
Принципиальная схема модуля заряда
На обратной стороне модуля заряда находится USB разъем
На обратной стороне модуля заряда находится USB разъем

Это обычный модуль TP4056 без защит, потому что на самом деле такие защиты не нужны (DW01 и FS8205A), т.к. и без них он не перезаряжает (FS8205A отключает заряд при 4.25В, а TP4056 заряжает до 4.2В). Возможно только отключение при низком заряде (DW01), но этот случай не критичен, т.к. есть выключатель и если даже его не выключить, то ничего серьезного не должно произойти. (Поправьте меня, если я тут ошибаюсь, но вроде не должен.)

В схеме еще стоит МОП-транзистор, с помощью которого автоматически выбирается питание от USB, если устройство к нему подключено, либо от аккумулятора.

Здесь еще есть разъем USB, поэтому логично сделать так, что этот модуль содержал выводу к сигнальным линиям D-, D+.

Единственное, что я забыл добавить сюда, это выключатель питания, думал, что не нужен, а оказалось, что тестировать плату было бы очень удобно. Выключаешь питание, поменял модуль какой-нибудь, включил питания. Но вместо выключения и включения, я просто перетыкаю, тоже работает.

❯ Первое тестирование: плюсы и минусы модулей

Каждый модуль я тестировал последовательно. Обычно на Arduino Nano, с её логическими уровнями в 5В и даже не заметил, что где-то 5В могли сыграть плохо со мной.

В итоге, я зашил Arduboy на основной модуль и подключать другие модули по одному и смотрел, все ли работает. Поэтому тестирование было достаточно простое, мало приходилось программировать или писать свое. Но без этого не обошлось, например, пришлось на тестировании модуля дисплея, т.к. он у меня не с первой попытки завелся.

Еще я превратил в кирпич один ATmega32u4, потому что когда зашивал загрузчик, то не довел дело до конца, т.к. программатор у меня работал на 3В с перебоями, надо было на 5В. Т.е. я не зашил до конца загрузчик, продолжил дальше заливать другие прошивки и оно превратилось в кирпич. Главная тут мысль, доводить логическую операцию до конца, а потом переходить к следующей. Это даже где-то в документации написано, может на проекте Homemade Arduboy, про этот проект поговорим в программной части.

Что же хочется добавить, что от разработки модулей я остался в полном восторге. Почти сразу что-то не работало и надо было переделывать, что-то просто тестировал и правил. Например, 1.54 дюймовый экранчик не работал с первой попытки, со второй заработал, но светил тускло, а только с третьей все было как надо. Или, на линии D-, D+ не были поставлены 22 Ом резисторы, из-за чего USB не работал. Или, пищалка оказалось проблемной и пришлось менять все на динамик с аудио-усилителем. В принципе, не так уж много проблем, но такой подход дал мне уверенность, что если я закажу плату, то она будет работать. И мне кажется такая уверенность и есть то, что появляется с опытом, к чему стоит стремиться, а не полагаться на случайность. В данном случае, случайность была сведена к минимуму.

Фото дефекта с пикселями. Если приблизить поближе, то видно, что яркость отличается
Фото дефекта с пикселями. Если приблизить поближе, то видно, что яркость отличается

Но после того, как я собрал приставку и пристально играл в нее, то стала очевидна одна мысль — модули не панацея. И в основном это из-за того, как я тестировал. Тестировал я до того момента как все заработает правильно: появилось яркое изображение на дисплее — значит работает. Но оказалось, что в том же дисплее были дефекты, т.к. потом я заметил, что некоторые пиксели светят ярче. Мог бы я обнаружить этот момент на этапе тестирования модулей? Да, мог, но это надо было делать более взвешенное и продуманное тестирование.

Или другой момент, я забыл добавить в схему защиту по ESD (от статики) и предохранитель по питанию, а все потому, что и без них все работало. Другими словами, модули не заменяют опыт и не решают те проблемы, которые не обозначены в тестировании.

❯ Печатная плата

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

Когда все модули были протестированы и Arduboy благополучно запустился, я перенес их все на одну принципиальную схему. Все прошло очень гладко, т.к. все выводы были подписаны. И эту принципиальную схему я привел в самом начале. Поэтому осталось её развести и заказать.

Первую разводку я сделал на глаз и все было хорошо, но меня напрягал шлейф от дисплея, что он бы выпирал. Поэтому начал все заново и подтянул разъем FPC почти к самому верху. И вроде стало все хорошо.

Другой момент, не знаю на сколько это плохо, но трассировку я сделал автоматом, потому что не вижу принципиальной разницы делать её руками, т.к. это не самодельная печатная плата и все переходные отверстия (vias) поставятся сами.

И последнее, это название, мне хотелось что-то запоминающее, похожее на то, что есть и при этом по нему можно было бы найти мой проект. Поспрашивал чат ботов и пришел к названию Arduboy WOW, чтобы напоминало Arduboy FX.

Фото печатных плат
Фото печатных плат
Обратная сторона, можете видеть как высоко находится разъем для дисплея
Обратная сторона, можете видеть как высоко находится разъем для дисплея

Это первая серьезная плата, которую я заказывал, но у меня уже был такой опыт, поэтому я знал, что лучше все уместить плату в квадрат 100х100 мм. Это потому, что если получалось больше, то становилось дороже. Но при этом я знал, что если разместить несколько плат на один квадрат, то они будут стоит все как одна, т.е. достанутся бесплатно, поэтому я развел плату приблизительно в размерах 100х50 и уместил их две на лист. Заказал 10 штук по 100х100 мм, потому что 5 штук и 10 штук цена одинаковая и получилось аж 20 штук плат. Не знаю, что с ними теперь делать, но смекалку я старался использовать по максимуму. Тот же алгоритм работает с JLCPCB или PCBWay.

Заказ благополучно дошел за месяц. Я очень ждал эту плату и хотел её уже спаять. Должно было все получится сразу, из-за хорошего тестирования, но не до конца в этом был уверен.

Если эти перегородки не убрать, то припой будет слипаться на разъеме FPC24, если паяльная маска слетит, что вызовет кучу проблем с пайкой
Если эти перегородки не убрать, то припой будет слипаться на разъеме FPC24, если паяльная маска слетит, что вызовет кучу проблем с пайкой

В итоге, я все спаял и застрял, может быть на полчаса-час, на разъеме FPC, т.е. разъем к которому крепится дисплей, который у меня припаялся не правильно. Здесь на самом деле интересная мысль, если вы посмотрите на разводку, то увидите как контакты рядом соединяются вплотную, если снять паяльную маску, а она у меня снялась от флюса, когда я перепаивал разъем, то контакты будут слипаться и очень тяжело визуально понять правильно припаяно все или нет. В общем, это из-за автоматической разводки, хотя и руками я сделал бы также, но нужно сделать было так, что площадки, куда припаивается ножки разъема не соприкасались с друг другом, а соединялись чуть подальше. Не знаю, понятно это объяснил, но посмотрите на картинку. На само деле, если паяльную маску не снять, то все должно быть нормально.

Домучал этот разъем и приставка запустилась!

В разборе, сверху
В разборе, сверху
В разборе, снизу
В разборе, снизу

❯ Корпус

Фото верха и низа из FreeCAD
Фото верха и низа из FreeCAD

Если честно, мне очень нравится как приставка выглядит без корпуса, поэтому хотел сделать ей прозрачный корпус. Хотя сначала распечатал оранжевый. Получилось не совсем прозрачно, но в целом хорошо.

С точки зрения корпуса, все очень просто, он печатается на 3D-принтере, толщина стенок 1 мм из-за того, что бы можно без проблем дотянуться до переключателя питания. Конструкция очень простая: верх и низ. Соединяются винтами напрямую, без вплавляемых гаек, также как в приставке с CYD.

❯ Софт

Про софт можно было написать и раньше, в разделе по тестированию, но мне захотелось, чтобы все было в одном месте.

По началу я гадал как установить Arduboy с кучей игр, но оказалось все очень просто. Устанавливаем Arduboy-homemade-package, в Arduino IDE выбираем нужные параметры, после чего зашиваем загрузчик. Все.

Настройки Homemade Arduboy в Arduino IDE
Настройки Homemade Arduboy в Arduino IDE

Но есть нюансы, которые я отметил на скриншоте. Надо выбрать доску Homemade Arduboy, а в ней Arduino Leonardo, Cathy3K (starts with menu), SSD1309, Pin0/D2/Rx, остальное можно оставить.

После чего зашить загрузчик. Здесь важно увидеть надпись, что загрузчик прошился успешно, если этого не произошло, то не двигаться дальше.

Разъем для программатора с подпружинными контактами. Справа пример как он подсоединятся к плате
Разъем для программатора с подпружинными контактами. Справа пример как он подсоединятся к плате

Возможно вы думали, что я закончил с фокусами, но у меня еще остался один и для прошивания загрузчика мне захотелось попробовать использовать подпружинные контакты, их еще называют Pogo Pins. Работают очень просто, контакты прижимаются к сигнальным площадками и так как они подпружиненные, то образуется хороший контакт и так можно прошивать платы, не припаивая гребенку.

Программы на флеш карту загружаются через Arduboy Toolset
Программы на флеш карту загружаются через Arduboy Toolset

Теперь осталось загрузить библиотеку игр на флеш память. Это делается через другой проект, он называется arduboy_toolset. Если все получилось правильно, то при подсоединении приставки к компьютера arduboy_toolset напишет, что её увидел. Надо выбрать вкладку Flashcard и отметить галочку Patch for screen SSD1309.

А игры берутся с официального сайта с прошивками. Их еще называют cart, скорее всего сокращение от картридж.

В моем случае надо выбрать cart для Arduboy FX.

Где-то 3-5 минут и на флешке будут установленны все игры. После чего можно спокойно играть в приставку.

❯ Обзор Arduboy WOW

Про разработку я уже написал, но все же стоит рассказать немного про саму приставку, после того как я её собрал и стал пользоваться.

Arduventure, та игра, где у меня пропускали нажатие кнопки
Arduventure, та игра, где у меня пропускали нажатие кнопки

Она получилась очень удобная, приятная на ощупь, по сравнению с моими прошлыми самоделками. Клавиши отличные, вот только, когда я играл в Arduventure у меня клавиша B начала пропускать нажатия, поэтому возможно клавиши не совсем идеальные или с игрой проблемы.

Очень хорошо, что решил использовать дисплей побольше и на самом деле, он идеально ложиться в размер 100х50, больше, возможно уже не влез и не нужен. Но вылезла одна особенность, только когда начал играть в приставку. Это то, что пиксели не равномерно зажигаются. Про это уже выше про экран писал. Мне кажется это в том, что используется матрица светодиодов и они зажигаются по строчкам. Это предположение и оно скорее всего верно, поэтому с этим ничего не поделать. Но проблема вылезла потому что, я держу приставку очень близко к лицу, а так это слабо видно.

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

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

Можно еще добавить, что корпус получился хлипкий, если его сжать по краям, то прогибается. Но корпус, как по мне, проще всего исправить, да обычно я и не жму корпус ко краям. Но проблема есть, можно поправить.

И самое главное — это игры!

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

Пока мои любимые, которые успел попробовать: Castle Boy и Arduventure.

Видеообзор

Возможно вам будет интересно посмотреть видео как работают игры на приставке, чем смотреть статические картинки без звука. А вот и оно:

Castle Boy

Castle Boy, заглавный экран
Castle Boy, заглавный экран
Caslte Boy, первый уровень
Caslte Boy, первый уровень
Castle Boy, титры
Castle Boy, титры

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

Посмотрел сколько весит бинарный файл игры и он весит 33 КБ, т.е. еще чуть-чуть и памяти не хватит. Если знать как играть, игра проходится может быть за 5-10 минут. В игре всего три уровня и хочу сказать, что это получается почти максимум, что влезает в приставку, если делать красочный платформер.

Поиграть на симуляторе можно тут. Если у вас нет приставки и вы хотите посмотреть, что от нее можно ожидать. Хотя, я на симуляторе ни разу не играл, мне казалось, что это отпугнет меня от создания приставки.

Arduventure

Arduventure, загрузочный экран
Arduventure, загрузочный экран
Arduventure, в пещере
Arduventure, в пещере
Arduventure, экран битвы
Arduventure, экран битвы
Arduventure, знак победы
Arduventure, знак победы

Arduventure, как понимаю, похожа на Pokemon, в который я не играл. Игра очень красивая, ощущается приятно, т.к. камера плавно движется за персонажем, но с точки зрения игрового процесса, это конечно тяжко. Тяжко в том смысле, что сложность искусственно завысили, потому что нужно прокачиваться на монстрах, чтобы набрать уровни, чтобы в итоге победить босса. Очень монотонно и никакой истории, сюжета, здесь нет. Странное, конечно, приключение, но как технодемка очень круто.

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

Поиграть в игру можно тут.

Catacombs Of the Dammned

Как пример, еще игра Catacombs Of the Dammned
Как пример, еще игра Catacombs Of the Dammned

Еще есть такие игры как Catacombs Of the Dammned, где ты ходишь от третьего лица. Очень эффектно, но быстро надоедает.

Поиграть в игру можно тут.

❯ Выводы

Хотя в начале статьи я заявил, что достиг своей цели и сделал полноценную приставку самостоятельно по всем правилам технологий, но проходит время и видно, что можно многое исправить или улучшить.

Давайте я повторюсь и приведу здесь все места, где произошли проблемы:

  • В первой печатной плате, которую я заказал, не было защиты от статики и не было предохранителя.

  • Странные дефекты на экране, когда пиксели светят не ровно, но возможно это нельзя исправить, но попробовать можно.

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

  • Переключатель питания почти быстро вышел из строя, пришлось перепаивать.

  • Когда разводил плату, линии D-, D+ не сделал парными и не разводил их близко друг к другу.

  • Динамик находится рядом со шлейфом дисплея, могут быть наводки, хоть я их и не услышал.

  • Были проблемы из-за странной разводки разъема подключения дисплея, FPC.

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

Но не смотря на это, это действительно законченное устройство, которое не ощущается как колхоз, кроме, правда, корпуса на 3D-принтере. Почти тоже самое, что и оригинальный Arduboy, но с заметными и качественными улучшениями:

  • Большой дисплей, который можно было выбрать еще больше при желании, но на самом деле в этом нет необходимости.

  • Динамик с ручной регулировкой звука.

  • Хорошие кнопки и с другим расположением (спорное, но в то же время интересное улучшение).

  • Большой аккумулятор (спорное улучшение, но оно есть).

  • Кому-то, как и мне, может понравится горизонтальный форм фактор.

А все остальное, что не касается моих улучшений, это обычный Arduboy и его можно сильно не защищать, т.к. он и так хорош, со своими играми, сообществом и платформой.

❯ Заключение

У меня была одна мысль, сделать приставку и начать её продавать, но все оказалось значительно сложнее. Для успешных продаж, нужно сделать продукт не только качественным, но чтобы он еще был востребован. Arduboy очень нишевый и , конечно, на данном этапе у меня не получилось превзойти его по качеству, хотя я старался, чтобы приблизиться к такой цели.

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

А другим важным этапом является необходимость делиться наработками или опытом, поэтому все исходники проекта я разместил в общем доступе в репозитории, arduboy-wow. Готовых проектов на Arduboy в открытом доступе хоть и полно, но более менее сложных не так много, поэтому надеюсь мой проект вам будет полезен. (Если задумаетесь повторять, то я заказывал ревизию V1 и она работает, а ревизия V2, исправленная, еще не заказывал и пока не планирую.)

Я верно продолжаю вести свою группу Планета M039 в ВК, заходите или присоединяйтесь, там я иногда выкладываю то, что мне кажется интересным — может вы что-то для себя найдете. Дальше в планах сосредоточиться на создании DIY приставок, а может быть и других DIY устройств.

Может быть интересно:
Перейти ↩

Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале 

Комментарии (2)


  1. JerryI
    20.06.2026 19:02

    Великолепно! Пишите больше :)


    1. m039 Автор
      20.06.2026 19:02

      Спасибо! Есть пара идей устройств в похожем формате, где разработка идет через модули, про которые в плане написать статьи. Постараюсь не подвести :)