Skip to content

solarcaratuva/Rivanna3-Telemetry-Display

Repository files navigation

Rivanna3 Telemetry Display

This program is for displaying, monitoring, and visualizing live vehicle telemetry on an embedded display. It is a one-stop interface for TouchGFX-based telemetry visualization and debugging.

Installation

  1. Clone the GitHub repo.
  2. Navigate to the root directory of the cloned repo (Rivanna3-Telemetry-Display)
  3. Open Visual Studio Code
  4. Open the project in TouchGFX:
    • cd .../rivanna3-telemetry-display → explorer .
    • Click on TouchGfX folder and then run the .touchgfx file
  5. You now have the backend code and frontend display avaliable to you

Starting the program

Perform the following steps in TouchGFX:

  1. Connect the target hardware to the host computer using ST-Link.
  2. Power the display and MCU.
  3. Build the project
  4. Flash and run the application

Data Source

User must include the telemetry data source that will be used to populate the display. The currently available data source options are:

  1. can: Reads live telemetry data from the vehicle CAN bus using the FDCAN peripheral.
  2. mock: Generates simulated telemetry data for UI development and testing.

Flags

Configuration is handled at compile time and through firmware configuration files. No runtime flags are supported.

Navigating the user interface

Startup UI

  1. The user interface will be launched automatically upon power-up or reset.
  2. During startup, the system initializes peripherals, RTOS tasks, and the TouchGFX framework.
  3. Once initialization is complete, the default dashboard screen is displayed.

Main UI

There are 2 views, selected by navigating through on-screen controls:

  • Driver Screen - Shows the current state of key telemetry values such as speed, voltage, current, and system status.
  • Data Screen - Shows detailed telemetry data from subsystems such as the motor controller and battery management system.

Overview of the Backend (for New Developers)

The backend uses a Producer-Consumer software pattern to receive telemetry data and update the user interface.

The backend also uses custom data structures to streamline this process:

  • A custom telemetry message structure to represent parsed CAN and sensor data.
  • A centralized telemetry state accessed by the TouchGFX model and presenter layers.

The backend flow of data is as follows:

  1. Telemetry data is received via CAN interrupts or generated by a mock data source.
  2. Producer tasks parse incoming telemetry data and push messages into a shared FreeRTOS queue.
  3. Consumer tasks pop messages from the queue and update centralized telemetry state.
  4. The TouchGFX model reads updated telemetry values and notifies the presenter.
  5. The presenter updates the view to reflect the new data.

About

Code for the interactable screen in front of the driver

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5