In between work and school, I’ve been slowly but steadily working on the drone light show project. Finally breaking through one of the major problems I had with a workaround, I felt it necessary to update about the progress and share some of the work it took to get the lights working on the drones.
But before that, here’s some much-needed…
Context
About a year ago, I was assigned to build a small drone show fleet. After conducting some research, we chose Skybrush, and I initially built three drones for testing purposes. Following a successful demo with a full show, I was approved to build two more drones with the same configuration of parts.




The Problem
After I built two more to add to the existing fleet, I encountered a significant issue: the lights we had been using no longer functioned on these new drones. Strangely enough, the drones never underwent a hardware configuration change. But it refused to control the Neopixels with these new flight controllers.
This issue led me down several different paths in my journey to finding a solution. I even made custom LED boards, which have yet to be used (as they required a lot of extra weight, and it would take longer than I wanted to build one for each drone only to perform prototype tests).
One of the LED PCBs I built worked with a basic Raspberry Pi microcontroller. It was extremely bright when I tested it with a LiPo battery.
I wrote a longer article about it here.
However, to even use this new light module, I would still need to get the drone flight controller to communicate with my LEDs.
I later found on the Skybrush community Discord a couple of different users who switched to the I2C protocol for controlling their LEDs, as it allowed a translation layer between the flight controller and another microcontroller. Which one of the very helpful members demonstrated a couple of different use cases with servos and more LED controls:
🎥 by Stan Humphries
Fast forward to about a week ago, and after many headaches, I was still failing to get the I2C protocol to communicate between my RP2040-based controllers and the Flight controller. I took a chance and bought a pack of Arduino-based microcontrollers, on a hunch after finding that the Flight controller could detect my Arduino Uno.
With a bit of troubleshooting, I was able to get the Pixhawk to detect the microcontroller and send the LED commands correctly to my Arduino Every board.
Finale
I’ve put together some very basic lines of Arduino code and wired up a simple schematic for the new I2C LED controller in the demonstration.

Leave a Reply