QLiteArmer is a dual‑core RP2040‑based telemetry OSD and HD arming system designed for FPV pilots, RC FPV vehicles, RC builders, and embedded developers.
It provides:
- Full Betaflight‑style OSD for DJI O3/O4 and Walksnail Avatar HD
- GPS + barometer telemetry processing
- CRSF/ELRS channel breakout
- PWM‑based arming (Channel 5)
- 8‑channel servo expansion
- Deterministic, non‑blocking architecture
QLiteArmer is an OSD and arming module — arming is controlled by RC PWM Channel 5.
Get the QLiteArmer PCB Short Kit Here
QLiteArmer includes a complete Betaflight‑compatible OSD renderer supporting:
- Satellite count
- Pack voltage
- Cell voltage
- Vertical speed
- RC link quality (ELRS LQ)
- Distance from home
- Altitude
- Ground speed
- Total trip distance
- Latitude / longitude
- Home arrow (16‑direction)
- Ground radar of home
- Crosshair
- Flight timer
- Throttle value
- Compass heading
Compatible with:
- DJI O3 / O4 Air Unit
- Walksnail Avatar HD (Goggles X / VTX)
Uses Betaflight character mappings and custom glyphs for home arrow rendering.
This project includes a full custom character map matching Betaflight’s DisplayPort glyph layout, adapted for Walksnail Avatar HD.
---Arming is now 100% PWM‑based:
- Uses RC Channel 5 (default)
- Arms when PWM > threshold (default: 1700 µs)
- Disarms when PWM < threshold
This ensures predictable, pilot‑controlled arming behavior.
- Autodetects baud rate (9600, 38400, 57600, 115200)
- Home position lock
- Distance from home
- Bearing to home
- Ground radar showing home
- Ground speed
- Latitude / longitude
- Total trip distance
- GPS fix + satellite count
- Altitude (cm)
- Vertical speed (cm/s)
- VBAT via ADC
- Configurable voltage divider
- Pack voltage displayed in OSD
- Per cell voltage
- Metric or Imperial (configurable)
QLiteArmer includes a hardware‑accurate servo expander:
- 8 PWM outputs
- Per‑channel min/max mapping
- Per‑channel failsafe values
- Frequency‑matched output
- CRSF/ELRS channel passthrough
- Ultra‑stable RP2040 hardware PWM
Define individual channel range and failsafe in the config.h file:
static const ChannelMap CH_MAP[8] = {
{988, 2012, 1500}, // CH1
{988, 2012, 1500}, // CH2
{988, 2012, 1000}, // CH3 (Throttle failsafe = 1000)
{988, 2012, 1500}, // CH4
{988, 2012, 1500}, // CH5
{500, 2500, 1500}, // CH6 (expanded range)
{988, 2012, 1500}, // CH7
{988, 2012, 1500} // CH8
};| Function | Pin(s) | Notes |
|---|---|---|
| CRSF / ELRS UART | GP8 (TX), GP9 (RX) | Primary RC link |
| MSP UART (VTX) | GP0 (TX), GP1 (RX) | DJI / Walksnail |
| I²C (BMP280) | GP4 (SDA), GP5 (SCL) | Barometer |
| VBAT ADC | GP26 | Voltage divider |
| PWM CH1–CH8 | 13, 12, 11, 10, 7, 6, 3, 2 | Servo/motor outputs |
| RGB LED | GP16 | Onboard WS2812 |
| GPS | GP14 (TX), GP15 (RX) | 4‑wire GPS |
This project is built for the Raspberry Pi Pico / RP2040 / RP2350 architecture using the Arduino IDE. Follow the steps below to configure your development environment.
You must use the Arduino Pico core maintained by Earle F. Philhower, III.
- Open the Arduino IDE.
- Navigate to File -> Preferences.
- Locate the Additional Boards Manager URLs field and paste the following URL:
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json - Click OK.
- Go to Tools -> Board -> Boards Manager...
- Search for
PicoorPhilhowerand install Raspberry Pi Pico/RP2040/RP2350 by Earle F. Philhower, III. - Once installed, go to Tools -> Board -> Raspberry Pi Pico/RP2040 and select Waveshare RP2040 Zero.
Open the Arduino Library Manager (Tools -> Manage Libraries... or press Ctrl+Shift+I / Cmd+Shift+I) to search for and install:
- Adafruit BMP280 Library (by Adafruit)
- NeoPixelBus (by Makuna)
💡 Note: When installing the
Adafruit BMP280library, the IDE will ask to install required dependencies (likeAdafruit BusIOandAdafruit Unified Sensor). Make sure to select Install All so everything compiles successfully.
These are the recommended components for building a complete QLiteArmer module.
All links are affiliate links that help support the project at no additional cost.
-
QLiteAmer PCB Board by Qrome
https://www.etsy.com/shop/BSRC?section_id=59459029 -
RP2040‑Zero
https://amzn.to/4v0oCKq -
M100-5883 GPS (115200 bps 5Hz - 10Hz)
https://amzn.to/4weRRKt -
HGLRC ExpressLRS 915 MHz Receiver
https://amzn.to/4w56T5E -
BMP280‑3.3 Atmospheric Pressure Sensor
https://amzn.to/44y8Onq
- 3A Mini DC‑DC Buck Converter (5.5–30 V → 5 V)
https://amzn.to/4wcNi3h
-
30 kΩ Resistor (¼ W)
https://amzn.to/3StSnWB -
7.5 kΩ Resistor (¼ W)
https://amzn.to/440p8Nx -
0.1 µF (100 nF) Ceramic Capacitors (104)
https://amzn.to/4xO8TAQ -
1000 µF 25 V Electrolytic Capacitor (optional)
https://amzn.to/4vtyai8
- Pin Header, 2.54mm 40Pin Male and Female Header Pins
https://amzn.to/4oQfh6B
-
RADIOMASTER TX15 Max
https://amzn.to/4vCAtQa -
Walksnail Avatar HD FPV Goggles X
https://amzn.to/4f2cXWN -
Walksnail Avatar GT2 Kit – Air Unit
https://amzn.to/4geaycN
-
Boot
- System initializes dual‑core architecture
- Blue LED indicates boot state
-
Telemetry Acquisition
- Core 1 handles GPS, barometer, battery, and OSD
- Core 0 handles CRSF/ELRS and PWM output
-
OSD Rendering
- MSP DisplayPort frames generated in real time
- Betaflight‑compatible glyphs
- Home arrow computed from GPS bearing
-
Arming
- PWM Channel 5 controls arming
- Red LED is holding and ready to arm
- Green LED is armed with high power and recording
- Amber LED no VTX detected
-
Servo Expansion
- CRSF channels mapped to PWM outputs
- Failsafe values applied on link loss
- CRSF/ELRS UART
- PWM output generation
- MSP heartbeat
- Channel mapping
- Failsafe handling
- MSP DisplayPort
- GPS parsing
- Barometer updates
- Battery ADC
- OSD composition
- State machine
- LED driver
- SerialPIO is used for GPS
- Requires careful initialization order
- LED initialization must occur before SerialPIO
- Both fully supported
- LED color order differs between boards (Red and Green are swapted)
- Auto‑detected via compile‑time selection
Each channel has:
minUsmaxUsfailsafeUs
Example (from config.h):
static const ChannelMap CH_MAP[8] = {
{988, 2012, 1500}, // CH1
{988, 2012, 1500}, // CH2
{988, 2012, 1000}, // CH3 (Throttle failsafe = 1000)
{988, 2012, 1500}, // CH4
{988, 2012, 1500}, // CH5
{500, 2500, 1500}, // CH6 (expanded range)
{988, 2012, 1500}, // CH7
{988, 2012, 1500} // CH8
};PWM_ARM_CHANNEL = 4(Channel 5 -- ZERO based mapping)PWM_ARM_THRESHOLD = 1700PWM_NO_SIGNAL_US = 900
Default:
- R1 = 30k
- R2 = 7.5k
- Battery: 5 Hz
- Altitude: 5 Hz
- Metric or Imperial
- VTX detection timeout: 5 minutes
- Heartbeat: 200 ms
- LED pin: GP16
- LED count: 1
- RP2040/RP2350 color order handled internally
Rows 96–111
16 directions
22.5° increments
CCW orientation
- RP2040‑Zero
- RP2350-Zero
- DJI O3 / O4 Air Unit
- Walksnail Avatar HD
- ELRS receivers
- BMP280 barometer
- Standard GPS modules
MIT License — free to modify, extend, and integrate.





