Navigation Lights

Hi, What’s the latest with support for WS2812 navigation/mode lighting in PX4? Last time I looked there wasn’t any available, but that was about a year ago.

If there aren’t any plans to support Neopixels / WS2812 LEDs, what do people currently use? I’m planning on rebuilding my EF120 (currently Betaflight) as a pixracer, but because of the extremely small size, there isn’t any room for an extra nano/micro to drive the LEDs.

I don’t believe there’s a driver for it, but if your interested in adding support I could help get you started.

@dagar is there any progress on this?

I am interested in custom lightening that is controllable via mavlink msg from companion computer. Instead of having extra hardware e.g. arduino that drives WS2812, I was thinking to write a driver for it in PX4 to control LED strip via AUX pins. So I thought to look if there is something already done. If not, it would be great to be pointed in the right direction.

Thanks.

If there is no plans for Nav lights support on the PX4. How do you use/hook-up the WS2812 leds? How do you connect the Pi?

Hi there is anyone working on this ?
@dagar: where would be the best place to start ?

Im also definitely interested in this option.

Hi there,
so after some research I decided to build a PCB for controlling the aircraft lights.
First things first, and this is based on current aviation standards.

There are 4 kind of lights in an aircraft:

  • Navigation Lights (constant on)
  • Anti-collision lights ( strobe, and dual strobe)
  • Beacon Lights ( blink ever second)
  • Landing Lights ( well when landing obviously)

Reference from Airbus A320: https://i.stack.imgur.com/2Tzfc.png

Possible solutions

Solution 1.
One solution would be to create an application to drive directly the current AUX or MAIN outputs. When driving the AUX either we load a program on the IO MCU or we have to constantly turn on and of the lights over the UART (FMU->IO_MCU). Well this overloading the serial port and the MCUs for just blinking some LEDs. This is obviously the worst solution.

When using the MAIN outputs this would be the best solution. However we still need to use the FMU all the time to do the blinking(could use a hard-timer to release the load). But if you plan on having multiple FMUs this is not going to work in case the FMU that is controlling the lights hangs somewhere.

Solution 2
This solution uses an I2C LED driver with Programmable Lighting Sequences(All in one chip).
Why I like this solution? Can plug in any I2C bus, program the light sequence and let it run. Can just turn on/off on request. And you can ofcourse have FMU-redundancy without affecting the aircraft lights behavior.
I am currently writing the drive and the app for controlling from px4 over I2C.
The IC that I am using is the:
LP5562 - 4-channel RGB/White LED driver with internal program memory and Independent channel control
There is a second stage on the PCB that makes the MOSFET switch…so that you can control any type of LED source.

Take a look at this TI article for further details:
https://e2e.ti.com/blogs_/b/powerhouse/posts/why-you-need-a-programmable-lighting-engine-when-designing-led-driver-circuit

Maybe a combination of Flytron STROBON lights would work for you either wired to one PWM or a combination of two AUX channels.

Good luck.

Hi @rollys thanks for the link. This kind of controllers are based on the NeoPixel LEDs. Which is not bad for Hobby or Fun drones. But if you want something more professional you need something more reliable and flexible control. Besides I want to be able to control any LED type from PX4 without overloading the MCU. :wink:

For those who want a more easy and affordable solution you can also just try to use any unused pins from your FC and create a smal task that blinks the LEDs every sec or so.
I am currently writing a module with mavlink interface that allows to turn the lights on/off via mavlink
CPU usage so far (on the STM32H7 at 480MHZ) is under 1%.
We might even replace I2C LED driver by this…less wires …less code… less costs…same objective reached. :wink:

Explicit support for WS2812 LEDs in PX4 is the commonly requested characteristic but, directly integrating it currently, is restricted. Nevertheless, some of the developers have found a way around it by using external controllers, the approach that is not the best for compact builds similar to your EF120. In case PX4 does not have built-in support, you have the option of using LED drivers that are addressable and are compatible with commands coming from MAVLink, but it will depend on your particular application. Since navigation lights providing visibility and flight mode indication are must-haves, finding the solution that is both lightweight and compact is essential. Maybe you have not yet looked into PX4 firmware updates and community forks that might provide experimental support for WS2812 LEDs?

What do you mean by this @tonni ?

the PX4 firmware does not natively support WS2812 LEDs, or there are limitations preventing seamless integration within the firmware. This could be due to technical constraints, lack of official driver support, or development priorities. Instead of directly controlling WS2812 LEDs through PX4, users must rely on external controllers or alternative LED drivers, which may not be ideal for compact builds like the EF120.

There is no restriction to allow this functionality, and there is also no technical limitation. Let me know if you need help writing the driver.