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.
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.
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
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.
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:
Maybe a combination of Flytron STROBON lights would work for you either wired to one PWM or a combination of two AUX channels.
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.
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.