Skip to content
Jacob G edited this page Feb 23, 2024 · 9 revisions

EngineDataLogger

This project is the result of necessity. It is built to be modular, gathering telemetry from available sources and sending useful output where desired.

Please feel free to edit this wiki, add pages, etc to make the documentation more clear.

  • Inputs
    • Innovate LC-2 oxygen sensor controller
    • Ignitech WB-2 oxygen sensor (CAN)
    • Ignitech TCIP-4 ignition module
    • Custom input via micro-controllers connected to USB or i2c. There are separate projects that cover these.
    • Any CAN device via DBC Files
  • Outputs
    • Log files (the original purpose)
    • Dashboard App on a mobile device (Android Only)
    • OBD-II compatible diagnostics. Use with any OBD2 reader or app.

Getting Started

  • Download EngineDataLogger

      git clone https://github.com/techie66/EngineDataLogger.git
      cd EngineDataLogger
    
  • Install Pre-requisites There is a script in the main folder of the code that will run the commands to install the current version of each dependency that you may need. The script is simple and assumes Raspberry Pi OS.
    • You must have a C/C++ compiler installed, as well as basic development headers.

        ./install-deps.sh build-essential
      
    • make sure, autoreconf and cmake command work. If not, install them

        sudo apt install dh-autoreconf cmake
      
    • libIgnitech is needed to talk to a TCIP-4 from Ignitech. Skip this if you don't need it and pass --without-ignitech to configure.

        ./install-deps.sh ignitech
      
    • bcm2835 and libISP are needed to talk to an Innovate Motorsports sensor controller. Skip this if you don't need it and pass --without-isp2 and --without-bcm2835 to configure.

        ./install-deps.sh isp
      
    • Bluetooth development headers and flatbuffers are necessary to communicate with the dashboard companion app. Skip this if you don't need it and pass --without-flatbuffers and --without-bluetooth to configure.

        ./install-deps.sh bluetooth
        ./install-deps.sh flatbuffers
      
  • Install this software

     ./configure
     make
     sudo make install
    
    
  • Setup configuration

     cd /usr/local/etc/enginedatalogger
     mv enginedatalogger.conf.dist enginedatalogger.conf
     nano enginedatalogger.conf
    
    

Configuration

Take a look at the provided conf file for a quick explanation. All command line options can be set in the config file.

Usage: enginedatalogger [OPTION]...

  -h, --help                    Print help and exit
      --detailed-help           Print help, including all details and hidden
                                  options, and exit
      --full-help               Print help, including hidden options, and exit
  -V, --version                 Print version and exit
  -c, --config-file=filename    Configuration file.
  -o, --output-file=filename    Output file for CSV logging
                                  (default=`/dev/null')
  -G, --gpx-file=filename       Output file for GPX logging
                                  (default=`/dev/null')
  -d, --output-file-date        Insert date and time into output filename.
      --output-file-format=format
                                Format string of output CSV file
  
  		Comma-separated list of loggable values. Valid items are:
  	rpm, ig_rpm, alt_rpm, speed, map_kpa, tps_percent, odometer, trip,
  	systemvoltage, batteryvoltage, oil_temp, oil_pres, lambda,
  	enginerunning(bool), blink_left(bool), blink_right(bool), advance1,
  	advance2, advance3, advance4, yaw, pitch, roll, acc_forward, acc_side,
  	acc_vert, power, latitude, longitude, altitude, gps_speed, gps_heading,
  	gpsfix, pdop, hdop, vdop, satellitesInView, satellitesInUse, gpstime(UTC),
  	and time(current date/time)
  	
  -g, --gear-ratios=STRING      RPM/Speed ratios. Comma separated. (Eg. -g
                                  "175,122,95,78,67")
  -W, --weight=kg               Weight of vehicle, in kg, to use for
                                  calculations.  (default=`300')
  -v, --v                       Verbose output. Specify multiple times for
                                  increasing verbosity.
      --verbose=VERBOSITY       Set level of verbosity explicitly. 
                                  (Overrides -v)
                                    (possible values="NONE", "ERROR",
                                  "WARN", "INFO", "DEBUG"
                                  default=`ERROR')
  -q, --quiet                   Suppress output. Same as --verbose=NONE
                                  (Overrides both -v and --verbose)

Device Interfaces:
  -f, --front-controls=device   Front controls device
  -s, --sleepy=device           I2C device to communicate with Sleepy Pi.
      --sleepy-addr=0xXX        Address for Sleepy Pi.  (default=`0x04')
      --can=device              CAN device to bind to. CAN disabled if not set.

CAN device tweaks:
      --mount-offset-roll=FLOAT Offset to zero imu reading
      --mount-offset-pitch=FLOAT
                                Offset to zero imu reading
      --roll-pitch-swap         Swap roll and pitch. Used depending on physical
                                  sensor orientation.  (default=off)
Clone this wiki locally