Skip to main content

Блог инженера

Блог о минимализме, инжинерии и программировании.



Современные консоли для разработчиков

  | #blog,#DIY

Или консоли, не только чтобы поиграть. Для этого типа игровых консолей не существует сложившегося названия. Они довольно специфичны, а потому мало распространены. Но я ими интересуюсь и владею некоторыми из них, поэтому могу сделать обзор. Все эти консоли похожи одним, они сделаны на основе Arduino, ESP32 или другой платы контроллера. Размещены в корпус игровой консоли. Но, как правило, их можно использовать не только для игр, т.к. на них выведены наружу GPIO порты. Их можно использовать как типичный контроллер, управляющий освещением, считывающий показания датчиков и т.п. но с экраном, батареей и органами управления. Это очень удобно для любительских проектов, поэтому такие консоли хорошо подходят для занятий с детьми.

Arduboy

Arduboy

Моя любимая консоль из этого списка. Сделана на основе микроконтроллера ATmega32u4, фактически, Arduino Leonardo. Это самая компактная консоль. Автор изначально делал визитку на которой можно играть в Tetris. Но потом это переросло в одну из самых популярных консолей для разработчика. За маленький размер приходится платить нерасширяемостью. В отличие от большинства проектов здесь не выведены наружу GPIO порты и не получится приспособить консоль ни для чего, кроме игр. Но у проекта сложилось сообщество разработчиков и учиться на нём программированию через игры - одно удовольствие.

  • Цена: 29$ одна из самых низких среди аналогов.
  • Проект доступен, то есть работает сайт, консоль можно купить на момент публикации. Появляются новые игры, хоть и реже, чем раньше.

Конфигурация:

  • Контроллер - ATmega32u4. Аналог - Arduino Leonardo.
  • Объём памяти: 32 кб постоянной прошиваемой памяти, 2,5 кб ОЗУ, 1 кб EPROM (тоже постоянная память, но в неё можно записывать данные).
  • Звук - простой бипер.
  • Разъём microUSB
  • Экран - монохромный OLED 128x64.
  • Управление - крестовина и две кнопки.
  • GPIO выходы отсутствуют.
  • Модификации - Arduboy FX. Он расширен специальным чипом, который позволяет обновлять прошивки без подключения к компьютеру. Это вместо microSD карты памяти, которой оборудованы другие проекты. FX модуль можно купить отдельно, в качестве апгрейда для старого Arduboy

Arduboy предельно минималистичен. Монохромный экран низкого разрешения, крестовина и две кнопки. Отсутствуют даже привычные по другим консолям кнопки Start/Select. Корпус устройства размером с пластиковую карту и немногим толще её, так что прекрасно помещается в любой карман. Другое преимущество корпуса - он прекрасно защищает плату от механических воздействий, так что никаких дополнительных чехлов не требуется. Звук издаёт бипер. Это единственная консоль для разработчика без карты памяти, так что для прошивки каждой программы её нужно подключать к компьютеру или мобильному телефону. Для этого есть клиент для Android. К сожалению, иногда загрузчик повреждается, тогда его нужно восстанавливать и не всегда это просто сделать.

На сайте проекта есть довольно активное сообщество разработчиков, толковые руководства. Программировать для консоли можно в Arduino IDE. Оттуда же можно прошивать готовые игры. Есть несколько утилит, которыми тоже можно прошивать игры для консоли. За счёт предельной минималистичности и неплохой библиотеки для разработки игр под консоль - я считаю её идеальной консолью для обучения программированию. Почти все игры имеют открытый исходный код, так что при желании научиться можно быстро.

Gamebuino META

Gamebuino

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

  • Цена - 99 евро.
  • Проект завершён, распродаются остатки консолей, сайт доступен и нет сведений, когда и как он будет закрыт.

Конфигурация

  • Контроллер - ATSAMD21, 32bit ARM Cortex M0.
  • Постоянная память - 256 кб, оперативная память - 32 кб. Аналог Arduino Zero. Есть разъём microSD карты памяти.
  • Экран - 1,8 дюйма, 80x64 при 16-битном цвете или 160x128 при индексированном 16-цветном режиме. Регулируемая подсветка цветными светодиодами.
  • Батарея - 900 миллиампер*час.
  • Разъём - microUSB.
  • Звук - 10-битный DAC, усилитель класса D. Есть 3,5 мм аудиовыход.
  • Органы управления - крестовина, две кнопки действия, кнопки Home и Menu.
  • GPIO выходы имеются, аналогично Arduino Zero. Гребёнка совместима с платами Arduino Shield.

Проект был интересным, создатель собрал деньги на Kickstarter и успешно выпустил устройство Gamebuino в нескольких модификациях. Я заказал его на Kickstarter получил не прошитым, прошил сам, но мне консоль не понравилась. Я предпочёл Arduboy. Потом создатели выпустили Gamebuino Meta, получилась довольно мощная консоль, но достаточно простая в программировании. Программы можно писать в Arduino IDE используя собственную библиотеку.

Устройство явно играет на ностальгии, корпус сделан “под дерево”. Оно довольно крупное, но всё же вполне помещается в карман брюк. Вокруг устройства сложилось достаточно активное сообщество. Жаль, что жизненный цикл устройства закончился.

ODROID-GO

Эту консоль выпустил производитель одноплатных компьютеров из Южной Кореи Hardkernel на своё десятилетие. С точки зрения соотношения возможности/цена я считаю - это лучший выбор. Устройство в основном используется для эмуляции консолей первых поколений и делает это хорошо. Но никто не мешает разрабатывать для него свои игры и программы.

К сожалению, вокруг устройства практически отсутствует сообщество. А то, что есть в основном выпускает эмуляторы и порты игр. То есть будет меньше примеров кода игр и программ для устройства. Но производитель предлагает хороший набор уроков для программирования на устройстве. Программы можно писать в Arduino IDE или ESP-IDF (Espressif IoT Development Framework). Также можно программировать на MicroPython.

  • Цена - 32 доллара.
  • Устройства по-прежнему продаются, хотя уже вышло следующее поколение консолей ODROID-Advance.

Конфигурация

  • Контроллер - Custom ESP32-WROWER.
  • Постоянная память - 16 Мб, прошиваемая память PSRAM - 4 Мб, оперативная память - 520 кб, есть разъём для microSD карты памяти.
  • Экран - LCD 320x230, 2,4 дюйма.
  • Батарея - 1200 миллиампер*час.
  • Разъём - microUSB.
  • Звук - DAC через I2S, моноусилитель класса D, динамик 0,5 Вт. Управление громкостью - цифровое.
  • Органы управления - крестовина, две кнопки действия и четыре настраиваемые кнопки.
  • GPIO выводы имеются, но “гребёнка” несовместима с платами Arduino Shield. Выведено 10 разъёмов GPIO (I2C, I2S, GPIO). Расширять консоль можно при помощи проводов для макетных плат. Производитель предлагает несколько модулей, которые можно подключать непосредственно.
  • Беспроводные интерфейсы - Bluetooth 4.2, WiFi - 802.11 b/g/n 2.4 GHz (всё как у ESP32).

Из коробки” консоль эмалирует Game Boy, Game Boy Color, Game Gear, Nintendo Entertainment System, Sega Master System. Есть отдельные эмуляторы для Commodore 64, Atari 2600, Atari 7800, ZX Spectrum 48 и MSX. При этом каждый из сторонних эмуляторов нужно прошивать заново с карты памяти. Также для устройства есть проект Retro-ESP32, который содержит все эмуляторы перечисленные выше и дополнительно Sega Game Gear, Colecovision, Atari Lynx и PC Engine. К сожалению, в эмуляции ZX Spectrum что-то поломано, но Retro-ESP32 самая удобная прошивка с эмуляторами.

Также на консоль портировано довольно много игр, включая Doom и Wolfenstein.

Pokitto DIY Game Console

Pokitto

Довольно интересный проект. У меня нет этой консоли и все характеристики привожу как они указаны на сайте проекта.

  • Цена - 49,9 Евро.
  • Проект активен, консоли продаются и имеет довольно активное сообщество. Но, на мой взгляд - оно не такое активное как сообщество Arduboy или даже Gamebuino. Но устройство имеет режимы совместимости с Gamebuino и Arduboy поэтому количество игр для него - максимальное.

Конфигурация

  • Контроллер - похоже, устройство построено не на базе Arduino/ESP32 микроконтроллера. Процессор - NXP ARM Cortex-M0+ с частотой 48 МГц.
  • Постоянная память - 256 кб, оперативная память - 36 кб, прошиваемая память EEPROM - 4 кб.
  • Экран - TFT 2 дюйма. Максимальное разрешение - 220×176 пикселей. 110x88 для быстрой графики, 128x64 для эмуляции Arduboy, 84x48 для эмуляции Gamebuino.
  • Батарея - 600 миллиампер*час.
  • Звук - два аудиотракта, 8-битный DAC и 8-битный PWM. Неизвестный усилитель. Динамик неизвестной мощности и аудиоразъем 3,5 мм. Управление громкостью - цифровое.
  • Органы управления - крестовина, три кнопки - A, B, C.
  • GPIO - выходы на двухрядную колодку, 18 портов (I2C, SPI, GPIO, аналоговые выходы, аудио).

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

Adafruit PyGamer / Adafruit PyBadge

PyGamer

Я оставил описание под конец, т.к. у магазина Adafruit параноидальная политика безопасности. Она настолько параноидальная, что даже страницы продуктов недоступны из России без VPN. Они не доставляют посылки до складов пересыльщиков вроде Бандерольки. Я когда-то смог сделать заказ из магазина в США, но даже тогда мне пришлось отправить им своё селфи с картой и паспортом. Не думаю, что хороший ассортимент магазина стоит огромных трудностей с покупкой.

Однако, сама консоль имеет очень приличные возможности за свою довольно небольшую цену. Если найти его за хорошую цену на ebay/Авито, то это был бы интересный вариант. К сожалению, перекупы задирают цену.

  • Цена - 39,95 доллара в магазине Adafruit, где устройство не купить из России и от 60 Евро у перекупов на ebay.
  • Проект активен, консоли продаются и имеет довольно активное сообщество. Это не сообщество вокруг самой консоли, а сообщество проекта PyGamer.

Конфигурация

  • Контроллер - устройство построено на базе контроллера CircuitPython, которые бывают очень разными. Процессор - ATSAMD51J19 с частотой 120 МГц.
  • Постоянная память - 512 кб, оперативная память - 192 кб. Дополнительно доступно 4 Мб памяти QSPI (Quick SPI) для хранения графики, звука, спрайтов и прочего. По сравнению с хранением данных на карте microSD, QSPI это очень быстрая память.
  • Экран - TFT 1,8 дюйма, разрешением 160x128. Регулируемая подстветка. Особенность экрана - он имеет прямой доступ к памяти, поэтому можно ожидать очень быстрой отрисовки графики. Также есть 5 LCD NeoPixel. Как я понимаю, не для подсветки а для отображения статуса в играх.
  • Батарея - 350 миллиампер*час. Вообще, заявлено, что можно использовать любую литий-полимерную батарею, просто комплектная входит в корпус устройства. На комплектной батарее производитель обещает до 5 часов игры.
  • Звук - судя по описанию в комплекте нет собственного динамика, нужно использовать наушники. Но есть JST разъём для подключения 4-8-омных динамиков мощностью до 2 Вт. Консоль автоматически переводит звук на динамик, если он подключен. Усилитель звука монофонический, класса D.
  • Органы управления - аналоговый стик, четыре кнопки действия. Две предназначены для управления меню и две кнопки действия, но их наверняка можно переназначать как угодно. Кроме того, есть 3-осевой акселерометр, который может определять постукивания и падения (а это зачем?). Есть датчик освещённости.
  • GPIO выходы - Feather-совместимые. Feather - удобный формат разъёма, только платы расширения для него тоже продаются на Adafruit и совершенно не распространены в России. Впрочем, есть также разъёмы Grove, они мало распространены, но сенсоры и другие устройстве с Grove можно купить на Алиэкспресс, например.

Устройство можно программировать на MakeCode Arcade и CircuitPython. Я ничего не знаю про первую среду, но CircuitPython имеет довольно неплохое сообщество разработчиков. Также в обзоре сообщили, что есть библиотека для совместимости с Arduboy и Gamebuino.

PyBadge - устройство в целом аналогичное PyGamer, но имеет меньше памяти и крестовину вместо аналогового стика. Похоже, это устройство уже не производится, но его ещё можно купить на ebay.

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

Другие консоли для разработчика

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

  • Playdate. Консоль ещё не выпущена.
  • ESP32 game console Kit. Это ODROID-GO в другом форм-факторе. Мне оригинальный ODROID-Go нравиться больше.
  • Micro:Gamer. Это не самостоятельный проект, а консоль для подключения микроконтроллера micro:bit. Micro:bit - это интересный проект. У консоли монохромный экран - 128x64 и питание от двух AA батареек. Так как экран полностью аналогичен Arduboy, возможно, эти проекты могут быть полностью совместимыми. Пока я не нашёл информации, что кто-то адаптировал библиотеку Arduboy для совместимости между устройствами.
  • MAKERbuino. Это консоль Gamebuino первого поколения, не Gamebuino Meta для самостоятельной сборки, включая пайку. Я собрал такой проект, но это большая и неудобная консоль. Когда я сравнил Arduboy и MAKERBuiono, то просто сразу выставил второй на продажу.
  • Gamemaker. Я не нашёл значимых отличий между MAKERBuino и этой консолью.
  • Retro ESP32. Компактная консоль на основе ESP32, частично совместимая с ODROID-Go. Это интересная консоль. И на ней работает проект ESP32-Retro, который я рекомендовал в разделе про ODROID-Go. Устройство стоит чуть дороже ODROID-Go и имеет на две кнопки действия меньше. Но оно имеет форм-фактор Gameboy Pocket и его даже можно разместить в корпус для Gameboy Pocket. Я никогда не имел Gameboy Pocket, но многие люди отзывались, что это был лучший форм-фактор для консоли. Я видел обзоры, где сообщают, что в устройство можно вставлять картриджи Gameboy, это не так. В картридж размещается батарея, это выглядит это очень здорово. Минус один, поставщик не отправляет устройства в Россию. Но можно заказать через сервис доставки товаров из США.
  • µGame. Очень миниатюрная консоль программы для которой можно писать на питоне. Я купил эту консоль когда она ещё не была совместима с CircuitPython, программы были медленными, а памяти мало. С тех пор объём памяти не увеличился, но на консоль был портирован CircuitPython отчего она стала в пять раз быстрее. Теперь это достаточно интересный проект.
  • CircuitPython PewPew M4 Kit. Устройство выглядит интересно и цена одна из самых низких. Кроме того, устройство питается от двух АА батареек. Экран TFT 128x160 с диагональю 1,8 дюйма. Отзыв всего один и плохой. Думаю, устройство могло бы быть доступной альтернативой Adafruit PyGamer/PyBage. В репозитории находится почти десяток игр, но по активности ясно, что он не имеет поддержки сообщества.
  • Dodo - 6502. Это курьёзно дорогое устройство для консолей разработчика. Оно стоит 199 долларов. С другой стороны, цена объяснима. Все остальные консоли построены на базе готовых дешёвых контроллеров Arduino, ESP32 или ARM Cortex. Dodo построен на настоящем процессоре 65C02, на котором работали многие компьютеры первых поколений. И характеристики устройства типичны для тех компьютеров. 64 кб памяти, экран разрешением 128x64. Проект не имеет поддержки сообщества разработчиков. На нём реализованы 3 игры и нет возможностей расширения GPIO. Это единственная консоль для которой можно писать программы на ассемблере, но даже ностальгирующие программисты не впечатлилась этим.

Linux - консоли

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

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

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

About Mikhail Kiselev

Photo of Mikhail Kiselev

Приветствую в моём блоге! 😄 Меня зовут Михаил. Я инженер и программист. Живу в Сибири, работаю на Сахалине, путешествую где придётся. Я предпочитаю пост в блог посту в твиттер. Описание полезной технологии или гаджета предпочитаю описанию заката или посиделок в кафе.