Home
How to Build High Performance Digital Pixel Poi With Arduino and FastLED
Digital poi, often referred to as pixel poi, are advanced flow arts tools that utilize Persistence of Vision (POV) technology to "paint" images, patterns, and text in the air as they are spun. Creating a high-quality DIY version requires a synthesis of high-speed embedded programming, robust circuit design capable of withstanding intense centripetal force, and precise mechanical balancing.
To build a functional digital poi, a microcontroller must push color data to a strip of addressable LEDs at a frequency high enough that the human eye perceives the sequence of light pulses as a continuous two-dimensional image. This guide focuses on using high-performance components like the Teensy 4.0 or ESP32 and specialized LED libraries to achieve professional-grade results.
Understanding the Persistence of Vision (POV) Mechanism
The core principle behind digital poi is the biological phenomenon where the human retina retains an image for approximately 1/10th to 1/15th of a second. By spinning a vertical line of LEDs horizontally, each LED becomes a "pixel" in a larger grid.
To display a 30x60 pixel image, the poi must update its entire vertical strip (30 LEDs) sixty times during a single rotation. If the performer spins the poi at 2 rotations per second, the microcontroller must process and output 120 frames per second. Any latency in the code or hardware limitations in the LED data protocol will result in "tearing" or distorted images.
Core Components for a Professional DIY Digital Poi
Selecting the right hardware is the difference between a blurry flicker and a sharp, vibrant light display.
The Microcontroller: Processing Speed Matters
While an Arduino Nano is capable of simple color fades, it often struggles with the math required for real-time image rendering.
- Teensy 4.0/4.1: The gold standard for POV. With a 600MHz clock speed, it handles large image arrays effortlessly and supports Direct Memory Access (DMA) for LED output, meaning the CPU isn't blocked while the LEDs are updating.
- ESP32: An excellent alternative offering dual-core processing and built-in Wi-Fi/Bluetooth, which is useful for synchronizing multiple poi heads wirelessly.
- Arduino Pro Mini (5V): Suitable for entry-level projects with low LED counts, but limited by its 16MHz clock speed and small Flash memory.
Addressable LED Strips: Data Protocol Selection
Not all RGB LEDs are created equal for POV applications.
- APA102 / DotStar: These are superior for digital poi. They use a two-wire SPI-like protocol (Data and Clock). Because they are not timing-dependent like the WS2812B, they can reach much higher refresh rates and have a high PWM frequency (roughly 19kHz), which eliminates the "ghosting" effect during fast motion.
- WS2812B / NeoPixel: Widely available and affordable. However, they use a one-wire protocol with strict timing. While usable, their lower PWM frequency can cause the image to look like a series of dots rather than solid lines when spun rapidly.
Power and Protection
- Battery: A 3.7V LiPo (Lithium Polymer) battery is standard. A capacity of 1000mAh to 2200mAh provides a balance between runtime and weight.
- Charging: A TP4056 charging module allows for safe USB charging.
- Housing: 1-inch (25mm) diameter clear polycarbonate tubing. Polycarbonate is preferred over acrylic because it is impact-resistant and will not shatter if the poi hits the ground or the performer.
Designing the Digital Poi Circuit
The circuit must be compact enough to fit inside a tube and durable enough to survive 400+ RPM spins.
Power Distribution and Noise Reduction
In a digital poi circuit, the LEDs and the microcontroller share the same power source. LEDs can draw significant current (up to 60mA per pixel at full white), which causes voltage drops that can crash the microcontroller.
- Capacitors: Place a 470µF to 1000µF capacitor across the main power input (VCC and GND) to smooth out voltage spikes.
- Data Resistor: Insert a 330-ohm or 470-ohm resistor between the microcontroller’s data pin and the LED strip’s Data-In (DIN) pin. This prevents signal reflections and protects the first LED from voltage surges.
- Grounding: Ensure a "Star Ground" configuration where all ground wires meet at a single point to minimize electrical noise.
Wiring Schematic Logic
- Battery (+) connects to a Slide Switch.
- Slide Switch (Output) connects to the VIN of the Microcontroller and the 5V/VCC of the LED strip.
- Battery (-) connects to the GND of the Microcontroller and the GND of the LED strip.
- Microcontroller Pin 6 (Data) connects through a resistor to the DIN of the LED strip.
- Microcontroller Pin 7 (Clock) (if using APA102) connects to the CI of the LED strip.
Digital Poi Code and Firmware Strategy
The software must handle two main tasks: storing the image data and outputting it at the correct time.
Utilizing the FastLED Library
FastLED is the most efficient library for controlling addressable LEDs. It supports a wide range of chipsets and provides high-level math functions for color manipulation.
-
Topic: Genesis Poi: DotStar LED Persistence-ofVisionhttps://cdn-learn.adafruit.com/downloads/pdf/genesis-poi-dotstar-led-persistence-of-vision-poi.pdf
-
Topic: GitHub - AndrewHazelden/Digital-Poi-Spinning-Persistence-of-Vision-Display: This is the source code and schematic for a Microchip PIC18F based Digital Poi persistance of vision display. · GitHubhttps://github.com/AndrewHazelden/Digital-Poi-Spinning-Persistence-of-Vision-Display
-
Topic: GitHub - 8bitbuddhist/LEDPoi: Arduino project for remote-controlled poi. · GitHubhttps://github.com/8bitbuddhist/LEDPoi