Оглавление:
- Шаг 1: Подготовка оборудования
- Шаг 2: Подготовка программного обеспечения
- Шаг 3: 3D-печать
- Шаг 4: Поддержка ЖК-дисплея
- Шаг 5: Подготовьте пластину PETG
- Шаг 6. Исправьте ESP32 Dev Board
- Шаг 7: закрепите батарею Lipo
- Шаг 8: Подключите батарею и плату разработчика
- Шаг 9: Подготовка выводов дисплея
- Шаг 10: Подключите контакты GND
- Шаг 11: Подключите контакты Vcc
- Шаг 12: Подключите поддержку LCD и Dev Board
- Шаг 13: Подключите контакты SPI
- Шаг 14: Flash-программа
- Шаг 15: Разъем I2C
- Шаг 16: сборка, часть 1
- Шаг 17: Прототип геймпада I2C
- Шаг 18: Создайте геймпад I2C
- Шаг 19: Сборка, часть 2
- Шаг 20: Дополнительно: контакты аудиоразъема
- Шаг 21: что дальше?
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
В этой инструкции показано, как использовать ESP32 и ATtiny861 для создания игровой консоли-эмулятора NES.
Шаг 1: Подготовка оборудования
Совет разработчиков ESP32
На этот раз я использую плату разработчика TTGO T8 ESP32. Эта плата имеет встроенную схему зарядки и регулирования Lipo, это может помочь уменьшить количество дополнительных компонентов.
Отображать
На этот раз я использую IPS LCD с диагональю 2,4 дюйма. Контроллер драйвера - ST7789V, а разрешение - 320 x 240. Это разрешение лучше всего подходит для эмулятора NES с разрешением 252 x 224.
Аккумулятор
На этот раз я использую батарею Lipo 454261. 4,5 мм - это толщина платы разработчика ESP32, а 61 мм - ширина платы.
Заголовок булавки
4-контактный круглый штыревой разъем и 4-штырьковый круглый разъем для подключения геймпада I2C.
Пластина PETG
Небольшая пластина из ПЭТ / ПЭТГ для поддержки платы разработчика и аккумулятора Lipo, вы легко можете найти ее в упаковке продукта.
Многофункциональная печатная плата
Требуется 2 печатных платы, 1 толщиной 0,4 мм для поддержки дисплея, 1 толщиной 1,2 мм для геймпада I2C.
Кнопки
5 кнопок направлений, 2 маленькие кнопки для выбора и запуска и 2 для кнопок A и B.
Контроллер геймпада I2C
На этот раз я использую микроконтроллер ATtiny861 в качестве контроллера геймпада I2C.
Другие
1 резистор SMD 12 Ом, программатор ISP (например, TinyISP)
Шаг 2: Подготовка программного обеспечения
IDE Arduino
Загрузите и установите Arduino IDE, если еще нет:
Поддержка ATTinyCore
Следуйте инструкциям по установке, чтобы добавить поддержку ATTinyCore, если еще нет:
ESP-IDF
Следуйте руководству по началу работы с ESP-IDF, чтобы настроить среду разработки, если еще нет:
Шаг 3: 3D-печать
Загрузите и распечатайте кейс:
Шаг 4: Поддержка ЖК-дисплея
Вырежьте печатную плату 24 x 27 отверстий 0,4 мм для поддержки ЖК-дисплея. Не забудьте зарезервировать место для складывания ЖК-дисплея FPC. Затем с помощью двусторонней клейкой ленты закрепите ЖК-дисплей на печатной плате.
Шаг 5: Подготовьте пластину PETG
Вырежьте пластину из PETG 62 мм x 69 мм для платы разработчика и держателя аккумулятора Lipo.
Шаг 6. Исправьте ESP32 Dev Board
Используйте двустороннюю липкую ленту, чтобы закрепить плату разработчика на пластине PETG.
Шаг 7: закрепите батарею Lipo
Используйте двухстороннюю липкую ленту, чтобы закрепить батарею Lipo, кроме платы разработчика.
Шаг 8: Подключите батарею и плату разработчика
Шаг 9: Подготовка выводов дисплея
ЖК-дисплеи имеют множество вариаций от разных производителей. Пожалуйста, получите правильное техническое описание и прочтите его перед установкой исправлений и подключений.
Некоторые контакты зарезервированы для сенсорной панели. Поскольку этот ЖК-дисплей не имеет сенсорной панели, просто вырежьте эти контакты, чтобы уменьшить помехи.
Шаг 10: Подключите контакты GND
В большинстве случаев требуется несколько контактов для подключения к GND. Чтобы уменьшить усилия при пайке, я вырезал форму медной ленты, чтобы достать до всех контактов GND, а затем спаял все вместе.
Шаг 11: Подключите контакты Vcc
Требуется 2 контакта для подключения к Vcc, питанию ЖК-дисплея и питанию светодиода. Согласно паспорту, питание ЖК-дисплея может напрямую подключаться к контакту 3,3 В на плате разработки, но мощность светодиодов работает немного ниже 3,3 В. Поэтому лучше добавить резистор SMD посередине, например Резистор на 12 Ом.
Шаг 12: Подключите поддержку LCD и Dev Board
используйте ленту, чтобы соединить опору ЖК-дисплея и опору платы разработчика. Обе опоры должны оставлять зазор около 5 мм для складывания.
Шаг 13: Подключите контакты SPI
Вот сводка подключения:
ЖК-дисплей ESP32
GND -> GND RST -> GPIO 33 SCL -> GPIO 18 DC -> GPIO 27 CS -> GPIO 5 SDI -> GPIO 23 SDO -> не подключен Vcc -> светодиод 3,3 В + -> резистор 12 Ом -> светодиод 3,3 В - -> GND
Шаг 14: Flash-программа
- Загрузите исходный код на GitHub:
- В папке с исходным кодом запустите "make menuconfig"
- Выберите "Конфигурация для Nofrendo ESP32".
- Выберите «Оборудование для работы» -> «Специальное оборудование».
- Выберите «Тип ЖК-дисплея» -> «ЖК-дисплей ST7789V».
- Настройки булавки заливки: MISO -> -1, MOSI -> 23, CLK -> 18, CS -> 5, DC -> 27, RST -> 33, Подсветка -> -1, IPS -> Y
- Выйти и сохранить
- Запустите "make -j5 flash"
- Запустите "sh flashrom.sh PATH_TO_YOUR_ROM_FILE"
Шаг 15: Разъем I2C
Разбейте контакты I2C, контакты I2C по умолчанию ESP32:
Контакт 1 (SCL) -> GPIO 22
Контакт 2 (SDA) -> GPIO 21 Контакт 3 (Vcc) -> 3,3 В (нет питания 5 В при питании от батареи Lipo) Контакт 4 (GND) -> GND
Шаг 16: сборка, часть 1
Следуйте инструкциям в видео, чтобы сложить и втиснуть все детали в корпус.
Шаг 17: Прототип геймпада I2C
Программа для I2C Gamepad очень простая, всего 15 строк кода. Но перепрограммировать ATtiny861 после пайки немного сложно, поэтому лучше сначала протестировать его на макетной плате.
Загрузите, скомпилируйте и прошейте программу с GitHub:
Шаг 18: Создайте геймпад I2C
Вот сводка подключения:
Кнопка ATtiny861
GND -> Все кнопки, один контакт, контакт 20 (PA0) -> кнопка вверх, контакт 19 (PA1) -> кнопка вниз, контакт 18 (PA2) -> левая кнопка, контакт 17 (PA3) -> правая кнопка, контакт 14 (PA4) -> Кнопка выбора, вывод 13 (PA5) -> кнопка пуска, вывод 12 (PA6) -> кнопка A, вывод 11 (PA7) -> кнопка B, вывод 6 (GND) -> штыревой контакт I2C, вывод 4, вывод 5 (Vcc) -> I2C Штыревой штырь, штырь 3, штырь 3 (SCL) -> штырь I2C штырь, штырь 1, штырь 1 (SDA) -> штырь I2C штырь, штырь 2
Шаг 19: Сборка, часть 2
Следуйте инструкциям в видео, чтобы установить крышку и геймпад I2C на основной корпус.
Шаг 20: Дополнительно: контакты аудиоразъема
Контакты 25 и 26 платы разработчика ESP32 выводят аналоговый аудиосигнал, эти 2 контакта, а также контакты питания (3,3 В и GND) наверху очень легко разъединить. Затем вы можете подключить наушник, чтобы подключить его. Или даже вы можете добавить модуль аудиоусилителя с динамиком, чтобы играть громко.
Шаг 21: что дальше?
Эмулятор NES - не единственное интересное, что можно сделать с ESP32. Например. с его помощью вы можете создать консоль micro python. Единственный компонент, который вам нужно изменить, - это с геймпада I2C на клавиатуру I2C. Думаю, сделать это с контроллером ATtiny88 не так уж и сложно. Вы можете следить за моим твиттером, чтобы увидеть статус.