what is it
The Neo-Tokyo Totem is a wearable device built on the
M5StickC Plus2 microcontroller. It plays Akira-themed
video clips, renders procedural rain over a parallax cityscape, and displays a
tactical HUD clock — all on a 1.14" color screen strapped to your wrist.
Part art piece, part proof-of-concept for what's possible on extremely constrained
embedded hardware. A tiny ESP32 with 2MB of PSRAM running at 240MHz, pushing
hand-tuned MJPEG frames and real-time particle systems.
_______________
| ___________ |
| | | |
| | NEO-TOKYO| |
| | TOTEM | |
| |___________| |
| [btn] |
|_______________|
| |
modes
Cycle through five modes with the front button. Side button powers off.
1
Nuclear Explosion
Akira's iconic blast, looped at 10fps from PSRAM
2
Hallucination
Tetsuo's psychic breakdown, 4 seconds of color-graded chaos
3
Akira Clock
Red HUD with scanlines, scanning beam, tactical brackets
4
Token Burn Monitor
Mock API consumption rates with animated progress bars
5
Rain on Glass
Procedural rain over 3-layer parallax cityscape, tilt-responsive via IMU
hardware
mcu
ESP32-PICO-V3-02, dual-core 240MHz
display
1.14" TFT, 135×240px, ST7789V2
memory
2MB PSRAM + 8MB flash
sensors
MPU6886 6-axis IMU (accel + gyro)
battery
200mAh LiPo, USB-C charging
connectivity
Wi-Fi + Bluetooth (unused, for now)
extras
RTC, IR transmitter, passive buzzer, LED
how it works
- Video clips are loaded entirely into PSRAM at boot — zero storage latency during playback
- Frame index is pre-built by scanning JPEG SOI/EOI markers for instant seeking
- Dark anime scenes compress extremely well: 28 seconds at 240×135 fits in 888KB
- Color grading tuned for tiny TFTs: contrast ×1.3, saturation ×1.5, gamma 0.85
- Rain scene uses dark-pixel transparency compositing — cheap per-pixel blending at 30fps
- Three parallax layers shift by different amounts (20/50/90px) based on IMU tilt
- Shared 64.8KB sprite canvas eliminates flicker across clock and rain modes
- M5Unified library handles all hardware — Arduino_GFX causes instant watchdog resets
memory budget
clip0
explosion_enhanced — 439KB, 8s @ 10fps
clip1
tetsuo_hallucination — 165KB, 4s @ 10fps
parallax
3 JPEG layers — 32KB total
sprite canvas
240×135×16bit — 64.8KB
psram used
~685KB of 2MB
psram free
~1.3MB for future modes
dev stack
ide
Arduino IDE 2.x + M5Stack board package
libraries
M5Unified, M5GFX
video tools
FFmpeg for clip conversion & color grading
filesystem
SPIFFS via mkspiffs
flashing
esptool.py over USB-C
what's next
- Live Claude/OpenAI token burn rates over Wi-Fi
- Nearby map with compass heading from IMU
- Gyro-controlled mini racing game
- More video clips from the Akira archive
- Audio output via speaker module upgrade