Skip to main content
Version: FILS English

Quadruped Spider Robot

A 4-legged spider robot controlled via Bluetooth, capable of walking in all directions.

info

Author: Vlad-Ștefan DAMIAN
GitHub Project Link: https://github.com/UPB-PMRust-Students/fils-project-2026-vladduu

Description

A quadruped spider robot with 4 legs and 3 degrees of freedom per leg (12 servo motors total). Each leg has an ankle, knee and hip joint driven by SG90 servo motors through a PCA9685 16-channel PWM driver. The robot is controlled wirelessly using an HC-05 Bluetooth module and can get up from a lying position, walk forward, walk backward, turn left, turn right and it is controlled from the Arduino Bluetooth Control Application. The firmware runs on an STM32 NUCLEO-F446RE microcontroller written in Rust using the embassy-rs async framework.

Motivation

I have always been fascinated by robots, especially biomimetic robots, machines that move like living creatures. With that idea in mind, i wanted to build a quadruped spider robot cause it was one of my childhood dreams. Also, i knew that the challenge of making 12 motors work together in a coordinated gait, all in real time on a microcontroller will push me to deeply understand both hardware and software design.

Architecture

The system is composed of:

  • STM32 NUCLEO-F446RE — the main microcontroller that runs the Rust/embassy-rs firmware. It communicates with the PCA9685 over I2C and receives Bluetooth commands over UART.
  • PCA9685 PWM Driver — generates PWM signals for all 12 servo motors simultaneously. Powered by a dedicated 5V external power supply.
  • HC-05 Bluetooth Module — receives single-character commands (F/B/L/R/S) from a mobile RC app and forwards them to the MCU over UART.
  • DC-DC Step Down module XL4005 - used for the current regulation of the PCA9685 PWM Driver.
  • DC-DC Step Down module LM2596 - used for the current regulation of the microcontroller.
  • 18650 Li-Ion batteries - to power the circuit.

Architecture Diagram

The gait algorithm uses diagonal leg pairs (FL+RB, FR+LB) stepping one leg at a time. Each step consists of: lift knee → swing hip forward → plant foot → push hip back → reset. While a leg steps, the opposite hips shift slightly for balance stabilization.

Log

Week 1 - 3

Bought all the components needed.

Week 4 - 7

Started building the main frame and installig the SG90 servo motors, batteries, regulators, to test the idea and also the weight. First i made it just as a prototype.

Hardware

The robot frame is built using PLA 3D printed parts and metal brackets. 12 SG90 servo motors are mounted across 4 legs (3 per leg: ankle, knee, hip). All servos are connected to a PCA9685 PWM driver which is controlled by the STM32 NUCLEO-F446RE over I2C. An HC-05 Bluetooth module connects to the MCU over UART for wireless control. The servos are powered by a dedicated 5V/3A external power supply to avoid overloading the MCU's onboard regulator.

Servo Channel Mapping:

ChannelJoint
0Right Back Ankle
1Right Back Knee
2Right Back Hip
3Left Back Ankle
4Left Back Knee
5Left Back Hip
6Front Left Ankle
7Front Left Knee
8Front Left Hip
9Front Right Ankle
11Front Right Knee
12Front Right Hip
13Front Right Ankle (remapped - ch10 damaged)

Schematics

Bill of Materials

DeviceUsagePrice
STM32 NUCLEO-F446REMain microcontroller131 RON
PCA9685 PWM Driver16-channel I2C PWM servo driver32 RON
SG90 Servo MotorLeg joints (x12)13,5 RON x12 = 162 RON
HC-05 Bluetooth ModuleWireless RC control46 RON
18650 BatteriesExternal servo power23 RON
Building MaterialsRobot frame100 RON
Jumper wiresConnections15 RON
18650 Batteries CaseUsed for conecting the batteries in series (7.4V)20 RON
DC-DC Step Down module LM2596Regulating the current to 5V for the microcontroller15 RON
DC-DC Step Down module XL4005Regulating the current to 6V for the servo driver15 RON
Total559 RON

Software

LibraryDescriptionUsage
embassy-executorAsync task executor for Cortex-MRuns concurrent tasks for the gait sequence and Bluetooth handling
embassy-stm32STM32 Hardware Abstraction LayerHardware drivers for I2C (servo), UART (Bluetooth), and GPIO
embassy-timeTime management utilitiesHandles asynchronous time delays between servo movements
embassy-syncSynchronization primitivesSharing state and passing Bluetooth commands between async tasks
pwm-pca9685PCA9685 PWM driverIndependent control of all 12 servo motors over I2C
cortex-mLow-level Cortex-M processor accessCore processor operations and register access
cortex-m-rtCortex-M minimal runtimeDevice boot sequence and interrupt vector routing
defmtDeferred formatting logging frameworkHighly efficient console logging and formatting
defmt-rttRTT transport for defmtTransmitting log messages to the host PC via Real-Time Transfer
panic-probePanic handlerCatches system errors/panics and prints them via defmt
  1. embassy-rs documentation
  2. STM32 NUCLEO-F446RE datasheet
  3. PCA9685 datasheet
  4. HC-05 Bluetooth module guide
  5. Bluetooth RC Controller app