Our Golf Cart instrument cluster is an internal project in which developers from Codelab’s HMI Centre of Competence create an instrument cluster for an electric golf vehicle. We chose the Qt for MCUs technology and an STM microcontroller with an integrated screen to create a prototype and then the complete software. Qt for MCUs is a new graphics framework and toolkit which delivers everything what is necessary to design, develop and deploy GUIs on microcontrollers. The difference between normal Qt and Qt for MCUs is that Qt for MCUs uses the new QML rendering engine – Qt Quick Ultralite (QUL) which allows applications to run on bare metal or on a real-time operating system. The framework was shared to developers last year.
Main goal of the project is to increase the employee’s competencies in creating HMI systems and expand knowledge about the new framework. The cluster for an electric golf cart shall fulfill the following functionalities:
- Present the current speed of the vehicle, battery level and current power
- Inform about lights on, turn signals and various types of failures
- Enable the operation of multimedia devices
- Display navigation and current position of the vehicle on the map
- Present the vehicle charging status
- Display current weather
After collecting the requirements, preparing the design and setting up the environment we went straight to the implementation of the system. Almost every part of the project is written using QML language. CMake is used for build management which made our compilation process fully automated.
The main target of the application is STM board but the program can also run on Windows. This facilitates the implementation and testing process because STM board is not always available for every developer. We created the interface which makes it possible to send the specific events to the application on buttons click. It allows us to test the behavior of the application on various events.
Usually when you learn something new you have to deal with some problems. In our case it was a problem related to the limited performance of the STM board. Application had too little frames per second so its performance was not smooth at times. We had to find a cause. In order to do that we had to analyze in which way resources are loaded to the program. We also checked the impact of the animations in the program on the system performance. We found out what we could do better. After making the changes our program runs much smoother. The project allowed us to learn not only about a new framework but also about optimization methods.
The project is still in progress. The application is constantly evolving with new functionalities. The graphical interface is changing to be more user-friendly. I hope that someday the project will see the light of day and we as developers will be able to boast about it.