Skip to content

mechsoon/DES_Head-Unit

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

116 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Head Unit

Introduction

This project aims to develop a Head Unit Qt application running on a Raspberry Pi (RPi) alongside the previously developed PiRacer Instrument Cluster Qt application. The Head Unit application will provide additional features like ambient lighting, gear selection, and a media app. The project will use Yocto as the build system for the RPi. Here is the detailed explanation of This Head Unit Project

Overview

Basically, two Raspberry Pi (CAR Pi, IC/HU Pi) is used.

  • CAR Pi oversees the movement of PiRacer and communicates directly with joy stick and PiRacer The Client1 of CAR Pi sends gear and battery information to the server in IC/HU Pi.
  • IC/HU Pi is used to print and manage the dashboard and infotainment system of the car, and for the server of car system.

Here are the divided technical requirements for composing the Head Unit:

  • Head Unit Application: A robust and scalable head unit application for automotive use on Raspberry Pi is developed using QT Quick Framework. The QT Quick Framework includes user-freindly and interactive features, and various infotainment functions. Here are the contents:
    • Dashboard: The ]ashboard which shows the speed data and battery. The detailed information is described in Instrument Cluster Project.
    • Mirroring: The screen of mobile device is shown when USB connection is conducted.
    • Youtube Player: Recent YouTube video is played.
    • Music Player: The infotainment system can play the music you saved in the USB flash memory.
    • bluetooth managing: You can connect the bluetooth device with the infotainment system.
    • etc: map, weather, calendar, theme light/dark mode change etc.
  • SOME/IP Protocol Communication: The client/server or two Raspberry Pi send and receive the data by SOME/IP Protocol. The server exists in the IC Application of IC/HU Pi, which oversees the organic communication with client1 in the CAR Pi and client2 with HU application of IC/HU Pi.
  • Embedded system using Yocto: Yocto is utilized for creating a stable and customizable embedded Linux operating system for the project. Wayland, whose compositor is Weston, is used as GUI environment of the custom linux OS.

Project Description

Head Unit Application

Dashboard

Mirroring

The device includes the function of mirroring the screen of mobile device, which is formally aimed to Android decive connected by USB port of RaspberryPi. (iPhone is functionally impossible.) The installed linux command scrcpy is automotically executed by methods of header QProcess whenever mirroring is turned on. Whenever processing, it checks the status of the process if the command successfully run or failed to find devices, and when the device is not found, the error window is shown.

Youtube Player

Music Player

Bluetooth Managing

etc

SOME/IP Protocol Communication

markdown Copy code

Yocto Project

The Yocto Project is an open-source collaboration project that provides a flexible set of tools and a comprehensive framework for creating custom Linux-based systems. Designed to support embedded development, Yocto helps developers build, customize, and maintain lightweight, scalable Linux distributions tailored to specific hardware and software requirements.

Key Features

  • Customizable Linux Systems: Build minimal, optimized Linux distributions for embedded devices.
  • BitBake Build System: A powerful tool to automate the build process for cross-compilation and package management.
  • Layered Architecture: Use layers to modularize features, configurations, and machine-specific customizations.
  • Board Support Package (BSP): Simplifies hardware integration for a variety of platforms and architectures.
  • OpenEmbedded Core: Provides a rich set of metadata and recipes to simplify development.

Why Use Yocto?

  • Portability: Works across a wide range of hardware architectures.
  • Scalability: Ideal for small embedded systems and larger IoT devices.
  • Flexibility: Offers full control over system configuration, software packages, and dependencies.

Layer Architecture

In our project, we utilized two Raspberry Pi devices to develop two distinct versions of custom Linux OS: CAR and IC/HU. Each version features a unique layer architecture, tailored to optimize hardware resources by excluding unnecessary layers.

IC/HU OS Layer Architecture

To function as IC/HU OS, these OS has Instrument Cluster and Head Unit application recipe file. And As Instrument cluster and Head Unit process exchange data like gear, ambient light each other using internal vsomeip, there are recipe files for vsomeip communication.

CAR OS Layer Architecture

To function as CAR OS, these OS has recipe files which includes piracer control code and python dependencies in meta-control layer. And As RaspberryPi with this OS should send attributes like gear, Indicator by using external vsomeip, it had recipe files that enable this OS to use vsomeip communication.

  • And both OS has common layer(meta-minam, meta-env)

Tech Stack

linux
Linux
c++
C++
yokto
Yocto Project
raspberrypi
Raspberry Pi
wayland
Wayland
Grafana
QT Quick
Prometheus
VSomeIP

Contributors

Yeongyoo Jo
Yeongyoo Jo

GitHub Badge
Eunji Lee
Eunji Lee

GitHub Badge
Seokhoon Jo
Seokhoon Jo

GitHub Badge
Sunwung Kim
Sunwung Kim

GitHub Badge
Jisoo Kim
Seungjoo Kim

GitHub Badge
Alex
Alex

GitHub Badge

About

The head unit Qt application running on Raspberry Pi (RPi) alongside the instrument cluster Qt application

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 43.8%
  • BitBake 31.7%
  • HTML 9.6%
  • Roff 5.9%
  • Shell 3.0%
  • C 1.8%
  • Other 4.2%