Can't read serial input from Spektrum Satellite Receiver - Arduino Yun

I’ve spent the last few nights trying to use my Yun to read the serial input from a Spektrum Satellite receiver.
There’s plenty of posts that suggest that this is possible but I’m not having much luck.

My first problem is that the Yun doesn’t seem to have a hardware serial pin available. Serial is connected to the micro USB port and Serial1 is connected to the Linino so I assume I’ll need to use the SoftwareSerial lib.

Here’s a simple skitch I wrote to try and confirm there was any data coming from the receiver.

#include <SoftwareSerial.h>

#define LED_PIN 13

SoftwareSerial mySerial(7, 8); // RX, TX

void setup() {
  pinMode(LED_PIN, OUTPUT);  
  mySerial.begin(115200);
}

void loop() {
  
  if( mySerial.available() ) { 
    mySerial.read();
    digitalWrite(LED_PIN, HIGH);
    delay(10);
    digitalWrite(LED_PIN, LOW);
  }  
  
  delay(100);

}

The satellite has three wires Orange (power), Black (ground) and Grey (Serial). I’ve connected Red to the 3.3v on the Yun, Black to ground and Grey to Pin 7. Because I’m not transmitting any data I haven’t connected anything to Pin 8.

Unfortunately the LED never flashes. What am I doing wrong?

BTW - The satellite has an LED which is on (and not blinking) which confirms it’s got power and it bound the the transmitter (DX6i) correctly.

I am searching for a solution too for my Arduino Uno.
I know there's only one serial in/output on the Uno to use. But it is also used by the USB communication. There's a 1k resistor in the circuit that's keeping the signal low on the input. My Spektrum satellite is not strong enough to pull up the voltage high enough , so the input port won't notice any input.
I think we need a transistor to amplify the signal from the receiver to beat that 1k resistor.
Something like this:

But with lower resistor values, like 2.2k base resistor and 220 as load resistor

I eventually gave up trying to do this with the Yun and have now moved on to using the mbed LPC1768. I like using the arduino but I’m having a lot more success using the LPC1768 for this project.

Ok.

I tried it with a transistor and getting a signal now. But the data is all messed up. Maybe because I have a DX9 and the code is for a 6 channel transmitter, I really don't know yet.

I am not giving up already, but I'm done for now.

The transistor will invert the serial data. Try adding another transistor stage to invert the signal back to its original polarity.

Pete

Thanks Pete,

Maybe I can try a PNP instead of a NPN transistor.

YES, I've done it!

It works with the Arduino Uno. Flawless!

This is the diagram I made to amplify without reversing the signal:


I'm sure it can be improved but it works for now.

Test setup:

I had to do some code changes to get my channels right for my AR6210 DSMX satellite receiver. You can get my code here:

http://rc.andreotti.nl/aeroquad/SpektrumSatRx.zip

To upload the sketch you have to disconnect pin 0 from the amplifier so it does not mess up the RX. After that you can connect pin 0 to test it with the Serial Monitor.

One funny thing: I receive 7 channels with my DX9. I'm wondering if I could get all 9 channels to work.

Thanks for your support guys,
Andre

1 Like

Nice work. I may have to try using the Yun again. Thanks for posting your code too.

Hi good job!!! Are you also able to bind the satellite with arduino or you have to bind first with the standard rx?