Xplane user for over three years now, I thought it was time for me to tinker with a few switches, glue and nails, a dashboard allowing me to add additional commands to the joystick that is already being used and all for less than 130 dollars.
|A real cockpit here would be pretty good !|
Technical choice:obviously, only the nails are not sufficient, we also need some electronics and computer science. But nothing really difficult after a bit of thinking. Indeed, a little Web lap I discovered that the Teensy micro-controller makes it easy to be programmed as a USB device.
For my application, I choose de Teensy++2.0 because it has forty Inputs/outputs. The factory website is https://www.pjrc.com/teensy/.
To better understand what can be done, an overview on existing projects shows us that we should be able to do many things :
- switch panel (German site)
- Radio Module for X-Plane
- Garmin G1000 Emulator
- X-Plane Autopilot Panel
And of course the forums are a great source of information:
- forum x-plane.org (Low-cost hardware using Teensy USB boards)
In short, after being reassured about the feasibility of the project, we can begin to saw some boards. But first, a little plan:
|the sticky joystick shows us the remaining space for the dashboard|
|Wooden angles also serve as pins for feet (see back panel)|
|Back panel, Pins used for add stabilizer feet|
After some brainstorming, here are the chosen commands which will be installed into the cockpit.
Electronics and wiring :Now, let's do a bit of wiring. Heat the soldering iron...
Changing the radio frequencies :Let's start with the part of rotary encoders (those used to change the frequency of the radio). For this, I opted for this type of encoders: 3054-encoder-bright-a-rotation-infinite whose plans are there.
These encoders are backlit by two red and green internal LEDs. I chose to take the green for the radio part and the color red for the navigation part. For coding, there are two possible ways: either using D flip-flops (component CMOS 40xx) for decoding the direction, either it is the the Teensy micro-controller which handles this though a computer program. For now, we will choose the second approach.
The wiring diagram for the 4 encoders consist of 4 resistors to power the integrated LEDs. Note that the resistance values are higher for green LEDs to reduce their brightness compared to red.
And here is the result :
Support plate for the micro-controller Teensy:
We will add 2 connection strips to the Teensy:
Then prepare on a 'prototyping' printed circuit for receiving wires and connector.
Wiring:Rummaging through my boxes, I found an old ribbon wire and another with an 8 point connector which can be used to connect the inner pins of Teensy. This cable was used to connect two USB ports on a motherboard to the front of a PC.
|notice the 8 soldered pins for receive the connector and 2 more soldered pins for deport the teensy reset button.|
Initially I had not planned to deport the Reset button. However, this offset will be helpful for that button should be used to dump the program to the Teensy.
I had not ordered enough Pin on my last purchase, I went to the dump and I was able to get an old computer mother board from which I got these connectors.
From side of the support plate, here is the result :
And finally, the links to the other switches and components :
The ribbon wires perfectly play their role in so far as they provide a clean wiring. Which is far from being the case for the big switches. Still, a layout is needed to see things more clearly... :
And now, plug in the teensy :
Programming the Tennsy:
- set up TeensyLoader : https://www.pjrc.com/teensy/loader.html
- set up "Arduino" soft and "Teensyduino" : https://www.pjrc.com/teensy/td_download.html
- set up X-plane plug-in : http://www.pjrc.com/teensy/td_flightsim.html
a first test:First, let's make a program just to identify the connections of each switch. Indeed, when wiring I did not follow the exact order and now I'd better check what is connected with what. You'll also notice that sometimes I skipped some Pins Teensy in order to keep the specialized pins (PWM -> Pulse Wave Modulation, AC / DC, etc ...). These pins can be used later as a dimmer dashboard (exit PWD), joysticks potentiometers (AD converter) for the propeller pitch, richness carburettor, etc ...
So, before fantasizing, let's find our connections.
The program is available at the following address : https://github.com/Nicolou/cockpit/blob/master/testButtons/testButtons.ino. To upload program into Teensy, instructions are on the manufacturer website : https://www.pjrc.com/teensy/loader.html
AS mentioned in the prerequisites, do not forget to install and set up Arduino programming software and the plugin to be able to use the Teensy : https://www.pjrc.com/teensy/tutorial.html
Here's what happens with me:
And the deducted summary table :
|Button name||arduino style||C style|
A second test, the rotary encoders :For this, we will use the library "Encoder .h" as shown in the example of the site : https://www.pjrc.com/teensy/td_libs_Encoder.html
By adapting the exemplary program with our matching pin numbers we get the following code : https://github.com/Nicolou/cockpit/blob/master/testEncoders/TwoKnobs/TwoKnobs.ino
An upload of this program in the Teensy and ... The test proves successful.
Now, we can really start to have fun.
Xplane program :We will use the specifications provided by dataref file for communication between the cockpit and the Teensy Xplane software.
Do not forget to install the X-Plane plug-in by decompressing it in the following folder ./Resources/plugins.
But first, some explanation of the elements used in the program will allow a better understanding of its operation.
- To use the FlightSim specific library Xplane, it is necessary in the Arduino program editor to set up USB type. Hence, go to the menu tool '->' USB type 'and select' Flight sim controls'.
- To identify the pine Teensy numbers, we will use constants to define these numbers for once and in one place in the program.
- In addition to the library 'Encoder.h'; we will use the library 'bounce.h'. This library allows to manage the switches states (anti-rebound, change of state detection, etc) See https://www.pjrc.com/teensy/td_libs_Bounce.html
- Read the documentation https://www.pjrc.com/teensy/td_flightsim.html
- A program Arduino '(or teensy) always consists of a setup () and loop() functions...
Then compile and upload it in your Teensy.
|That's it, the box is almost finished. I just need an USB socket and a push button (reset) that will allow me to close the set.|
Just one last picture, (but not the most beautiful) to show you how I have fixed the cockpit on my desk.
Well, that is finished regarding the prototyping stage. Hopefully this article will be useful.