Workflow for Creating Flight Simulation Panels ‐ Part 1 - MobiFlight/MobiFlight-Connector GitHub Wiki

Version 1.0 24 Nov 2024

Overview

MobiFlight and MobiFlght Connector give us the tools to interconnect hardware devices with our favorite flight simulator. Many of the "hardware devices" are collections of knobs, buttons, switches, gauges, LEDs, and/or displays that represent a specific set of functions in the cockpit. In complex aircraft there can be dozens of these groupings, commonly called "panels" or "avionics panels". This wiki provides a systematic approach to reproducing an avionics panel from any aircraft. This isn't by any means the only way to create a panel, but it's a good starting point for a serious cockpit build out. There are a number of skills you either need to already have or be willing to learn which are described below. This document is NOT a tutorial on any of those skills -- there are tons of fantastic tutorials on YouTube for all of them.

Assumptions

The workflow documented here is assuming you're using 1/8" (3mm) acrylic sheets as the basis for your panels. This is by far the most common material used for panel construction. I always use 7328 white cast acrylic ("7328" is a translucency specification). It's largely opaque, but just translucent enough to allow for excellent backlighting.

The workflow progresses from panel layout and construction to printed circuit board layout, but doesn't require you use PCBs for your panels. If you prefer point-point-wiring, just stop the workflow after the panel is fabricated and proceed with your point-to-point approach. I will not cover that approach, but will point out some modifications to the panel fabrication process that need to be considered if you do intend to take the point-to-point wiring approach.

Prerequisites

You'll need to have (or learn) the following skills and equipment for this workflow to be effective:

  • Experience with some kind of 3D CAD tool
    I use Autodesk Fusion (formerly called Fusion 360) and will be showing screenshots from that tool to illustrate things. If you've got experience with something else (SolidWorks, FreeCAD, Sketch-Up, etc.) be assured there are certainly going to be similar functions to the things Fusion does in your tool. That said, if you have NOT built up skills in any particular CAD tool yet, I strongly recommend Autodesk Fusion (there is a free version for personal use) and excellent "learn Fusion" tutorials on YouTube.

  • Access to a CO2 laser cutter
    White acrylic sheets cannot be cut with a diode laser, irrespective of the laser power. The laser is the wrong frequency and simply will not cut the acrylic. You'll either need your own CO2 laser (they're not cheap), access to one in a local Makerspace, or a willingness to send your panel design to an outside service that does custom laser cuts. An workable alternative is to use a CNC machine to cut the panels. CNC can produce panels at or near the same quality as a laser, so if you don't have access to a laser but do have access to a CNC machine, the same workflow described here will apply. You will also need access to a laser for engraving, both the faceplates as well as buttons (though this is assuming you're going to backlight your panels, a topic that will be covered in part 2). You can use a diode laser for all your engraving -- but if you have access to a CO2 laser that will work just fine as well.

  • Some knowledge of microcontrollers
    MobiFlight uses standard microcontrollers (several models of Arduino micros or the Raspberry Pi "Pico") to provide the interconnection between your controls and MobiFlight Connector which runs on your Windows PC and "talks" to your flight simulator application. You don't need to able to program the Arduino or Pico yourself, but you need to be comfortable with what they are and how to wire them into your cockpit. You don't technically need this skill until part two of the workflow.

  • Experience with a printed circuit board layout tool
    If you want to use PCBs you need to be able to design the circuits and layout your physical controls on a PCB to match your panel. This may sound terrifying if you don't have experience in electronics -- but trust me: it's not that hard to learn what's needed for the large majority of panels. It's rarely much more than converting the point-to-point wiring you'd be doing anyway between an Arduino (or other microcontroller) and your switches, LEDs, etc. into traces (etched copper paths) on a printed circuit board. Using a PCB dramatically simplifies your cockpit build. While you _could _ learn to etch your PCB design yourself, you absolutely don't need to do that (and I think I'm safe to say that nobody does that any more). There are a dozen or more PCB fabrication shops all over the world that will do it for you at a very low cost.

  • Experience with soldering
    While all of the PCB fab houses will also do component assembly for you, you're going to end up needing to be able to solder. If you don't know how, there are dozens of good tutorials on YouTube and you can get inexpensive "learning to solder" kits from Amazon and/or AliExpress. If you do know how to solder but haven't actually done it in years, it's still a good idea to watch one of those tutorials and get a kit to practice on -- you don't want to mess up your PCB when it gets back from the fab.

  • Access to a 3D printer
    Besides the panel itself you need to be able to reproduce the buttons and knobs on the panels. For this you'll almost certainly need access to a 3D printer. These aren't super-expensive and if you're going to be building lots of panels it's well worth the investment to buy one for yourself. If you don't know much about 3D printing yet, watch some overviews on YouTube. I invested early-on in both a good FDM printer and a good resin printer. You'll end up using both when fabricating parts for your cockpit build. If you have a Makerspace nearby, that's another good place to get access to 3D printers.


Basic Workflow (the TL;DR version)

  1. Get a screenshot of the panel you want to build
  2. Figure out the dimensions of that panel
  3. Create a rough model faceplate in your CAD tool -- just the outline
  4. Insert the screenshot of the panel into your model
  5. Use the screenshot to place the cutouts for your switches, display, knobs, etc. into the faceplate sketch
  6. Export the sketch into a 2D drawing file (typically, DXF format)
  7. Use the exported DXF file to cut the faceplate parts from a sheet of acrylic
  8. Use the exported DXF file in your PCB design tool to locate exactly where to place physical components
  9. Export the completed PCB design as a STEP file
  10. Import the PCB step file back into your CAD tool to verify component location against your faceplate model
  11. Iterate steps 5-10 as necessary to fine tune your faceplate cutouts and/or your PCB component locations.

A full description of each step follows in two parts. Part one will cover steps 1-7 which will get you through a file that can be used to fabricate the faceplate (either via laser cutting or a starting place for CNC-based cutting). Part two will cover how to extend the CAD work done in steps 1-6 to help with PCB fabrication. Part two will be added later.

Detailed Workflow

Get a screenshot of the panel you want to build

This is pretty straightforward. Launch your simulator, load up your aircraft and use your camera controls to zoom in on the panel you want to replicate as a physical panel. I'm building a cockpit for the HotStart Challenger 650 which runs in XPlane and we'll be building up one of the simple panels from that aircraft. Here is a picture of part of the "pedestal" (the center console in a complex aircraft). We're going to build the panel in the upper-left.

Move the camera to zoom frame the panel as carefully as you can and use your favorite screenshot tool to get the image. I just use the standard Windows snipping tool.

Save this away someplace appropriate as you'll need it for step 4.

Side Note:
I strongly encourage you to develop some kind of organized folder structure for your panels right from the beginning. You're going to be collecting up images, notes, drawing files, 3D model STEP files, etc. for every panel. You will drive yourself crazy later trying to find stuff if you don't stay organized.

Figure out the panel dimensions

We need to get the physical dimensions of the panel and that necessitates a diversion into some background about the standards for avionics panels in all modern aircraft. The panels in all modern aircraft have a specific function: a radio, or navigation functions, or aircraft trim, or lighting controls -- and on and on. Each panel is modular -- it's designed so it can quickly swapped out for service and a similar panel swapped in to get the aircraft back in the air quickly. This quick-swap mechanism -- and the resulting panel form-factor -- dates back to an engineer named William Dzus in the 1930's (yep, nearly 100 years ago). He invented a quarter-turn, quick release fastener that is used in probably all aircraft in the world today. Along with that came a rail system that the panels mount into -- and that defined a form-factor that persists to this day. Almost all panels are exactly 5 3/4" wide (146.05mm, but let's just call if 146mm). Almost all panels are an integer multiple of 3/8" (9.53mm) tall. The spacing of the mounting holes for every panel follows a similar pattern -- they're 5 3/8" center-to-center wide and a multiple of the panel height apart their up/down spacing.

Here is an image of an empty pedestal from some random aircraft that shows the Dzus rail system:

image

This three-column center pedestal structure is pretty much a standard across commercial aircraft and dictates that all panels have exactly the same width and a set of fixed heights so that they'll line up with the mounting holes on the rails.

With that in mind, we don't even have to figure out how to measure the width of the panel we're working on from above -- we know it's 146mm wide because that's dictated by the standard. We also know it's some multiple of 3/8" tall -- we just have to figure out what the multiple is, and we'll do that next.

Developing physical measurements from an image

There are a number of tools available online to allow us to extract pretty decent measurements from an image if we have a known dimension. The one that I use is here: https://eleif.net/photomeasure

Here's how it works:

I drop my panel screenshot from above into the page:

Now we need a known dimension -- which we absolutely have: the panel is 146mm wide. Drag a line from the left side of the panel to the right side of the panel. Since it's your baseline reference, the line will be red:

Type in the known dimension and note that the measurement on the red dimension line updates to that value.

Any additional lines you draw after the first will be in green and a scaled dimensional value will be displayed with the line. Drag a line from the top of the panel to the bottom.

Of note, the measurements from the various image tools are not 100% accurate because they're very sensitive to the initial line you draw for the "known dimension" The actual height value we'll use is whatever standard Dzus height measurement this is closest to. Looking at a handy reference table:

I see that the closest matching height is for a so-called "6U" panel (6 Dzus units) that's 57.15mm tall. With just that single photo measurement, I now know the exact physical dimensions of this panel. It's not an estimate -- it's the actual physical size of the panel. If we make our panel this size it would fit in a real aircraft.

While I'm here I can make any additional measurements I want. In this case I grabbed the height and width of the buttons and diameters of the knobs on the dual-encoders. Again, I want to emphasize that these measurements aren't perfect -- but they're really close and almost certainly good enough for us to develop decent 3D models of the buttons and knobs.

Note that you can save the image with the measurements on it as a JPG. That will be pretty handy later since you're NOT going to remember those measurements. I always right-click on the image and do the "Save as" thing so I can give it a meaningful name. It can go in the organizational folder you created right after I told you to do that, right? :-)

``

Side Note: Terminology
To me, the "panel" is the full package -- the faceplate, the PCB, the knobs, buttons, and switches, the microcontroller, an and all the other supporting bits like screws and brackets that hold everything together. The first step of our process is to model the _faceplate _-- the thing that the knobs and switches stick out from and that has markings and text on it. I may slip up from time to time and call the faceplate a "panel", but I'll try to be consistent.

Model the faceplate in your CAD tool

Some Background

Real aircraft faceplates are typically two-piece affairs -- a thin aluminum structural plate, about 1-2mm thick, topped with a 4-6mm thick "light plate" that allows the panel to be backlit. We're approximating this by using a stack of two 3mm acrylic sheets. We use two, rather than a single 6mm sheet because the two layers are not quite identical. Glance at the panel we're modeling above and you'll see the top-most plate (what would be the light plate in a real aircraft) has cutouts for the Dzus fasteners. The mounting holes are in the bottom plate; it doesn't have the same cutouts. In addition, real aircraft panels typically have a very small "reveal" between the top and bottom plates. This is a term woodworkers will understand immediately, but it just means that there is a gap between the edge of the top plate and the bottom plate. "Small" in this case is only 0.8mm. If you look at the picture above of the pedestal you'll see that there is an apparent gap between each of the avionics panels. That gap is only between the top plates. There is no gap between the bottom plates -- they're flush with each other. The top and bottom plates will ultimately be glued together to form the complete faceplate for our panel. What is identical are the "cutouts" for the controls that will protrude above the faceplates. The cutouts go through both the top and the bottom plate and need to be perfectly aligned with each other.

A Faceplate Template

I'm going to take some of the mystery out of sketching the panel by giving you a template you can use to make any panel between 5U and 25U tall.

This example shown is a 5U panel. There are a number of interesting things to note about the sketch. First, note that the faceplate is symmetrical along both the x and y axes. If you sketch just the top-left quadrant of the panel, i.e., just this:

...and then mirror that along the Y-axis you get

...mirror again on the X-axis and you have a complete faceplate sketch

The other interesting (and important!) thing of note is that only one dimension value needs to be changed to transform the sketch into the correct dimensions for any panel between 5U and 25U.

The dimension in the red box determines the correct Dzus height. Unless you're a Fusion user, the little 'fx:' prefix on the dimension value might be mysterious. That simply indicates that the value is coming from an expression (like a formula in Excel). The expression hiding behind the value is simply this:

( Dzus_spacing / 2 ) * Dzus_height

where

Dzus_spacing = 9.525 (a constant value)

Dzus_height = a integer between 5 and 25 (the height of the faceplate in Dzus units)

If your CAD tool allows expressions you can use this formula on that dimension; if not, just use a calculator to get the dimension using the formula. Note that the value you're calculating here is HALF of the actual panel height because it assumes you're using the mirroring technique described above. If you want to just use the actual panel height don't do the "divide by two" thing in the formula (and double the width value from 73 to 146). That said unless you want to repeat the cutout for the for the fasteners four times, I strongly encourage you to learn how to mirror parts of a sketch if you don't know how to do that already.

Other Notes

Returning to the sketch again, some final notes.

Notice that the dimensions are all applied to a dashed border that goes around the entire faceplate. This is called a "construction line" in Fusion and is used as a reference -- it's not part of the model we're building. In this case it's a reference to the actual size of the bottom plate. As mentioned earlier, the top plate is 0.8mm smaller all the way around. You can see that offset highlighted in the orange box above. Fusion has an 'offset' function which will draw the a line either inside or outside of a reference line. In this case, it's obviously "inside" of the reference.

Notice that there is an expression on the location of the center point for the 180 degree arc that makes up part of the fastener cutout. This actually didn't need to be a formula -- it's just

Dzus_spacing * 1.5

and could simply be replace by the value 14.288. I parameterized it before I realized it wasn't determined by the panel height and just never went back to simplify it.

Let's have a look now at the sketch for the bottom plate.

###Bottom Plate. The bottom plate is nothing more than a rectangle with some holes in it for the mounting screws

Fabrication note: I'm using M4 cap screws as my faux-Dzus fasteners, hence the 4.5mm clearance hole on the bottom plate. If you want to use a different screw or have a pile of money you don't know where to spend and want to use real Dzus rails and fasteners, adjust that dimension as needed.

I'll turn on the top plate sketch as well since that gives us a reference for where the outside edges of the bottom plate are (remember the dashed construction line on the top plate?), as well as a reference for where the mounting holes need to go.

You'll note that the diameter of the mounting holes are expressions. This is simply a good modeling practice if you have multiple "things" on a drawing that are the same dimension(s). Fusion keeps all the expressions in a table:

When you use an expression instead of an absolute value for a dimension it let's you change ALL of them at once by changing the value in the table. If your CAD tool has a feature like this, use it religiously any time you find you have multiple instances of a sketch item.

That wraps up the sketch for the bottom plate.

The inevitable question

Why, you're going to wonder at some point, is the template limited to 5U and above? (25U isn't really an upper limit -- I've just never come across an avionics panel taller than that.) What about 2U, 3U, and 4U panels? Do they exist? Yes, there are panels that size, but if you try to use the formula above to make a 4U or smaller panel you'll see that the cutouts for the fasteners get smashed together. That's because 2U, 3U, and 4U panels don't have four mounting holes -- they only have two.

In Fusion, a light blue-shaded region represents a contiguous polygon that can be extruded into a 3D object, and that's our next task.

Build the Faceplate 3D Model

Overview and Starting Notes

We're going to have two distinct 'bodies' (that's what Fusion calls a basic 3D object), one for the bottom plate and one for the top plate. These are just simple extrusions from the sketches we made. Since this isn't a tutorial on Fusion or 3D modeling (or not exactly, anyway) I'm going to assume you know how to do that. An interesting question though, is "how much should I extrude?" On the surface this is simple -- we've already said we're using 3mm acrylic sheets. Extrude each plate to be 3mm thick, right? Well -- maybe? Here's the deal: 3mm acrylic usually isn't 3mm thick when you actually measure it with calipers. I've seen it vary from 2.6mm to 2.9mm thick. I've never actually had a piece that was a full 3mm thick. For the vast majority of panels you'll build, this is unimportant. Use 3mm, or use a value closer to the average value you've seen from your supplier. For your coarse model of the faceplate this really doesn't matter -- I want you to be aware of the issue, though, in case you have a panel where a few 10ths of a millimeter DO matter for the faceplate thickness. For my panels it generally DOES matter because of the way I attach my PCBs to my faceplates -- more on that later.

Extruded Bottom and Top Faceplates

I tend to render the top plate in a lighter color than the bottom just for visibility during early modeling. Later in my process I color it the same as the bottom panel -- something close to the color of the actual aircraft panel. This is just cosmetics in the CAD tool, though. In real life we'll be painting the faceplate whatever color we've chosen for our cockpit.

With the plates extruded, we can move on to the next steps -- inserting the panel screenshot into our CAD tool and placing the cutouts for our controls.

Insert the Panel Screenshot into the model

In Fusion, an image can be placed on any face of a 3D body with just a few clicks. The kind of insert operation we want is called a "Canvas" in Fusion and has exactly the purpose we have in mind -- to give us a guide for modeling 'stuff' (in this case, holes). I've inserted the panel screenshot from above onto the top plate's face.

I had to scale the image a bit to get it to completely cover the plate (in Fusion, the 'Insert Canvas' function gives you tools to stretch or shrink the image as you place it; other CAD tools are nearly certain to have the same feature). It's totally common for the image to look a little distorted. It's sole purpose is to give is a reasonable guide for placing the holes we need to accommodate the buttons, encoders, switches, etc.

Fusion automatically sets the transparency to about 50% so we can see the body under the image.

That's all there is to it for this step. We can move on now to placing the cutouts.

Create the Holes ("Cutouts") for Controls

I create a new sketch on the surface of the top plate to keep the locations of the cutouts organized and just start to draw the circles and squares for the buttons and encoder shafts. A good question, though, is how big should the cutouts be? Recall that we measured a button for this panel earlier, and since all 10 buttons are identical in size, the cutouts will be as well. The measurements we made were 13.54 x 9.67mm. As discussed above, these measurements are certainly a little off. For this panel I have access to the "real" button dimensions (13 x 9mm), but when I don't, I just round the photomeasure dimensions to (at most) then nearest tenth of a millimeter. Because there are TEN of these cutouts, we'll define expressions for button_cutout_width and button_cutout_height and use those for our dimensions when we create the rectangles. That way if we need to tweak the dimensions later, we just need to change one or two values. Keep in mind that the cutouts need to be about 0.2mm bigger than the button dimension. This will lead to a 0.1mm clearance around the button. That might not be enough depending on how you fabricate your buttons. Some resins have a tendency to expand when printing, for example. FDM-printed buttons will be even less predictable. If you guess wrong on the clearance you'll have to tweak the button dimensions or the cutout dimensions.

This is Fusion specific, but hopefully your CAD tool has a similar facility.

The light blue rectangles are the button cutouts. Now what about the two encoders? As you can probably tell from looking at the panel image, these are dual concentric encoders -- two encoders stacked together with a large knob and a small knob to turn them. We measured the knobs earlier, but that's not relevant for this sketch -- we need to know how big of a hole the encoder needs to poke through the faceplate.

Dimensions for Controls

At this point we have to pause and think about this for a minute or two. Maybe we got to this point without considering what physical gizmo we're going to buy to actually implement a dual-encoder. We can either save our work and go do some research or we can just use a placeholder dimension for the time being, recognizing that we'll have to come back to make an adjustment once we've picked our encoder part and have a dimension for the necessary shaft opening either from the part's datasheet or by actually measuring it once we get one in our hands. Let's just use a placeholder. For encoders, a good guess is around 7 or 8mm.

Note that this is also the point where this approach will need some modification if you're planning to do point-to-point wiring instead of a PCB for your panel. Point-to-point wiring generally means that your physical controls (buttons, encoders) are being mounted to the faceplate vs. being mounted on a PCB below the faceplate. That might necessitate some modifications to the cutouts -- a larger cutout for the encoder shafts, or maybe screw holes to mount switches either on the front or back plate. I can't give any real guidance on this approach as all my panels are based on PCBs.

Continuing the Faceplate Layout

With the placeholder shaft hole cutouts added, the faceplate looks like this.

Some things of note: remember that the panel image is distorted. This started with our screenshot because we got a slightly fisheyed image from the in-cockpit camera. We made it worse when stretched the image to fit the top plate. In particular, note where I placed the cutout for the right-most encoder compared to where it sort of looks like the center of those knobs are. Controls tend to be laid out with lots of symmetry and alignment of elements. Without going back into the CL650 cockpit to verify it, I'm 99.99% sure that encoder shaft is on the centerline of that button below it -- so I'm placing it there as my first approximation. If I think about it, I'll verify it later -- but if I don't remember to do that I'm not going to sweat it. Don't be a slave to the screenshot -- it's just a guide.

Here is the sketch with the canvas turned off. Note that I've used construction lines to help me ensure the button and encoder shaft cutouts are aligned. On my actual sketch for this panel I'd have even more constraints and dimensions to ensure spacing between the buttons was equal, etc. Use whatever tools are available to you in your CAD application to get this sketch all nice and pretty.

Finishing the Cutout Sketch

We're almost done -- but one element is missing: the mounting holes that are on the bottom plate. We "cut" those out when the bottom plate was extruded, but we need the locations and dimensions on this sketch as well since this will be what we use to have acrylic faceplate parts laser-cut or CNC'd. It's easy enough to get those -- they're on the back bottom plate sketch. With that sketch made visible I use a Fusion feature called "Project" to copy a feature from another sketch on to this one. It's a special kind of a "copy" -- it stays referenced to the underlying sketch the projection came from. If I change the dimension of that hole on the bottom plate sketch, that new dimension will flow to this sketch as well. This feature may be called something different in your CAD application -- but if it has such a feature always use it instead of re-drawing the item on the current sketch.

Use the completed cutout sketch to extrude holes through the faceplate bodies (both of them!)

All those sharp corners are nicely rounded off with fillets in the real aircraft, and that's easily done here as well.

Final Steps for the Basic Faceplate

We've got one more important step to get the faceplate ready for fabrication -- we need to generate an additional sketch for the top and bottom plates from the completed bodies we built so far. In particular, the fillets we added in the last step are NOT in any the sketch yet, and the cutouts are in their own sketch. You might have added other needed assembly items to the back and/or front plate on separate sketches as well. We need to essentially merge all of those little details into a single drawing that can be used to cut each of the plates. In Fusion, at least, this is easy to do. We're going to define a new sketch on top of each of the two plates and then 'project' the entire plate.

Here, for example, is the bottom plate from my 'production' version of this panel (it has some additional holes for mounting the PCB, a detail I'll get into much later in this tutorial).

I add a new sketch to the surface of this body and then project the entire plate onto the sketch, which ends up looking like this:

The magenta-colored lines are Fusion's way of indicating the lines are projections rather than a manually-drawn sketch line. I do the same thing for the top plate, and get a similar-looking sketch:

Finishing Up

The only remaining task is to export those final two sketches out to a vector file. Most laser cutters can handle a variety of vector formats. I always use Adobe's DXF (drawing exchange format), but you can use whatever your CAD tool supports and/or your laser cutter (or laser cutting service provider) needs. Again, name them carefully ("Panel name_Bottom_Plate_Cuts" -- or whatever) and copy them into one of your cockpit build organizational folders (What!? You STILL haven't created it? :-) )

Last Thoughts on Part One

Again, I'll stress that this workflow isn't the only way to develop panels -- it's just the process that I use. I've modeled something like 30 panels for my cockpit build out now and arrived at this process gradually -- almost always because I forgot to think about something along the way and sometimes had to scrap hours of work. Adapt this to whatever suits your style and approach to your build out, and please feel free to provide comments or question to me in the MF Discord.