DIY FPV Diversity Controller – Development Step 1

This is part of a series of blog posts in which I show you how I develop a DIY FPV diversity controller. The first step to create the DIY FPV Diversity Controller is to program the basic switching logic. So the micro controller must read the input values and decide based on which one is higher which output should be activated. In this first step I create a simple circuit on a breadboard that allows me to test the logic that I programmed into my Arduino. Read more below…

The basics of the DIY FPV Diversity Controller are very simple. The receivers will provide information about their signal strength. That’s called RSSI (=Received Signal Strength Indicator). I’ll feed these information into the Arduino where my program can then decide which of them is the highest. Based on that decision the corresponding output will be enabled. So in order to get some feedback I just hook up two LEDs to the output pins so that I can see which of the outputs my program choose and if that decision matches the values that I feed into the input pins of the Arduino.

Fist let me briefly explain what RSSI is and how I will use it. Basically RSSI is voltage. So the FPV receiver will output a certain voltage that correlates to the strength of the received signal. Usually this means the lower the RSSI voltage the lower the signal strength (I know there are receivers that do it the other way around, but we’ll deal with that later in the software).

So let’s take a look at the circuit diagram for the first test:

circuit for step1
Circuit for step1

As you can see there is not much to it. Both RSSI values are feed into the Arduino (I choose A0 and A1 as input pins). The program will constantly monitor these values and switch either Arduino pin D8 or pin D9 to HIGH. This will result in the LED that’s connected to that output pin to light up. So if RSSI_IN_1 has the higher value LED1 should light up, if RSS_IN_2 has the higher value LED2 should light up.

Now let’s see how this looks on the breadboard:

Breadboard for step1 (click image to enlarge)

Looks a bit complicated? No, there are just some components that I did not mention in the upper circuit layout. Basically the whole left part of the breadboard is just for testing purpose. These are two potentiometers that will serve as RSSI inputs during the breadboard testing phase, so that I do not have to deal with real FPV receivers. Those potentiometers allow me to change the RSSI value that’s feed into the Arduino very easily. And therefore I can easily test if the switching works correctly.

So what’s all that stuff and how is it wired up? As I already said, the two black components on the left are potentiometers that represent the RSSI values of the receivers for testing. Via the two white jumper wires the RSSI values are feed into the Arduino’s analog input pins on the bottom right of the Arduino board. Then there are the blue and green jumper wires coming from the Arduino’s digital output pins on the top right of the board. Those are connected one to each of the two LEDs on the breadboard.

And that’s it! That finished the test circuit that you see in the drawing at the top of this post. When I change any of the two potentiometers my program running on the Arduino will check which of both delivers the higher value. Then the program will switch the LED on that is assigned to the corresponding input with the higher value.


I hope this was informative for you. And very shortly I’ll post about step 2. In the next step I’ll add a 4066 electronic switch to the circuit. Then the Arduino will not only light the LEDs but also drive the switch. I’ll keep you posted…


Visit for all resources of this project.
You can find the source code, diagrams and photos there.

You might also want to take a look at this page were I have an overview of this project.

6 Comments on “DIY FPV Diversity Controller – Development Step 1

  1. Hi,
    Your project is looking great so far!
    Do you have an email address where we can contact you?

  2. I am new to the Arduino family of processors, in fact it has been many years since I have done any programming. The last time I programmed it was in FORTRAN!! (OLD dog trying to learn new tricks.)LOL So a lot of my questions will be very basic.
    To begin with:
    1. Do I need to buy an Arduino Uno to program the ATtiny processor or are there other ways to load the firmware into the ATtiny?
    2. If I need an Arduino, which model do you think I should buy? Uno R3?
    3. Would the ATtiny also operate a LCD display and allow a menu for making in-field adjustments?

    • Well if you have an AVR programming device (e.g. USBasp) you can directly upload to an ATtiny. In my case the Arduino acts as programmer because I do not own an AVR programmer nor a PIC programmer. And the Arduino IDE is very easy to use, that’s a plus too.

      If you buy an Arduino for playing around I definitely recommend an Arduino UNO. Which revision number does not really matter, they are more or less the same. I think R3 is the more recent revision.

      I have a small ATtiny85 which will not be able to drive a LCD because it has no IO pins left after I connected the RSSI inputs and the outputs for the switch. One could use an ATtiny84, that has more pins, instead. Then you should be able to operate an LCD. But the LCD libraries are pretty large so I’m not 100% sure if the ATtiny has enough memory.

      An other possibility if you want lots of features is to just include an Arduino Nano in the circuit. The Nano is only 4 by 2 centimeters small. With it’s pin headers it could be incorporated in a circuit as if it is a single component. The Nano is more or less the same as an Arduino UNO but the Nano is much smaller and compact built.

  3. Thanks for your great advice! I just ordered an Arduino Uno R3.
    I also downloaded all the Arduino code and information for Peter Lehnér’s “FPV RSSI Switch” on YouTube and Thingiverse. Peter was working on a 5 input switch and also was using an Arduino.
    Looking forward to seeing how Bruce’s and your projects come out. 🙂

    Thanks again,

Leave a Reply

Your email address will not be published. Required fields are marked *

Please type the characters of this captcha image in the input box

Please type the characters of this captcha image in the input box