Remote embedded system development framework
Basic Information
Project ID: AEE-2021
Students: Anton Klami, Axel Aumasto, Oskar Liljeström, Shah Fahad Farooqi
Project manager: Axel Aumasto
Instructor: Ivan Vujaklija
Other advisors:
Starting date: 23.1.2021
Completion date: 3.6.2021
The project was commissioned with making a remote embedded development framework to allow for remote development of embedded software. The task included conceptualizing, designing and implementation of prototype solution. As a project input a STM32 Nucleo64 development board was given to work with. Arduino Due microcontroller was chosen to be the secondary microcontroller to simulate IO devices that connect to the STM32 controller. Both STM32 and Arduino were connected to the remote host computer with their default serial-USB interfaces. The solution that emerged was to allow remote connection to STM’s native STM32CubeIDE and develop a separate program to test the embedded code with simulated peripherals.
The project was mainly software focused as it allowed the user to remotely write, program and test embedded code without physically having any of the required equipment like the Nucleo64 board or peripherals like DC motors. The main technologies used were Python, C++, JavaScript and various other libraries. Python and JavaScript were used in the software running in the remote host computer. C++ together with Arduino’s default functions was used to program the secondary microcontroller.
The result of the project consists of the relay functionality written for the Arduino and the Arduino facing Python functions in the host providing means to initialize the Arduino and set the correct settings for relaying the IO data such as PWM, UART and I2C to and from the board. Python simulation program was written to demonstrate these functionalities with a simple DC motor example. Finally, a web application and simulation manager programs were made to form the user interface. Together with remote access to the IDE, the user can write and test their code end to end without any hardware at hand.