STM32 Sensor Interface (GPS & IMU)

Published:

Overview

As part of the Embedded Systems module at HTWG Konstanz, I contributed to a team project in cooperation with Baumer Group.
My task was to develop firmware for sensor integration and data collection using the STM32 NUCLEO-H7A3ZI-Q.
GPS Code Repository
IMU Code Repository
KiCad Schematic (.kicad_sch)

The focus was on integrating a GPS module (Adafruit Ultimate GPS HAT) and an IMU sensor (Adafruit BNO055), enabling real-time data processing and transmission for downstream visualization and evaluation.

BNO055 to STM32 Pin Mapping:

BNO055 PinSTM32 H7A3 Pin
Vin5V
GNDGND
SDAPB9
SCLPB8

GPS Module to STM32 Pin Mapping:

GPS Module PinSTM32 H7A3 Pin
Vin3V3
GNDGND
RXTX (PB6)
TXRX (PB15)

UART Configuration for GPS Module:

ParameterValue
Baud Rate9600 Bits/s
Word Length8 Bits (including Parity)
ParityNone
Stop Bits1

My Contribution

  • Implementation of UART-based communication with Adafruit Ultimate GPS HAT
  • I²C-based driver development for Adafruit BNO055 IMU
  • GPS message validation (NMEA checks, fix state verification)
  • Real-time data processing using FreeRTOS tasks and queues
  • Formatting and transmission of combined sensor data to a host PC

Tools & Platform

  • Microcontroller: STM32 NUCLEO-H7A3ZI-Q
  • IDE: STM32CubeIDE
  • RTOS: FreeRTOS
  • Protocols: UART, I²C, NMEA
  • Languages: C