Hi, let me introduce my APM mode switch with LCD display.
The basic idea is from Stefan Gofferje's project, thanks on him for PPM stream code part!!!

My idea was to make something more good-looking thing for my transmitter and get rid of annoying switch mixes. My APM mode switch uses an Arduino as main processor. Technically, Arduino generates a PPM stream for the RC transmitter, this can be connected through the trainer port. (Check out your transmitters manual for proper trainer port setup). The desired channel in PPM8 stream can be configured in the sketch (default is ch5)

*** Please note that LCD display will display the actual mode regarding PWM value! ***
***The actual mode in the APM can be different, since there is not any telemetry ***
***feedback in this switch! Take care of proper APM setup!!! ***
***Please double check mode matches on the ground before first take-off!!!***

Here is the parts list:

  • Arduino Nano
  • 2x16 LCD screen (HD44780 compatible)
  • 6 pcs of pushbutton (I'm using these, I think they are quite conventional, for 7mm dia holes)
  • 5V buzzer, max. 40mA (optional)
  • 10k pot (optional)
  • 3D printed body
  • upper and lower plates milled from any 1,5 mm GF or CF plate

And this is the connection diagram:


***Don't use Arduino Nano's built-in 5V power source because overheating can cause instability!***
***Use a small DC-DC converter instead***
(or supply LCD from another 5V power source)

I suggest to solder the Arduino to the LCD, D2...D5 and D12 are on the same place as in the LCD screen:

Here is the working LCD:

The LCD is mounted inside the body with screws:

The neccessary 3D files can be downloaded from the project's GrabCAD page.
And this is the sketch: APM_mode_switch_NHA_v2_0.ino
Here is a Sample of my screen's diyplay states.

Mode names and sign letters can be edited in this part of the sketch:

I can't upload any images about a completelly assembled switch since I'll use it together with my portable ground station, so I designed a unique case that fits to my GS (so guys, the 3D model above is designed only for you... :) ):


I hope you'll enjoy, and of course,

***I'll not take care of any damages caused by malfunction or faulty assembly***


Views: 5683

Comment by Warren M on March 2, 2018 at 6:44pm

I know this is a super old thread, but I feel it is the best solution going without the need to use multiple switches on the radio.

I built it and have it working through the trainer port on my Taranis. When it initializes, it goes to mode 6. Also, if it loses battery connection, it sends a pwm signal of 1500 (0) to the radio. This triggers whatever flight mode falls within that range. Rather than align my flight modes with the current code such as using FM3 for RTL, can the code be changed to not be on center and rather at -100 (FM1) 

Is there a reason this starts in mode 6? Can it be made to start in mode 1? (code below)

// All channels to center
for(int i=0; i<numchan; i++){     (Change 0 to -100?????)
ppm[i]= servo_default;

ppm[PPM_chan-1]=1000; // Set mode channel to Mode 6 PWM value   (Changing 2000 here to 1000????)




You need to be a member of DIY Drones to add comments!

Join DIY Drones

© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service