CAN Lighting Board Firmware
- 1 Introduction
- 1.1 POC
- 2 Architecture
- 3 Milestones
- 3.1 M1 - Basic Functionality - F24 EOT
- 3.1.1 LED Control
- 3.1.2 Board Control
- 3.1.3 Central Control
- 3.2 M2 - “Advanced” Lighting Control - Ideally ready for COMP
- 3.2.1 LED Control
- 3.2.2 Board Control
- 3.2.3 Central Control
- 3.2.4 Integration level
- 3.2.5 M3 - Stretch Goals for future
- 3.1 M1 - Basic Functionality - F24 EOT
- 4 OLD / archive
- 5 Contributors
Introduction
This document describes CAN lighting board firmware. Check out the sub-pages and warg-internal documentation for more information.
POC
@Anthony Luo Software architecture & Board firmware
@Folarin Fatola (Unlicensed) LED Drivers, Lighting Control, & Board firmware
@Nick Armstrong CAN Drivers, Ardupilot Communication, & Board Firmware
Architecture
See Central LED control architecture and Single-Board LED Control for more detailed description. At a high level, there are 3 layers of control.
System level control is dictated by ardupilot (+ the pilot).
Board level control is handled by the primary controller.
LED level control is provided by each boards MCU.
This allows us to break our system into a few categories:
LED Driver
Board Lighting Controller
Central System Lighting Controller + Ardupilot Communications
Note that the boards will set different LED’s for each command domain depending on the drone state. Certain drone states will also enable certain command domains immediately (i.e.: landing lights).
Milestones
These are very brief. Who knows what we do with them.
M1 - Basic Functionality - F24 EOT
Achieved using REV3 lighting boards
LED Control
Board Control
Central Control
M2 - “Advanced” Lighting Control - Ideally ready for COMP
To be achieved using REV4 lighting boards
LED Control
Board Control
Central Control
Integration level
M3 - Stretch Goals for future
This probably includes at least another spin of a special central control node. That’s not so bad because we could have one node on each warg drone and then all the warg drones can have lights that sync with each other. pretty hype.
OLD / archive
- 1 Introduction
- 1.1 POC
- 2 Architecture
- 3 Milestones
- 3.1 M1 - Basic Functionality - F24 EOT
- 3.1.1 LED Control
- 3.1.2 Board Control
- 3.1.3 Central Control
- 3.2 M2 - “Advanced” Lighting Control - Ideally ready for COMP
- 3.2.1 LED Control
- 3.2.2 Board Control
- 3.2.3 Central Control
- 3.2.4 Integration level
- 3.2.5 M3 - Stretch Goals for future
- 3.1 M1 - Basic Functionality - F24 EOT
- 4 OLD / archive
- 5 Contributors
Introduction
The purpose of this document is to describe the plan for writing the firmware for the lighting board LED Board Rev 2. The board is planned to be used for competition drone for the AEAC 2025 competition Lighting Integration 2025.
The firmware for this project can be found in this Github repository: GitHub - UWARG/efs-can-lighting: Firmware for WARG custom lighting board, communicate to Arudupilot over CAN bus..
Background
After conduction some research, we found that Ardupilot is capable of supporting LED DroneCAN peripherals DroneCAN Setup — Copter documentation. We also found that DroneCAN can send a LightCommand
message that can provide RGB data of the LED color.
Plan
The plan is to read and decode the LightCommand
message and light up the LED’s based on that data in the messages.
Setup a Simple CAN Node
The goal of this step is to setup a simple CAN node that listens for the heartbeat message from Ardupilot.
Implement something similar to libcanard/examples/SimpleNode at master · dronecan/libcanard but compatible with STM32
Refer to the ESC node libcanard/examples/SimpleNode at master · dronecan/libcanard
Request and Receive a LightCommand
Message
TODO: Add to this section of the plan
Parse LightCommand
Message and Interpret Data
TODO: Add to this section of the plan
Set LED to Requested Color
TODO: Add to this section of the plan
Contributors
@Folarin Fatola (Unlicensed)
@Mihir Gupta