The Express LRS Handset project is first and foremost an experimental test bed for pushing the envelope with what can be done with the ELRS radio link

Overview

The Express LRS Handset project is first and foremost an experimental test bed for pushing the envelope with what can be done with the ELRS radio link. This handset will not replace your "daily driver", nor will it ever support radio protocols other than ELRS. The Micro Controller Unit (MCU) does not run OpenTX. The user interface is very rudimentary - simple text menus that are selected with a rotary encoder. The firmware for this handset will never achieve "Release Candidate", let alone "Stable" status or be assigned a version number. The software will be a continuous work in progress.

You will have to order and print parts, assemble, and solder this handset by hand as well as know how to build the firmware from source code and upload to the MCU.

There will be pain. There will be gnashing of teeth. At this point is where we give you your first and final warning as passed down by ancient sailors:


Beyond this line there be Dragons . . . .


OK, now that we've set some expectations for this project we'll list some of the cool features of this handset and explain why you would want to go thru all of the effort to build instead of just purchasing a commercial handset.

  1. Fly at the fastest and most consistent packet rate available. Currently this is 500Hz, but this handset is capable of much faster. Since the MCU doesn't have to deal with OpenTX, all of its CPU cycles are used to provide the most consistent ELRS signal to the receiver and thus your flight controller. This is the main goal of this project, to increase the performance and stability of the ELRS radio link. With this handset, you'll be right on the bleeding edge with the devs.
  2. Uses FrSky M10 Hall Effect gimbals. If you want the best radio signal, you start with the best data.
  3. Hardware Filtering of gimbal data. Select a level of hardware filtering by swapping out custom daughterboards to fine tune your feel.
  4. Swappable RF deck. RF deck is on a replaceable daughterboard so you can swap from 2.4GHz to 900MHz bands. (900 MHz modules currently not developed) Can also swap to a lower powered RF module to save battery life if you don't need the higher power settings.
  5. 1S2P 18650 LiPo battery. Entire handset sips power from 2 LiPos in parallel. Fly an entire weekend without charging.
  6. Wireless Qi charging. Build a charging cradle that will wirelessly charge your handset when you're not flying.
  7. Internal Moxon antenna. Transmit antenna is mounted internally for aesthetics, but can be mounted externally simply by drilling a hole.
  8. Simplified operation. Quad fliers rarely use 99% of the mixing functions of OpenTX since all of that is done in the Flight Controller.
  9. Parts should be less than $100 U.S.
  10. Did I mention wireless Qi charging?

At this time the best source of information on this project is our OneDrive folder:

https://1drv.ms/u/s!Ap0n6SxbLP9mspxu-dxmtthcFGTxvA?e=23NiK6

Comments
  • How to bind the receiver

    How to bind the receiver

    HI, I made a handset, how to work with my (targets=DIY_2400_RX_ESP8285_SX1280_via_UART) receiver connection ? Edit platformio.ini -D MY_UID=0x17,0x13,0x31,0x19,0x23,0xEB ?

    opened by norulers 7
  • Telemetry support

    Telemetry support

    Hi, can you please make it clear if it possible to get the rest telemetry data from FC. Why "TLMheader" is always 0x01? I guess that would be 0x14 for link statistics and 0x02, 0x08, 0x21 for gps, battery and flight mode respectively. Is it ELRS version limitation?

    opened by armor66 4
  • hardware filtering

    hardware filtering

    Just for the record and guess issue should be closed. My hardware filtering board with uPC324G didn't work properly. So I took rail-to-rail MC33204 and there are no troubles with low input.

    opened by armor66 1
  • Increase ADC sample resolution to 13 bit

    Increase ADC sample resolution to 13 bit

    Since the output of the hall sensors doesn't cover the full range of the ADC we need to sample at a higher resolution than the OTA if we want to have all the possible steps. This is easily done by reducing the output shift of the hardware oversampling.

    opened by JBKingdon 0
  • Added COMPAT_LEVEL_1_0_0

    Added COMPAT_LEVEL_1_0_0

    Tested with ELRS V1.0.0 using DIY_2400_RX_ESP8285_SX1280_via_UART. No changes were required compared to the RC3 compatibility code, so this is a documentation change only.

    opened by JBKingdon 0
  • Dynamic Power LQ and sensitivity

    Dynamic Power LQ and sensitivity

    Adjusts the power of the TX based on RSSI and LQ from telemetry packets. When using dynamic power the power level set on the radio is treated as the maximum to be used, and the actual power will be reduced from that according to the signal strength at the receiver.

    Enable by adding #define USE_DYNAMIC_POWER to user_config.h

    The thresholds and filter speed are set via #defines in main.cpp

    DYN_POWER_INCREASE_MARGIN - relative to the rsSensitivity of the current packet rate mode DYN_POWER_DECREASE_MARGIN - relative to the above threshold DYN_POWER_LQ_THRESHOLD - LQ below which power will be gradually increased DYN_POWER_LQ_PANIC_THRESHOLD - LQ below which power will be set directly to configured max DYN_POWER_MISSED_TELEM_PACKET_THRESHOLD - The number of consecutive missed telemetry packets that will trigger a transition to the configured max power DYN_POWER_RSSI_FILTER_CUTOFF_HZ - The filter cuttoff frequency for smoothing the RSSI values. Smaller values will produce a slower response when reducing power. Increases in power happen immediately.

    opened by JBKingdon 0
  • Dynamic power based on RSSI and LQ

    Dynamic power based on RSSI and LQ

    Adjusts the power of the TX based on RSSI and LQ from telemetry packets. When using dynamic power the power level set on the radio is treated as the maximum to be used, and the actual power will be reduced from that according to the signal strength at the receiver.

    Enable by adding #define USE_DYNAMIC_POWER to user_config.h

    The thresholds and filter speed are set via #defines in main.cpp

    DYN_POWER_INCREASE_MARGIN - relative to the rsSensitivity of the current packet rate mode DYN_POWER_DECREASE_MARGIN - relative to the above threshold DYN_POWER_LQ_THRESHOLD - LQ below which power will be gradually increased DYN_POWER_LQ_PANIC_THRESHOLD - LQ below which power will be set directly to configured max DYN_POWER_MISSED_TELEM_PACKET_THRESHOLD - The number of consecutive missed telemetry packets that will trigger a transition to the configured max power DYN_POWER_RSSI_FILTER_CUTOFF_HZ - The filter cuttoff frequency for smoothing the RSSI values. Smaller values will produce a slower response when reducing power. Increases in power happen immediately.

    opened by JBKingdon 0
  • Initial code for dynamic power

    Initial code for dynamic power

    Introduces a filter for rssi dBm from telemetry packets and a pair of thresholds for triggering power increase and decrease. Currently the thresholds are hardcoded defines in main.cpp but could usefully be based on the estimated sensitivity for the current packet mode and/or be made user configurable.

    opened by JBKingdon 0
  • Added user_config.h for local config

    Added user_config.h for local config

    This change moves the settings that are most likely to be changed for each user/handset into user_config.h which is not under version control. An example is provided as user_config_template.txt which the user should copy to user_config.h and edit for their own preferences and hardware. This way, when updating firmware by pulling from git the user config won't get overwritten.

    opened by JBKingdon 0
  • UI improvements

    UI improvements

    In the Settings display, changed the indicator for sync to be more explicit, either sync Always or sync Disarm. Added reminder text to the bottom of the display for long press to save.

    opened by JBKingdon 0
  • Send sync packets for pkt rate change

    Send sync packets for pkt rate change

    When the rx uses lock-on-first it is impossible to change packet rate without power cycling the rx. To fix this we can send a sync packet with the new packet rate before changing the rate on the tx. Since we might lose the packet OTA we set a 'spam' counter to send multiple sync packets before making the change.

    opened by JBKingdon 0
Releases(C_ELRS1.0.0)
Owner
ExpressLRS
ExpressLRS
Arduino-controlled bed that helps in reducing rate of disease infection by detecting whether a person accessed the safe space of a subject who is infected

Infection Control Bed BACKGROUND Spread of COVID-19 occurs via airborne parricels and droplets. People who are infected with COVID an release particle

Amir Hesham Ibrahim 3 Mar 17, 2022
Contains a sudoku solver - OCR. Project done with classmates during third semester at EPITA.

sudokUwU sudokUwU is a sudoku solver made by 4 students at EPITA. This project is a mandatory work from S3 cycle! The Team Johan Tran Adrian Grillet V

okywu 2 May 5, 2022
(C++) Integrity dynamic link library made in C++ that you can export to C#

C-Integrity-Library ✔ (C++) Integrity dynamic link library made in C++ that can export to C# C# Exports [DllImport("Exports.dll")] public static exter

null 1 Jan 20, 2022
exp2swift translator which translates STEP schema files described in ISO 10303-11 STEP EXPRESS language to the Swift programing language.

STEPswiftcode/ exp2swift exp2swift translator which translates STEP schema files described in ISO 10303-11 STEP EXPRESS language to the Swift programi

Tsutomu Yoshida 1 Jan 3, 2022
Opt - Class template designed to express optionality without having to sacrifice memory to store additional bool flag

mp::opt<T, Policy> mp::opt<T, Policy> is a class template designed to express optionality. It has interface similar to std::optional<T> (see here) but

Mateusz Pusz 9 Jun 5, 2022
All the work I've done in ECE551. A fantastic course.

Welcome to your ece551 git repository. The first thing you should do is git pull Once you have done that, you will see your intial assignment.

Yuzhe Ding 2 Dec 24, 2022
An embedded CAN bus sniffer which is able to monitor any of the vehicle internal CAN bus and perform some action by triggering new CAN messages.

An embedded CAN bus sniffer which is able to monitor any of the vehicle internal CAN bus and perform some action by triggering new CAN messages. In this way certain vehicle functionality can be triggered by responding to custom steering wheel button events, or use the vehicle virtual cockpit to display OBD-PIDs values instead of relying on an external display to present new information to the user

null 18 Dec 28, 2022
This project contains information on the PC-Link hardware interface for some early 2000 Sony HiFi decks

pclink-i2c This project contains information on the PC-Link hardware interface for some early 2000 Sony HiFi decks, such as the CMT-DC500MD (also know

Sir68k 1 Jan 21, 2022
🎮 Plants vs. Zombies multiplayer battle, developed via reverse engineering, inline hook and dynamic-link library injection. Two online players defend and attack as the plant side and zombie side respectively.

Plants vs. Zombies Online Battle This project has two original repositories: https://github.com/czs108/Plants-vs.-Zombies-Online-Battle https://github

Liugw 71 Oct 14, 2021
The Simplest Test Code for an I2S Microphone on the ESP32 I can Imagine

The Simplest Test Code for an I2S Microphone on the ESP32 I can Imagine I've got a lot of audio projects. And I've tried to make these all available o

atomic14 39 Jan 3, 2023
AX.25 protocol (packet radio and APRS) interface / bridging / switching / terminal related software for Linux

CB3ROB-AX25-TOOLS-LINUX 2021-11-23T00:58:49Z (TUESDAY) cb3rob-kiss-tcp-attach.c links ax0 interface to KISS-TCP TNC, soundmodem (direwolf), or multipl

CB3ROB TACTICAL SYSTEMS 1 Jan 1, 2022
null 3 Jan 19, 2022
Minipops alternative firmware for Music Thing Modular Radio Music

RMoxy Minipops drummer alternative firmware for Music Thing Modular Radio Music module The repository for the Radio Music module by Tom Whitwell Kits

Johan Berglund 7 Nov 6, 2022
FM radio tuner application for Raspberry Pi OS

GTK FM Tuner GTK FM Tuner is a lightweight, GUI base FM radio tuner application for Raspberry Pi OS. This application uses GTK to provide the UI of th

Dilshan R Jayakody 17 Nov 3, 2022
QN8035 based Raspberry Pi FM radio receiver

QN8035 based Raspberry Pi FM radio receiver. QN8035 is a single-chip stereo FM radio receiver IC designed by the Quintic Corporation. This receiver su

Dilshan R Jayakody 8 Oct 6, 2022
New version of the well known ESP32 Radio. Now optional I2S output!

ESP32Radio-V2 New version of the well known ESP32 Radio. Now optional I2S output! Compile time configuration in config.h. Do not forget to upload the

Ed Smallenburg 56 Dec 28, 2022
An ATSC 3.0 Transmitter for GNU Radio

# Copyright 2021 Ron Economos # # This file is part of gr-atsc3 # # gr-atsc3 is free software; you can redistribute it and/or modify # it under the te

Ron Economos 19 Jan 4, 2023
Decoded Information from Radio Emissions for Windows Or Linux Fans

Dire Wolf is a software "soundcard" AX.25 packet modem/TNC and APRS encoder/decoder. It can be used stand-alone to observe APRS traffic, as a tracker, digipeater, APRStt gateway, or Internet Gateway (IGate).

null 1.2k Jan 3, 2023
A set of tutorial projects for creating a simple digital radio receiver based on the STM32G431KB microcontroller

simple-radio Обучающие проекты по созданию простого цифрового радиоприемника на базе микроконтроллера STM32G431KB. Разработка программ выполнялась в W

null 9 Sep 21, 2022