sensord - Data aquisition software


The sensord is a Linux Daemon program to interface the SensorBoard to XCSoar using NMEA Sentences

  • Height - static pressure (MS5611)
  • Vario - TEK pressure (MS5611)
  • Speed - differential pressure (AMS5915)
  • Battery Voltage (ADS1110 or ADS 1100 on the Adapterboard)
  • Temperature (DS18B20)
  • Acceleration (MPU 9150)
  • Gyroscope (MPU 9150)

The measured values are processed by sensord and sent to variod and finally to XCSoar using NMEA data sentences. Here is an Overview about the General operation principle.

Internal Data Flow

Sensors –> [i2c bus] –> sensord –> [NMEA over TCP port 4353] –> variod –> [NMEA over TCP port 4352] ←→ XCSoar

Sensor Mapping

Sensor Sensortype I2C Adr. Quantity measured Remarks
MS5611 absolute 0x77 TEK-pressure TEK probe
MS5611 absolute 0x76 static pressure static port
AMS5915 differential 0x28 dynamic pressure static port and total pressure
MPU-9150 Motion Processor 0x68 Yaw, Pitch, Roll in preparation
ADS1110 or ADS1100 AD-Converter 0x48 Battery Voltage image 16108 + xcsoar-testing_git-r8.0
DS18B20 External Temperature 0x18 Temperature in preparation, via 1 wire Bus Master

Command Line Parameter

    -v              print version information
    -c [filename]   Config file for sensor compensation
    -d[n]           set debug level. n can be [1..2]. default=1
    -r [filename]   record measurement values to file
    -p [filename]   use values from file instead of measuring
    -s use second order temperature compensation for MS5611

Config File Format (e.g. -c sensord.conf)

The default configuration file is /opt/conf/sensord.conf

#Section for static pressure sensor
# Unit: Pa
#format: static_sensor [offset] [linearity]
#Example: static_sensor 1.5 1.3
static_sensor 0.0 1.0

#Section for tek pressure sensor
# Unit: Pa
#format: tek_sensor [offset] [linearity]
#Example: tek_sensor 1.5 1.3
tek_sensor 0.0 1.0

#Section for dynamic pressure sensor
# Unit: Pa
#format: dynamic_sensor [offset] [linearity]
#Example: dynamic_sensor 1.5 1.3
dynamic_sensor 0.0 1.0

#Output value config

#Vario parameter
#format:  vario_config [x_accel]
vario_config 0.3

#Voltage Sensor parameter
#format:  voltage_config [division_factor]
voltage_config 736

The default values for the Voltage Sensor are:

  • voltage_config 736 for ADS1100 (External reference 3.3 V)
  • voltage_config 1200 for ADS1110 (Internal reference 2.048 V)

Data flow

Compensation of Sensors

The sensor readings can be compensated using two values. The values are stored in a file for the moment. For a future version the values should be stored in the EEPROM on the sensor board, because they are dependent on the sensors mounted on the board. This will improve the interchangeability on board level.

Automatic Differential Pressure Calibration

Functional Principle

P = linearity * P_meas + offset

P         = final calculated pressure
P_meas    = pressure measured from sensor
linearity = correction factor for linearity
offset    = correction factor for offset 

Values are floating point decimal.

NMEA sentences

The full range of NMEA-strings used by the Openvario-Project can be found here: NMEA-Definition

Source Code

The source code of the whole program is hosted in a git repository. To clone the repository, use the following command:

git clone

Navigate to variod

Go back to Overview

Go to Setup Guide