Introduction: 1/6 Model Motion Simulation Chair /w Microsoft Flight Sim X
This is an Instructables on how to create a small motion simulation chair with Microsoft Flight Simulator X.
Step 1: Come Up With a Chair Design
This is our 1/6 Model, custom made parts made in TinkerCAD and printed off using a 3D printer. Based off the WhipLash VR. When you research your own chair design you will have to figure out dimensions as well as materials you might be able to use and availability.
Step 2: Obtain All Necessary Parts
Hardware:
- Arduino UNO (https://www.arduino.cc/en/Main/ArduinoBoardUno)
- 1 Continuous Rotation Servo
- 1 Servo
- A router
* We would've changed the continuous rotation servo to a stepper motor for better accuracy.
Other Materials:
- Foam boards
- Lego pieces
- 3D Printer
Flight Simulation Software:
- Multi FSX (http://www.jimspage.co.nz/Link2fs_Multi.htm)
- Microsoft Flight Simulator X (http://store.steampowered.com/video/314160/)
- Arduino Software (https://www.arduino.cc/en/Main/Software)
Video: Your choice of either any VR Headset or Surround Monitors. For this instructables we will be using Google Cardboard. If you decide to do any others you will have to do additional research.
For VR:
- Google Cardboard (https://www.google.com/get/cardboard/)
- A mobile phone
- Trinus VR + The phone app (http://trinusvr.com/)
For Surround:
- 3 monitors
- A graphics card that supports Surround Technology (http://www.geforce.com/hardware/technology/surround)
Here is a good guide how to set it up, http://www.cclonline.com/article/1193/Guide/Graph...
*Most modern NVIDIA cards have this feature included.
**Depending on your CPU, stretching the game screen to the custom resolution might slow your computer or the game down.
Step 3: Install the Software
On your computer:
- Windows 7
- Arduino Software
- Microsoft Flight Simulator X
- Multi FSX
- Trinus VR
On your phone:
-Trinus VR App
Step 4: Configure Trinus and Multi FSX
Trinus
1) Set up a wireless router
2) Download Trinus app on phone and computer
3) On the computer, in either Advanced or Basic mode, select 3D On
4) Select your head mount (ours was google cardboard)
5) Choose the screen size of the phone you are using
6) Adjust the sensitivity to medium (Based on personal preference)
7) Select Mouse Tracking
8) Motion Boost is On
9) Make sure Dead Zone is off
10) Connect phone to the wireless router you set up, and open the Trinus App
Multi FSX
1) Open Microsoft Flight Sim X
2) Open Multi FSX and Set Serial Port of CARD 1 to be same as Arduino. If Flight Sim X is open, Multi FSX will automatically grab the data from the game.
3) Click SimConnect Extractions(1) Tab and check Pitch, Roll and Stall Warning.
4) Click Extractions(2) Tab and check Gear Position, Acceleration body X and body Y.
5) Click the yellow box, Connect Card 1
6) Click the Monitor Tab and then select Card 1
* You must have Multi FSX open when you have MFSX open. As the extractions checked will be sent to the Arduino as strings.
Step 5: Program the Arduino
Open Arduino Software
Now you will need to decode the data from Multi FSX. Here is some of the code and explanation to help get you started.
//Collect the first character from the Multi FSX program and return it
char getChar(){
while(Serial.available() == 0);
return((char)Serial.read());
}
//Determine the type of data it is starting with the first character (? or <)
if (Serial.available()) {
CodeIn = getChar();
if (CodeIn == '<') {
LESSTHAN();
}
if (CodeIn == '?') {
QUESTION();
}
}
}
//If it’s a ? the go to this method
void QUESTION(){
CodeIn = getChar();
//Determine what the letter is to decode further
switch(CodeIn) {
//Landing Gear Light
case 'Y':
//In this case it will get the next 3 characters and save them to a string variable
// then set the gear light to turn on or off depending on the data
gearSimple = "";
gearSimple += getChar();
gearSimple += getChar();
gearSimple += getChar();
if (gearSimple == "2"){
digitalWrite(2, HIGH);
}
else{
digitalWrite(2, LOW);
}
//This case will get the acceleration data and save the next 6 characters to a string
case 'x':
rollS = "";
rollS += getChar();
rollS += getChar();
rollS += getChar();
rollS += getChar();
rollS += getChar();
rollS += getChar();
//the string is then converted to a float to use when moving the motors
rollAccel = rollS.toFloat();
//Make sure the variables are both the same and no errors occurred
Serial.println(rollS + " : " + rollAccel);
break;
}
With the continuous rotation servo we use in a small design then we run the motor using:
// -10 to 10 is the acceleration given by Flight X. It was quite slow so therefore: x2
rollservo.writeMicroseconds(1492 + (rollAccel * 2);
Step 6: *Update* Scale Up Your Model!
Hello everyone! We are proud to present you with our full scale model, and yes, it does work! We really just continued from our smaller model.
We replaced the servos with two 12V Linear Actuators for the up and down motion and combined a lazy-susan, v-belt and pulley wheel to a 24V Wheelchair DC Motor to simulate the right-left rotation.
Main Hardware
- Arduino Uno
- 13.6V Power Supply
- 2 12V Linear Actuators
- Sabertooth Motorshield
- 24V Wheelchair Motor
It can hold up to 160 lbs(That we've tested). We would work on more reinforcements or a sturdier base if we had better materials. Currently it cannot move up and down and side to side at the same time. Have to test the power supply, might need more voltage.