AlessandroAU Registered User Thread OP

New Product ExpressLRS, DIY LoRa based, race-optimized RC link system



https://github.com/AlessandroAU/ExpressLRS



Discord Chat:



ExpressLRS is an open source RC link for RC aircraft. It is based on SX127x hardware combined with an ESP8285, ESP32 or STM32 for RX and TX respectively. Compared to commerical systems ExpressLRS is also very affordable, a TX module can be built for $30 and recievers for $15-20.



ExpressLRS can be flashed into existing Frsky R9M hardware (RX and TX) or custom PCBs can be make to suit. It can run at 200 Hz, 100 Hz or 50 Hz depending on if you prefer range or low latency. This system does FHSS over a configurable number of channels. At 200 Hz it is the fastest 900/433 MHz RC link on the market with a Stick -> OpenTX > RF -> RX -> Serial Packet Latency of ~10ms or ~6.5ms on firmwares with crsfshot support. Due to the optimized packet structure only basic telemetry that gives uplink/downlink information is currently supported.



TX and RX modules communicate via the standard CRSF serial protocol for easy use with Betaflight and openTX.



ExpressLRS test flight with Blackbox overlay; 50mw ESP32 TX + ESP8285 RX (1 min 45 sec)



Hardware

ExpressLRS can be flashed to a range of different targets for both the transmitter module (TX) and the receiver (RX). This page describes the hardware options, and their differences. See Flashing ExpressLRS for info on how to get ExpressLRS onto these targets.



Supported TX Modules

FrSky R9M (2018 model)







Frsky's is based on the STM32F301, and the sx1276 with a power amplifier.

STLink v2 required for flashing firmware

Firmware cannot be flashed back to FrSky after flashing ExpressLRS (one way trip)

Supports a number of power levels, up to a max of 2W

Only supports 115200 baud between opentx and the module, unless you do an "inverter mod", which is as simple as adding a pull up resistor

Works out of the box, with minimal soldering required.

Where to buy: local RC groups will be your best bet.



TTGO LoRa v1 (not recommended due to low output power use V2 module)



Uses the ESP32, and a TTGO 915mhz module

No extra hardware required for flashing firmware (except a USB cable)

Limited to 10mW power output (sub-optimal, recommend buying the v2 instead)

Supports 400000 baud between opentx and the module without mods

Need to 3D print a JR module enclosure, mount a pin header, and add a voltage reg to build a complete module:







Where to buy:



TTGO LoRa v2



Uses the ESP32, and a TTGO 915mhz module

No extra hardware required for flashing firmware (except a USB cable)

Limited to 50mW power output

Supports 400000 baud between opentx and the module without mods

Need to 3D print a JR module enclosure, mount a pin header, and add a voltage reg to build a complete module:







Where to buy:



Custom made ESP32 PCB + RFM95 or E19



Uses the ESP32, and a RFM95 module (for 50mW) or an E19 module (for ~250mW)

Requires ordering PCBs from gerbers, a voltage reg, a few passives, some connectors, an ESP32, and an RFM95

RFM95 limited to 50mW power output, E19 limited to ~250mW

Supports 400000 baud between opentx and the module without mods

Needs to be hand built from scratch.









Supported RX Modules

FrSky R9 Mini, or R9MM



Uses the STM32F301, and the sx1276

STLink v2 required for flashing firmware

Firmware cannot be flashed back to FrSky after flashing ExpressLRS (one way trip)

Smallest ExpressLRS compatible RX

Works out of the box, with minimal soldering required, however the pads for flashing can be difficult to solder to.

Where to buy: local RC groups will be your best bet.







DIY ESP8285 RX



Multiple RX PCB designs available

Uses the ESP-01F module, and a RFM95 module

Requires ordering PCBs from gerbers, a reg IC, a few passives, ESP-01F, and an RFM95

Needs to be hand built from scratch

For a full BOM, see BOM

Update firmware over WiFi!







Toolchain Installation



ExpressLRS is written in C++ using the Arduino framework. Rather than use the Arduino IDE (which let's face it, is pretty clunky), we use platformio which is a plugin for vscode.



Downloading and Installing PlatformIO

Download a copy of vscode for you specific OS from here:

Open vscode,and click on the "Extensions" icon in the toolbar on the right (see Managing Extensions for more info).

In the search box, enter "platformio", and install the extension (see the pio install docs for more info).

All done, toolchain installed!



First Build

Using your favourite git tool, clone the ExpressLRS repo.

When you first launch vscode, you should see the platformio home page in a tab. Select the "Open Project" button, and navigate to the ExpressLRS repo directory, then into the src folder (i.e. /ExpressLRS/src/), then press the Open button.

In the toolbar on the right, click the "PlatformIO" icon, which will show the list of tasks.

Under "PROJECT TASKS", click the "Build" row. This will run the build (compile) for all supported targets.

After a few minutes, you should see the passing build results in the terminal panel.

The first build will take longer than usual.



Flashing ExpressLRS



FrSky R9M (2018 model)



Remove the top cover, unscrew the antenna SMA, and remove the PCB from the base enclosure

Solder 4x patch wires to these 4 pads:







Connect your STLink v2 to the 4 wires as follows:







To be safe, attach an antenna prior to powering up.

Plug your STLink into your computer (install drivers if required), and open the ExpressLRS repo in vscode.

In the platformio toolbar, expand the folder in the tree for "env:R9M_TX_2018_STM32F301", and click "Upload".







If the upload was successful, you should see the success message in the terminal output, and the R9M should play the startup tones.

At this point, you can use the R9M with your transmitter at 115200 baud. To allow 400000 baud in OpenTX, you need to add a pullup resistor to the inverter for S-Port. Connect a 500R to 1K resistor between 3.3V and the inverter pin as per the picture:







You are ready to go!



FrSky R9 Mini, or R9MM



Connect your STLink v2 to the 4 small pads GND, DIO (Data), CLK (Clock), 3.3V:







Select the R9MM_R9MINI_RX_STM32F301_STLINK target and Upload.



After connecting Rx (A10) and Tx (A9) to a flight controller and setting up the receiver with the CRSF serial protocol, the R9MM_R9MINI_RX_STM32F301_BetaflightPassthrough target may now be used for future uploads through Betaflight.



DIY ESP8285 RX

// TODO I want to present to the community ExpressLRS, a pet project I've been working on for awhile.Discord Chat: https://discord.gg/dS6ReFY ExpressLRS is an open source RC link for RC aircraft. It is based on SX127x hardware combined with an ESP8285, ESP32 or STM32 for RX and TX respectively. Compared to commerical systems ExpressLRS is also very affordable, a TX module can be built for $30 and recievers for $15-20.ExpressLRS can be flashed into existing Frsky R9M hardware (RX and TX) or custom PCBs can be make to suit. It can run at 200 Hz, 100 Hz or 50 Hz depending on if you prefer range or low latency. This system does FHSS over a configurable number of channels. At 200 Hz it is the fastest 900/433 MHz RC link on the market with a Stick -> OpenTX > RF -> RX -> Serial Packet Latency of ~10ms or ~6.5ms on firmwares with crsfshot support. Due to the optimized packet structure only basic telemetry that gives uplink/downlink information is currently supported.TX and RX modules communicate via the standard CRSF serial protocol for easy use with Betaflight and openTX.ExpressLRS can be flashed to a range of different targets for both the transmitter module (TX) and the receiver (RX). This page describes the hardware options, and their differences. See Flashing ExpressLRS for info on how to get ExpressLRS onto these targets.Frsky's is based on the STM32F301, and the sx1276 with a power amplifier.STLink v2 required for flashing firmwareFirmware cannot be flashed back to FrSky after flashing ExpressLRS (one way trip)Supports a number of power levels, up to a max of 2WOnly supports 115200 baud between opentx and the module, unless you do an "inverter mod", which is as simple as adding a pull up resistorWorks out of the box, with minimal soldering required.Where to buy: local RC groups will be your best bet.(not recommended due to low output power use V2 module)Uses the ESP32, and a TTGO 915mhz moduleNo extra hardware required for flashing firmware (except a USB cable)Limited to 10mW power output (sub-optimal, recommend buying the v2 instead)Supports 400000 baud between opentx and the module without modsNeed to 3D print a JR module enclosure, mount a pin header, and add a voltage reg to build a complete module:Where to buy: https://www.aliexpress.com/item/4000059700341.html Uses the ESP32, and a TTGO 915mhz moduleNo extra hardware required for flashing firmware (except a USB cable)Limited to 50mW power outputSupports 400000 baud between opentx and the module without modsNeed to 3D print a JR module enclosure, mount a pin header, and add a voltage reg to build a complete module:Where to buy: https://www.ebay.ca/itm/TTGO-LORA32-...72.m2749.l2649 Uses the ESP32, and a RFM95 module (for 50mW) or an E19 module (for ~250mW)Requires ordering PCBs from gerbers, a voltage reg, a few passives, some connectors, an ESP32, and an RFM95RFM95 limited to 50mW power output, E19 limited to ~250mWSupports 400000 baud between opentx and the module without modsNeeds to be hand built from scratch.Uses the STM32F301, and the sx1276STLink v2 required for flashing firmwareFirmware cannot be flashed back to FrSky after flashing ExpressLRS (one way trip)Smallest ExpressLRS compatible RXWorks out of the box, with minimal soldering required, however the pads for flashing can be difficult to solder to.Where to buy: local RC groups will be your best bet.Multiple RX PCB designs availableUses the ESP-01F module, and a RFM95 moduleRequires ordering PCBs from gerbers, a reg IC, a few passives, ESP-01F, and an RFM95Needs to be hand built from scratchFor a full BOM, see BOMUpdate firmware over WiFi!ExpressLRS is written in C++ using the Arduino framework. Rather than use the Arduino IDE (which let's face it, is pretty clunky), we use platformio which is a plugin for vscode.Download a copy of vscode for you specific OS from here: https://platformio.org/platformio-ide Open vscode,and click on the "Extensions" icon in the toolbar on the right (see Managing Extensions for more info).In the search box, enter "platformio", and install the extension (see the pio install docs for more info).All done, toolchain installed!Using your favourite git tool, clone the ExpressLRS repo.When you first launch vscode, you should see the platformio home page in a tab. Select the "Open Project" button, and navigate to the ExpressLRS repo directory, then into the src folder (i.e. /ExpressLRS/src/), then press the Open button.In the toolbar on the right, click the "PlatformIO" icon, which will show the list of tasks.Under "PROJECT TASKS", click the "Build" row. This will run the build (compile) for all supported targets.After a few minutes, you should see the passing build results in the terminal panel.The first build will take longer than usual.Remove the top cover, unscrew the antenna SMA, and remove the PCB from the base enclosureSolder 4x patch wires to these 4 pads:Connect your STLink v2 to the 4 wires as follows:To be safe, attach an antenna prior to powering up.Plug your STLink into your computer (install drivers if required), and open the ExpressLRS repo in vscode.In the platformio toolbar, expand the folder in the tree for "env:R9M_TX_2018_STM32F301", and click "Upload".If the upload was successful, you should see the success message in the terminal output, and the R9M should play the startup tones.At this point, you can use the R9M with your transmitter at 115200 baud. To allow 400000 baud in OpenTX, you need to add a pullup resistor to the inverter for S-Port. Connect a 500R to 1K resistor between 3.3V and the inverter pin as per the picture:You are ready to go!Connect your STLink v2 to the 4 small pads GND, DIO (Data), CLK (Clock), 3.3V:Select the R9MM_R9MINI_RX_STM32F301_STLINK target and Upload.After connecting Rx (A10) and Tx (A9) to a flight controller and setting up the receiver with the CRSF serial protocol, the R9MM_R9MINI_RX_STM32F301_BetaflightPassthrough target may now be used for future uploads through Betaflight.// TODO Images View all Images in thread Views: 129





Views: 172





Views: 176





Views: 188





Views: 26





Views: 29





Views: 18





Views: 24





Views: 17





Views: 14





Views: 23





Views: 18





Views: 32





Views: 41



