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.
If you find any kinds of bugs or issues, please contact Kian, Jinhong or Seungwoo. 👌🏽
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.:
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.
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.
- Clone DES_3_Head-Unit repository.
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.
- Clone DES_3_yocto repository.
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.
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.
- Requirements Gathering:
- Planning Design, System & Software:
- Team Collaboration:
- Integration:
- Technologies:
- Applications:
- Sensors:
- Testing: