Здравствуйте. Сегодня мы поговорим об разработке и изготовлении портативной NES-приставки на ESP32. Знаю, что давно обещал написать статью об изготовлении клона программируемого калькулятора "Электроника МК-52", но данный проект потребовал некоторой переработки и доработки, так что пока пришлось отложить его в долгий ящик. Также в прошлом году у меня проходил бракоразводный процесс и прочие семейные трудности жизни, что не очень способствовало творчеству и какому-либо нормальному ходу дел. Ладно, не суть. Также сегодня у меня выйдет ещё одна статья, про использование антенны Хардченко типа биквадрат для радиосвязи в LPD и PMR диапазонах.
За основу для портативной NES-приставки был взят старый проект NesCat от Nathalis Cortex.
Мне попадалось множество повторений этого проекта в англоязычном секторе интернета, и лишь одно повторение в русскоязычном секторе интернета, и то семь лет назад каким-то школьником без подробного описания деталей, типа "смотрите что я тут собрал".
Реализацию данного проекта я начал со статьи из англоязычного сектора интернета, выложенной на этом сайте: https://electronoobs.com/eng_arduino_tut181.php
Также в данной статье присутствовало видео с описанием повторения проекта NesCat:
Могу сказать сразу, не тянув времени: проект, повторённый по данной статье, не заработал. В данной статье были приведены схема и прошивка, которые отличались от схемы и прошивки, выложенной в старой версии проекта NesCat от Nathalis Cortex. Подозрения мио пали на то, что проект, приведённый в статье выше, был недоработан, что привело меня к решению повторить схему и залить в неё прошивку, приведённые в старом проекте NesCat от Nathalis Cortex. Были изготовленные новые платы, залита требуемая прошивка. Схема отказывалась подавать признаки жизни. Было всё тщательно перепроверено, весь процесс сборки, компиляции и загрузки прошивки в среде Arduino IDE (сколько времени ушло на то, чтобы всё скомпилировалось и зашивалось правильно, это целая отдельная история), схема и платы, всё было без ошибок и правильно на первый взгляд. Тут я уже голову повесил, не знал, что делать. Никакие мысли не приходили в голову. Через несколько дней мне пришла идея посмотреть тестовые проекты для дисплея st7789, входящим в схему портативной NES-приставки. Скачал один из таких проектов, поменял в нём вывода, соответствующие на схеме для подключения к дисплею, и залил прошивку. Чудо! Дисплей мне показал чудные цветные картинки. Начал анализировать коды тестовой прошивки для дисплея и коды прошивки для портативной NES-приставки. Оказалось, что прошивка рассчитана на работу с дисплеем st7935, который отличается от st7789 тем, что имел вывод CS, который отвечает за перезапуск дисплея (st7789 обходился без него), что кардинально отличало работы с используемым мной дисплеем. В коде прошивки для портативной NES-приставки этот недочёт был исправлен. Приставка после перепрошивки ожила. Появилась на экране картинка, приставка также реагировала на нажатие кнопок, загрузка игр происходила, всё работало верно.
Так мне казалось до тех пор, пока я не решил проверить после загрузки игры звук: он не работал. Думалось опять на прошивку или неправильность схемы. Как оказалось, на этот раз было второе. Выяснилось это путём нахождения нормальной схемы подключения модуля, отвечающего за вывод звука. Небольшая работа скальпилем и паяльником привела звук на приставке в рабочее состояние.
Также в проекте NesCat от Nathalis Cortex есть возможность подключения клавиатуры и вывода изображения на экран телевизора, но я это не стал использовать в своём повторении и доработки проекта, так как всё необходимое, что мне требовалось от приставки, уже было.
Как и говорилось выше, за работу портативной NES-приставки отвечает модуль на микроконтроллере ESP32. К микроконтроллеру подключается модуль дисплея st7789, который выводит изображение. Приставка управляется восемью тактовыми кнопками, каждая из которых подписана на схеме. Игры загружаются с карты памяти на 8 Гб, вставленной в считывающий модуль. Звук из ESP32 выводится по интерфейсу I2C с помощью модуля PCM5102, и усиливается модулем усилителя D-класса PAM8403, и подаётся на динамик от старого мобильного телефона. Звук регулируется потенциометром R11, при этом резистор R10 ограничивает звук, подаваемый на потенциометр. R10 требует подбора, в моём случае он был номиналом 22 кОм. Вся схема требует стабильного питания 5 В, что обеспечивает повышающий преобразователь MT3606, на вход которого подаётся напряжение с модуля контроля заряда аккумулятора TP4056, который в свою очередь питается от литий-ионного аккумулятора 18650. Индикация питания производится светодиодом LED1.
Как видно по фотографии выше, ESP32, PCM5102, PAM8403 и карта памяти со считывающим модулем размещены на большой материнской плате, к которой подключаются клавиатура из восьми кнопок с подтягивающими резисторами, плата с дисплеем, плата с выключателем и индикатором питания, динамик и потенциометр, аккумулятор с модулями повышения напряжения и контроля заряда. Сам модуль контроля заряда размещён под материнской платой. Платы и модули подключаются к материнской плате с помощью универсальных модулей подключения, которые все топологически одинаковые, кроме модуля подключения клавиатуры. Распайка всех модулей происходит по электрической схеме. На повышающем модуле, прежде чем подключать его к материнской плате, требуется выставить требуемое напряжение в 5 В.
Все конструктивные элементы печатались на 3D принтере, в качестве плёнки для экрана использовался обычный скотч. Модули для повышения напряжения и контроля заряда приклеивались с помощью термоклея.
Далее пойдут рекомендации по настройке среды разработки Arduino IDE для последующей компиляции прошивки и её загрузки в плату ESP32.
В настройках среды, в "Дополнительные ссылки для Менеджера плат" нужно вставить следующую ссылку и закрыть настройки:
Далее в Менеджере плат требуется скачать и установить библиотеку для работы с платами ESP32 версии 1.0.5.
После этого требуется установить библиотеки, упакованные в zip-архивах. Это библиотеки "SdFat-UPRAVENY config", "Adafruit_BusIO-master", "Adafruit-GFX-Library-master", "Adafruit-ST7735-Library-master". Все они находятся в папке "Libraries" внутри папки проекта прошивки для среды Arduino IDE.
Также требуется выставить следующие параметры для прошивки:
Конечно, также требуется выставить номер виртуального COM-порта, к которому подключена ESP32.
Также, если это необходимо, в аргументе ниже представленной функции можно выставить поворот экрана в диапазоне чисел 0...3:
При прошивке ESP32 на ней также требуется зажать кнопку Boot для успешной загрузки прошивки.
Также, прежде чем вставить карту памяти, там нужно в корне создать папку с именем "NES", в которую нужно загрузить файлы образов игр с расширением ".nes".
Если вы всё сделали правильно, то у вас приставка должна спокойно заработать.
При включении вас встретит окно, в котором можно выбрать игру для загрузки:
С помощью кнопок UP и DOWN можно выбирать из списка игры, а с помощью кнопок LEFT и RIGHT можно переключатся между страницами списка. Чтобы запустить игру нажмите кнопку START. Тогда вы перейдёте в окно загрузки игры с карты памяти.
После окончания загрузки запустится выбранная вами игра.
По окончании могу сказать, что для меня изготовление данной приставки было тяжеловатым, но при этом очень увлекательным, я впервые изготовил устройство на TFT-дисплее (в результате изготовления три штуки я убил, они очень чувствительны к ударам, изгибам, напряжению и статике, так что будьте внимательны). Также изготовление данной приставке позволило отработать множество техник и приёмов, которые лягут в основу переосмысления разработки изготовления клона программируемого калькулятора "Электроника МК-52".
Удачи всем в повторении изготовления данной приставки, все необходимые файлы будут на диске, ссылку на который я прикреплю ниже. Проект прошивки там уже лишён всех ошибок.
Хорошего всем дня.