/mLRS

2.4 GHz LORA based telemetry and radio link for remote controlled vehicles

Primary LanguageCGNU General Public License v3.0GPL-3.0

mLRS

This is the mLRS project. Its goal is an open source 2.4 GHz LORA-based high-performance long-range radio link, which provides transparent bidirectional serial connection combined with full remote control.

The 'm' in the project name alludes to 'Mavlink', as it will have features which optimizes performance for Mavlink systems. However, it always will also provide a transparent serial link and hence will be of wider use and by no means limited to Mavlink systems only. The 'LR' in the project name alludes to 'long range', which however should not be understood in terms of an absolute range, like 50 km or so, but - of course - as the best possible range under the given conditions. Physical laws simply say that the higher the data rate the shorter the range. So, mLRS cannot compete range-wise with systems which achieve their range by reducing data rate to the minimal, at the cost of compromises. The goal of mLRS is to achieve a high range under the condition of a relatively high data rate.

Typical specs could be 14 RC channels at "full" resolution (11 bit for channels 1-4, 8 bit for channels 5-14) with 50 Hz update rate, and serial data rates of about 3-5 kB/s.

Many LRS or radio links with telemetry exist, among them open source projects such as SiK radios, OpenLRS, ExpressLRS, but also befinitiv wifibroadcast based projects like OpenHD or Ruby, closed source hobbyist projects such as UltimateLRS, QczekLRS, as well as commercial systems such as DragonLink, RFD900, Dronee Zoon, Siyi, but also TBS Crossfire and alike.

However, while all these systems are truely excellent and achieve their goals, and some of them are indeed close to what the project aims at, none of them check all points, like

  • relatively cheap
  • 2.4 GHz
  • Lora
  • full-duplex with sufficient data rate
  • open source
  • rich features for Mavlink systems

Hence this project. In addition, as another main feature, we want it to

  • integrate with MAVLink for OpenTx

which will yield the most fluid user experience.

Disclaimer

You of course use the project fully at your own risk.

Project Status

The project is work in progress, and there is still a long mile to go before it could be called mature or reliable.

It is "working" in the sense that it offers a bidirectional serial link with RC data, and as such provides the basic framework. It also integrates with the MAVLink for OpenTx project. But as said, it is far from really usable.

Installation Bits and Bops

This is a STM32CubeIde project. I don't have yet much experience with this framework, so I can't say much reliable, but this may work:

  • download and install latest STM32CubeIde
  • clone this repository; ensure that the submodules are also retrieved (if not run git submodule --init --recursive)
  • open Stm32CubeIde and go to 'File'->'New'->'STM32 Project from existing .ioc' and browse to one of the .ioc files. IMPORTANT: before hitting 'Finish' check the 'C++' box.
  • repeat this for all .ioc you want to open
  • copy from the 'st-hal' folder the content of the respective 'STM32FXxx_HAL_Driver' folder to the equally named folder in the 'Driver' folder
  • run 'fmav_generate_c_library.py' in 'mLRS/Common/mavlink'

Not very convennient yet, but this will improve with time :)

Hardware

Hardware is quite a problem currently. One might be tempted to think that all the recent ExpressLRS hardware should be good platforms, but this is unfortuantely not so. The ESP's simply do not offer the peripherals which are desired for mLRS TX modules, hence I started with STM32 as main platform. I am not against ESP however, to the contrary. So if anyone wants to add ESP32 please join.

The code so far is for the Siyi FM30 system (early version only, i.e., the version with the STM32 chips); the TX module needs few small hardware modifications. However, I am in the process of designing hardware, which should ease the situation. Please see https://github.com/olliw42/mLRS-hardware for these designs.