Skip to main content
Version: FILS English

SteadyFrame

A handheld 3-axis camera stabilizer controlled by an STM32 board and programmed in Rust.

info

Author: Neagu Alexandru-Florin
Group: 1222EEB
GitHub Project Link: https://github.com/UPB-PMRust-Students/fils-project-2026-ithinktoomuch05

Description

This project represents a 3-axis camera stabilizer designed to keep a relatively small DSLR/Mirrorless camera steady while the user is moving - My Canon EOS R camera paired with an EF-S 18-55mm f/3.5-5.6 IS II Canon lens (total weight: ~1kg).

The stabilizer uses an STM32 NUCLEO-U545RE-Q development board, an IMU sensor, brushless motors, motor drivers, a joystick and a LiPo battery.

Motivation

I chose this project because I am currently learning videography and cinematography and the prices of camera equipment are simply too much for a freelancing student (even more than the price of the standalone components, huh, that's unbelievable!, I know, until you search for how much actually good equipment costs). As such, I have started on a quest of creating my own personal equipment, starting with maybe the most important tool - stabilization (because my hands aren't the steadiest out there and it makes a world of difference on film).

Architecture

This is the initial diagram, subject to change as I develop the project, regarding how I think my project should be organized/work:

Architecture diagram

Main components:

Log

Week 6: 30 March - 6 April

Coming up with possible project ideas.

Week 7: 6 - 12 April

Conceptual stage, thinking how I would want my gimbal project to work, coming up with ideas regarding components and spending a lot of time looking for correct/compatible components, as I think this project is a bit complex for my current level of understading.

Week 8: 12 - 18 April

Ordering a big part of components (motors, drivers+encoders, STM32 board). More research.

Week 9: 19 - 25 May

Ordering next batch of components (IMU, battery and charger). More research x2. Changed to attempting CAN connection (lord have mercy).

Hardware

Hardware used for creating this project (list currently WIP): STM32 NUCLEO-U545RE-Q, GM5208-24 motors, MKS XDRIVE MINI drivers with AS5047P on board, ICM-20948 IMU, LiPo GENS ACE G-Tech Soaring 4S 14.8 V 2200mA battery with appropriate charger and 2 Axis Joystick. Photos of components will be added after they arrive (currently still being delivered).

Schematics

Bill of Materials

--- WORK IN PROGRESS, NOT FINISHED ---

DeviceUsagePrice
STM32 NUCLEO-U545RE-QThe microcontroller - computes everything and sends the appropriate signals to all the components105 RON
3x GM5208-24The motors - stabilize the camera along the 3 axis and move in required directions when requested to702 RON
3x MKS XDRIVE MINI with AS5047P on boardThe motor drivers and encoders - understand motor position and rotation (magnetic rotary encoders) and communicates with the motors when to rotate in order to be stabilized or moved when requested to (drivers)534 RON
AS5047P specsThe motor encodersincluded with drivers
SN65HVD230CAN communication module (transceiver) for motor drivers11 RON
ICM-20948The 9-Axis Inertial Measurement Unit - understands the position of the camera and helps the microcontroller understand required position and rotation changes37 RON
LiPo GENS ACE G-Tech Soaring 4S 14.8 V 2200mAThe battery - supplies power to all components150 RON
LM2596SDC-DC Buck Step Down Convertor LM2596S 4.0~40V to 1.25-37V - for supplying correct voltage to STM32 board48 RON
Gens Ace iMars mini G-TechThe battery charger - charges the battery when needed245 RON
2 Axis JoystickThe joystick - human input to "move" (point) the camera in a specified direction6 RON
Total:~1850 RON
NOT CONFIRMED YET:
ILI9341The LCD 3.2 inch touch display - would be used for observing information displayed by the microcontroller regarding position and rotation, plus would help navigate a menu for parameters - lots of stuff to do here, not all figured out yet117 RON
WiresNo exact count, still figuring out

Software

LibraryDescriptionUsage
embassy-stm32HAL for STM32 microcontrollers, with drivers for GPIO, ADC, SPI, I2C, UART, timers, and CAN/FDCANUsed as the main hardware abstraction layer for the STM32 NUCLEO-U545RE-Q, including IMU communication, joystick ADC reading, timers, and communication with the XDrive Mini controllers
embassy-executorAsync executor for embedded RustUsed to run concurrent tasks such as IMU sampling, joystick reading, control-loop updates, and telemetry/debug tasks
embassy-timeTimekeeping, delays, and timeout utilities for Embassy-based applicationsUsed for periodic control-loop scheduling, sensor polling intervals, debounce timing and startup/calibration mode
embedded-halCommon hardware abstraction traits for embedded systemsUsed as the generic interface layer for reusable drivers, especially for the IMU and other peripherals
heaplessstatic-friendly data structures that do not require dynamic memory allocationUsed for fixed-capacity queues, buffers, message passing, and storing small packets or samples without a heap
static_cellRuntime-initialized static storage for no_std applicationsUsed for safely allocating shared static resources such as buses, drivers, and global state needed by Embassy tasks - apparently
defmtCompact logging frameworkUsed for debug logging, calibration output, fault reporting and runtime diagnostics during development
panic-probePanic handlerUsed to report panics cleanly during firmware development and debugging
embedded-canAbstraction layer for CAN communicationUsed for communication by the STM32 with the three XDrive Mini boards over CAN.
icm20948-rsPlatform-agnostic driver for the ICM-20948 9-axis IMUUsed to initialize the ICM-20948, read accelerometer/gyroscope/magnetometer data, and expose it to the stabilization algorithm
NOT CONFIRMED YET:
ili9341Crates for displayShould be used for displaying information regarding position parameters and menu controls
[Probably way more crates needed ]Work in progress-
  1. Additional CAN tutorials god help me
  2. Rust PID control
  3. FOC and Gimbal Stabilization
  4. IMU understanding
  5. Powering help

...