Например TDA7294

РадиоКот >Конкурсы >Поздравь Кота по-человечески 2019! >

Теги статьи: Добавить тег

"Ледышка"

Автор: bifurkas
Опубликовано 23.09.2019
Создано при помощи КотоРед.
Участник Конкурса "Поздравь Кота по-человечески 2019"

     Началось всё с того, что у дочки сломалась вторая по счёту китайская портативная игровая консоль. Слетела прошивка. Мои попытки найти подходящую прошивку и залить в сдохшую тушку не увенчались успехом, и я решил создать своё собственное портативное игровое устройство для эмуляции ретро-игр, которое при случае и отремонтировать/перепрошить будет не сложно. Ну и, честно говоря, давно хотелось поиграться с такой интересной вещью, как микрокомпьютер Raspberry PI, да вот всё повода не было.

     Надо сказать, что проектов подобного рода в Сети достаточно, но все они мне, при близком изучении, чем-то не понравились. Одни собирались в корпусе вышедшей из строя консоли и все элементы «прислюнивались» по-месту с помощью термоклея. Не красиво. В других использовались экраны с разъёмом HDMI, что увеличивало габариты консоли и её стоимость. В третьих звук выводился на динамики по протоколу I2S с использованием внешних аудио ЦАП (в Raspberry Pi Zero W, планируемого в использовании в приставке, нет отдельного выхода звука).В четвёртых… Взяв от разных проектов что-то полезное, получилась весьма удобная, простая и красивая портативная консоль для ретро-игр. Кроме того, её можно использовать как игровую приставку для телевизора с подключением по HDMI и подсоединением нескольких USB джойстиков. С лёгкой руки дочки приставку назвали «Ледышка».

     Габариты приставки 140х70х16мм

     Схемотехника приставки выглядит следующим образом:

     Как видим, ничего сложного.

     «Сердцем» приставки является известный одноплатный микрокомпьютер Raspberry Pi Zero W – так называемая «малина» (так и будем звать дальше) в его самом мелком на данный момент форм-факторе. Характеристики, плюсы и минусы его здесь приводить смысла нет, желающие всегда могут найти гору информации в интернете. Скажу одно – для наших целей эмуляции ретро-игр ресурсов его хватает и габариты радуют. Можно, конечно, использовать и модель без индекса «W», но придётся грузить игры с флэшки т.к. WiFi модуля в нём нет.

     Изображение выводится на LCD экран 3,2“ с интерфейсом ILI9341 с шлейфом 18 pin. Подключается он к разъёму GPIO «малины». Кто-то скажет, что использовать экран с SPI интерфейсом, пусть даже для ретро-игр – не серьёзно. Однако практика – критерий истины. И она показала, что при правильной настройке операционной системы видео в большинстве ретро-игр получается весьма неплохое. Я бы оценил на четыре с плюсом. Под ретро я обычно подразумеваю NES, SNES, SEGA… Внешний вид и распиновка экрана, если кому интересно:

     Для удобства пайки, на плату нанесены две риски и стрелочки, указывающие на край шлейфа дисплея. Мной также проверен экран 2,8“ с интерфейсом ILI9341. В данном проекте работает без каких-либо изменений настроек, но установочные отверстия другие.

     За яркость подсветки экрана отвечает резистор 10ом. Кого не устроит яркость, его сопротивление можно поменять от 3,9 до 20ом.

     HDMI «малины» тоже можно в любой момент задействовать. Например, подключить приставку к телевизору и играть на большом экране.


     Звук. Как я уже говорил, в Raspberry Pi Zero W отсутствует аудио-выход так сказать в явном виде. Звук с этой платы по-умолчанию идёт с HDMI, что для наших целей совсем не подходит, так что два ШИМ-вывода GPIO «малины» сконфигурированы для вывода звука. Использовать стерео звук в портативной консоли – излишество на мой взгляд. Поэтому стереозвук программно микшируется в моно и через один ШИМ-вывод подаётся на моно-усилитель на LM4871 а с него на динамик 0,5Вт 8ом. В качестве последнего я использовал динамик, диаметром 20мм и толщиной 3,8мм, но можно использовать любой подходящий по габаритам, мощности и сопротивлению обмотки.

     Управление: перекрестие джойстика, кнопки A, B, X, Y, L, R, Select, Start реализованы подключением к пинам GPIO «малины». Часть кнопок с использованием токопроводящих «резинок» от приставки Nintendo DS Lite, часть – тактовые кнопки. Для программной реализации джойстика на GPIO «малины» используется пакет Adafruit – Retrogame. При желании к порту microUSB «малины» через переходник можно подключить любой USB джойстик и сконфигурировать его программными средствами.

     В моём варианте питание «Ледышки» производится от LiPo батареи 3.7V, 2500mah габаритом 4х50х80мм. Хватает такой батареи на несколько часов игры. Но можно использовать любую LiPo 3.7V батарею подходящего размера cо встроенной платой защиты.

     Зарядка батареи производится от miniUSB на плате приставки с использованием контроллера зарядки TP4056 в его стандартном варианте включения. Зарядный ток настроен на 1А. Если планируется заряжать приставку от USB порта компьютера, лучше ограничить ток зарядки до 0,5А изменением резистора на второй ноге TP4056. Время зарядки при этом увеличится, разумеется.

     Для контроля разрядки батареи я применил простейшую схему на супервизоре питания MAX809T, подсмотренную где-то на Радиокоте. При снижении напряжения батареи примерно до 3,1В супервизор начинает подавать питание на сигнальный светодиод синего цвета.

     По поводу включения-выключения приставки. Я долго искал в Интернете что-то типа «кнопки выключения Raspberry», но ничего путного не нашёл. Дело в том, что «малине» нельзя во время работы просто взять и обрубить питание. Нужно делать т.н. Shutdown – аналог Завершения работы в Винде. Но пятилетнему ребёнку это не так просто сделать, читая надписи на английском. Ему надо, чтобы было «вкл – выкл», как на выключателе света в туалете. По этому я состряпал простейшую схему задержки выключения питания. Работает она так: при переводе ползункового переключателя Sw в положение ON, на затвор транзистора IRLML6402 подаётся 0 и он открывается, подавая питание на «малину». При этом конденсатор 10мкф в его затворе заряжается практически мгновенно. При переводе в положение OFF на вывод 15 «малины» подаётся сигнал на запуск скрипта программного выключения и убирается 0 с затвора транзистора. Однако благодаря конденсатору в затворе транзистор закрывается не сразу. Время закрытия определяется конденсатором и резистором в затворе и подобрано таким образом, чтобы успели закончиться все процессы в «малине». Работает схема прекрасно. Даже если приставка зависла по каким-то причинам, питание всё равно будет выключено через несколько секунд.

     Конструктивно устройство собрано на двусторонней печатной плате, толщиной 1,5мм с металлизацией отверстий, паяльной маской и шелкографией. Для удобства сборки все номиналы элементов нанесены на поверхности платы.

     О деталях. Все постоянные резисторы, керамические конденсаторы, светодиоды типоразмера 0805. Танталовые конденсаторы – тип В. Транзистор и супервизор питания – SOT-23. Боковые кнопки на всем известной торговой площадке называются G71Y, выключатель питания – SK12D07VG3, кнопки select и start – SMD 2 Pin 3X4 мм, переменный резистор регулировки громкости – B103 10K 14*1mm. Резиновые кнопки, как я уже упоминал, от приставки Nintendo DS Lite.

     Про пайку SMD и DIP компонентов сказать особо нечего – всё стандартно. Перед пайкой переменного резистора и выключателя питания укоротите их выводы так, что бы они не выступали за поверхность платы. LCD экран распаивается в последнюю очередь, дабы лишний раз не тревожить его хлипкий гибкий шлейф. Разумеется, всё желательно промыть С2Н5ОН очень тонким слоем.

     При сборке на «малину» с тыльной стороны наклеивается скотч так, чтобы не закрыть отверстия GPIO, затем «малина» центрируется на плате с помощью двух отверстий, прижимается и припаивается к ней через отверстия GPIO. Тут удобно использовать безотмывочный паяльный флюс, типа ER-700. Только после нанесения желательно прогреть его феном, что бы растворились твёрдые частицы. Крепёжные отверстия в «малине» нужно предварительно рассверлить до диаметра 3мм.

    Полностью спаянная плата выглядит так:

     Корпус «Ледышки» я сделал из органического акрилового стекла. Отфрезеровал на доморощенном фрезерном станке с ЧПУ а потом склеил УФ-клеем (очень удобная вещь!). Получились две половинки корпуса, которые стягиваются пятью винтами М3.

     Но можно сделать хоть из дерева – получится «Деревяшка», или отпечатать на 3D принтере – по аналогии – «3Dпринтяшка». Тут каждый действует в меру своих желаний и возможностей. Файлы раскроя оргстекла в конце статьи, однако предостерегу тех, кто захочет резать оргстекло на лазерном станке. Дело в том, что без специальной термообработки оргстекло после склейки трескается. Я как ни пытался, так путно и не смог склеить заготовки после лазера. Так что фрезер рулит. Кнопки отфрезерованы на том же фрезерном станке, чертежи приложены. Наглядная схема сборки:

     Теперь пора перейти к софту. В «Ледышке» используется ОС Retropie – тут я Америку не открыл, классика жанра. Естественно после определённого допиливания. Эмулирует Retropie много чего. Я про некоторые системы даже не слышал. Наверное, весь процесс настройки оси здесь выкладывать смысла нет, ограничусь лишь перечнем того, что дополнительно сделано:

 1. Драйвер LCD дисплея ILI9341. Как это делается подробно рассказано тут: https://sudomod.com/forum/viewtopic.php?t=2312
 2. Программная реализация джойстика с использованием выводов GPIO «малины»: https://github.com/adafruit/Adafruit-Retrogame
 3. Скрипт отработки завершения работы
 4. Скрипт микширования звука и вывод его посредством ШИМ.
 5. Скрипт развёртывания системы на всё свободное пространство SD–карты при первом запуске.
 6. Разные картинки на заставке и темы в меню.

     Для тех, кто захочет собрать образ сам, есть один очень важный момент с дистрибутивом Retropie. Дело в том, что начиная с версии 4.4 при работе на Raspberry Pi Zero она ощутимо тормозит. Почему так, я не знаю, по этому использую версию 4.3.

     Описанное выше собрано в дистрибутив: https://drive.google.com/open?id=1DZkXtBR1vbBCj0Q8iGNO14jBKc3RwuN0

     Качаем его и записываем на SD-карту размером минимум 4Gb с помощью программы Win32DiskImager или Etcher под Виндой. Про выбор SD карты можно почитать тут: https://elinux.org/RPi_SD_cards

     После первого запуска на «малине» система развернётся на всё свободное пространство SD-карты, что займёт некоторое время и закончится перезагрузкой системы. Пока игры не загружены на SD-карту, доступно только меню настройки системы.

     Для загрузки игр удобно воспользоваться подключением по WiFi, как всё это провернуть подробно рассказано тут: https://github.com/RetroPie/RetroPie-Setup/wiki/Wifi

     Если не желаем связываться с WiFi, или у нас «малина» без индекса W, то берём флэшку с fat32, в главном каталоге создаём папку «retropie» и через переходник втыкаем её в microUSB порт работающей «малины». Ждём, когда флэшка с «малиной» перестанут перемигиваться. Вытаскиваем флэшку из «малины» и втыкаем её в РС, убеждаемся, что в папке «retropie» появилась папка «roms» а в ней папки эмуляторов. Кидаем в эти папки игры и опять втыкаем флэшку в «малину». После окончания перемигивания перезагружаем «малину» - игры появятся в системе. Можно пойти более экзотическим путём. К порту microUSB «малины» через переходник и USB хаб подключить клавиатуру и с любого USB носителя записать игры в папки с соответствующими эмуляторами, используя файловый менеджер на самой приставке.

     В завершении не помешает сказать несколько слов о пользовании приставкой.

     Перевели переключатель Sw в положение ON, экран засветился– пошёл процесс загрузки ОС Retropie с оформлением в стиле Радиокота. Появилось главное меню – выбрали систему – выбрали игру – играем. Громкость регулируем переменным резистором. Выход из игры – select+start. Работают все стандартные «фишки» ОС Retropie, такие как: несколько слотов памяти сохранения и загрузки игр, назначение клавиш джойстика и ещё много чего, о чём я здесь не пишу, но можно почитать в описании к системе: https://retropie.org.uk/docs/

     В любой момент перевели переключатель в положение OFF – пошёл процесс выключения приставки – экран погас. Удобно!

     Приставку можно подключить к телевизору через HDMI кабель и поиграть на большом экране.

     Просто соединяем HDMI кабелем «малину» и телевизор, при этом будет одинаковое изображение и звук как на приставке, так и на телевизоре.

     Можно подключить внешний USB-джойстик к разъёму microUSB «малины» и сконфигурировать его кнопки по своему усмотрению. Через USBхаб можно подключить несколько джойстиков и рубиться в Killer Instinct или вдвоём проходить Боевых Жаб. Конфигурирование джойстиков производится следующим образом: после подключения джойстиков к microUSB «малины», в главном меню жмём Select, выбираем CONFIGURE INPUT, соглашаемся. Система найдёт все подключенные джойстики и предложит переназначить клавиши на них. При отключении USB-джойстиков управление вернётся к родным кнопкам приставки.

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

      ВНИМАНИЕ! Заряжать приставку нужно только через miniUSB разъём на плате. Подавать питание к microUSB разъёмам «малины» нельзя, можно повредить батарею и ещё чего ни будь. К этим разъёмам можно подключать джойстик, клавиатуру, хаб, т.е. всё то, что не содержит в себе источника питания а питается от порта USB.

     В процессе зарядки горит красный светодиод, как только батарея зарядится – загорится зелёный.

     Ну вот собственно и всё, все необходимые файлы приложены в конце статьи. За всеми вопросами можно, как обычно, обратиться в форум.


     ПС. Не поверите, но всех больше приставке обрадовался кот Мурзик, т.к. бОльшая часть внимания дочки переключилась с него на Соника, Данки Конга и Чипа с Дипом Дейлом.

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

     Схема

     Плата

     Чертежи корпуса

     Образ SD-карты


Файлы:
pcb
drw
sch


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

45 8 3