Skip to main content
Version: ACS CC

Bluetooth Car & Remote Controller

A dual-unit system featuring wireless control and real-time telemetry.

info

Author: Oncioiu Miruna Elena
GitHub Project Link: https://github.com/UPB-PMRust-Students/acs-project-2026-Miruna-Oncioiu

Description

The project is a Bluetooth-based robotic system consisting of a 2-wheeled mobile car and a dedicated handheld remote. Both units utilize STM32 Nucleo-64 microcontrollers. The remote reads joystick inputs to transmit directional data, while the car processes these signals to drive two DC motors. The system also integrates a ToF sensor for distance monitoring and an OLED display for real-time telemetry.

Motivation

I chose this project to implement a robust Master-Slave communication link between two embedded devices. By building a custom remote controller instead of using a mobile app, I was able to manage the full data pipeline: from analog joystick acquisition to UART Bluetooth transmission and PWM motor execution.

Architecture

The system architecture is divided into two main hardware-software modules:

  1. Remote Controller Unit

    • Input: Analog Joystick (X/Y axes).
    • Processing: ADC sampling and packet serialization.
    • Output: Bluetooth TX (Commands).
  2. Mobile Car Unit

    • Input: Bluetooth RX (Command parsing).
    • Processing: Movement logic and motor speed calculation.
    • Output: PWM for Motor Driver, I2C for OLED and ToF Sensor.

Log

Week 13 - 19 April

  • Project planning and component acquisition.
  • Setup of the Rust development environment for STM32.
  • Mechanical assembly of the 2-wheeled chassis with a ball caster.

Week 20 - 26 April

  • Soldered header pins for the motor driver, OLED, and ToF sensor.
  • Verified power delivery from the 4xAA battery pack.
  • Completed 1st version of the documentation

Week 27 - 03 May

Hardware

The hardware architecture features two STM32F401RE Nucleo-64 boards configured in a Master-Slave setup for synchronized control. The Remote Controller acts as the Master, reading analog joystick positions via ADC and transmitting serial commands through an HC-05 Bluetooth module. The Mobile Car serves as the Slave, parsing UART strings to drive two DC motors via an L298N H-Bridge using PWM signals. Additionally, the system integrates an SG90 servomotor to sweep a VL53L0X ToF sensor for distance monitoring, providing real-time visual feedback on an SSD1306 OLED display via the I2C bus.

Schematics

System Architecture

Bill of Materials

DeviceUsagePrice
2x STM32 Nucleo-64 (F401RE)Microcontrollers (Car & Remote)~240 RON
2x HC-05 Bluetooth ModuleWireless communication link60 RON
Joystick ModuleRemote control steering35 RON
SSD1306 OLED DisplayOn-board telemetry display18 RON
VL53L0X ToF SensorObstacle distance monitoring20 RON
SG90 ServomotorRotating the ToF sensor for the "radar" sweep29 RON
Breadboard Kit (830pts + Wires + Power Module)Prototyping, power distribution, and component interconnection34 RON
400pts BreadboardCompact prototyping board for the Remote Controller6 RON
Jumper Wire SetSignal and power routing between modules15 RON
Battery Holder (4x AA)Mobile power source for the robotic car10 RON

Software

LibraryDescriptionUsage
embassy-stm32Hardware Abstraction Layer (Async)Managing GPIO, ADC, UART, and PWM peripherals in a non-blocking way
embassy-executorAsync task executorOrchestrates the main application logic and concurrent tasks
embassy-timeAsync timekeeping and delaysPrecise timing for sensor polling and motor control loops
embedded-graphics2D graphics libraryRendering text, icons, and distance graphs for the display
ssd1306OLED driverI2C communication interface for the SSD1306 display
vl53l0xToF distance driverAcquiring millimeter-precision distance data from the laser sensor
defmtLightweight logging frameworkEfficient debugging and real-time logging without blocking the CPU
defmt-rttRTT logging transportSending debug logs from the Nucleo board to the PC terminal
panic-probePanic handlerProvides detailed crash reports via RTT during development
embedded-halHardware Abstraction Layer traitsEnsuring compatibility between the HAL and peripheral drivers
  1. STM32F4xx-HAL Documentation
  2. Rust Embedded Discovery Book
  3. SSD1306 Rust Crate ...