check for detailed docu&howto @ instructables.com
3D Model: https://makerworld.com/de/models/2254346-1d-rgb-invader-retro-game#profileId-2455425
Howto: https://www.instructables.com/-Ultimate-1D-RGB-Invaders-ESP32-Edition-Arcade-Act/
Source Code is latest "release". In the bin folder you'll find the latest updates (for OTA updates).
ESP32-powered WS2812B 1D arcade shooter inspired by Space Invaders
Turn a LED strip into a playable arcade game.
One pixel is your ship. The rest is hostile.
This project exists in two hardware variants:
Sound Edition – ESP32-S3
- Full arcade sound via I2S amplifier
- Web UI, OTA, highscores, bosses
- Actively developed and extended
- This is the version you should build
- Old-school arcade sound (I2S)
- Boss fights
- Highscore system
- Web configuration interface
- OTA firmware updates
- Adjustable difficulty
- Preset kids mode
- Single
.inofile (Arduino)
🚫 NEVER power the LED strip via the ESP32 USB port
WS2812B strips can draw several amps.
The ESP32 cannot supply this.
🔥 DO NOT connect the ESP32 to a PC via USB while the LEDs are externally powered
Correct workflow:
- Flashing firmware → NO external LED power
- Playing the game → NO PC USB connection
Failure results in:
- Burnt USB ports
- Dead ESP32
- Potential PC damage
| Part | Description |
|---|---|
| MCU | **ESP32-S3 DevKitC-1 ** |
| LED Strip | WS2812B , 60 LEDs/m --> silicon coated / with diffusor recommended |
| Audio Amp | MAX98357A I2S |
| Speaker | 4 Ω / 3 W |
| Buttons | 3× 60 mm arcade buttons |
| Menu Button | 1× 12 mm momentary |
| Power | USB-C PD trigger (fixed 5 V) |
| PSU | USB-C power supply (≥3A recommended) |
| Misc | Wires, connectors, 3D printed case Hotglue as for every DIY project |
Typical LED length: 4 m
Estimated total cost: ~35–50 €
- Buttons: GPIO ↔ GND (internal pullups used)
- LED Power: directly from 5 V PSU
- ESP32 GND and LED GND must be common
- LED data line only goes to ESP32
| Function | GPIO | Notes |
|---|---|---|
| Button Blue | 15 | |
| Button Red | 16 | |
| Button Green | 17 | |
| Menu Button | 18 | Hold for WiFi |
| LED Data | 7 | WS2812B |
| I2S BCLK | 4 | MAX98357A |
| I2S LRC | 5 | MAX98357A |
| I2S DIN | 6 | MAX98357A |
| Amp Power | 5 V / GND | External 5 V |
- Arduino IDE 2.x
- Library:
- FastLED (Daniel Garcia)
- Board package:
esp32by Espressif - Required version: 2.0.17
- ❌ Do NOT use 3.x
- Board: ESP32S3 Dev Module
- Flash Mode: DIO 80 MHz
- Flash Size: 16 MB
- Partition: 16M (3MB APP / 9.9MB FATFS)
- PSRAM: Disabled
- USB CDC on Boot: Disabled These settings are compatible with cheap ESP32 S3 boards. Many AliExpress boards having issue with OPI RAM :-(
- Use USB port labeled UART / COM
- If upload fails:
- Hold BOOT
- Press RST
- Release BOOT
- Upload sketch
- Power system using external 5 V
- Hold menu button for 4 seconds
- LED strip turns blue
- Connect WiFi:
- SSID:
ESP-RGB-INVADERS - Password:
12345678
- SSID:
- Open browser:
http://192.168.4.1
- Configure:
- LED count
- Brightness
- Sound options
- Save → automatic reboot
https://makerworld.com/de/models/2254346-1d-rgb-invader-retro-game#profileId-2455425
video1.mp4
Major Version as source code, minor updates as *.bin file in the bin folder (use OTA Update of Firmware in Web Config)
| Version | Datum | Beschreibung |
|---|---|---|
| V.10.2 | 16.02.26 | small balancing adjustments |
| V.10.6 | 26.01.26 | Boss 1, Boss 2 adjusted. Endless mode now possible after RGB Overlord was beaten once (level 11–20) |
| V.10.7 | 27.01.26 | balancing of RGB Overlord. Bonus Stage (Beatsaber-style) now possible. Little easter egg in "show level screen" (boss bars) |
| V.10.9 | 28.01.26 | second bonus stage added "Simon says" both possible when reaching full points, boss coding adjusted to avoid missfire in case of very rapid shots |
