Skip to main content
Version: ACS CC

Endless Motion

A robot arm that cleans liquid around itself.

info

Author: Robert-Mario Coman
Github Project Link: https://github.com/UPB-PMRust-Students/acs-project-2026-robertcoman1

Description

Endless Motion is a robotic arm system that receives input from sensors placed in specific locations to detect the presence of a liquid. It processes these signals to determine the target area that requires intervention. Based on this data, it calculates control commands, moves to the detected zone, and executes a wiping action. The system continuously updates its movement, repeating the process based on newly received signals.

Motivation

The primary inspiration for this project comes from the famous contemporary artwork "Can't Help Myself" (by Sun Yuan & Peng Yu), which features an industrial robotic arm trapped in an endless, repetitive loop of trying to clean up a liquid that continuously spreads across the floor. Fascinated by this visual and conceptual piece, I decided to engineer a small-scale, functional replica of this behavior.

Architecture

System Architecture Diagram

Based on the system diagram, the architecture is divided into the following logical and hardware blocks:

  • Liquid Level Sensors (Input): The physical endpoints that detect the presence of liquid and send raw analog or digital signals to the microcontroller.
  • GPIO/ADC Input Driver: The low-level hardware abstraction layer on the STM32 that reads the electrical signals from the sensors and translates them into software trigger events.
  • Async Task Manager (Rust Embassy): The core logic router. It uses asynchronous tasks to handle sensor triggers without blocking the CPU, safely managing the overall state of the robot (e.g., Idle, Moving, Wiping).
  • Kinematics & Motion Controller: Receives target zone data from the Task Manager and calculates the specific angles required for the robotic arm to reach the active area and execute the cleaning sequence.
  • Hardware Timers & PWM Output: Converts the mathematically calculated angles into highly precise PWM electrical signals.
  • Servomotors (Output): The physical actuators that interpret the PWM control signals to execute the physical movement of the arm.
  • External Power Supply: A dedicated power source strictly for the servomotors.

Log

Week 5 - 11 May

Week 12 - 18 May

Week 19 - 25 May

Hardware

  • Microcontroller: STM32U545RE-Q (ARM Cortex-M33) - The "brain" of the system, responsible for reading sensor data and generating precise PWM control signals.
  • Servomotors: 4x MG90S Micro Servomotors (180°, Metal Gear) - These provide the necessary torque and durability to physically move the robotic arm and press the sponge against the surface.
  • Sensors: 3x Raindrop Sensor Modules (with LM393 comparators) - Placed in three distinct radial zones around the robot to detect the presence of liquid and trigger the cleaning state.
  • Power Supply Domain: A dedicated 5V / 6A AC-DC wall adapter connected via a DC jack screw terminal. This heavily isolated power line feeds directly into the motors, preventing voltage drops and protecting the microcontroller from high-current draw.

Schematics

Place your KiCAD or similar schematics here in SVG format.

Bill of Materials

DeviceUsagePrice
STM32U545RE-Q NucleoThe microcontroller129 RON
MG90S Micro Servomotor (180°, Metal Gear)Actuators providing precise physical movement for the robotic arm joints22.86 RON x 4
Raindrop Sensor Module (LM393)Placed in 3 zones to detect liquid presence and trigger the wiping sequence8.76 RON x 3
5V 6A AC-DC Power AdapterDedicated high-current power supply for the servomotors to prevent board resets159,89 RON

Software

LibraryDescriptionUsage
embassy-stm32Hardware Abstraction Layer (HAL) for STM32Used to configure the physical pins: PWM for the servomotors and ADC/GPIO for the raindrop sensors.
embassy-executorLightweight Async ExecutorManages the core state machine, scheduling and running the non-blocking tasks (e.g., Idle, Wiping).
embassy-timeTimekeeping and TimersControls the speed of the servo movements (the wiping animation) and handles sensor debounce delays.
defmtHighly efficient logging frameworkUsed to send real-time debug data (e.g., "Zone 2 Triggered", "Servo angle: 90°") to the PC over the USB probe.
panic-probePanic handlerCatches any software crashes and prints the error stack trace to the terminal for easy debugging.
  1. Project Inspiration: "Can't Help Myself" by Sun Yuan & Peng Yu (Guggenheim Museum)
  2. Mechanical 3D Model: "Micro Robot arm" by bentommye (Thingiverse)