AWR: STM32 Autonomous Canister Recovery Robot
I designed and built AWR (Autonomous Waste Recovery Robot) for a mechatronic design project between March and May 2026. I am documenting the completed build for this contest in September 2026. In a 2400 × 1200 mm arena, the robot leaves its home corner, finds a canister about 45 mm wide and 65 mm tall, captures it, and returns it to the home boundary. Once started, the task is autonomous and has a one-minute limit. The design had to fit in a 150 × 150 × 150 mm envelope, weigh less than 1 kg, and cost less than AUD $300.
HOW IT WORKS
The ST NUCLEO-U545RE-Q controller runs a state machine in a cooperative super-loop. A forward-facing VL53L0X time-of-flight sensor scans while the robot rotates. The firmware accepts a target when three of the last five valid readings fall within the distance band. That filtering made detection reliable at about 400–600 mm. The robot approaches with steering corrections, then uses wheel encoder travel for the final roughly 100 mm, where the range sensor is less reliable. A 3D-printed U-shaped plow guides the canister into the capture area, and an SG90 servo closes the gate.
For the return, the robot estimates its position and heading from its wheel encoders, calculates a bearing to the start, turns, and drives back. Because encoder-based dead reckoning drifts, two downward-facing reflective IR modules detect the black tape at the home boundary. The robot stops there and opens the gate. A 55-second firmware limit is intended to stop the motors and release the canister before the one-minute task limit.
ELECTRONICS AND MECHANICAL DESIGN
The Nucleo plugs into a custom 100 × 100 mm two-layer carrier PCB designed in EasyEDA Pro. The version 6 board is fitted to the finished robot. A VL53L0X sensor communicates over I²C2 at address 0x29, with 4.7 kΩ pull-ups. Quadrature pulses from the two motor encoders are counted by STM32 TIM2 and TIM4. Four TIM3 PWM outputs drive a DRV8833 H-bridge; a 50 Hz PWM output controls the gate servo. The downward-facing IR modules send digital tape-detection signals to PC0 and PC1.
Two Waveshare N20 12 V motors with 1:150 gearboxes drive the wheels. The robot also has Pololu motor brackets and wheels, a ball caster, a 3D-printed plow and chassis, and a Dualsky 1000 mAh 2S LiPo. A 6.3 A fuse and master switch protect the battery feed, and an LM2596 5 V buck regulator supplies the servo. I developed the C firmware with STM32CubeIDE and CubeMX. LL drivers handle GPIO and timers, while HAL handles I²C.
ITERATION AND RESULT
The carrier PCB went through three revisions: version 4 had a motor-driver power wiring error, version 5 swapped the Nucleo connector footprints, and version 6 corrected both. Mechanical alignment also mattered. One 1000 mm straight-drive test travelled about 1008 mm but drifted about 90 mm sideways because the hand-drilled motor bracket holes were misaligned. I changed the chassis after tracing a start-up jolt to a stiff left drivetrain. Arena testing led me to change the second-search turn from 55° to 35° and tune the full-rotation encoder count to about 13,000 ticks.
The completed robot performed the full leave, search, approach, capture, return, and release sequence across multiple canister positions, including in the final demonstration. The most useful design decision was using the black home-boundary tape as a physical reference for the last part of the return, instead of asking dead reckoning to provide the final stop.
DEMONSTRATION AND FILES
Watch the 51-second Task 1 demonstration: https://photos.app.goo.gl/wEQZfHtGWR3fwEYn6
The element14 project post has further build photographs and technical detail: https://community.element14.com/challenges-projects/project14/b/make-a-connection/posts/awr_2d00_stm32_2d00_autonomous_2d00_canister_2d00_recovery_2d00_robot
The attached EasyEDA Pro layout screenshot shows PCB version 4, before the fixes. The attached PDF schematic is a design-stage revision, not the final version 6 board. Neither is the final manufacturing file.
AWR: STM32 Autonomous Canister Recovery Robot
Raspberry Pi 5 7 Inch Touch Screen IPS 1024x600 HD LCD HDMI-compatible Display for RPI 4B 3B+ OPI 5 AIDA64 PC Secondary Screen(Without Speaker)
BUY NOW- Comments(1)
- Likes(0)
- 0 USER VOTES
- YOUR VOTE 0.00 0.00
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
More by Engineer
-
Programmable Mist Maker - XIAO / QT PY Extension
2377 2 2 -
RadioHAT - Raspberry Pi radio development platform
2059 0 4 -
QWIIC-VL53L4CD Time-of-Flight Distance Sensor Module
2261 0 2 -
-
-
ARPS-2 – Arduino-Compatible Robot Project Shield for Arduino UNO
4211 0 6 -
-
A Compact Charging Breakout Board For Waveshare ESP32-C3
4987 3 8 -
AI-driven LoRa & LLM-enabled Kiosk & Food Delivery System
5755 2 2 -







