Skip to content
◂ Engineering

31 December 2025

BAT Mobile Robot Cart – Embedded Systems Project

A microcontroller-based robot cart controlled over UART with real-time motor control, lighting indicators, and LCD feedback. The system integrates timers, interrupts, and GPIO to simulate automotive-style behavior such as turn signals and reversing alerts. Designed with modular, reusable embedded C code for easy extension and maintenance.

C ProgrammingBare MetalSTM32UART
Notebook

Full write-up

The BAT Mobile Robot Cart is an embedded systems project designed to demonstrate real-time hardware control, modular firmware architecture, and clean low-level microcontroller programming. Built around an STM32 microcontroller, the robot cart responds to UART commands to control motor movement, lighting indicators, a buzzer, and a 16×2 LCD display.

The system is divided into clearly defined software modules: motor control, communications, lighting, and display. Movement commands such as forward, backward, turning, spinning, and stopping are received over UART—making the cart compatible with external controllers like Bluetooth modules or wired serial interfaces. Each command is acknowledged and immediately reflected on the LCD, providing real-time feedback of the cart’s state.

Motor control is handled using direct GPIO manipulation through an H-bridge configuration, allowing precise control of direction and motion. To enhance realism and safety, the lighting subsystem simulates automotive behavior, including headlights, brake lights, turn indicators, hazard lights, and a reversing buzzer. These features are driven using hardware timers and interrupts, ensuring accurate blinking patterns and non-blocking operation.

Two timers play a key role in the system: one manages indicator flashing, buzzer timing, and an onboard heartbeat LED, while another drives a patterned status LED to visually confirm system operation. A built-in self-test mode automatically cycles through all motions and indicators, making it easy to validate hardware functionality without external input.

This project emphasizes reusable design, low-level register control, and interrupt-driven logic—skills essential for embedded and robotics development. The result is a robust, extensible robot platform that cleanly separates hardware concerns and can be easily expanded with new features or adapted to different microcontrollers.