MPU6050 Kalman Filter with ORBIT-Q STM32
Introduction
This project demonstrates how to read and filter accelerometer and gyroscope data from an MPU6050 sensor using the Orbit-Q STM32F405RGT6 development board. The filtered readings are displayed on an SSD1306 OLED display.
The project was developed as part of my embedded systems internship. The development board was provided by Neotrivotx System Private Limited(NTX Systems), and I modified the existing firmware to implement the filtering functionality.
Objectives
1. Read accelerometer and gyroscope measurements from the MPU6050.
2. Apply six independent one-dimensional Kalman filters to smooth the sensor readings.
3. Display the filtered measurements on an OLED screen.
4. Gain practical experience with STM32, I²C communication, embedded C++ and sensor interfacing.
## Hardware Components
1. Orbit-Q STM32F405RGT6 development board
2. MPU6050 (GY-521) accelerometer and gyroscope module
3. SSD1306 OLED display (128 × 32)
4. Jumper wires and breadboard.
Working Principle
The MPU6050 measures acceleration along three axes (X, Y and Z) and angular velocity along these three axes. The STM32 reads these measurements through I²C communication.
The firmware applies six separate one-dimensional Kalman filters: three for acceleration and three for angular velocity. These filters estimate the sensor readings using prediction and measurement updates. The resulting filtered values are then displayed on the OLED.
Note: These are independent filters for individual sensor channels; the firmware does not calculate fused orientation angles such as roll and pitch.
Software and Libraries
1. Arduino IDE with the appropriate STM32 board support
2. Wire/TwoWire for I²C communication
3. Adafruit GFX Library
4. Adafruit SSD1306 Library
Testing and Results
The system was tested using the connected hardware. The OLED displayed the filtered accelerometer readings in m/s² and gyroscope readings in degrees per second (°/s).
This project helped me understand sensor interfacing, firmware modification, digital filtering and embedded systems debugging.
Acknowledgements
The Orbit-Q development board was provided by Neo Vortex as part of my embedded systems internship. The firmware was modified from an existing codebase. Original code and third-party libraries should be credited to their respective authors where applicable.













Comments