Yumo Roulette

by yumobuilds in Circuits > Electronics

69 Views, 1 Favorites, 0 Comments

Yumo Roulette

Watch the full build on YouTube channel:

https://www.youtube.com/watch?v=qcGHcUHoq24&t

https://www.youtube.com/@YumoBuilds

Yumo Roulette is a spinning desk gadget built around an ESP32 and six round GC9A01 displays. Each screen shows something different: a photo slideshow from an SD card, live YouTube stats, TikTok stats, a crypto ticker, local weather, and the temperature and humidity inside the case. Touch the sensor and a small N20 motor spins the whole rig for 10 seconds, like a roulette wheel.

In this Instructable I’ll walk through the wiring, the API keys, and the code. It’s all one Arduino sketch, and the WiFi setup happens through a phone-friendly captive portal, so you don’t hard-code your network.

The code is on GitHub: https://github.com/yumobuilds/Yumo-Roulette

More builds on my YouTube channel: https://www.youtube.com/watch?v=qcGHcUHoq24

Supplies

  1. ESP32 dev board
  2. 6x GC9A01 240x240 round SPI displays
  3. N20 DC motor
  4. DRV8833 motor driver
  5. TTP223 capacitive touch module
  6. MicroSD card module + microSD card (FAT32)
  7. AHT10 temperature/humidity sensor (I2C)
  8. NeoPixel/RGB status LED
  9. Jumper wire, soldering gear, and a USB power supply
  10. Brass wire 1mm & 1.5mm

Wire the Six Displays


All six screens share one SPI bus, and each gets its own CS pin.

Signal ESP32 pin

MOSI GPIO22

SCLK GPIO18

DC GPIO2

RST (shared by all 6) GPIO0

----------------------------------------------

Display CS pin Shows

0 GPIO5 SD photo slideshow

1 GPIO17 YouTube stats

2 GPIO16 TikTok stats

3 GPIO15 Crypto ticker

4 GPIO13 Weather

5 GPIO12 Internal temp/humidity

Wire the Motor and Touch Sensor


DRV8833 to N20 motor:

  1. IN1 → GPIO32
  2. IN2 → GPIO33
  3. ULT (sleep) → GPIO27
  4. EEP (enable) → GPIO26
  5. OUT1/OUT2 → motor wires (either way round)

TTP223 touch module:

  1. VCC → 3.3V
  2. GND → GND
  3. SIG → GPIO34


Wire the SD Card, Sensor, and LED


SD card module (its own separate SPI bus):

  1. CS → GPIO4
  2. SCK → GPIO23
  3. MOSI → GPIO19
  4. MISO → GPIO21
  5. VCC → 3.3V, GND → GND

AHT10:

  1. SDA → GPIO25
  2. SCL → GPIO14
  3. VIN → 3.3V, GND → GND


Prepare the SD Card Photos


Format the card as FAT32, not exFAT. Resize your photos to about 480x480 before copying them to the root folder as .jpg or .jpeg. Full-size phone photos can take over 10 seconds to decode and will freeze the whole sketch, including the touch input and the motor timer. The sketch indexes up to 40 images and shows each for 5 seconds.

Get Your API Keys


  1. YouTube: create a YouTube Data API v3 key in Google Cloud Console.
  2. TikTok: subscribe to the TikWM API on RapidAPI and copy the key.
  3. Weather: create a free OpenWeatherMap account and copy the key.


Install Libraries and Add Your Keys


Download the code from GitHub: https://github.com/yumobuilds/Yumo-Roulette

Install these through the Arduino Library Manager:

  1. GFX Library for Arduino (Moon On Our Nation)
  2. Adafruit AHTX0 and Adafruit Unified Sensor
  3. TJpg_Decoder (Bodmer)
  4. ArduinoJson
  5. Adafruit NeoPixel (only if you use the LED)


Flash and Set Up WiFi


Select your ESP32 board, upload the sketch, and let it boot. On first boot it creates a WiFi network called YUMO ROULETTE. Connect your phone to it, and a setup page opens where you enter your WiFi details and YouTube channel URL.

Controls on the BOOT button:

  1. Short press: add another WiFi network (it remembers up to 10)
  2. Hold for 10 seconds: factory reset


Use It and Tweak It


Touch the sensor and the rig spins for 10 seconds. Touches are ignored while it’s already spinning. The “Adjustable Settings” block at the top of the sketch lets you change:

  1. Spin time (TOUCH_SPIN_MS)
  2. Slideshow speed (SD_SLIDE_MS)
  3. Refresh intervals for each data source
  4. Temperature units, via WX_UNITS ("metric" or "imperial")
  5. Which coins the crypto screen cycles through