This portable game console effectively integrates ESP32-S3 technology with physical controls and audio output to create a compact, programmable gaming device. Its simple yet functional design makes it accessible for both gaming enthusiasts and those learning electronics and programming.
- Joystick Development Board
- 5 V Passive Buzzer Module
- SD-Card reader module + 32GB SD-Card
The buzzer, buttons, and joystick will be connected to the I/O pins. (IO15, IO16, IO17, IO18, IO43, IO44).
The SD-CARD reader uses IO11, IO12, IO13 pins.
Chapters from laboratories used:
1. Joystick (ADC lab)
2. Buzzer driven by PWM signals tone (pin,freq,duration) handles waveform generation. (PWM lab)
3. Display using TFT_eSPI for ESP32-optimized rendering (SPI lab)
# | Part / Module | Main Function | Qty. | Purchase Link | Datasheet / Additional Info |
— | ————— | ————– | —— | ————— | —————————– |
1 | Passive Buzzer Module – 5 V | Generates audible tones/buzzer alerts when driven by a microcontroller pin. | 1 | eMAG product page | Typical 5 V passive buzzer datasheet (example): <https://cdn-shop.adafruit.com/product-files/160/160_datasheet.pdf> |
2 | LilyGO T-HMI (ESP32‑S3 + 2.8″ LCD) | Core MCU board that provides Wi‑Fi, Bluetooth, and a 2.8‑inch touch LCD for HMI. | 1 | eMAG product page | Official LilyGO GitHub (schematic & datasheet bundle): <https://github.com/Xinyuan-LilyGO/T-HMI> |
3 | I²C General‑Purpose Joystick Board (4 buttons + 1 joystick) | User input module offering a mini‑joystick and push‑buttons over I²C. | 1 | eMAG product page | Example joystick module datasheet: <https://cdn-learn.adafruit.com/assets/assets/000/008/495/original/joystick-datasheet.pdf> |
4 | ADATA microSDHC 32 GB Class 10 + SD Adapter | Provides removable storage for data logging or firmware assets. | 1 | [eMAG product page](https://www.emag.ro/card-de-memorie-microsdhc-adata-32gb-adaptor-sd-class-10-ausdh32guicl10-ra1/pd/D6Z2S6BBM/) |
The player is a pilot of a spaceship through an endless asteroid field.
The joystick is used to move on the oX, oY axis and the button of the joystick is used to start/pause the game. When starting the console the game will initially be paused. (When paused all the objects within the game are grey) After hitting an asteroid the buzzer will produce a 'Game Over' sound.
Software used in developing the game console:
1. Arduino Framework
- Provides hardware abstraction for ESP32
- Handles basic GPIO operations
- Manages timing and delays
- Enables serial communication
2. TFT_eSPI
- Controls TFT LCD display output
- Manages display settings
3. SD_MMC
- Interfaces with SD card storage
- Reads game asset files
- Handles filesystem operations
- Manages data transfers
4. BSR Framework
- Provides 3D rendering capabilities
- Processes vertex data
- Handles texture mapping
- Manages depth buffering
- BSR framework used to render graphics on the ESP32 microcontroller(open source project - GitHub link: https://github.com/Bogdy555/BSR)
DEMO version:
The first version of the game! - https://www.youtube.com/watch?v=BtcSVL-yEIg&ab_channel=CartofulAlbastru