7

is a standard way to control a physical aircraft by connecting a frsky transmitter to a PC?

I do NOT want to use the transmitter to control a flight Sim etc.

I'd like to write autopilot software myself, and have it running on a PC. Id like to connect the PC to the transmitter, and have it send inputs to the aircraft, and also send telemetry back.

I'd rather not use an ardupilot.

Anyone have a link to details of someone doing this before?

Tldr: can I use a keyboard to control an aircraft with a frsky transmitter?

5

OpenTX can be built from source for your receiver using various compile options which may be useful.

Enabling USB_SERIAL and CLI will allow connection to your pc using a serial connection, which you can use for bidirectional communication.

You will need to add code to the OpenTX firmware to accept commands from the pc, to control the radio. It may be simplest to utilize the trainer variables to control the outputs.

The changes required are:

in cli.cpp, connect the serial to the trainer variables:

int cliSet(const char ** argv)
{
  if (!strcmp(argv[1], "trainer"))
  {
    int thr;
    int chan;
    if ( (toInt(argv, 2, &chan) > 0)
       &&(toInt(argv, 3, &thr) > 0))
    {
        ppmInput[chan] = thr;
        ppmInputValidityTimer = 240;//PPM_IN_VALID_TIMEOUT;
        serialPrint("!");
    }
  }
  ...cliSet continues
}

in mixer.cpp, enable all trainer channels by default:

// comment out this check
//        && isFunctionActive(FUNCTION_TRAINER_STICK1+ch)

in trainer.cpp, clear all trainer signals after timeout:

void checkTrainerSignalWarning()
{
   ...
   else if (!ppmInputValidityTimer && (ppmInputValidState == PPM_IN_IS_VALID))
   {
      ppmInputValidState = PPM_IN_INVALID;
      AUDIO_TRAINER_LOST();
      memset(ppmInput, 0, sizeof(ppmInput));   //clear all trainer inputs
   }
   ...
 }

You should then be able to use commands over serial such as:

set trainer 1 500

to control channel 1 to a value of 500

| improve this answer | |
1

Not only keyboard, but you can use a joystick as well. Both ArduPilot and Px4 based FCs support such use case. To do so - connect any standard joystick to your PC and install QGroundControll software. It will detect the presence of the joystick and will allow you to use it to control the drone. Take note that the control using RC will be disabled.

Basically, a drone can be flown using any control device (or software) if you can establish a data link between the PC and the drone. As for the data-link, you can use SiK radio or Wi-Fi based solutions.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.