Build Guide

Build your own LUMA.

Everything you need: parts, wiring, CAD and firmware. You can put one together in an afternoon if you already have an ESP32 lying around. Solder skills are optional but a small breakout board makes life easier.

Parts

Parts list

Main board

  • ESP32S Dev Board · ESP-WROOM-32 (the classic black module)

Display

  • DIYmalls 1.8 inch TFT LCD · ST7735S, 128 × 160, 4-wire SPI with SD card slot

Touch sensors

  • TTP223 Capacitive Touch Sensor Module × 2

Connections & power

  • Dupont jumper wires (male to male or male to female, grab whichever works for how you're connecting things)
  • Plain hookup wire for the touch pads (solder them on, or swap the sensor to taste)
  • USB-C cable for flashing and power
  • USB power adapter or a power bank
  • ESP32 breakout board (optional but highly recommended  things get tight fast when two wires need to share one pin)

Tip: a small ESP32 breakout board is optional but highly recommended. It makes life much easier when two wires need to share a single pin.

Wiring

Wiring

Two shared rails: every 3.3V pin lives on the same line, every GND pin on another. The TFT VCC is the one exception, it goes to VIN (5V) because the DIYmalls board has a built-in 3.3V regulator on the panel.

Schematic overview

LUMA · v3

LUMA wiring diagram showing ESP32, ST7735S TFT display and two TTP223 capacitive touch sensors with full pin mapping.

Full pin mapping on the right. Colours match the wires in the diagram.

TFT Display · ST7735S

Module pinESP32
VCCVIN5V rail
GNDGND
NCleave unconnected
NCleave unconnected
NCleave unconnected
CLKGPIO 18
SDAGPIO 23
RSGPIO 2
RSTGPIO 4
CSGPIO 15
LED3.3V

Touch Sensor 1 · Mode Switch

Module pinESP32
VCC3.3V
GNDGND
SIGGPIO 27

Touch Sensor 2 · Emotion

Module pinESP32
VCC3.3V
GNDGND
SIGGPIO 14

Firmware

Firmware

What you need

  • Arduino IDE 2.x
  • Adafruit GFX Library
  • Adafruit ST7735 and ST7789 Library
  • TFT_RoboEyes by Shourov Paul
  • OpenWeatherMap free API key
  • ESP32 board support package

Grab a free OpenWeatherMap API key, drop it in the firmware config, flash it from the Arduino IDE over USB-C and that's it.

LUMA_V3 source

The current firmware build, ready to clone, flash and tweak.

git clone https://github.com/Eben-Siyabalapitiya/LUMA
Open repository

Extras

Going further

3D printed shell

Print the LUMA enclosure in the colour of your choice. Supports are only needed on the main brain compartment where the components sit.

Tidy USB-C run

Swap the long flashing cable for a short USB-C lead so the robot sits cleanly on the desk with no slack.

Go wireless

Drop in a LiPo and a small charging module if you want LUMA to run untethered. Small firmware changes are needed for the sleep cycle.