Link Search Menu Expand Document

M0184 Software Guide

Table of contents

  1. Summary
    1. Components
    2. Software Block Diagram
  2. Use Cases
    1. voxl-elrs Utility
    2. Setting Up PWM Pins
    3. Setting PWM Over IP
      1. Summary
      2. PX4 Params
      3. Example
      4. Failsafe

Summary

Components

Component/RepoNotes
elrs-build-dockerDocker container that can clone/build FW with ease
VOXL SDKUsed to deploy all required software/firmware components to VOXL / ELRS hardware
ExpressLRSFork of Express LRS supporting ELRSv1 (goal is to mainline) that runs on ELRS v1 (M0184)
crsf_rcPX4 driver running in voxl-px4 that communicates over CRSF to ELRS v1 hardware
voxl-elrsVOXL2 command line utility, used to update FW/config on ELRS v1 from VOXL2, part of the SDK
FW bootloaderOpen source ExpressLRS bootloader

Software Block Diagram

Use Cases

voxl-elrs Utility

See voxl-elrs utility on target.

Setting Up PWM Pins

Up to four PWM pins can be configured. Examples of config files that can be loaded in:

Stinger Vision FPV

Setting PWM Over IP

Summary

SDK 1.4.6 or newer required.

Using a Transmitter as a USB joystick, you can setup a switches to buttons and map these to PWM channels physical on the M0184 radio, supporting the ability to set PWM values over IP connections.

PX4 Params

RC_CRSF_BUTTON1 through RC_CRSF_BUTTON8

  • Selects a button as input that will be mapped to a PWM channel output

RC_CRSF_PWMCHN1 through RC_CRSF_PWMCHN8

  • Selects a PWM channel output for button1 through button8

RC_CRSF_PWMVAL1 through RC_CRSF_PWMVAL8

Example

Let’s say a LED bar was soldered to PWM pin P0, and configured for RC channel 7 (for example Stinger Vision FPV).

A PWM value of 1000 turns it off, a value of 1500 turns it to IR, and a value of 2000 turns it to visible light.

On an RC trasnmitter, we configure a 3-pos switch to map to buttons 1, 2 and 3.

In voxl-px4, we set PX4 params using params/v1.14/radio_helpers/pwm_via_elrs.params:

  • RC_CRSF_BUTTON1 to 1, RC_CRSF_PWMCHN1 to 7, RC_CRSF_PWMVAL1 to 191* (This maps to 1000)
  • RC_CRSF_BUTTON2 to 2, RC_CRSF_PWMCHN2 to 7, RC_CRSF_PWMVAL2 to 992* (This maps to 1500)
  • RC_CRSF_BUTTON3 to 3, RC_CRSF_PWMCHN3 to 7, RC_CRSF_PWMVAL3 to 1792* (This maps to 2000)

*See PWM value mappings here

Failsafe

  • When IP connection is connection and lost - TODO
  • When IP connection is connected and RC connection gained and lost - TODO