This instructable will teach you how to build a motion flight simulator using an arduino and motors.

Step 1: Obtain Required Parts

-Either an Arduino Uno or Freeduino will work for this project

-Obtain a computer system that can run multiple monitors

-Obtain a copy of Microsoft flight simulator X

-Get a copy of Multi FSX v5 from Jim's page

-12v battery

-2 12v linear actuators

-Sabertooth 2x25 motor shield v2

-18 gage wire

-Accelerometer Arduino shield


-Cool chair


-Small speaker

-Small servo motors for small scale

-push button

Step 2: Install Programs on Computer

The first step of this project is to install:
-Windows 7 (if not already on your computer)
-Arduino Programming software
-Microsoft Flight Simulator
-Multi Fsx from Jim's Page

Multi Fsx is a key part in this project. What this program does is it takes data from Microsoft Flight Simulator (such as pitch, roll, acceleration data, g force, stall warning etc) and sends it to the Arduino which we will then program to interpret that data and move motors / sound a speaker and make lights go off.

Step 3: Configure MULTI FSX

In this step we want to select the options for the program to rip from Microsoft Flight Sim X and send to the arduino
-Select stall warning
-acceleration body x and y
-gear position

Step 4: Program the Arduino

Here is the programming to control small servo motors as you fly a plane in real time. They will move as you turn. This programming also controls an led indicator for landing gear, a speaker for a stall warning and a push button to also toggle the landing gear.

It is up to you to program the full size actuators!

Servo pitchservo;
int rollVal = 0;
Servo rollservo;
int pitchVal = 0;
int CodeIn;
int flapsINT;
int rollInt;
int pitchInt;
int gForceInt;
int stallInt = 0;
String KoldpinStateSTR, KpinStateSTR, Kstringnewstate,Kstringoldstate;
String gearSimple, flaps, flapsOld, rollS, pitchS, gForceS, stallS;
void setup()

pinMode(2, OUTPUT); // gear nose LED
pinMode(5, OUTPUT); // gear nose in transition LED
pinMode(12,OUTPUT); //stall warning
void loop() {
stallInt = 0;
pitchVal = map(pitchInt, -25, 25, 0, 179);

if (rollInt > -90 & rollInt < 90)
{ rollVal = map(rollInt, -10, 10, 0, 179);}
else {rollVal = 90;}

if (stallS == "1" )

if (Serial.available()) {
CodeIn = getChar();
if (CodeIn == '<') {LESSTHAN();}
if (CodeIn == '?') {QUESTION();}

char getChar()
while(Serial.available() == 0);
void LESSTHAN(){
CodeIn = getChar();
switch(CodeIn) {
case 'F':
gForceS = "";
gForceS += getChar();
gForceS += getChar();
gForceS += getChar();

gForceInt = gForceS.toInt();


case 'S':
stallS = "";
stallS = "";
stallS = "";
stallS += getChar();
Serial.print("String: " + stallS);
stallInt = stallS.toInt();
Serial.println(" Int: " + stallInt);
void QUESTION(){
CodeIn = getChar();
switch(CodeIn) {
case 'Y':
gearSimple = "";
gearSimple += getChar();// get first charactor (Nose gear)
if (gearSimple == "2"){digitalWrite(2, HIGH);}else{digitalWrite(2, LOW);}
if (gearSimple == "1"){digitalWrite(5, HIGH);}else{digitalWrite(5, LOW);}

case 'y':
pitchS = "";
pitchS += getChar();
pitchS += getChar();
pitchS += getChar();
pitchS += getChar();
pitchS += getChar();
pitchS += getChar();
pitchInt = pitchS.toInt();

case 'x':
rollS = "";
rollS += getChar();
rollS += getChar();
rollS += getChar();
rollS += getChar();
rollS += getChar();
rollS += getChar();
rollInt = rollS.toInt();
}// end of question void

Step 5: Making the Connections

For the small scale model
On the Arduino
-Pin 4 to low side of push button
-for the y axis servo white wire, put in pin 11
-for the x axis servo white wire, put in pin 8
-hook the led into pin 2
-pin 12 is for the speaker.
See picture

For the full size model with actuators
The push button, led and speaker stay the same.

To hook up the actuators
-5v on the arduino goes to the 5v on the Sabertooth motor controller
-gnd on arduino goes to 0v on the motor controller
-pin 0 goes to s2 on motor controller
-pin 1 goes to s1 on motor controller
-positive pin on 12v battery goes to b+ on saber tooth
-negative pin on 12v goes to b- on sabertooth
-m1a on Sabertooth goes to positive on actuator
-m1b goes to negative on actuator
-m2a on Sabertooth goes to positive on actuator2
-m2b goes to negative on actuator2

Step 6: Build a Full Size Model

You have the main part of the programming, and how to set everything up. The last step is to just mount everything on a custom built frame and away you fly!
<p>I am going to re-ask a question from below. How fast are the actuators you selected? Where did you buy the actuators? Do you have a part number?</p><p>Typical actuators for simulation should be in the range of 16&quot;/Second. </p>
<p>Adding a comment to my own question - it looks like these are from Princess Auto and they only move at 0.47&quot;/Sec. These things need new/better motors and pulley ratios changed.</p>
<p>Hello,</p><p>please could we see ,your building finish .with the seat on .</p><p>Thank's .</p><p>have a nice day .</p>
<p>Hello,</p><p>Why using x and y and not pich and roll in Link2FS</p><p>Thanks</p>
<p>test point zero with ultrasonic distance sensor</p>
<p>Hi ,</p><p>This is a great Job,</p><p> where have you Obtain the</p><p>acceleration body x and y (-10,10,-25,25) ,(for the actuator) the value are (30;160).</p><p>I use this configuration, DIP sabertooth ON 2 3 5 OFF 1 4 6</p><p>I use distance sensor to Put the motion in position Zero ,</p><p>have you made your's with the actuator ?</p>
<p>Hi!! great project and instructable. Thanks a lot for your time and share.</p><p>One question, do you have the size of the actuators? what elevation do they have to have? thanks again!</p>
<p>Sorry another question, do the actuators move to the speed the sim needs? thanks!</p>
<p>great, thanks a lot!</p>

About This Instructable




More by teammotionsim:Microsoft FSX Flight Sim 
Add instructable to: