Autonomous Context-Aware Thermal Rover
A mobile, dual-axis targeting and navigation system that autonomously patrols an environment, avoids obstacles, and tracks human heat signatures using Rust and the Embassy framework.
Author: Stancu Vlad-Gabriel \
GitHub Project Link: https://github.com/UPB-PMRust-Students/fils-project-2026-Vledituz
Description
The Autonomous Context-Aware Thermal Rover navigates using an ultrasonic sensor to avoid collisions. When the onboard 8x8 infrared matrix detects a heat signature, the rover halts its patrol, and a motorized pan-tilt turret locks onto the target. Depending on the ambient room lighting (detected via a photoresistor), the system dynamically switches between a passive observation mode and an active "Night Watch" mode, engaging a laser diode payload. Live telemetry and the thermal map are displayed on a local SPI LCD and streamed over Wi-Fi to a remote web dashboard.
Motivation
I was always fascinated with the world of security measures and embedded systems. I intend to make a project that would actually prove useful down the line after more work put into it in high risk areas such as museums, banks, etc.
Architecture
The system relies on an STM32U545RE-Q acting as the central processing unit, running concurrent async tasks.
- Perception: An AMG8833 Thermal Camera (I2C) scans for heat, an HC-SR04 Ultrasonic Sensor (GPIO/Timers) handles spatial distance, and an LDR (ADC) monitors ambient light.
- Actuation: Four DC motors are driven by an L298N Motor Driver receiving PWM signals for mobility. Two SG90 servos receive 50Hz PWM signals to aim the thermal turret. A 5V Laser Diode acts as the GPIO-controlled payload.
- Interface & Connectivity: An ST7735 1.44" LCD (SPI) provides local UI rendering. An ESP32-C3 co-processor communicates with the STM32 via USART AT commands to host a TCP web server for remote monitoring.
- Power Management: A 4xAA battery pack supplies power to the L298N driver, which handles the high-current DC motors and servos. The microcontrollers and logic-level sensors are powered independently to prevent voltage brownouts.
Log
Weeks 4-5
Project setup, embassy-stm32 initialization, and establishing I2C communication with the AMG8833 sensor to output raw matrix data over the debugger.
Weeks 5-6
Configuring PWM timers for the SG90 servos and the L298N motor driver; basic movement calibration and HC-SR04 distance integration.
Weeks 7-8
ADC polling for the LDR, SPI configuration for the ST7735 display.
Hardware
The rover's chassis will be created out of lego bricks to ensure it is both lightweight and sturdy. All components will be soldered on a prototyping board, with extension wires to make it aestethically more pleasing and allow breathing room for further expansion. The main sensor, the AMG8833, will be mounted at the very fron on a pan-tilt bracket with 2 SG90 servomotors to allow a wide scannable area.
Schematics
(Insert your KiCAD schematic here in SVG format)
Bill of Materials
| Device | Usage | Price |
|---|---|---|
| STM32U545RE-Q Nucleo | The main microcontroller running the Embassy async executor | ~110 RON |
| ESP32-C3 SuperMini | Wi-Fi Bridge for the remote web dashboard | ~25 RON |
| AMG8833 IR Sensor | 8x8 I2C Thermal Camera for heat detection | ~200 RON |
| ST7735 1.44" SPI TFT LCD | Local UI and thermal map visualization | ~25 RON |
| HC-SR04 Ultrasonic Sensor | Obstacle avoidance / Distance measuring | ~15 RON |
| L298N Motor Driver | High-current switching for chassis DC motors | ~14 RON |
| 4x TT DC Motors with Wheels | 4WD Rover Mobility | ~40 RON |
| 2x SG90 Micro-Servos with brackets | 180-degree Pan-Tilt Turret aiming | ~30 RON |
| 5V Laser Diode Module | Visual targeting payload | ~12 RON |
| Photoresistors & 10kΩ Resistors | Ambient light detection via ADC | Already owned |
| Protoboard, Headers, 4xAA Box | Physical assembly and power distribution | Already owned |
Software
| Library | Description | Usage |
|---|---|---|
| embassy-stm32 | Core Hardware Abstraction Layer | Configures STM32 peripherals (I2C, SPI, UART, PWM, ADC) |
| embassy-executor | Async Executor | Manages concurrent task spawning and non-blocking execution |
| st7735-lcd | Display driver for ST7735 | Pushing pixel data over SPI to the 1.44" screen |
| embedded-graphics | 2D graphics library | Rendering the thermal grid and text onto the display |
| heapless | no_std data structures | Formatting JSON strings safely to send over UART |
| defmt | Highly efficient logging framework | Hardware debugging over the Nucleo ST-LINK |