Introduction
As science and engineering advance, material handling has progressively shifted from manual workflows to automated systems. In this transition, robotic manipulators have become a key component of modern production lines and a focus of industrial innovation.
These machines handle demanding shop-floor tasks—assembly, palletizing, picking, and point-to-point transfer—while providing fast response, high positioning accuracy, standardization, broad product compatibility, and mature accessory ecosystems. This results in lower labor and space costs, improved quality, and higher throughput, explaining their widespread adoption.
Robotic arms appear in many settings: as part handlers in automated assembly, sorters in distribution centers, and more. Global leaders such as ABB, FANUC, KUKA, and Yaskawa dominate the high-end market, while regional vendors like Huazhong CNC and Siasun are growing quickly. Yet many industrial arms remain bulky, expensive, and maintenance-intensive—limitations for small-scale material handling.
To address these gaps, this article introduces a compact robotic arm based on the STM32 platform. The design emphasizes an open hardware/software stack that is easy to debug, compact, and economical, making it suitable for light-duty transport applications.
Overall System Design
The manipulator consists of the arm, articulated joints, and an end-effector. Together, they form a reprogrammable motion mechanism—one of the most important subsystems in any robot.
The control architecture is modular, including power delivery, communications, motion-control electronics, and the mechanical structure. Servomotors, commanded by a microcontroller, execute the arm’s movements.
This implementation features six degrees of freedom, each driven by an independent servo. Commands originate from an Android-based HMI, allowing joint rotation, gripping, and object transfer (see UI illustration).
The motion controller is an STM32F407 MCU, generating precise actuation signals to position each joint accurately.
Posture Control Function
Assembly tolerances and mechanical offsets inevitably introduce pose errors. To compensate, the arm is calibrated post-assembly: per-joint offsets are defined and a reference pose is stored for subsequent motions.

Handling Function
On production lines, manipulators equipped with different end-effectors (e.g., welding torches or vacuum cups) perform various tasks. In this design, a mechanical gripper moves an object from point A to point B. The operator issues a transfer command via the mobile interface, and the arm completes the movement.
Hardware Design
The arm uses a conventional linkage structure, with each joint controlled by a servo. An STM32 development board serves as the main controller, reflecting best practices in embedded automation: modular boards, open interfaces, and reusable software layers for faster development and easier integration.
Mechanical Structure
Linkage joints enable complex trajectories, improve agility, and support a variety of motions. Many tasks can be accomplished using only two active degrees of freedom.
Six servomotors provide actuation:
YF-6125MG (25 kg·cm): base yaw and joint swing axes; continuous rotation, supporting closed-loop 360° control
MG996R (13 kg·cm): wrist articulation, wrist rotation, and gripper jaws; limited rotation (0–180°)
Servos accept PWM commands from the MCU. The PWM pulse width determines the commanded angle:
1.5 ms → neutral
+0.5 ms → +45° (clockwise)
−0.5 ms → −45° (counter-clockwise)
This allows precise control of each joint’s deflection.
Control System Structure
The system is centered on an STM32F4-series MCU. The STM32F407 combines a 32-bit core, 192 KB RAM, 112 GPIOs, twelve 16-bit timers, two 32-bit timers, seven PWM outputs, and six serial ports—enough to coordinate multi-axis motion.
We use the STM32F407ZET6 to drive six servos concurrently. Programs are developed on a PC and deployed to the MCU. Wireless communication links the STM32 to the Android app, which sends commands and receives telemetry in real time.
System Software Design
Firmware is written in C and compiled using Keil, leveraging vendor libraries to streamline development. The Android app, developed in Android Studio, provides the interface and manages data exchange.
System initialization ensures reliable operation:
Variable initialization
Sensor module setup
Interrupt configuration
Robotic-arm parameter initialization
Global interrupts enable the robot to receive target coordinates and execute tasks. The app commands the arm to pick an item, avoid obstacles using infrared sensors, transport the item, and return home.

Conclusion
Robotic manipulators remain central to robotics research and industrial automation. This work describes a six-DOF STM32-controlled robotic arm, detailing servo selection, controller design, and the software stack.
Simulation and bench tests were conducted under realistic constraints. Firmware debugging and Android-HMI integration enabled smooth operation. Results show robust joint control under practical conditions.
Future work will integrate additional sensing (force, vision, torque) to enhance precision, stability, and reliability.
