Оглавление:

Портативная игровая консоль ESP32: 21 шаг (с изображениями)
Портативная игровая консоль ESP32: 21 шаг (с изображениями)

Видео: Портативная игровая консоль ESP32: 21 шаг (с изображениями)

Видео: Портативная игровая консоль ESP32: 21 шаг (с изображениями)
Видео: КУПИЛ МУСОРНЫХ КОНСОЛЕЙ НА ALIEXPRESS 2024, Июль
Anonim
Image
Image
Подготовка оборудования
Подготовка оборудования

В этой инструкции показано, как использовать 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-печать

3D печать
3D печать

Загрузите и распечатайте кейс:

Шаг 4: Поддержка ЖК-дисплея

Поддержка ЖК-дисплея
Поддержка ЖК-дисплея
Поддержка ЖК-дисплея
Поддержка ЖК-дисплея

Вырежьте печатную плату 24 x 27 отверстий 0,4 мм для поддержки ЖК-дисплея. Не забудьте зарезервировать место для складывания ЖК-дисплея FPC. Затем с помощью двусторонней клейкой ленты закрепите ЖК-дисплей на печатной плате.

Шаг 5: Подготовьте пластину PETG

Подготовить пластину PETG
Подготовить пластину PETG
Подготовить пластину PETG
Подготовить пластину PETG

Вырежьте пластину из PETG 62 мм x 69 мм для платы разработчика и держателя аккумулятора Lipo.

Шаг 6. Исправьте ESP32 Dev Board

Исправить ESP32 Dev Board
Исправить ESP32 Dev Board

Используйте двустороннюю липкую ленту, чтобы закрепить плату разработчика на пластине PETG.

Шаг 7: закрепите батарею Lipo

Исправить Lipo Battery
Исправить Lipo Battery

Используйте двухстороннюю липкую ленту, чтобы закрепить батарею Lipo, кроме платы разработчика.

Шаг 8: Подключите батарею и плату разработчика

Подключите аккумулятор и плату разработчика
Подключите аккумулятор и плату разработчика

Шаг 9: Подготовка выводов дисплея

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

ЖК-дисплеи имеют множество вариаций от разных производителей. Пожалуйста, получите правильное техническое описание и прочтите его перед установкой исправлений и подключений.

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

Шаг 10: Подключите контакты GND

Подключите контакты GND
Подключите контакты GND
Подключите контакты GND
Подключите контакты GND

В большинстве случаев требуется несколько контактов для подключения к GND. Чтобы уменьшить усилия при пайке, я вырезал форму медной ленты, чтобы достать до всех контактов GND, а затем спаял все вместе.

Шаг 11: Подключите контакты Vcc

Подключите контакты Vcc
Подключите контакты Vcc

Требуется 2 контакта для подключения к Vcc, питанию ЖК-дисплея и питанию светодиода. Согласно паспорту, питание ЖК-дисплея может напрямую подключаться к контакту 3,3 В на плате разработки, но мощность светодиодов работает немного ниже 3,3 В. Поэтому лучше добавить резистор SMD посередине, например Резистор на 12 Ом.

Шаг 12: Подключите поддержку LCD и Dev Board

Поддержка подключения ЖК-дисплея и платы разработчика
Поддержка подключения ЖК-дисплея и платы разработчика

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

Шаг 13: Подключите контакты SPI

Подключите контакты SPI
Подключите контакты 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-программа

Флэш-программа
Флэш-программа
Флэш-программа
Флэш-программа
Флэш-программа
Флэш-программа
Флэш-программа
Флэш-программа
  1. Загрузите исходный код на GitHub:
  2. В папке с исходным кодом запустите "make menuconfig"
  3. Выберите "Конфигурация для Nofrendo ESP32".
  4. Выберите «Оборудование для работы» -> «Специальное оборудование».
  5. Выберите «Тип ЖК-дисплея» -> «ЖК-дисплей ST7789V».
  6. Настройки булавки заливки: MISO -> -1, MOSI -> 23, CLK -> 18, CS -> 5, DC -> 27, RST -> 33, Подсветка -> -1, IPS -> Y
  7. Выйти и сохранить
  8. Запустите "make -j5 flash"
  9. Запустите "sh flashrom.sh PATH_TO_YOUR_ROM_FILE"

Шаг 15: Разъем I2C

Разъем I2C
Разъем I2C
Разъем I2C
Разъем I2C
Разъем I2C
Разъем I2C

Разбейте контакты I2C, контакты I2C по умолчанию ESP32:

Контакт 1 (SCL) -> GPIO 22

Контакт 2 (SDA) -> GPIO 21 Контакт 3 (Vcc) -> 3,3 В (нет питания 5 В при питании от батареи Lipo) Контакт 4 (GND) -> GND

Шаг 16: сборка, часть 1

Image
Image

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

Шаг 17: Прототип геймпада I2C

Прототип геймпада I2C
Прототип геймпада I2C
Прототип геймпада I2C
Прототип геймпада I2C

Программа для I2C Gamepad очень простая, всего 15 строк кода. Но перепрограммировать ATtiny861 после пайки немного сложно, поэтому лучше сначала протестировать его на макетной плате.

Загрузите, скомпилируйте и прошейте программу с GitHub:

Шаг 18: Создайте геймпад I2C

Сборка геймпада I2C
Сборка геймпада I2C
Сборка геймпада I2C
Сборка геймпада I2C
Сборка геймпада I2C
Сборка геймпада 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

Image
Image
Необязательно: контакты аудиоразъема
Необязательно: контакты аудиоразъема

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

Шаг 20: Дополнительно: контакты аудиоразъема

Image
Image
Необязательно: контакты аудиоразъема
Необязательно: контакты аудиоразъема

Контакты 25 и 26 платы разработчика ESP32 выводят аналоговый аудиосигнал, эти 2 контакта, а также контакты питания (3,3 В и GND) наверху очень легко разъединить. Затем вы можете подключить наушник, чтобы подключить его. Или даже вы можете добавить модуль аудиоусилителя с динамиком, чтобы играть громко.

Шаг 21: что дальше?

Что дальше?
Что дальше?

Эмулятор NES - не единственное интересное, что можно сделать с ESP32. Например. с его помощью вы можете создать консоль micro python. Единственный компонент, который вам нужно изменить, - это с геймпада I2C на клавиатуру I2C. Думаю, сделать это с контроллером ATtiny88 не так уж и сложно. Вы можете следить за моим твиттером, чтобы увидеть статус.

Рекомендуемые: