Skip to content

Latest commit

 

History

History
102 lines (85 loc) · 6.34 KB

README.md

File metadata and controls

102 lines (85 loc) · 6.34 KB

DES03 Project - Head Unit

Table of contents

Introduction

This project is part of the embedded software development cirriculum at SEA-ME.

It aims to develop a Head Unit application running on a ECU alongside the a Instrument Cluster application in Flutter.
The Head Unit application will provide features like ambient lighting, gear selection, and a media app.
Furthermore, the project uses Scalable Service-Oriented Middleware (vSOME/IP) for the in-vehicle communication and Yocto as the build system for the ECU.


Collaborators

If you find any kinds of bugs or issues, please contact Kian, Jinhong or Seungwoo. 👌🏽

Demonstration

The following videos demonstrate the features of the project.

A Media Player, that plays various media resources like musik or video from a USB storage.
The played media meta data is also displayed on the dashboard.

Ambient Lighting Control:

Gear Selection through the gamepad or the Head-Unit.:

Architecture

The following image gives a brief overview about the software structure that runs on the cars' system structure.
Each application like head-unit, dashboard, can_receiver, car_control, and car_info serves a different purpose and uses different peripheral interfaces and devices.
BMWs' CommonAPI ensure the communication between the applications via Scalable Service-Oriented Middleware over IP (SOME/IP). It is easy to add more apps to the system by using the CI/CD workflows for CommonAPI we build.
In the current setup, the speed sensor is the only sensor that feeds the cars' CAN bus but it can seamlessly be extended by adding more sensors to the CAN bus.
The system operates with a custom-made Yocto Image deployed on the Raspberry Pi ECUs.


Project Structure & CI/CD

The following image shows the project structure for the DES3 Head-Unit project.

  • apps: contains submodules which hold the source code to run the car.
  • sensors: contains submodules for the sensors' controllers that feed vehicle CAN bus.
  • image: contains a submodule that provides config files and recipes to bitbake the vehicles' ECU yocto image. (Note: The bitbake recipes are fetching the apps' source code from the submodules' repositories.)
  • documentation: summarizes all the projects' documentation.

Continuous Integration: Happens in the apps'and sensors' submodules.

Continous Delivery: To roll out the software, the sensors' controller and the ECU needs to be flashed.

  • sensors
    • Clone DES_3_Head-Unit repository.
    • Choose the sensors' directory from the sensors folder.
    • Flash the sensors' controller using the Arduino IDE.
  • image
    • Clone DES_3_yocto repository.
    • Bitbake the yocto image.
    • Flash the yocto image on the ECU by loading the it on the RPis' SD-Card.


The development in each submodule is done individually by the assigned developer.
Once a feature is ready, a new release following the teams' conventions is published.

Documentation

As mentioned above, the documentation folder contains all the projects' documentation. The files are distinguished by the phases the project went through. If you seek for more informations, don't hesitate to read through the following docs.

  1. Requirements Gathering:
  1. Planning Design, System & Software:
  1. Team Collaboration:
  1. Integration:
  2. Testing: