How to use ELRS Receiver with Arduino?

Hi I am new to Arduino, and I decided to make a drone using a arduino as a Flight Controller. I know that this should not have been mine first project, but I am in too deep now.

I am using:

  • ELRS 2.4GHz NANO ExpressLRS Receiver BETAFPV NANO 2400 RX
  • Radiomaster Pocket
  • Arduino Nano 33 BLE

How do I wire the receiver to the Arduino, and how do I program the Arduino to read all of the signals from the Radiomaster Pocket, like the joysticks and the buttons.

I would also like to do this in the most simple way possible.

Any help is appreciated :slight_smile:

1 Like

I do not have the time to look up your hardware items, the odds of getting the wrong one is high. Post links to each of the hardware devices and get and read a copy of the Arduino Cookbook.

I have a ELRS 2.4GHz NANO ExpressLRS Receiver BETAFPV NANO 2400 RX and a Arduino Uno. I have no idea how to connect the two together and how to get the output. My questions are:

  • How to bind the receiver to the transmitter (Radiomater Pocket)
  • How do connect the Arduino to the receiver (what pins should I connect the RX and TX to)
  • What code do I have to upload to the Arduino for me to be able to use the receiver outputs in a drone to control different features

Thank you in advance

I think you are a bit confussed...
Arduino generally is don´t used to control drones.
Normally you need FC + ESC, Arduino can act as flight controller (FC) but definitly you don´t want that.

To bind an ELRS receiver you´ll need to connect the receiver to a flight controller, usually running Betaflight. Just 5v to 5v, GND to GND, RX to TX and TX to RX.
Arduino is not going to help you that much in this situation

But is it possible to still use the receiver with an Arduino? And yes, I know that usually a FC is used but I wanted to build one with an Arduino as an experiment. I don't have an FC and i don't want to buy one. Is there still a way to bind it somehow, even if it only has some basic functions?

Perhaps, but it would probably take a lot of technical expertise. Check whether anyone has ever done that, and posted the details on line.

The Uno R3 would be a poor choice, though, as it is slow and has very little memory.

I found this project:

which looks like it does what I want. I don't know how to use it.

Also on the final drone I will use a Nano 33 BLE as an FC. I am just testing all of the components on a Uno R3 because it is simpler to use, at least for me

Use the code as is, with some ESP32 board.

It was written for the PlatformIO IDE, and will require changes to work with the Arduino IDE.

do I have to flash the receiver in this case?

Sorry, no idea.

I have managed to flash and bind the receiver to the transmitter. Does anyone know what code to run so that I can read the data from the receiver. For now at least read one channel. Also I am coding in the Arduino IDE

Hello,

I have an ELRS receiver that is connected to a transmitter, but I cant figure out how to program the Arduino Uno to read, and interpret the output of the radio. I also don't know how to connect it to the Arduino. The receiver only has RX and TX output.

Thank you in advance

I tried to use code like this:

void setup() {
  // Initialize serial communication at 115200 baud rate
  Serial.begin(115200);
  
  // Print a message indicating successful connection
  Serial.println("ELRS Receiver Connected at 115200 baud!");
}

void loop() {
  // Check if data is available from the receiver
  while (Serial.available() > 0) {
    // Read the incoming byte
    char incomingByte = Serial.read();
    
    // Print the received byte in hexadecimal format
    //Serial.print("0x");

    // Print the byte in hexadecimal format
    Serial.print(incomingByte, HEX);
    Serial.print(" "); // Separate bytes with a space
  }

  // Print a new line to separate packets (optional for readability)
  if (Serial.available() == 0) {
    Serial.println();
    delay(10); // Delay to avoid overwhelming the Serial Monitor
  }
}

But I get output like this:

32 76 6C B 6F 72 FFFFFFFF 22 17 6E FFFFFF81 FFFFFFBF 22 57 FFFFFFFF 6B 16 
4A 32 76 6C B 6F 72 FFFFFFFF 32 FFFFFFE8 FFFFFF9F 5B 6F 72 
22 13 6E FFFFFF81 FFFFFFBF 22 13 33 6B FFFFFF81 FFFFFFBF 22 13 6E 16 4A 
32 FFFFFF8F B 6F 72 FFFFFFFE 22 13 33 6B FFFFFF81 FFFFFFBF 32 E FFFFFF9F 5B 6F 72 
32 E FFFFFF9F 1B 6F 62 22 E 6E FFFFFF81 FFFFFFFF 22 E 6E FFFFFF81 FFFFFFFF 
32 FFFFFFB2 FFFFFFBD 2E FFFFFF81 FFFFFFEF 32 FFFFFFB2 FFFFFFBD 2E FFFFFF81 FFFFFFEF 32 FFFFFFB2 FFFFFFBD 2E FFFFFF81 FFFFFFEF 22 13 6E 16 4A 32 0 16 FFFFFFC2 
32 72 6C 5B 6F 72 22 53 6E 16 4A 22 57 6E 16 4A 
22 57 6E 16 4A 32 72 6C 5B 6F 72 32 76 6C B 6F 72 FFFFFFFE 
22 13 6E FFFFFF81 FFFFFFFF 32 53 FFFFFFFF 6B 16 4A 
32 FFFFFF8F B 6F 72 FFFFFFFF 22 15 33 6B FFFFFF81 FFFFFFDF 32 3A 73 2E FFFFFF81 FFFFFFCF 
32 FFFFFFE0 FFFFFF9F 5B 6F 62 FFFFFFFF 32 76 6C 5B 6F 72 FFFFFFFF 32 1E FFFFFF9F 1B 6F 62 FFFFFFFF 32 1E FFFFFF9F 59 6F 72 FFFFFFFF 

The values change even when I dont touch the transmitter

What can I do. Is there another script I could try, or is there a way to decode the output to get the values of the individual channels?

Serial.read() reads data from the Serial Monitor in the IDE. Your code should be printing only what you type into the input box on Serial monitor.

...unless you have connected this radio thing to the same pins that Serial Monitor uses. You should not do that because those pins are not available for you to use for other purposes.

Uno has no other hardware serial ports available, so you need to use software serial to communicate between the Uno and the radio.

I have the TX pin of the receiver connected to the RX pin on the arduino (pin 0)

As I thought, then.

Your two topics seem to have the same subject. If so, please, refrain from doing this.

Your two topics seem to have the same subject. Please, refrain from doing this.

@gooddude546,
That's 3 topics on the same subject merged into one. You were warned about this kind of thing 11 days ago. I have given you a 1 day rest from posting while you familiarise yourself with the forum rules.

Thank you.