FSX Autopilot Panel

Touchscreen technology is great, no argument there, but I am sure that I am not the only one that misses the tactile feedback of push buttons and the beauty of a 7-segment display or a blinking LED. After seeing Jeff Highsmith's Mission Control Desk, I decided to make a control panel, old school, with switches, buttons, LEDs, rotaries and whatever I can fit in there; however, I also wanted it to be functional, something like the "DIY Overhead Control Panel" but different. Happens that at the time I was tinkering around with Microsoft's Flight Simulator X, it clicked: Why not make an autopilot panel? I opened MS Paint and mocked my first "design:"

First Design

This was the general idea of what I wanted it to look like. not worrying about any limitation I might face. It's what I called "No compromise design". From there I enhanced the quality of the design with an actual 3D rendered model with components sizes to scale:

1 / 2 • More accurate design

If you're wondering how I made this 3D model (and all other 3D models in this project), I designed it on a PCB layout software (DipTrace <- awesome program) and lied to it a bit by making custom components and attaching 3D models that I downloaded from here (a shout out to everyone that shares their awesome designs there) as well as DigiKey.ca (many components on DigiKey have STEP files for them), and then onto a tedious job of strategically placing those components on the design and then viewing the 3D view of the complete design, then render them using the build in 3D builder on windows 10. obviously there is a better way to do it, but my knowledge of using 3D software is limited, and with these, most 3D models I download are already 100% to scale with all the measurements done, so a great way to see how things would fit together.

Up until this point, I didn't have any plan on how to make this happen or what challenges I will face. But as you can see, it doesn't resemble any actual plane cockpit. The reason for that is mainly desk space it requires, simplicity, and cost of building. After thinking of the limitations, I realized that it's easier to find a ready made enclosure and build the thing around it. so I redesigned it to this form (the actual form the project ended up taking):

1 / 2 • Final Form Factor Design

Now that I have the general shape of it, it's time to start making a schematic. But before that, one thing I had (and still have) a problem with, is component heights. To make sure that everything is sitting nice and flush on (or at a nice distance from) the surface of the front panel, I had to split the design into two different boards in a strategic way to be able to mount the PCBs at different distances from the front panel. here is the way I split the design into two different boards:

The red part (which I called the control board) has the USB port, UART chip, the ATmega328P (with Arduino boot-loader on it), a few shift registers, an I/O chip, switches, LEDs and 2 of the rotary encoders. the blue side is called (creatively) the display board. and it has all the 7-segment displays (controlled by an I/O chip) as well as the remaining encoders. both boards are connected to each other using a 10-header connector.

Now that I know how the boards will be split. I finished the schematic and designed the PCB and got it manufactured from seeedstudio. Here is the 3D model of the design:

1 / 2 • 3D model from DipTrace (Rendered)

And the actual boards finally arrived:

1 / 2

Not perfect, but so pretty! Time to assemble:

1 / 6

Not my best hand soldering job, but it works. Notice how the two boards are mounted at different heights from each other (also this image is taken after I got the front panel cut as mentioned in the paragraph below).

For the front panel, even though my 3D models (and the vision) I had was a black panel, I went with a sheet of plywood (or whatever it is, I really know nothing about wood and their types) bought from a hardware store. I Prepared a design for a laser cutter:

Front panel design for laser cutter

One laser cutter session later and some assembly, this is the result:

1 / 4

It looks good, but I still wanted a black panel, so I went and bought myself a few black on white acrylic material from inventables. Another session on the laser cutter, and here it is:

Finished panel

1 / 7

After that, writing firmware for the MC. To extract and send information and commands from and to the flight simulator, Microsoft did a great job with SimConnect SDK and has a very intensive documentation on how to use the SDK. However, Link2FS just removes all this hassle from it, beautifully made program that allows you to chose what information you want to extract, what commands to send to FSX and it's all via Serial COM... just brilliant. (Jim from New Zealand, you are a Legend), anyway, here is a block diagram, everyone needs a block diagram:

Block Diagram

The project is fundamentally just simple switches, LEDs and rotary encoders. The challenge was the limited I/O pins on the ATmega328 as well as speed and memory. I could have went with a bigger MC, but I went with shift registers and I/O driver chips instead (might have been cheaper to go with a bigger MC though)

And this is it. That makes one out of four panels!

FSX Radio Stack Panel

After the success of the first panel, I decided to make another one. this time to handle radio communication, lights, ATC and few other aspects of a plane. I decided to stick with the same form factor of the autopilot and take it from there. Here is a 3D design of what I came up with:

1 / 2

Again, I had the same issue of component heights and the way they should sit on the front panel, so more board separation had to be done, but this time I was more liberal with the board names, here is what I came up with:

Blue = Display Board

Purple = Control Board

Red = Switch Board

Note that I do that on paint using a screenshot of the 3D model I designed. The yellow lines between sections are the number of connections needed to connect the boards. helps with the design as well, lets you know the size of the connectors and their locations.

3 schematics and PCB layouts later:

PCB layout (backwards in reference to the image above)

I sent my gerbers to Seeed studio and got the boards a few weeks later: here it is:

1 / 2 • Radio Stack PCB

And once again, got the front panel designed and laser cut:

Started assembly before I took pictures of the panel. so some assembly is done here

Then time for hand soldering parts again:

1 / 3

After finishing assembly and writing firmware, it worked!!!-ish:

1 / 4

This one did have a few design issues, and some bodge wires were required, also one regret I do have is using one rotary encoder with a push button to control both high and low frequency adjustment (by pushing the button to change the range) instead of using the proper (but expensive) dual rotary encoder, which I ended up buying 5 of them later on anyways, but it was too late to use one for this project. *face palm*. maybe Rev2 is needed.

And now I finally have two working panels:

1 / 7

Electrical and GPS Panels

Now I got greedy, MORE PANELS NEEDED! 7 months of procrastinating later, I started working on yet another panel. This time, to handle electrical, flaps, gears, auto-brakes, and a few other things, so back to "3D modeling" the new panel:

This time I decided to use a couple of OLED diplays, LED bar-graph, and few new things to make it more functional and of course, prettier. This means back to breadboarding, to make sure I can use them the way I want. and what do you know it works (except I ignored input as in buttons and rotaries, I thought I got it to work before, no need to test it again):

Those OLED displays are supposed to have a footprint for a resistor on the back to change their I2C buss address, but for some reason, the ones I got didn't have that. I solved this issue by using one of these. I ended up using it for all the I2C devices not just the OLED displays. I thought, since I already have 8 channels, and I am only using 2 of them, might as well put all the I2C devices, each on it's own channel. I thought this might help a bit with the capacitance on the line; which is something I had an issue with in the previous 2 panels. calculating I2C line capacitance is a pain (to figure out the pull up resistor value range required), it took some trial and error to get it right, but with this multiplexer, it seems like it's not that big of an issue any standard pull up resistor value did the trick..

Although, using this multiplexer caused some issues with interrupts. for example. at a certain moment in the program, the multiplexer selected the display on channel 1 and started communicating with it, but right in the middle of that communication, an interrupt comes from an I/O chip connected on channel 3 which means now the interrupt routine will select channel is 3, and it does what it does with the I/O chip. after it's done it has to remember to select channel 1 again, so the program can continue whatever communication it was doing with the device on channel 1 before the interrupt. It's easy to implement this in code, but it took me a while to think about it while I was having some weird behavior that took a long time to trouble shoot.

But I am getting ahead of myself here, we are still on the design phase at this stage, and as always. board separation is an issue, so here it is for this panel:

Red = Display Board

Green= Control Board

Blue = APU Board

Time to make schematics and pcb layout for those boards, right? No!

Somewhere in the middle of the front panel design it hit me... make a BIG panel, composed of those 3 smaller panels. The problem with that was, 3 is an awkward number, how am I supposed to make a nice looking big panel with an odd number of modules. That was when I decided: a 4th panel is needed, but what should it be?... I am running out of things to do here.... ah!! a GPS panel, even though actual commercial planes don't have this kind of GPS, It was a nice addition, and also as a very newbie "pilot," I do use it a lot.. so back to 3D design:

Sorry, not rendered this time...

This one actually resembles the built-in GPS in FSX in terms of layout:

Built-in FSX - Garmin GPS 500

As for the rotary encoder, there is no way around it, I need a dual rotary encoder, so I declared defeat and bought myself a bunch as I mentioned earlier.

At this point, I had 3D designs for four different panels, so naturally I combined them into one 3D model to see how it look. I don't know about you, but it does tingle my nerdy sense for sure:

1 / 4

Now that I had the GPS design, I created the schematic and PCB (no need to separate anything on the GPS). Combined it with the PCB for the electrical panel, and here it is:

And here is the actual board fresh from Seeed Studio:

1 / 2 • Electrical and GPS PCBs

Time to assemble the electrical control panel:

1 / 4

Testing All the Panels

Now that all the panels have been assembled. Of course 2 of them were already tested for a while, but the new two panels are not, and it would be nice to see how all of them work together:

Full (Combined) Panel

The box that will hold all 4 panels will be made of wood, and as I mention before, I have no knowledge of wood work. Thankfully my friend, Cameron is great at it and he has all the tools required as well as the mindset for it. We mocked a few designs on the white board, and a week later we started working on it, I helped by being in his way most of the time. with that, a few hours later:

1 / 7

This is still not final, but it's a good start to measure how everything would fit:

1 / 5

Had some issue fitting all the connections, since it wasn't designed to be all in one box, all these bulky USB B connections made it a challenge. This forced me to rearrange the panels to fit the connections better:

1 / 3

Next was cutting small pieces to cover the edges, gluing, filing, painting and here the final result, a fully functional panel that is enough to fly to take off, cruise and land a stock plane on FSX. (I say stock because the are simpler than those proper add-ons modeled after a real plane.)

1 / 13

Here is a video of me using it to fly from JFK to YYZ. (Sorry for bad video editing it's my first time.)

Anyone that tried FSX knows that the stock planes that come with it are lacking and too simple, but this panel makes it more interesting to fly in my opinion. The panel doesn't resemble an actual cockpit as I mentioned before. but it's a good start, an icebreaker if you may. I have learnt a lot from this build and maybe one day I will be able to build something like this build, by Karl Clarke, 737diysim.com, his blog and YouTube channel are very informative, he shares all his designs and techniques. what he does is mind blowing I recommend you check it out.

I am not going to share the schematics because they do have some issues, and it took a lot of work and adjustments on the boards to get things going. but I already started thinking of rev B to fix those issues and enhance on things. I would share the new schematics for RevB once I have them.