# Engine Monitoring + ADS-B in for $280



## Nate (Aug 7, 2017)

https://github.com/tomcourt/enguino

https://github.com/tomcourt/enguino/blob/master/README.md

I already jumped on the EFB banwagon by ditching my plans for GRT and went with an iPad EFB (wingx is free) with a Stratux. Now to complement this is engine monitoring for around $150. 

Currently around 1 year from my panel, I havr purchased all of my instruments so this project is perfect. Its still fairly new and by the time I am ready, I am sure the bugs will be worked out. Very excited for this.








Notes:


EnguinoGeneral Description

Enguino (a portmanteau of engine and Arduino) is an inexpensive*(as cheap as $100), lightweight*(2 ounces w/o case or cables), small*(about the size of a bar of bath soap),*open source*engine monitor for experimental aircraft. The engine monitor is displayed on a tablet as a web page. Here is an*example*of a typical Enguino display. The tablet can be an iPad, an Android or any other tablet that includes a modern web browser and has wifi.

Enguino is intended to work with the*Stratux*ADS-B receiver which is also open source. The Stratux acts as a Wifi router for Enguino. For airplanes not equipped with a Stratux it is still possible to create an Enguino system with slightly different hardware and a small change to the configuration.

The hardware consists of a tiny single board computer called an*Arduino. This board is similar to the Raspberry Pi used in the Stratux, although the Arduino has a much simpler computer on it. Despite being a simple computer, the Arduino is much better at connecting to the real world.

Enguino is the combination of the Arduino and and another board that connects to 8 thermocouples for CHT and EGT, a tachometer, a fuel flow transducer and seven generic inputs. Heres a*photo.

Because Enguino is experimental, it is recommended that you don't replace your legally required gauges with Enguino until you've confirmed to yourself that its readings are accurate and reliable. Also tablets and and wifi communication alone shouldn't be counted upon for critical flight information. Furthermore you may not have a dedicated tablet for Enguino. For these reasons an auxiliary display is an optional part of Enguino. It consists of a simple LED display that normally displays tachometer and fuel gauges but can also display engine alarms and readings.

Aux Display

The auxiliary display will fit in a 3 1/8" cutout. Here is a*photo of the prototype. It is showing the default page for a fixed pitch prop airplane. It is showing RPM's on top and left and right fuel in gallons on the bottom. The red LED in top shows a warning alarm is active.

In the middle is a two lines of 4 digit 7 segment LED displays. Limited text is also shown on the display.

The master caution/warning annunciator, a multi-colored LED is on top. If any gauge, even those not currently being shown, is in the red range it will show red, if any in is in the yellow range it will show yellow, otherwise it will show green.

A pushbutton is below the display. Tapping the button acknowledges an alert if one is displayed, otherwise it switches to the next page of information. Holding it for at least a second redisplays all alerts that have been suppressed. Holding it for 3 seconds or more toggles dimming the display for night flight.

In normal operation (for a fixed pitch prop) the tachometer and fuel for left and right tank in gallons is shown as*2300*/*15:10*(2300 rpm, 15 gallons left tank, 10 gallons right). Excessive RPM's cause the tachometer to blink. On power up the following sequence would be shown:

Hobb*/*123.4*only last 4 digits of hobbs shownbAt*/*12.2*alternator-battery voltage0*/*15:10

Whenever out of range indicators happen the display switch to showing the condition and the value, for example*OP L*/*10. A 'warning' (red) out of range will be indicated by the first line blinking and the annunciator LED also blinking red. Pressing the pushbutton stops the blinking. Pressing it again cycles the display to the next information page. The annunciator LED continues to be red as long as the condition persists. In the case of a caution condition (yellow range) the annunciator LED turns yellow. When the engine isn't turning some alerts are suppressed.

Hardware

The main board is a particular type of Arduino called the*Leonardo ETH. This Arduino contains an ethernet adapter which is then attached to the Stratux via an RJ-45 cable.

Arduino expansion boards are referred as*shields. Attached to the Leonardo is an 8 input*thermocouple shield. This assumes you want CHT/EGT temperatures. If not a simple*proto shield*can be used instead.

The prototyping area of either of the shields will have a number of resistors and other components added to it to complete the Enguino. Some basic soldering will be required to complete this project. A parts list can be found further down.*TBD*- Instructions for assembly or create circuit boards.

Software

On the tablet, attach to the Stratux wifi network, use the browser to navigate to 192.168.0.111, save the link to the home page. Go to the home screen and press the Enguino icon, the web page will open up in full screen.

The firmware is installed on the Arduino using the Arduino IDE. First install the*Arduino IDE. Add the Ethernet 2 library by selecting 'Sketch' in the menu, 'Include Library' and 'Manage Libraries...', scroll down to 'Ethernet2' and press 'Install'. Then download the [Enguino source code] to a folder.

For now just install the default configuration. Configuration involves editing the config.h file and then reinstalling the firmware. After editing the configuration, connect the Arduino to your PC via a USB cable. This will also power up the Arduino and a green light will appear next to the USB connector. Start up the Arduino software on your PC. Go*File,*Open*and select the file*enigno.ino. Then go*Sketch*and*Upload. The other green LED next to the power LED will flash until the file is uploaded. Done Uploading will appear near the bottom of the window.

Configuration

Configuring the engine display or new sensors can be a bit involved. Eventually a number of 'stock' config files will be developed and users can choose the one for their engine and sensors.

All configuration is done by editing the config.h file in the Arduino IDE (integrated development environment).

Due to hardware limitations all calculations are done using integers. A decimal point is assumed during the calculation and added when numbers are displayed. Decimal numbers are sometimes used in the config.h file but are converted to integers before being transferred to the Arduino.

Sensors and scaling

The engine sensor system is fairly universal. The default configuration uses Vans Aircraft engine sensors. At this time the only non-supported sensor type is a millivolt sensor for an amp-meter.

Sensors fall into several categories: digital, such as fuel flow and tachometer or analog, generally all the rest.

The digital sensors are attached to dedicated inputs on the Enguino. The analog sensors are either thermocouples in which case they are attached to the thermocouple side otherwise they are attached to the generic side.

If you have a new sensor type you will first need to determine if the sensor has a*resistive*or*voltage*output.

Many sensors are linear in some sense. This means if you plot the resistance or voltage of a sensor against its output (typically pressure) it will show a straight line. Note - some sensors have a resistive output that is linear in voltage, Van's pressure sensors are this way.

The exception to this is many temperature sensors. These are based on a*thermistor*and these are anything but linear. The*CurveFit.xlsspreadsheet can be used to calculate a conversion table for this type of sensor.

Good calibration data to characterize a sensor can be hard to find. One way to determine configurations for sensors is to disconnect a sensor from its gauge and replace it with a*resistance decade box*(assuming the sensor is resistive). The*CurveFit.xls*spreadsheet can then be used to find the configuration settings.

With this information in hand you can update the*Sensor*table in config.h. Update the sensor-type and the voffset and vfactor to get correct numberic readings from the sensor. The goffset and gfactor are used to set the range displayed visually on gauges. The caution and warning levels are specific for the engine.

Labels and graduations

Only vertical and horizontal gauges can have graduations. The label value (suffix LV) containing the label for the graduation is the first line. The label's position (suffix LP) contains the labels position. Use the VSEG and HSEG functions to convert the values to 'gauge' coordinates.

Ranges

This sets the color ranges of the gauges (green, yellow, red regions). The vertical and horizontal gauges are straight forward. The color is the first line (suffix of RC), the limit's position is the second line (suffix of RP). The starting limit of 0 is not included in the table.

The round gauges require 3 lines to describe the limit's position. The first line is the X coordinate for the position so use the ARCX function to convert the value to gauge coordinates. The second line is the Y coordinate so use the ARCY function. The third line is either 0 or 1, use 1 if the length of this color arc is more than 180 degrees. If not sure, just try it both ways and see which way draws correctly.

Layout

During design and testing of the layout it may be helpful to connect the Enguino to your local network instead of the Stratux. You may need to update the IP address in the Enguino.ino file. If you do do so, remember to change it back after finalizing the layout. To see values on the gauges while testing, uncomment out the line*#define SIMULATE_SENSORS...

Most gauges are of the vertical (gs_vert) type. Gauges that are paired left and right such as fuel gauges are of the paired vertical type (gs_pair). In this case the left sensor is connected to*pin*and the right sensor to*pin+1.

The horizontal gauges (gs_horiz) are typically for handling 3 or more CHT gauges. Set CYLINDERS to the number of CHT sensors. The first cylinder is attached to*pin, the second to*pin+1, etc. The EGT gauges (gs_egt) overlay the CHT gauges and support a peaking mode.

Aux display

The aux display can display a number of pages during startup. After that it displays a default page. Following that are a number of information pages.

A page can display text on the first line, 4 characters, however not all letters are supported. Some letters are displayed in the wrong case, for example 't' instead of 'T'. The letters 'M', 'W' and 'X' can not be displayed in any form. Others like 'V' end up looking the same as 'U'.

Each line can be associated with a sensor. If the first line has text and is associated with a sensor it will show caution (the letter L or H will replace the last character) or alarm information (the line will blink).

Otherwise the sensors numeric value will be shown. The default page is tachometer on the top and fuel gauges on the bottom. Avoid having more than one unlabelled page as the numbers may be ambiguous.

Stratux

The Stratux is configured to route network traffic between the wired ethernet to the Enguino and the wifi connecting to a tablet.

Boot the Stratux. For first boot after installing a fresh micro-SD card wait 3 minutes, for rebooting wait 30 seconds.Either connect a monitor and keyboard to the Rapberry Pi and login with un:*pi, pw:*raspberry*then skip ahead in these instructions to sudo nano...Or connect to the Stratux wifi network (this will need to be repeated when rebooting)On the Mac, start terminal. On a Windows PC, run PuTTY.To connected type*ssh [email protected] may get a message "Are you sure you want to continue connecting (yes/no)?"*yesPassword:*raspberry

sudo nano /etc/dhcp/dhcpd.conf

Scroll to the bottom and right after the*subnet...and*range...*lines add

option routers 192.168.0.1; 

Ctrl-o, enter, ctrl-x

sudo nano /etc/network/interfaces

Change*iface eth0 inet dhcp*to the following:

auto eth0 iface eth0 inet static address 192.168.0.1 netmask 255.255.255.0 

Ctrl-o, enter, ctrl-x

sudo nano /etc/sysctl.conf

Scroll to bottom and add

net.ipv4.ip_forward=1 

Ctrl-o, enter, ctrl-x

Reboot.
Connect to Stratux wireless network again.
Browse to 192.168.10.1, confirm the Stratux control panel shows up.
Browse to 192.168.0.111, confirm the Engiuno panel shows up.

Design DetailsArduino

The Leonardo is rated to run from 6-20 volts although they suggest keeping it between 7-12 volts. They claim to worry about the voltage regulator overheating and 'damaging the board', but the regulator chip (88% efficient) does have a thermal shutdown feature at 150 deg C. The text appears to be a carry over from previous Arduino's which used a linear supply.

The supply is rated for 1000 ma. The Leonardo uses 82 mA (confirmed by testing). Connected to the Aux display with most segments lit power consumed is about 140 mA. Pull ups will add some to this.


----------

