project 11

STM32 & Arduino Embedded Systems

Low-level embedded software built around synchronous sensor data collection, low-latency output to local displays and a reliable communication standard between microcontrollers.

Category
Embedded & Robotics
Role
Embedded software developer
Year
2025 – 2026

technologies used

  • C
  • C++
  • STM32
  • ARM Cortex-M
  • Arduino
  • I2C/SPI/UART

problem

Problem

At the hardware level, sensor data such as temperature, acceleration and distance had to be collected synchronously, written to local displays with low latency, and a reliable communication standard had to be established between microcontrollers.

solution

Solution

Using C and C++, I wrote register- and driver-level code on STM32 with the HAL/LL libraries and on the Arduino Uno. I developed communication drivers for SSD1306 OLED displays and various sensor modules over I2C, SPI and UART, and built the reading loop on interrupts and timers.

outcome

Outcome

The result was a set of stable hardware prototypes, free of lock-ups, managed by interrupts and capable of real-time data reading and visualisation.

key features

  • 01Register- and driver-level coding on STM32 using the HAL/LL libraries.
  • 02Communication drivers for SSD1306 OLED displays and sensor modules over I2C, SPI and UART.
  • 03Real-time reading architecture managed by interrupts and timers, immune to lock-ups.
  • 04Memory and code optimisation for low power consumption and real-time response times.

why these choices

Why interrupt-driven reading instead of polling?

A continuous polling loop keeps the microcontroller's CPU busy for nothing, and any signal falling between two polls is lost. Moving to hardware interrupts and timer-based periodic reads freed the CPU and captured signals with zero loss.

Why code at the HAL/LL level?

Ready-made libraries produce quick results but hide what the hardware is actually doing. Working down at register level made timing and power behaviour directly controllable, and let problems be solved by measurement rather than guesswork.

Thinking about a similar project?