How It Works
Each mirror tile acts as a 2-axis "pixel." By precisely controlling tilt and pan angles, the array reflects light to create shapes, patterns, and animations on surfaces. It also works as a living mirror — subtle continuous motion creates shimmering, organic visual effects.
The system solves a geometric mapping from mirror orientation → reflected spot position. Patterns designed in a purpose-built web UI are transformed to motor positions based on per-mirror calibration data.
Inspiration
Mechanical display and Fixed Mirror Array
Hardware
- Mirrors: Small 50mm x 50mm square glass mirrors tiles on custom 2-axis actuator assemblies , 3D-printed joints and ball-socket mechanisms
- Actuators: Cheap, 5mm diameter bipolar steppers, 8-10mm travel, 2300 steps, 3000–4000 steps/s

The non-standard motor connector required a custom connector PCB :

- Structure: 3D printed grid to hold the tiles , attached to 2020 aluminum extrusion frame
- Electronics: Custom PCBs per mirror island (2x2 tiles, 8 motors), DRV8825 stepper drivers, shift-register multiplexing for direction and wake/sleep control.

- Controller: ESP32 (motor step generation, Wi-Fi, MQTT) with FreeRTOS
- Wifi router: GL.iNet GL-AXT1800 (Slate AX) Portable WiFi Router for off grid operation
- Power: 12V main rail (AC-DC or battery pack), local 5V DC-DC conversion for logic
Software
- Firmware: C++ (Arduino-ESP32 / PlatformIO), deterministic stepping, MQTT networking, OTA updates. github.com/szerintedmi/kinetic-mirror-matrix-esp32
- Control UI: Vue 3 + TypeScript + Vite — node discovery, grid config, calibration (Camera-based using OpenCV.js, automatic spot detection, per-mirror correction tables) , pattern designer, playback . github.com/szerintedmi/mirror-matrix-control-ui
Current State
- 36-mirror working prototype
- Tested with spotlights and sunlight
- Full end-to-end loop: motor control → optical output → camera feedback → calibration
What's Next
- Scale to 64 (or more) mirrors
- More interactivity (eg. pose detection and playback, voice control etc.)
- Improve animation features
- Experiment with more living mirror effects, maybe syncing with face/eye tracking etc.
- Larger installations
Time Sink Studio