Giter Site home page Giter Site logo

expresslrs / expresslrs Goto Github PK

View Code? Open in Web Editor NEW
3.1K 88.0 720.0 316.59 MB

STM32/ESP32/ESP8285-based High-Performance Radio Link for RC applications

License: GNU General Public License v3.0

C++ 44.97% C 39.02% Batchfile 0.01% Python 4.66% Lua 1.88% HTML 2.04% CSS 2.67% FreeBasic 0.43% JavaScript 4.33%
rc lora esp8266 esp32 fpv quadcopter remote-control sx1280 sx1276 drone

expresslrs's Introduction

Banner

Release Build Status License Stars Chat

Support ExpressLRS

You can support ExpressLRS by contributing code, testing new features, sharing your ideas, or helping others get started. We are exceptionally grateful for those who donate their time to our passion.

If you don't have time to lend a hand in that way but still want to have an impact, consider donating. Donations are used for infrastructure costs and to buy test equipment needed to further the project and make it securely accessible. ExpressLRS accepts donations through Open Collective, which provides recognition of donors and transparency on how that support is utilized.

Open Collective backers

We appreciate all forms of contribution and hope you will join us on Discord!

Website

For general information on the project please refer to our guides on the website, and our FAQ

About

ExpressLRS is an open source Radio Link for Radio Control applications. Designed to be the best FPV Racing link, it is based on the fantastic Semtech SX127x/SX1280 LoRa hardware combined with an Espressif or STM32 Processor. Using LoRa modulation as well as reduced packet size it achieves best in class range and latency. It achieves this using a highly optimized over-the-air packet structure, giving simultaneous range and latency advantages. It supports both 900 MHz and 2.4 GHz links, each with their own benefits. 900 MHz supports a maximum of 200 Hz packet rate, with higher penetration. 2.4 GHz supports a blistering fast 1000 Hz on EdgeTX. With over 60 different hardware targets and 13 hardware manufacturers, the choice of hardware is ever growing, with different hardware suited to different requirements.

Configurator

To configure your ExpressLRS hardware, the ExpressLRS Configurator can be used, which is found here:

https://github.com/ExpressLRS/ExpressLRS-Configurator/releases/

Community

We have both a Discord Server and Facebook Group, which have great support for new users and constant ongoing development discussion

Features

ExpressLRS has the following features:

  • 1000 Hz Packet Rate
  • Telemetry (Betaflight Lua Compatibility)
  • Wifi Updates
  • Bluetooth Sim Joystick
  • Oled & TFT Displays
  • 2.4 GHz or 900 MHz RC Link
  • Ceramic Antenna - allows for easier installation into micros
  • VTX and VRX Frequency adjustments from the Lua
  • Bind Phrases - no need for button binding

with many more features on the way!

Supported Hardware

ExpressLRS currently supports hardware from the following manufacturers: AxisFlying, BETAFPV, Flywoo, FrSky, HappyModel, HiYounger, HGLRC, ImmersionRC, iFlight, JHEMCU, Jumper, Matek, NamimnoRC, QuadKopters and SIYI.

For an exhaustive list of hardware targets and their user guides, check out the Supported Hardware and Receiver Selection pages on the website. We do not manufacture any of our hardware, so we can only provide limited support on defective hardware.

Developers

If you are a developer and would like to contribute to the project, feel free to join the discord and chat about bugs and issues. You can also look for issues at the GitHub Issue Tracker. The best thing to do is to submit a Pull Request to the GitHub Repository.

expresslrs's People

Contributors

alessandroau avatar benjinne avatar brandonrc avatar capnbry avatar cruwaller avatar dabit20 avatar deadbytefpv avatar fog-yamato avatar gretel avatar jbkingdon avatar jurgelenas avatar jyesmith avatar mavericm1 avatar maybenikhil avatar mha1 avatar mustardtigerfpv avatar ncerzzk avatar niklasvoigt avatar norulers avatar ot0tot avatar phobos- avatar pkendall64 avatar r4ynor avatar rejdukien avatar rotorman avatar schugabe avatar spencergraffunder avatar stoneddawg avatar sunjunkim avatar wvarty avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

expresslrs's Issues

r9mm-ota betaflight issues

I have been having weird issues where I will see rc input fine and then it seems like connecting the battery or something else is causing the flight controller to not see any input. I have it connected as it should be tx from the module to rx on the flight controller and rx on the module to tx. uart is set to serial rx. and the crossfire is set for the receiver provider. I am just not sure what could be causing the issue. I have it powered from 5v. Not really sure what is causing this. I have a solid link between the receiver and transmitter though

Implement usage of MSP protocol in ELRS

PR #61 adds support for the MSP protocol in ELRS. We need to define some requirements around how it will be used within the codebase.

Some considerations are:

  • Which UART will MSP use to send/receive on? UART2 on R9M? Which one on ESP32?
  • Will that UART be reserved for MSP, or multi-use? I.e.
    • will we still pump debug log msgs out the same UART?
    • If yes, how will that affect any parties on the other end of that UART that are expecting MSP replies? The MSP class does not require that it has sole control over a UART, so we can toggle who's using the spare UART in realtime.
  • When do we want to be listening for MSP data and acting on it?
    • In the main loop() function via a Serial.available() call?
    • Will this affect/be affected by the interrupt processing on RF packets?
  • What should the TX code do when it receives a complete MSP packet? We need to think about how we forward that to the RX, then to BF, and/or how we process it if the TX should act on it (i.e. SetRFRate packet)

minor LUA improvement

The current LUA script shows a lot of question marks when, for example, there is no ExpressLRS TX found.

The crossfire LUA shows "Waiting for Crossfire" in that case.
Would be neat if the ExpressLRS LUA can show that message as well, when no comm. is possible with the TX module.

TTGO LORA32 V2.0 Signal Range

Im going to build my receiver using the TTGO LORA32 V2.0, how does this can be compared with the range of Frsky RM9 module? Am I going to get same strenght of signal for long range as in RM9 module? Appreciate it

TTGO Display

Thanks for this project.
I want to ask, you have a plan to add support for S.port ( mavlink telemetry ) probably only latest GPS data and battery information in TTGO display . it would be very useful in crashes.

Thanks

More cleanup in ESP32uartTask

I noticed a couple of opportunities for improvements in ESP32uartTask and left some comments (didn't want to pollute the PR I was working on with unrelated changes)

EU compatibility

Hey, interesting project - thanks for sharing.
In order to use it over here in the EU we would need this to run on 868MHz, which I assume would not be a big deal. How about LBT - did you consider implementing that at all?

Esp-01 support as RX?

It is really easy to solder onto SOT-8 pins of built-in SPI flash, and GPIO pins from pinheader can be used for NSS and RST on LoRa. I don't really need LEDs, but if I remember correctly, ESP-01 has one onboard. So, is there a way to share built-in flash SPI bus to connect SX127x, or it will make program flash very slow to the point when it becomes unusable? And what pins are used to communicate with SX127x other than SPI?

Troubleshooting data on WiFi page or FTDI serial for DIY receivers

For those of us hand building DIY ExLRS receivers, I believe it is a given that we may introduce (ahem) QC issues into our hardware during the production process.

To assist in troubleshooting, I would like to be able to obtain feedback from the receiver itself thru either the WiFi web page, or serial link using PuTTY or similar software.

Parameters I would like to see are:

-ESP-01F health (Admittedly may be unnecessary if you’re getting the web page)
-RF link status and channel values.
-Link status with the SX1280 chip.
-Any other info the ESP can give us to help troubleshooting.

Thanks!

OTA MSP packets

Discussion on MSP OTA packet sends...

Repurpose SWITCH_DATA_PACKET into a MSP_DATA_PACKET since it will not be used with the switch PR.

#define SWITCH_DATA_PACKET 0b01

function we should use a custom single byte for OTA. Using 2 bytes will be a waste as I dont think we will be sending more than 256 different MSP functions.

payload size omit since it is known. Or squeeze in for functions with variable length.

payload There are 6 free bytes to send MSP. For small packets this will be easy and payload bytes can be copied byte for byte. For larger packets the bytes can be optimised and packed e.g. pitmode in VTx control only needs a single bit can not a whole byte.

  Radio.TXdataBuffer[0] = (DeviceAddr << 2) + MSP_DATA_PACKET;
  Radio.TXdataBuffer[1] = MSP[0];
  Radio.TXdataBuffer[2] = MSP[1];
  Radio.TXdataBuffer[3] = MSP[2];
  Radio.TXdataBuffer[4] = MSP[3];
  Radio.TXdataBuffer[5] = MSP[4];
  Radio.TXdataBuffer[6] = MSP[5];
  Radio.TXdataBuffer[7] = CRC;

E.g. VTx control

  Radio.TXdataBuffer[0] = (DeviceAddr << 2) + MSP_DATA_PACKET;
  Radio.TXdataBuffer[1] = MSP_SET_VTX_CONFIG; // 89
  Radio.TXdataBuffer[2] = freq[0];
  Radio.TXdataBuffer[3] = freq[1];
  Radio.TXdataBuffer[4] = powerIndex;
  Radio.TXdataBuffer[5] = pitMode;
  Radio.TXdataBuffer[6] = 0;
  Radio.TXdataBuffer[7] = CRC;

An example of packing this more efficiently is to reduce freq to 12b, powerIndex 3b, and pitmode to 1b.

OTA sends should also be sent mulitple times since there is currently no feed back mechanism e.g. send 6 times separated by 100ms per send.

Add ranging for SX1280

The SX1280 has a neat capability to do time of flight measurement to estimate distance between the tx and rx. This could be really useful for locating a fail-safed quad in tall vegetation for example.

Help Identifying Part from 2018 R9 Mod

I wasn't sure where else to ask this, but when adding the 1000ohm resistor on my 2018 R9 unit, I broke a leg off of the 3-legged SO-23 package (the thing that isn't the capacitor). Do you know what this part is? I have found an SO-23 package with the same 'J6' marking; it says it's an NPN transistor, part number 'mms9014'. Not sure if this is what I want, but I'd like to buy a replacement part. Thanks.

link issues

I have a 2018 r9m, accst vesrsion, and a r9mm-ota access receiver. I have successfully flashed both and just went through again to make sure that everything is the same for userdefines when flashed. I do not know if this is an issue with the hardware I chose being incompatible but initially this morning after turning my radio on first and then turning the quad on II was able to get a good link for about 5 minutes before I started having the drops. I am sitting here typing this with my radio not far from the receiver and have no connection. I am not sure what is going on. I have a video showing some of the issues I had: https://www.youtube.com/watch?v=ZwWq6rrEEis&feature=youtu.be
https://www.youtube.com/watch?v=9zAYon2IZm4&feature=youtu.be
two videos explain the situation.

R9MX pinout

R9mx flash expresslrs. Can someone tell me the pin of crsf? Thank you very much

RadioLib license

Hello,

First of all, I want to say that your RC control system using SX127x radio looks very cool - definitely something that would not come to my mind when considering projects to do with LoRa :D

That being said, in your LoRaRadioLib library (which is a part of this repository), you have obviously used large portions of RadioLib or LoRaLib code. Both of these libraries are developed by me, and it takes quite a lot of my free time. I don't intend to discourage people from building up on my work - quite the contrary, adapting code written by other people is one of the core ideas of open source development.

However, RadioLib/LoRaLib MIT License explicitly states that:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

This is usually understood as including the original copyright holder's name in the appropriate section of the software. Would it be possible to add this copyright notice, as to comply with RadioLib/LoRaLib license?

Thank you very much.

Stuck in bootlop after flashing TTGO V2.0 LoRa module

I seem to be running into a problem after flashing firmware to my TTGO V2.0 module from VSCode.

I hit "Upload and Monitor", building and upload works fine, but then I seem to be stuck in a boot loop:

Auto-detected: /dev/ttyUSB0
Uploading .pio/build/DIY_900_TX_TTGO_V2_SX127x_via_UART/firmware.bin
esptool.py v2.6
Serial port /dev/ttyUSB0
Connecting.....
Chip is ESP32-PICO-D4 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, VRef calibration in efuse, Coding Scheme None
MAC: d8:a0:1d:49:e4:58
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 15872 bytes to 10319...

Writing at 0x00001000... (100 %)
Wrote 15872 bytes (10319 compressed) at 0x00001000 in 0.1 seconds (effective 937.5 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 128...

Writing at 0x00008000... (100 %)
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.0 seconds (effective 7955.5 kbit/s)...
Hash of data verified.
Compressed 8192 bytes to 47...

Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 32774.3 kbit/s)...
Hash of data verified.
Compressed 264288 bytes to 135121...

Writing at 0x00010000... (11 %)
Writing at 0x00014000... (22 %)
Writing at 0x00018000... (33 %)
Writing at 0x0001c000... (44 %)
Writing at 0x00020000... (55 %)
Writing at 0x00024000... (66 %)
Writing at 0x00028000... (77 %)
Writing at 0x0002c000... (88 %)
Writing at 0x00030000... (100 %)
Wrote 264288 bytes (135121 compressed) at 0x00010000 in 2.3 seconds (effective 926.8 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
============================================================ [SUCCESS] Took 7.14 seconds ============================================================
--- Available filters and text transformations: colorize, debug, default, direct, esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at http://bit.ly/pio-monitor-filters
--- forcing DTR inactive
--- forcing RTS inactive
--- Miniterm on /dev/ttyUSB0  115200,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 188777542, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5828
entry 0x400806ac
Guru Meditation Error: Core  1 panic'ed (IllegalInstruction). Exception was unhandled.
Memory dump at 0x400d13ec: ffffffff ffffffff ffffffff
Core 1 register dump:
PC      : 0x400d13f0  PS      : 0x00060130  A0      : 0x800d3602  A1      : 0x3ffb1f80  
A2      : 0x3ffc07e0  A3      : 0xffffff80  A4      : 0x00004e20  A5      : 0x80000020  
A6      : 0x00000008  A7      : 0x00000001  A8      : 0x800d149a  A9      : 0x3ffb1f40  
A10     : 0xffffffff  A11     : 0x00061a80  A12     : 0x0800001c  A13     : 0x00000010  
A14     : 0x00000011  A15     : 0x00000000  SAR     : 0x0000000f  EXCCAUSE: 0x00000000  
EXCVADDR: 0x00000000  LBEG    : 0x00000000  LEND    : 0x00000000  LCOUNT  : 0x00000000  

Backtrace: 0x400d13f0:0x3ffb1f80 0x400d35ff:0x3ffb1fb0 0x4008b525:0x3ffb1fd0

Rebooting...

The same Exception with the same register dump then happens over and over again.

I am only connected via USB cable and have not yet hooked up BEC nor Radio - just in case that matters.

Prevent rx/tx link when switch mode is different

Currently there is nothing to prevent a tx and rx compiled with different switch modes from connecting, and since the switch positions will be mis-interpreter this is potentially dangerous as it could lead to unintentional arming.

Not sure how to implement this with the available bits - is there any space in the sync packet to indicate the switch mode? If not, we could change the caeser on the crc based on the switch mode which would be enough to at least reduce the probability of connection to a very low level.

R9MX

After successful flashing of the R9MX model through the flight controller the red light flashes quickly and the transmitter does not connect to the remote.
What should I do in such a case?

Possible to add defect antenna alert?

As Title said.. Is it possible to add an alert for detecting a defect antenna?

Sometimes the tx is powered on without an antenna cause of carrying in a case.
But same for RX possible?

2021 0.1.0-RC1 Issue Tracker

Putting this issue up so we can have the latest release candidate have a centralized tracker (also so I can see features that were added so I can put it on the wiki)

EBYTE E32 module support

These modules available on AliExpress for $5-10
They are based on SX1276 or SX1278 and STM8L0

QCZEK already did a close source firmware to make LRS from these modules.

Hardware compatibility with R9M Lite?

Hi,

Can the Frsky R9M Lite 2019 module be flashed with ExpressLRS? I am trying to use ExpressLRS with a TBS Tango 2 w/ PCB v3 + module bay upgrade.

TIA

Embedded MSP

// Frame structure
typedef struct crsfMspFrame_s {
    uint8_t deviceAddress;
    uint8_t frameLength;
    uint8_t type;
    uint8_t destination;
    uint8_t origin;
    uint8_t payload[CRSF_FRAME_RX_MSP_FRAME_SIZE + CRSF_FRAME_LENGTH_CRC];
} crsfMspFrame_t;

// Where:
CRSF_FRAME_RX_MSP_FRAME_SIZE = 8
CRSF_FRAME_LENGTH_CRC = 1
// Total = 14 bytes

// deviceAddress
CRSF_ADDRESS_BROADCAST = 0x00 // Seems to be used for all MSP packets

// frameLength
// Set this to:
CRSF_FRAME_LENGTH_ADDRESS + CRSF_FRAME_LENGTH_EXT_TYPE_CRC + CRSF_FRAME_RX_MSP_FRAME_SIZE
// Where:
CRSF_FRAME_LENGTH_ADDRESS = 1
CRSF_FRAME_LENGTH_EXT_TYPE_CRC = 4
CRSF_FRAME_RX_MSP_FRAME_SIZE = 8
// Total = 13 bytes, so one byte in the packet isn't included in frameLength (likely deviceAddress)

// type
CRSF_FRAMETYPE_MSP_REQ = 0x7A,   // response request using msp sequence as command
CRSF_FRAMETYPE_MSP_RESP = 0x7B,  // reply with 58 byte chunked binary
CRSF_FRAMETYPE_MSP_WRITE = 0x7C,  // write with 8 byte chunked binary (OpenTX outbound telemetry buffer limit)
CRSF_FRAMETYPE_DISPLAYPORT_CMD = 0x7D, // displayport control command

// Request frame example:
0x00,0x0D,0x7A,0xC8,0xEA,0x30,0x00,0x70,0x70,0x00,0x00,0x00,0x00,0x69

0x00 = deviceAddress = CRSF_ADDRESS_BROADCAST
0x0D = frameLength = 13
0x7A = type = CRSF_FRAMETYPE_MSP_REQ
0xC8 = destination = CRSF_ADDRESS_FLIGHT_CONTROLLER
0xEA = origin = CRSF_ADDRESS_RADIO_TRANSMITTER
0x30 = header (see comments below)
0x00 = mspPayloadSize (request packet, so no MSP payload - not verified if 0 is correct here)
0x70 = packet->cmd (The MSP opcode - in this case 0x70 is MSP_PID)
0x70 = data
0x00 = data
0x00 = data
0x00 = data
0x00 = data
0x69 = CRC

uint8_t header // The header byte is masked into the following:
// Start packet flag (header & 0x10) - First packet in a set of chunked packets should include TELEMETRY_MSP_START_FLAG (0x10)
// seqNumber (header & 0x0F) - TELEMETRY_MSP_SEQ_MASK (0x0F) reserves to bottom nibble for seq numbering chunks
// version ((header & 0xE0) >> 5) - Should equate to TELEMETRY_MSP_VERSION (0x01)

// CRC includes mspPayloadSize, packet->cmd, and all data bytes

// Command frame
0x00,0x0D,0x7C,0xC8,0xEA,0x31,0x1E,0xCA,0x29,0x28,0x1E,0x3A,0x32

0x00 = deviceAddress = CRSF_ADDRESS_BROADCAST
0x0D = frameLength = 13
0x7C = type = CRSF_FRAMETYPE_MSP_WRITE
0xC8 = destination = CRSF_ADDRESS_FLIGHT_CONTROLLER
0xEA = origin = CRSF_ADDRESS_RADIO_TRANSMITTER
0x31 = header (start packet = true & seqNumber = 1 & version = 1)
0x1E = mspPayloadSize (command packet with size = 30)
0xCA = packet->cmd (The MSP opcode - in this case 0xCA is MSP_SET_PID)
0x29 = data
0x28 = data
0x1E = data
0x3A = data
0x32 = data

// Note no CRC, as this is not the last packet in the seq
// Last packet contains CRC, and empty bytes at the end after CRC are padded with zeros

// For VTX config, an example packet should be:

// Command frame
0x00 = deviceAddress = CRSF_ADDRESS_BROADCAST
0x0D = frameLength = 13
0x7C = type = CRSF_FRAMETYPE_MSP_WRITE
0xC8 = destination = CRSF_ADDRESS_FLIGHT_CONTROLLER
0xEA = origin = CRSF_ADDRESS_RADIO_TRANSMITTER
0x30 = header (start packet = true & seqNumber = 0 & version = 1)
0x06 = mspPayloadSize (command packet with size = 6 - assume this includes the size byte itself - not validated)
0x59 = packet->cmd (The MSP opcode - in this case 0x59 is MSP_SET_VTX_CONFIG)
0x00 = newFrequency byte1 (Band 1 - assume this is F band, Channel 1)
0x00 = newFrequency byte2
0x17 = power level (0x17 = 20dB = 200mW - unsure if this is in dB or mW, assume dB otherwise this is limited to 255mW)
0x00 = pitMode On | Off (not sure if this is 1 = on and 0 = off)
0x00 = lowPowerDisarm (not sure if this is 1 = on and 0 = off)
0xXX = CRC

// Where:
const uint8_t newBand = (newFrequency / 8) + 1;
const uint8_t newChannel = (newFrequency % 8) + 1;

// For more VTX config options, see:
// https://github.com/betaflight/betaflight/blob/1dee491370f683fb0c89fb2b000d31a2051cba9e/src/main/msp/msp.c#L2732

OpenTX fw for Jumper T18

Could there possibly be an OpenTX fw compiled to use with the Jumper T18 radio??? I see there are some for Jumper T16s...etc. thanks. It has the 5in1 radio module. Which includes support for r9...

Use Esp8285 qfn32 instead of ESP-01 on Nano RX

It would be great if you could further reduce the size of the RX, using only the ESP8285 chip and the base components for it to work directly on the RX board ...

I have already used it in some personal projects and it is very easy to make this implementation ... What do you think?

Move ELRS protocol code to separate lib

The ELRS packet encoding/decoding currently lives in the tx_main.cpp and rx_main.cpp files. This has a number of downsides, including:

  • Common code is duplicated across TX and RX, has to be modified in 2 places
  • Very difficult / impossible to unit test
  • Protocol code is hard to find amongst the TX/RX code
  • Protocol functions are only accessible from within tx_main.cpp or rx_main.cpp, which leads to a bad habit where all functional code is written in those files, leading to them becoming unmanageable.

This issue is a proposal to move the ELRS protocol code out to a separate library.
The lib would likely be designed to accept CRSF packets, and output ELRS packets, to be sent to the LoRa Radio class.

Add support for FLRC on sx1280

The flrc modem on the sx1280 offers some interesting features for ExpressLRS including a 32 bit sync word with 4 concurrent matchers, good sensitivity specifications at overlapping packet rates and fast OTA times.

R9m

Hello, I have an r9m system lying around and I'm thinking of flashing it with expresslrs. The question I have is does it support 2.4ghz mode? Or do I need to build a custom module for that?

2.4 slim tx and X9 lite

for the X9 lite the stl is not good ... the pcb can be cut out on the edges (yellow lines on the image)?
IMG_20201103_130351.jpg

Any performance results from LoRAWAN mesh?

Hi,

Have you done any type of experimentation with LoRAWAN mesh? What type of performance characteristics could be expected with a mesh type topology for swarm applications?

Regards

Weak telemetry link

I just finished setting up ExpressLRS for my R9M and R9mm (I love the projekt ;-)) but somehow the telemetry is breaking up as close as 2m from the rx and gets lost completely within maybe 7m. Any suggestions on how to fix it?
https://youtu.be/Dybz_BAp1HI

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.