Redundant RC transmitter & receiver

DIY RC transmitter/receiver system based on SX1280 chipset. This module can be used as a transmitter or an 8 channel receiver.

Similar projects worth following
In this project I would like to use the new SX1280 chips to create a good quality redundant (two RF modules) RC transmitter/receiver. I would like to create a small board which handles both receiver and transmitter in one code-line/hardware. I will also use some sensors for telemetry data, like altitude and absolute orientation. For future extensions I added some extra communication interfaces; CAN, Serial GPS port. When I designed the board I realised that the board can also be used for other purposes, like a general communication interface including LORA.

When you hear SX1280 probably the first word pops in your mind is LoRa. However SX1280 chip also supports FLRC mode which is very similar to MSK used on CC2500, but according to the documentation SX1280 does it with 16 dBm higher receiver sensitivity at ~250kBaud data rate with FEC. Seems it's an ideal choice for a modern RC radio system.

Main project goals:

  • Handles both receiver and transmitter in one code-line/hardware
  • FHSS (Frequency Hopping Spread Spectrum) system
  • FCC and ETSI EN compliance
  • 82 channels (on normal ISM band: 2400 Mhz - 2483.5 Mhz), with 1MHz channel spacing
  • 100 Hz hopping frequency
  • Fixed hopping sequence
  • Simple acquisition and tracking between the transmitter and receiver
  • No binding process; the transmitter and receiver hard-bound together (of course later I would like to add binding)
  • Fixed packet length
  • Transmitter sends basic control functions on at least 16; 12 bit channels
  • Receiver can also send telemetry data back
    • RSSI (Received Signal Strength Indicator)
    • Receiver battery voltage
    • Relative altitude
    • Vario
    • Absolute orientation
    • Built in GPS support
    • Extensible via UART port(s)
  • Built-in sensors
    • BNO055: Intelligent 9-axis absolute orientation sensor
    • BMP388: Digital pressure sensor
  • CAN bus
  • OTA (Over the Air) firmware update


Board schematic rev.4

Adobe Portable Document Format - 392.78 kB - 05/07/2020 at 13:14


  • 1 × STM32G474VEH Arm® Cortex®-M4 32-bit MCU+FPU, up to 512 KB Flash, 170 MHz / 213 DMIPS, 128 KB SRAM, rich analog, math accelerator, 184 ps 12 channels Hi-res timer
  • 1 × BNO055 IMUs - Inertial Measurement Units Absolute Orientation 9-Axis Sensor
  • 1 × BMP388 IMUs - Inertial Measurement Units Absolute Orientation 9-Axis Sensor
  • 1 × MCP2562 AHigh-speed CAN Transceiver
  • 3 × LP38693 500-mA, 10-V, low-dropout voltage regulator with enable

View all 7 components

  • Using the module with OpenTX

    Varadi, Gyorgy aka bodri11/08/2020 at 18:33 0 comments

    I added a transmitter module to my Radiomaster TX16S successfully using crossfire protocol as shown on the images. The module communicates to a receiver using the same PCB. The firmware is also in one codebase, this makes the development easy because the same code works for both the transmitter and the receiver. 

    You can read more about this project on my blog:

  • Firmware status

    Varadi, Gyorgy aka bodri05/07/2020 at 19:29 0 comments

    Of course this is the part where I need more work. It's far from finished. At the moment basic functionality works:

    • Both SX1280 modules are used. In transmit mode I alternate them while in receive mode they are both listening.
    • Acquisition works: the receiver jumps to a random channel and scans through the channels 3 times slower than the transmitter. Eventually, the transmitter catches up with the receiver. In tracking the receiver adjusts its heartbeat timer to the received packets, to make sure that the transmitter and receiver will not drift out of sync.
    • From the transmitter point of view every 4th packet is a downlink or with other words the receiver sends a telemetry packet.
    • Communication with both the BMP388 and BNO055 works. I added a little C++ wrapper around the library that Bosch provided

    In my github repo you can find all the pieces, but the whole firmware is not put together. When I'm working on one part I usually comment out some code. Eventually they all will be glued together...

  • Rev. 4 design

    Varadi, Gyorgy aka bodri05/07/2020 at 19:12 0 comments

    I'm currently building and testing the rev.4 design. In previous revisions I had some hardware errors like wrong footprint for BMP388 and mixed signal on CAN and serial ports. I hope this version does not have any major errors any more. As of now the following hardware elements are validated to work:

    • All power rails
    • CPU
    • Both SX1280 modules
    • Servo signals
    • BNO055 is working on 0x28 I2C address
    • BMP388 is working on 0x77 I2C address

    What I still need to test:

    • Battery receiver measurement
    • CAN bus
    • GPS port
    • Extension port

View all 3 project logs

  • 1
    General notes on reproducing this board

    This is not a beginner project; you need the necessary equipment and practice to successfully assemble this board. I used BGA packages and 0402 size passive components in the design to minimise the size and weight of the board which is crucial for an RC receiver. If you have never dealt with those type of hardware assembly better not to start here. The minimum essential tools you need:

    • Hot air gun (or reflow oven even better)
    • Stereo microscope or at least a 4x magnifying glass lamp
    • Quality tweezers (forget those AliBanggoodExpress stuff)
    • Good quality solder paste
    • Quality flux
    • Stencil at least for the BGA
    • And lot of practice

View all instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates