HoloFan is a persistence-of-vision holographic fan. A 42-pixel NeoPixel strip mounted along a blade spinning at ~1200 RPM flashes a different image column each rotation moment, and the eye fuses these into a floating circular image. A live camera feed is captured, processed, and streamed wirelessly to the spinning blade, turning the fan into a low-resolution holographic mirror. An AS5600 magnetic encoder reads the motor shaft directly, intended to eventually lock the image's rotational phase so it holds still rather than drifting.
Signal path: AS5600 encoder → base ESP32-S3 Sense (angle + camera) → wireless link → ESP32-S3 on the spinning blade → NeoPixels. A browser app (HoloFan Studio) handles image upload, live streaming, RPM tuning, and colour/dither modes.
Spinning POV LED displays are common hobbyist projects, usually synced with a simple Hall sensor and fixed magnet, since a position reference is needed to stop image drift. Commercial "hologram fan" products use the same trick at higher LED density but only loop pre-rendered animations — none stream live camera input. The live-camera-to-spinning-display pipeline with wireless streaming, plus a magnetic encoder feeding angle data over that same wireless path, is the part of this build that goes further than typical reference projects — and is also the hardest part to fully stabilise in the time available.
| Component | Role | Cost |
|---|---|---|
| XIAO ESP32-S3 Sense ×2 | Blade display + base encoder/camera | ₹5,980 |
| A2212 1400KV motor + 30A ESC | Spins the blade | owned |
| AS5600 + diametric magnet | Shaft angle sync | ~₹150 |
| WS2812B strip (42 LEDs) | The display | owned |
| 1S LiPo (blade) / 2S LiPo (motor) | Isolated power systems | owned / ₹1,773 |
| Custom PCB (EasyEDA → JLCPCB) | Blade electronics housing | ~₹500 |
| Resistor, capacitor, rocker switch | NeoPixel protection + power | ~₹100 |
| PETG filament | 3D-printed blade/mounts | owned |
| Approx. total | ~₹8,500 | |
Motor, ESC, strip, and 1S LiPo were already owned; ESP32 boards, AS5600, second LiPo, and switch sourced from Amazon India/local suppliers. PCB designed in EasyEDA for JLCPCB fab; blade and mounts 3D-printed in-house in PETG for impact resistance at speed.
Made: blade PCB, base mount, 3D-printed blade/mounts, all three firmware programs, and the polar-coordinate image-mapping logic.
Bought: motor, ESC, microcontrollers, NeoPixel strip, encoder module, batteries — the off-the-shelf blocks the made systems are built around.
The camera-to-blade live streaming pipeline and static-image mode are both working and demonstrated. The AS5600 + dual-ESP32 phase-lock sync is wired and partially integrated but not yet fully stable — the image currently holds together in manually-tuned RPM "sweet spots" rather than locking automatically via the encoder feed. That phase-locking is the explicit next step.