An ESP32-powered spinning display rig: six round GC9A01 screens showing a photo slideshow, YouTube stats, TikTok stats, a crypto ticker, weather, and internal temp/humidity — with an N20 DC motor that spins the whole thing on a touch trigger.
- ESP32 dev board
- 6x GC9A01 240x240 round SPI displays
- N20 DC motor + DRV8833 motor driver
- TTP223 capacitive touch module
- MicroSD card module (separate SPI bus)
- AHT10 temperature/humidity sensor (I2C)
- Optional: NeoPixel/RGB status LED
Full wiring, pinout, and behavior notes are documented in the comment block at
the top of yumo_roulette.ino.
| # | Shows |
|---|---|
| 0 | SD card photo slideshow (JPEGs) |
| 1 | YouTube channel stats |
| 2 | TikTok stats |
| 3 | Crypto ticker |
| 4 | Weather |
| 5 | Internal temp/humidity (AHT10) |
A touch on the capacitive sensor spins the motor for a fixed duration (default 10s). Touches are ignored while it's already spinning.
-
Install the Arduino IDE (or PlatformIO) with ESP32 board support.
-
Install these libraries via Library Manager:
- GFX Library for Arduino (Moon On Our Nation)
- Adafruit AHTX0 + Adafruit Unified Sensor
- TJpg_Decoder (Bodmer)
- Adafruit NeoPixel (only needed if using the status LED)
- ArduinoJson
- (WiFi, WebServer, DNSServer, Preferences, HTTPClient are bundled with the ESP32 core)
-
Open
yumo_roulette.inoand fill in your own API keys near the top of the file:YT_API_KEY— YouTube Data API v3 keyTT_API_KEY— RapidAPI key (TikWM)WX_API_KEY— OpenWeatherMap key
Do not commit real keys to this repo. Keep them blank in anything you push, and fill them in locally before flashing.
-
Format an SD card as FAT32, add
.jpg/.jpegphotos (resize to roughly 480x480 first — see the decoding note in the sketch header for why). -
Wire everything up per the pinout table in the sketch header.
-
Flash the board. On first boot it starts a WiFi setup portal (AP name
YUMO ROULETTE) so you can add your network — short-press BOOT to add WiFi, hold BOOT for 10s to factory reset.
All the tunable constants (motor speed, refresh intervals, screen rotation timing, etc.) are documented in the "ADJUSTABLE SETTINGS" section near the top of the sketch, with line references for where to find each one.
This project is licensed under PolyForm Noncommercial 1.0.0.
In short: you're free to use, modify, and share this code (and build your own Yumo Roulette) for any noncommercial purpose — personal, hobby, educational, research, whatever. You just can't sell it, or a product built from it, without permission. Commercial licensing available on request — reach out via github.com/yumobuilds.
(Note: this covers the code itself, not the general idea — copyright doesn't extend to concepts, only to your specific implementation.)