NetAvionics : A powerful but inexpensive B738 simulator

Hello !

I’ve been in the world of air simulation and home cockpits for a while. My last personal cockpit was based on opencockpit cards, run by several PCs, using my own instrument visualization programs.

I found the use of many PCs cumbersome and expensive and decided to look at today microcontrollers technology for a better way to do it. You can now find for a few bucks Arduino and RaspBerry Pi boards, which are fairly powerful, compact, and potentially offer all the elements to develop a full home cockpit system. I started to develop such system and I will report here my choices and results.

The system is based on hacked opencockpit cards (Mastercard and modified USB expansion card). It uses an Arduino DUE board to control all the hardware equipments (inputs, outputs, analog readings and servomotors), and several RaspBerry Pi 3 boards for openGL vizualisation of the instruments : PFDs, NDs, system and engines screens.

In the menu above, you will find some pages describing the main blocks of the system, like the hardware setup, the hardware configuration tools, the instruments displays …

In the course of developing my system, I am facing problems for which I had to find some solution. I will share these in articles named “Tech tips”, hope it can be useful to someone…

The system is under development, but once it is “reasonably” finished (it’s never really finished …), I imagine I could sell or share it, we’ll see …

Posted in Non classé | Leave a comment

March update : windows version

Hi again,

Still working regularly on the project ! I’m on a prolific and durable mood … The FMC is still slowly progressing, and I’m working on a lua script to mimic all the B738 systems, as mentionned inthe last update. But this month, I decided to port the project to windows. I’m currently using X-plane on a linux (ubuntu 18) machine. I had decided at the beginning to make cross-platform development by using Qt, so this month it has been quite straightforward to compile the system for windows. It is now operationnal and I have made a bunch of flights with my cockpit under windows. It would be as easy to produce mac files, but I have no mac at hand.

Then I decided to start investigating a P3D version, so I got myself a developer license of P3D v4.5 and the P3D SDK. Let’s say 80% of the code can be ported as is, but the last 20% requires some work, so I’ll do it slowly and regularly.

Posted in Non classé | Leave a comment

February update

Continuing to work on the FMC; it’s a huge work so I’m progressing more slowly than I would like. Another aspect I have been developping is the implementation of the overhead. The overhead controls all the systems in the plane, so there’s a lot of interactions and complexity. I wanted to do something which can be easily reworked and improved, so I decided to use scripts. X-plane comes with a native implementation of LUA, which is a powerfull scripting language. I have made a script to define “datarefs” containing the state of every element of the overhead panel. These are variables that can be manipulated in the script to simulate the behaviour of the systems controled by the overhead. The overhead hardware state is fed into these datarefs (that’s a lot of switches and knobs !) , so they can be used to programmatically simulate all systems.

Using this approach, I have designed an “open” system which can be easily edited to modify, correct or improve the simulation of the overhead by the end user with a minimal knowledge of programming. This script is contained in a modified version of the Laminar B738, in the folder /X-Plane 11/Aircraft/NTAV B737-800/plugins/xlua.

I have also decided to write a manual for the system, as it is becoming larger and larger and has more and more functionalities and options. I will release it here as soon as possible.

Posted in Updates | Leave a comment

January 2020 update !

Happy New Year !

The project is in good progress, the FMC is on its way, and it’s a huge work, I must admit that I had underestimated it. Well, I want to obtain something very close to the real thing, and it requires a lot of efforts. I think I will need a few months more to obtain a first satisfying version.

Hardware : simpler, plug & play connection to the opencockpit master cards with a professionnal design !
I have designed dedicated electronic boards, all SMD component design, which just require to plug cables to obtain a working system :

The DSTACK card is the hardware processor, based on an Arduino DUE and handles easily 576 inputs and 360 outputs. This card has a wire connection to the network, to communicate with the X-plane dedicated plugin. I have also increased the number of servomotors to 15 and analog inputs to 14. On the bottom of the picture, notice the two connectors to connect two expansion cards, depicted below

DSTACK card = arduino DUE + connecting elements + Ethernet connection and Micro SD card
NTAV expansion board : connect to DSTACK and to 4 opencockpit mastercards

The NetAvionics (NTAV) expansion card is fully compatible with the opencockpit USB expansion card, and it allow similarly to connect 4 mastercards using the same connectors and cables (25 pins SUB-D). Two such cards can be connected to the DSTACK card, using the 26 pin connector at the center. A Servomotor card allow to connect 15 servomotors, using a serial connection which allows to use up to 20m (60 feet) long cables. This design is also necessary because Arduino DUE has 3.3V outputs while usual servomotors expect 5V control signals. The board both handles the voltage leveling and allow noise free control over long cable lengths.

NTAV servo card : drives 15 servomotors and connect to DSTACK card

Posted in Updates | Leave a comment

December update : working on FMC

Hello !

I’m working hard on the fmc. I have chosen to rely only on the X-Plane database, no data files will be specific to the FMC, in order to ensure a clean synchronization between X-Plane and the FMC. Any update of the X-Plane files (including using services like Navigraph or similar) is transmitted automatically to the FMC.

I didn’t imagine how complex the FMC route editor has to be. Just try on the FMCs you known to edit the legs list, containing airway segments, and look at how this is reflected on the route waypoint list, for example. I am really decided to reproduce the real thing as closely as possible, and I’m now taking the full measure of the amount of work needed !

Posted in Updates | Leave a comment

November Update (finally !)

Long time, no news !
But the project is still ongoing, and well !
I now have all the screens (PFD, ND, engines, …) working fine, except that weather radar and terrain radar are not yet implemented. All the cockpit hardware is supported.

I am currently working on a FMC independent of Xplane, which is based on a Raspberry pi Zero. The little Raspi has a composite video output, which is perfect for driving my recycled PS-one screen and the 69 keys FMC panel is handled using pushbutton matrix connected to the Raspi GPIO port.

Here are two pictures :

FMC, based on a Hispapanel panel and a PSOne 5″ LCD screen
Back side : notice the small raspberry pi zero (down right) which handle wifi communication with the XP11 plugin, drive the FMC keyboard and screen and run the FMC program
Posted in Updates | Leave a comment

March progress update

Hi !

Still workin’ hard ! I have finished all “basic” screens, i.e. PFD, ND, centered mode ND, Engine screen (upper DU) and MFD (both ENG and SYS). I am currently working on the TCAS implementation in ND and PFD, designed to work with AI planes and also online networks (IVAO, VATSIM). Next, I will work on the weather and terrain radar in ND, which are not implemented yet.

I have a test configuration running in my B737 NG 800 cockpit, which uses 4 raspberrys and one DSTACK, pretty cool … I will had a small video soon. I am also debugging the hardware part, but it’s pretty stable and easy to use.

I am also now thinking to add raspberry pi zero based FMCs. The power of the pi zero is enough for that, with a GPIO connector which hold enough pins to connect the FMC keyboard. But that’s for later 😉

Posted in Updates | Leave a comment

February Project Update


I’ve been quite busy working on the system. I’m almost finished with the engines primary instrument screen (upper DU in the B737). Here are two rapid screen shots taken with my phone:

in-flight view. This is the “compact” display. The “TAI” symbol (Thermal Anti Ice) indicates that engine anti ice system is on.
Engines stopped

I have noticed that I have slightly different element placements depending upon the type of screen used and its resolution. I have decided to include a lot of user modifiable parameters so that “fine tuning” can be done for specific screen by a non-programmer, using a user friendly GUI. I am now doing the same for the other screens (PFD, ND) and I still have a lot to add to these. I am trying to follow as closely as possible the Boeing documentation to implement a maximum of realistic behavior.

Posted in Updates | Leave a comment

Tech tip #2 : Noisy servomotors

In many place in the simpit, I use servomotors : for the standby instruments, the flap and brake pressure indicators, and all the gauges in the overhead panel.

In the system I’m developing, the servomotors are driven by an Arduino DUE. The particularity of the DUE is that the outputs are 3.3V, instead of 5V. Anyway, even in the case of 5V driven servomotors, problems can occur when the cable between the command unit and the servomotor is more than a meter long … The command signal is altered, and the servomotor gets noisy, or even unresponsive.

This problem is very well known in the field of industrial systems, where command may be tens of meter away, in a noisy environment. In this case, a well know solution is to use a current signal, rather that a voltage signal, which is much more immune to noise. Of course, commercial converters exist, but I found their use to be too heavy and costly for my application. So, I gathered elements from the net and designed a very simple circuit to do the job. It makes use of two small transistors and four resistors, with a corresponding cost of the order of 1 euro …

Here is the schematics :

As you may note, the circuit is powered using 12 volts, which I use for panel lighting. Of course the servomotors must be driven by 5V TTL signals, but the circuit ensures that 5V command signal is delivered for supply from 7.5V and above. It has two parts, the left side with the transistors must be located near the arduino, and the R4 resistor is located at the servomotor level, between the command wire and the ground wire (usually the yellow and black ones). A current of about 4 mA is forced in the command wire, and is converted by the R4 resistor to 4mA x 1.2Kohms = 4.8V. So the command is done through a current on the line, not a voltage. Please note that I used 2N2222 and 2N2907, because I had it at hand, but any small transistors will do.

In my design, if you have followed my project, I have planned for 10 servomotors for the moment. So i realized a simple board with 10 similar units as described above, here’s the picture :

It’s very effective, I made some tests with cable length above 10 meters (30 feet), and it works like a charm.

Posted in Tech Tips | Leave a comment

Tech Tip #1 : Displays flickering …

In order to start the series, I want to discuss a problem which was really annoying and unpleasant, but found an easy solution.

In my cockpit, All the radios in the pedestal (NAV 1 & 2, COM 1 & 2 and ADF 1 & 2) are made with 7segments displays, operated by IOCARD display cards. All radios have active and standby displays, and it’s a total of 64 digits, requiring 4 display cards in a stack, connected by the same cable to a MasterCard, all located in the pedestal.

Although it basically worked nicely, I had a recurrent and annoying problem : very often, all displays would flicker or blink, which was very unpleasant. I first thought that I had poor wiring or bad contacts, but I soon found out that it was not the case. Then what ? I was plagued by the problem until I had the idea of measuring the supply voltage at the display level. I found 4.6V although the supply unit was delivering 4.95V, very close to the nominal 5V expected. The problem in fact is that all the digits call for a non negligible current, which is not readily measured, because it is pulsed. This in turn resulted in a voltage drop in my wiring, because the wire section was not enough (my 5V cable having a typical length of 3m). At 4.6V, the electronic circuitry in the display card does not perform correctly. I found that using bigger wires solved the problem, the voltage near the display was 4.9V and no flickering anymore !

Posted in Tech Tips | Leave a comment

Progress update – January 2019

I have added a page on the site to describe the simulation of the PFD and ND screens, see menu above. This is a preliminary description, since it is under development. For the moment I have a fully functionnal PFD, and the ND has only the MAP mode. All the screens will be developed and I will post screenshots and video here later.

Posted in Updates | 1 Comment