ModAir - Modular Aviation Instruments

Open Source Avionics for Microlights and other Non-Type-Certified Aircraft

Similar projects worth following
With electromechanical avionics becoming obsolete and expensive to repair, many analog gauge-type instrument panels are being replaced with an electronic flight instrument system (EFIS). Sensors and displays are cheap and readily available, yet commercial EFIS systems remain ludicrously expensive.

This project aims to create a low-cost EFIS system for non-type-certified aircraft such as:
-experimental aircraft
-light sport aircraft

To support the various engine types, cockpit layouts, display sizes, sensors and required functionality, the system is built around a multi-master bus architecture. Measurements are periodically broadcast on the bus by sensor modules, while other modules monitor, control, display, log or forward this data.


I have always dreamed of flying and was fortunate enough to be able to complete my recreational pilot license a few years ago. South Africa is an amazing country to explore by air, especially in an open cockpit of a Weight Shift Controlled (WSC) trike!

My wife took the picture above as we were flying along the Wild Coast. The pilot sits in front, with the passenger in the rear seat. The instrument pod is located between the pilots legs.

The original instrument pod is pictured above. From top to bottom (and left to right), the instruments are as follows:
  • Compass,
  • Altimeter,
  • Air Speed Indicator (ASI),
  • Vertical Speed Indicator (VSI),
  • Engine RPM and Hour Meter,
  • Fuel Level,
  • Water Temperature,
  • Radio,
  • Intercom,
  • Magneto Switches, and
  • Master Switch.

The analog dials look nice and make a neat cockpit, but lack in functionality for cross country navigation. Also, the ASI was under-reading, the compass needed calibration and the Engine RPM Meter occasionally showed zeros. Time for an upgrade!

As hackers and engineers we are quick to think of all the potential features we can add with a few sensors, a micro-controller and an LCD screen. It wasn't long before I built the first prototype...

I installed a 128 x 64 graphic LCD module between the radio and the switches, integrating the intercom box into the pod and added the headset connectors to the bottom of the pod. My phone in the flight suit window pocket runs the Air Navigation Pro app, which gives me a moving map with all the airspaces. A PIC microchip, GPS module, some MEMS sensors and a Rotary Encoder added a few additional flight instruments:

  • Ground Speed
  • True Heading
  • True Altitude
  • Altitude at standard pressure (Flight Level)
  • Date and Time
  • Flight Time
  • Pilot Checklist / Notes
  • Battery Voltage
  • Outside Air Temperature
  • Headlight Control
  • Heat-pad Temperature Control
  • Engine RPM Meter
  • Fuel Level
  • Water Temperature
  • USB Charging Port

So far so good... the only issue: feature creep!

This first prototype was hacked together on veroboard with parts I had lying around. With all the menus and functionality, the 24 KB program memory on the PIC18F4455 was quickly running out. Time for a proper design...

Design Wishlist

As a bare minimum, I wanted to replace all the existing instruments with digital equivalents. Having access to the data digitally allows for some interesting data fusion and new features with a simple firmware upgrade. For example, what is the range with the current ground speed, remaining fuel and average fuel consumption?

General Requirements

  • Low-cost
    • Goal of under $100 per module
  • Modular
    • Multiple physical modules (sensors, control outputs, interfaces, displays) that plug into a shared bus
    • New sensors or modules (unknown at design time) can be added onto the bus at a later stage (no firmware updates should be needed if a new sensor / module is added)
  • Easy-to-use
  • Robust (voltage and current spikes, noise from spark plugs etc)
  • RF shielding (e.g. transponder is typ. >150W transmit power)
  • Weatherproofing

I find it useful to envision as many future requirements as I can think of. That way the architecture can be designed with future upgrades in mind, even if these features are never actually implemented.

Feature Wishlist:

  • Support for multiple display sizes and types
    • TFT LCD
    • Character STN LCD modules
    • Graphic STN LCD modules
    • eInk displays
    • OLED screens
    • Analog dial gauges (via PWM)
    • LED displays (bar graphs, 7 segment, matrix)
  • Support for Android / iOS devices as additional graphical user interfaces and for internet access
    • Smartphones
    • Tablets
    • Smartwatches
  • Moving Map View
    • Airports / landing strips
    • Airspaces
    • Current and predicted Weather
    • Waypoints and path planning
    • Other Airplanes in the area
      • Via Automatic Dependent Surveillance - Broadcast (ADS-B)
      • Via Low-Cost ISM-Band Transceiver (for friends in your group)
  • Engine Monitoring (multiple engines)
    • Revolution Counter (RPM)
    • Hour Meter...
Read more »

Original prototype firmware (C code for XC8 / MPLAB X) and schematics (Cadsoft Eagle + JPG)

Zip Archive - 165.56 kB - 01/11/2017 at 17:51


View file

  • 1 × GY87 (HMC5883, BMP180, MPU6050) 10 DOF 3-axis Gyro + 3-axis Acceleration + 3-axis Magnetic Field + Air Pressure Module
  • 1 × Ublox NEO 6M GPS Module
  • 1 × dsPIC33EP512GP502 Microprocessors, Microcontrollers, DSPs / Microcontrollers (MCUs)
  • 1 × PIC24F16KA102 Microprocessors, Microcontrollers, DSPs / Digital Signal Processors (DSP)
  • 1 × Raspberry Pi Zero
  • 1 × 7 Inch 800x480 LCD with HDMI Module HDMI 7 inch LCD Module
  • 1 × 2.2 Inch 240x320 ILI9341 SPI TFT Color LCD Serial Module Display
  • 1 × QC12864B Graphic LCD Module
  • 1 × ERM25664 Large 5.8" Graphic LCD Module
  • 1 × 1602 HD44780 LCD 16x2 Character LCD Module

View all 12 components

  • Original Prototype

    Rene01/11/2017 at 18:21 0 comments

    For anyone that is interested, the design files of the original prototype have been uploaded.

    I used a NT-G128641A Graphic LCD module (KS0108 controllers). Transflective STN-type graphic or character LCD modules are the most easily readable in an open cockpit. Color TFT Screens are almost impossible to read with the glare, and require sun-shielding.

    GPS is a Ublox NEO-6M module, programmed (via USB serial cable and their software tool) to output binary POSECEF, POSLLH, STATUS, TIMEUTC, and VELNED packets at a rate of 10 Hz.

    Many sections in the firmware have been commented out to save program memory. Besides the program memory limitations, this design lacks in modularity. I needed to remove the electronics from the aircraft at the airfield, and take them home every time I wanted to add functionality (which happened a lot...).

    The PWM outputs were used for the headlight, and for heat-vest temperature control. The Rotary Encoder user interface worked very well, even in winter with thick gloves. Using the touchscreen on a phone or tablet is almost impossible while flying.

View project log

Enjoy this project?



Does this project spark your interest?

Become a member to follow this project and never miss any updates