Rotating LED Sphere – Building a RP2040 POV Display Step by Step

by lhm0 in Circuits > Arduino

1030 Views, 14 Favorites, 0 Comments

Rotating LED Sphere – Building a RP2040 POV Display Step by Step

Rotating LED Sphere – Building a RP2040 POV Display Step by Step
smiley.jpg

I built a rotating LED sphere that uses the persistence-of-vision (POV) effect to display videos, animations, and images on a spherical surface.

It’s powered by an RP2040 microcontroller, features wireless energy transmission, and is entirely DIY – from the electronics and firmware to the mechanical design.

The project was inspired by the Las Vegas Sphere and developed as an open-source platform to explore creative LED displays, embedded programming, and efficient hardware design.

Supplies

Please refer to the bill of material (BOM), which includes all parts and sources.

The Story - How This Projekt Came to Live

generations1.jpg
generations2.jpg

Persistence of Vision (POV) displays have always fascinated me. With just a few components and clever timing, they can create incredibly impressive visual effects that seem almost magical. They're also a perfect playground for anyone into electronics, microcontrollers, and creative coding, because they combine hardware, software, and timing in such a hands-on way.

Over the past few years, I’ve developed a whole series of POV displays.

It started with a monochrome version using an Arduino Nano (1), followed by a full-color display driven by an RP2040 (2). That version used 56 RGB LEDs – which looked great, but required quite a bit of complex wiring and electronics.

So I began looking for smarter ways to control a larger number of LEDs with less hardware overhead. That led me to develop the Rotating Display Pico (3), where I first experimented with high-speed LED multiplexing.

That experiment laid the foundation for this project: the Rotating LED Sphere (4).

Inspired by the massive Las Vegas Sphere, I wanted to create a spherical POV display that could:

  1. Use as few components as possible
  2. Display full color images
  3. be able to play full video and animated content
  4. All powered by the amazing RP2040 microcontroller
  5. Be wirelessly powered (no slip rings!)
  6. Be built by makers and tweaked by developers

Downloads

How the Display Works

conversion.jpg
webinterface.jpeg

Let’s take a look at how the Rotating LED Sphere processes and displays images, animations, and videos.

At the heart of the system is a microSD card, which stores all visual content. As soon as the display is powered on, it automatically scans the SD card and generates a playlist from all available files. This playlist is then played back in a loop, one item after the other.

To create compatible image data, I’ve developed a conversion tool that runs on a standard PC.

It supports common media types like:

  1. Videos (.mp4, .mov, etc.)
  2. Animated GIFs
  3. Static images (.png, .jpg)

These are converted into a custom .rs64 format optimized for the display’s unique structure and timing. Once converted, the files are simply copied onto the SD card—ready to play.

There are countless free and royalty-free sources for visual content online, but of course, you can also create your own animations. In fact, I’ve found ChatGPT to be a surprisingly helpful assistant when brainstorming visuals or generating simple animation code.

For added convenience, there’s also an optional remote control feature.

An ESP01s Wi-Fi microcontroller can be plugged into the board, allowing you to access a web-based user interfacevia your local network. This makes it easy to change settings, select content, or manage playlists without touching the hardware.

Understanding the Hardware – How It's All Connected

structure.jpg

This image gives you a detailed look at the internal structure of the Rotating LED Sphere, highlighting all major functional components. Let’s break it down:

  1. 64 RGB LEDs form the actual display. They’re mounted in a circular pattern to create the spherical visual effect as the ring rotates.
  2. The RP2040 microcontroller is the brain of the system. It controls the display, handles timing, reads data from the SD card, and drives the LED matrix using a fast SPI and PIO-based multiplexing technique.
  3. A 24-bit shift register expands the output capability of the RP2040, allowing it to control multiple LED channels efficiently.
  4. The SD card reader holds the image and video files in .rs64 format, which are streamed in real time during operation.
  5. The ESP01s microcontroller is optional and enables wireless control of the display via a built-in web interface when connected to a Wi-Fi network.
  6. A Hall sensor detects the position of the rotating ring by sensing a small magnet mounted on the stationary base. This ensures perfect synchronization of the displayed content with the rotation.
  7. The Royer converter is responsible for generating a high-frequency AC field to transfer power wirelessly—completely eliminating the need for slip rings.
  8. The primary coil (on the base) and the secondary coil (on the rotating side) form the wireless power link. Energy is transmitted via induction to the rotating PCB.
  9. Finally, a motor drives the rotation of the entire display ring. Its shaft is directly connected to the mechanical structure that holds the LED assembly.


Parts and Preparation

plastic_parts.jpg
electronic_parts.jpg

Before we start assembling the Rotating LED Sphere, let’s take a look at all the parts you'll need.

The project is made up of two main groups of components:

🔷 1. 3D-Printed Plastic Parts

All mechanical components—including the base, support structures, and the sphere housing—are 3D printed. Most parts have been designed in a way that they can be printed without support, which makes the process fast and material-efficient.

Exception:

The two black dome halves do require support material due to their overhanging geometry.

Important note:

Some parts (like the base and LED holder) require inserted M2 or M3 nuts during printing.

You’ll need to pause the print at specific layers to insert the nuts before the rest of the part is completed. This ensures strong mechanical connections later.

All STL files are included in the GitHub repository.

🔶 2. Electronic Components

The electronic system is based on a set of custom-designed PCBs. These include:

  1. The rotating LED driver board with 64 RGB LEDs including the RP2040 microcontroller, shift register, SD card
  2. The power supply board (Royer converter, primary coil, motor power supply)
  3. The receiver coil, including Hall sensor, and more

Most of the components are SMD (surface-mounted) with small pitch and require precise soldering.

Therefore, it's strongly recommended to have them assembled by a PCB service provider, such as JLCPCB, which offers both fabrication and SMD assembly at reasonable cost.

All KiCad PCB files and the production files are included in the GitHub repo and ready for upload to manufacturing services.

Assembling the Motor Base and Power Supply

mounting_support_plate.jpg
assembly_base.jpg

This step covers the construction of the device’s base, including the motor mount and wireless power system.

🔸 Mounting the Support Plate

The support plate for the rotating electronics is pressed onto the motor shaft.

Because it has a tight fit by design, you’ll need a bench vise or a clamp to press it in cleanly and evenly.

Use a caliper to ensure the correct distance from the motor housing—this will be important later for rotor balancing and alignment.

🔹 Base Assembly

  1. Start by mounting the motor into the 3D-printed base. It fits snugly and is held in place with screws.
  2. Then attach the blue motor cover to stabilize the assembly.
  3. The black housing slides over the structure and holds the lower power supply PCB in place.
  4. Secure the power supply board to the base and connect the wires from the motor.

All components in the base are fixed using standard M3 screws and pre-inserted nuts.

Preparing and Soldering the LEDs

LED_bending.jpg
LED_insertion.jpg
LED_soldering.jpg

The next step is to prepare and install the 64 RGB LEDs that form the display ring. Since the LEDs are through-hole components with a tight spacing (1.27 mm pitch), proper alignment and clean soldering are essential for reliable operation and a neat result.

🟡 LED Bending Tool

To make sure each LED sits perfectly on the board, I use a 3D-printed bending jig. The LED is inserted into the guide, and then bent precisely at the correct distance using a lever mechanism.

This ensures that all four pins are aligned and shaped consistently—something that really helps during the soldering process.

You can find the STL file for the tool in the GitHub repository if you'd like to print your own.

🟢 Inserting the LEDs

After bending, each LED is inserted into the PCB. Take care to follow the orientation markings on the board—especially since the left and right sides of the ring are mirrored (due to the interlaced layout of the display).

🔧 Hand Soldering

Now it's time to solder. Due to the small pitch, you’ll want to work with a fine-tipped soldering iron, steady hands, and (ideally) some magnification.

Make sure to:

  1. Keep solder joints small and clean
  2. Avoid bridging adjacent pins
  3. Double-check orientation as you go

It’s not a fast job, but taking your time here will pay off with a beautiful, functional result.

Rotor Assembly and Alignment

rotor_assembly.jpg
alignment0.jpg
alignment1.jpg
alignment2.jpg
alignment3.jpg

This step involves assembling the rotating structure and carefully aligning it for smooth operation and accurate image rendering.

🎯 Aligning the Rotor

Proper alignment is crucial to:

  1. Eliminate imbalance and vibrations during rotation
  2. Ensure consistent LED spacing for accurate interlacing

The goal is to bring the symmetry axis of the LED ring into perfect alignment with the rotational axis of the motor.

🔧 Step 1 – Mechanical Centering

Mount the LED ring onto the support plate using four adjustment screws and two mounting screws.

The adjustment screws allow you to fine-tune the tilt of the board while you can fix the position with the mounting screws.

📐 Step 2 – Adjusting the Angles α and β

  1. Angle α (side tilt) is corrected first.
  2. Use a pointer mounted above the display (like a screwdriver on a tripod) and rotate the rotor 180°.
  3. Compare the LED position at both ends of the rotation. If there's a shift, adjust the screws until the deviation is zero.
  4. Angle β (front tilt) is corrected in a similar way.
  5. A pointer is placed in front of the display, and the center of an LED is used as a reference point for alignment.

Take your time with this step—minor adjustments can make a major difference in stability and visual quality.

More details on the alignment process are shown in the accompanying video tutorial.

Attaching the Casing Shells

housing_parts.jpg


The final mechanical step is the installation of the rotor housing.

The two hemispherical 3D-printed shell parts are attached to the rotating LED structure using M3 screws (🔩 see image). These parts complete the spherical shape of the display and help to reduce the impact of ambient light, significantly improving visual contrast.

💡 Note: One of the shell parts must remain unmounted until:
  1. the firmware is uploaded, and
  2. the SD card with display content is inserted.

This concludes the assembly process!

Uploading the Software

software1.jpg
software2.jpg
software3.jpg
software4.jpg
software5.jpg

With the hardware fully assembled, it’s time to bring your Rotating LED Sphere to life by uploading the necessary firmware to both microcontrollers: the RP2040 and the optional ESP01s (for wireless control).

🛠️ Development Environment

The software was developed using Visual Studio Code in combination with the PlatformIO extension. This setup offers a professional and beginner-friendly environment to build and upload firmware.

📥 Step-by-Step: Getting the Source Code

  1. Download the code from the GitHub repository.
  2. You’ll need two folders:
  3. RS64_RP2040 – for the main controller
  4. RS64_ESP01S – for the optional WiFi controller

🔌 Uploading to the RP2040

  1. Open VS Code, then open the RS64_RP2040 folder.
  2. PlatformIO will automatically load all settings from the included platformio.ini file and fetch the required libraries.
  3. Connect your RP2040 board via USB-C.
  4. Click the checkmark (✓) in the PlatformIO toolbar. This will compile and upload the firmware.

📡 Uploading to the ESP01s (optional)

  1. To program the ESP01s, you’ll need a USB programmer adapter (available on Amazon or eBay for a few euros/dollars).
  2. Open the RS64_ESP01S folder in VS Code.
  3. Click the checkmark to build and upload the firmware as before.

🗂️ Flashing Web Files to ESP01s (LittleFS)

After uploading the firmware, you’ll also need to load the web UI files into the ESP01s's internal filesystem (LittleFS):

  1. Click the PlatformIO icon in the VS Code sidebar.
  2. In the file tree, go to:
  3. esp01_1m > Platform
  4. First click “Build Filesystem Image”.
  5. Then click “Upload Filesystem Image” to flash the files.

That’s it! 🎉 Your LED sphere is now fully programmed and ready to light up.

Preparing the SD Card

The final step before powering up your Rotating LED Sphere is setting up the SD card with the display content.

📁 File Structure

The display scans the top-level directory of the SD card and automatically creates a playlist from all .RS64 files it finds.

To enable auto-play on startup, simply copy your .RS64 files directly into the root folder of the SD card (not in subfolders).

▶️ Ready-to-Use Demo Files

As a quick starting point, use the .RS64 files included in the main GitHub repository.

These give you instant feedback and let you verify that everything is working as expected.

🎨 Creating Your Own Content

You can create custom animations and convert them into .RS64 format using the RS64_Converter tool, available in this separate repository:

👉 RS64_Converter on GitHub

Here’s what you need:

  1. Any video, animated GIF, or still image with a minimum resolution of 256 x 64 pixels
  2. The converter turns your media into the required .RS64 binary format, which the display can render in real time

💻 Platform Support

  1. The converter is available as a macOS .dmg installer
  2. You can also build it from source on Windows or Linux using the included code (open source, as always!)

Once you’ve copied the .RS64 files to the SD card and inserted it into the display, you're ready to hit the power button and enjoy your spinning pixel art!

Wrap-Up & Final Thoughts

Congratulations — you've just completed the Rotating LED Sphere!

This project brings together the best of electronics, programming, mechanical design, and visual art in a compact, mesmerizing display. Whether you’re showing off colorful patterns, looping GIFs, or even full videos, the result is always eye-catching.

🔧 What You’ve Built:

  1. A fully functional POV (Persistence of Vision) display
  2. Powered by the RP2040 microcontroller
  3. Capable of wireless control via ESP01s
  4. Customizable through an open-source toolchain
  5. Driven by clever multiplexing and minimal hardware

💡 What You’ve Learned:

  1. How to build a device with SMD printed circuit boards, utilizing soldering and assembly services of a PCB manufacturer
  2. How to work with VS Code and PlatformIO
  3. How to build and align precision mechanical assemblies
  4. How to bring together software and hardware for a seamless result

🚀 What’s Next?

Now that you’ve built the base system, you might explore:

  1. Designing your own animation styles or effects
  2. Or even building a larger version!

This project is fully open source. Feel free to fork it, remix it, or improve it — just be sure to credit the original source and keep it non-commercial (as per CC BY-NC-SA 4.0).

🙌 Thank You!

If you enjoyed this build, please consider:

  1. Leaving a comment or question below 💬
  2. Giving the project a ⭐ on GitHub, a like on youTube or a like here on instructables.com
  3. Sharing your build photos or videos — I’d love to see what you create!

Happy making — and keep those LEDs spinning!