Skip to content

About

Clear iPhone 16 Pro case with a low-res LED/TFT display on the back, driven by an ESP32-C3 over BLE

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

22 Commits

Folders and files

Repository files navigation

LED Phone Case

A clear iPhone 16 Pro case with a small display on the back. An ESP32-C3 drives built-in animations; a companion iOS app selects them over Bluetooth. Powered by the phone's USB-C port, no battery.

Assembled case showing the Face animation

Two prototypes

Case A 1.44" 128×128 color TFT (ST7735)
Case B 8×8 WS2812 LED matrix

Both run the same firmware core and the same app. The device reports its display type over BLE and the app adapts.

Case A (TFT) and Case B (LED matrix) side by side

Animations

Fifteen built-in, all drawn procedurally at runtime. Nine scene animations:

  1. Face — eyes that look around, blink, and change expression
  2. Fisherman — a rower poling his boat across moonlit water
  3. Runner — a stick figure running laps around the screen edge, pausing to look around
  4. Sisyphus — pushes his boulder around the screen edge; it always rolls back
  5. Balloon — a kid chasing a balloon he never catches
  6. Stargazer — two figures on a hill under a twinkling sky with shooting stars
  7. Campfire — two figures around a flickering fire under the night sky
  8. Owl — an owl on a branch scanning for the mouse that crosses below
  9. Juggler — a stick figure juggling a three-ball cascade

Six low-res animations designed on an 8×8 grid, native to the LED matrix (chunky pixel art on the TFT):

  1. Rainbow — a color wave sweeping the grid
  2. Fire — rising-flame heat simulation
  3. Rain — drops falling at different speeds with fading trails
  4. Heart — pixel heart with a lub-dub pulse
  5. Snake — the game, playing itself
  6. Smiley — big pixel face cycling expressions: smiles, winks, surprise

App

SwiftUI + CoreBluetooth. Connects automatically, lists the animations the case reports grouped by resolution, sets brightness and playback speed.

Companion app

Bill of materials (Case A)

The simplest build. Generic modules; any equivalent listing works.

Part Qty Notes
ESP32-C3 SuperMini 1 Any ESP32-C3 SuperMini board
1.44" TFT LCD, 128×128, SPI, ST7735 1 8-pin module (sold as M029 on AliExpress)
Clear TPU case, iPhone 16 Pro 1 Soft/flexible, not polycarbonate
Short USB-C to USB-C cable 1 15-20 cm, phone to board
3D-printed carrier plate and cover 1 Any PLA or PETG
Thin hookup wire ~8 leads Display to board, ~30 AWG

Wiring (Case A)

Wiring diagram: TFT pins GND, VCC, SCL, SDA, RES, DC, CS, BL to ESP32-C3 pins G, 3V3, GPIO4, GPIO6, GPIO10, GPIO5, GPIO7, GPIO1

TFT and ESP32-C3 on the printed carrier

Case B swaps the TFT for an 8×8 WS2812 matrix plus a 74HCT04 level shifter, 330 Ω data resistor, and 1000 µF capacitor. Full wiring, pin map, power budget, and BLE protocol: DESIGN.md.

Build

Firmware (PlatformIO), one environment per case:

cd firmware
pio run -e case-a-tft -t upload
pio run -e case-b-matrix -t upload

App: open app/LEDCase.swiftpm in Xcode and run it on an iPhone.

Browser emulator

Preview the 128×128 scene animations in a web browser without hardware. The emulator compiles firmware/src/animations.cpp to WebAssembly. See emulator/README.md.

cd emulator
./scripts/build-wasm.sh
python3 -m http.server 8080

Open http://localhost:8080

About

Clear iPhone 16 Pro case with a low-res LED/TFT display on the back, driven by an ESP32-C3 over BLE

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages