Skip to content
Buy 10+ on select items — save 10% auto-applied
Free US shipping on orders $35+
Order by 3pm ET — ships same-day from the US
Skip to main content

Arduino Uno HC-05: Phone-Controlled Robot Arm Build | ShillehTek

August 26, 2026 15 views

Arduino Uno HC-05: Phone-Controlled Robot Arm Build | ShillehTek
Project

Build an Arduino Uno robot arm with an HC-05 Bluetooth module for Android slider control plus Save/Run motion recording and replay, with parts from ShillehTek.

Intermediate6 parts

Project Overview

DIY Arduino Robot Arm with Smartphone Control: Build an Arduino Uno robot arm using an HC-05 Bluetooth module so you can control six servos from an Android phone and record movements to replay them automatically.

The build uses a 3D-printed frame (or a pre-made arm platform), three high-torque servos for the load-bearing joints, and three micro servos for the wrist and gripper. The phone app provides one slider per joint plus Save/Run controls to store poses and loop them like a miniature industrial robot.

  • Time: A weekend (printing + assembly + wiring)
  • Skill level: Intermediate
  • What you will build: A smartphone-controlled robotic arm that can memorize a sequence of positions and loop them automatically.
Arduino Uno robot arm with six servos controlled from an Android phone app over HC-05 Bluetooth
Five joints plus a gripper, all driven from sliders on your phone.

Parts List

From ShillehTek

External

  • 3 x SG90/MG90S micro servos (wrist roll, wrist pitch, gripper)
  • 3D-printed arm parts (STLs from the original guide) or an arm frame of your own
  • 5V, 2A or higher supply for the servos (the LM2596 fed from a 12V adapter works well)
  • An Android phone for the control app
  • Resistors for a simple 1k/2k voltage divider to protect the HC-05 RX pin

Note: Never power six servos from the Arduino's 5V pin. Stalled MG996R-class servos can pull well over an amp each. Give the servos their own 5V rail and tie the grounds together.

Step-by-Step Guide

Step 1 - Understand the Arm

Goal: Know what the six servos do.

What to do: The arm has five degrees of freedom plus a gripper. The three big joints (waist rotation, shoulder, and elbow) carry real load, so they use metal-gear MG996R-class servos. The wrist roll, wrist pitch, and gripper barely lift anything, so light SG90 micro servos handle those.

The frame was modeled in CAD and 3D-printed; the STLs are freely available in the original guide.

CAD 3D model of a 5-DOF robot arm plus gripper showing all joints
The 3D model: waist, shoulder, elbow, wrist roll, wrist pitch, and gripper.
Close-up CAD detail of the robot arm joint where a servo horn is clamped between printed parts
Each joint sandwiches a servo horn between printed parts.

Expected result: You know which servo goes where and why.

Step 2 - Print and Assemble the Frame

Goal: Build the mechanical arm.

What to do: Print the parts (PLA at standard settings is fine), then assemble joint by joint from the base up. Bolt the waist servo into the base, attach the rotating platform to its horn, then work up through shoulder, elbow, and wrist, seating each servo before closing its joint.

Center every servo (90 degrees) before screwing horns down, or the arm's range will be lopsided. A rubber band looped across the shoulder joint helps the shoulder servo fight gravity on the longest lever.

All 3D-printed robot arm parts laid out before assembly
The full set of printed parts before assembly.
Installing the high-torque waist servo into the 3D-printed robot arm base
The waist servo bolts into the base and carries the whole arm.
Assembling a robot arm joint around a servo horn using 3D-printed parts
Joints assemble around each servo's output horn.

Expected result: A finished arm that moves freely by hand at every joint.

Step 3 - Wire the Electronics

Goal: Connect six servos, the HC-05, and power.

What to do: Servo signal wires go to Arduino pins D5 to D10 (waist through gripper). Wire the HC-05 as VCC to 5V, GND to GND, TX to D3, and RX to D4 through a simple 1k/2k voltage divider (the module's RX pin is 3.3V logic).

Set your LM2596 to 5.0V and feed every servo's power lead from it, not from the Arduino. Tie the converter's ground to the Arduino's GND so signals share a reference.

Wiring schematic showing Arduino Uno connected to six servos on D5 to D10 and an HC-05 Bluetooth module on D3 and D4 with a separate 5V servo rail
Six servos on D5 to D10, HC-05 on SoftwareSerial, servos on their own 5V rail.

Expected result: Electronics complete, with a servo power rail that will not brown out the Arduino.

Step 4 - Load the Code

Goal: Let the phone command every joint.

What to do: The sketch keeps a Servo object per joint and parses slider messages arriving over Bluetooth. The condensed control loop looks like this. The complete sketch (including smooth-speed moves and the record/replay logic) is on the original guide.

Code:

#include <SoftwareSerial.h>
#include <Servo.h>

Servo servo01, servo02, servo03, servo04, servo05, servo06;
SoftwareSerial Bluetooth(3, 4);   // HC-05 TX -> D3, RX -> D4 (via divider)

int servo1Pos = 90, servo2Pos = 150, servo3Pos = 35,
    servo4Pos = 140, servo5Pos = 85, servo6Pos = 80;
String dataIn = "";

void setup() {
  servo01.attach(5);   // waist
  servo02.attach(6);   // shoulder
  servo03.attach(7);   // elbow
  servo04.attach(8);   // wrist roll
  servo05.attach(9);   // wrist pitch
  servo06.attach(10);  // gripper
  Bluetooth.begin(38400);
  Bluetooth.setTimeout(1);
  delay(20);
}

void loop() {
  if (Bluetooth.available() > 0) {
    dataIn = Bluetooth.readString();       // e.g. "s1120" = waist to 120 deg
    if (dataIn.startsWith("s1")) {
      servo1Pos = dataIn.substring(2).toInt();
      servo01.write(servo1Pos);
    }
    // ...same pattern for s2..s6, plus speed,
    // SAVE (record step) and RUN (replay saved steps)
  }
}

Expected result: The arm twitches to its home pose on boot and responds to Bluetooth commands.

Step 5 - Drive It from the App

Goal: Control, then automate, the arm.

What to do: Pair your phone with the HC-05 (PIN 1234), open the control app from the original guide (built with MIT App Inventor, source included), and connect. Each slider drives one joint live, and the speed slider scales how fast moves execute.

The Save button records poses. Pose the arm, tap Save, pose it again, tap Save, then hit Run and the arm replays the whole recorded sequence in a loop. Reset clears the memory for a new routine.

Android control app screen with sliders for each robot arm servo and Save/Run buttons for recording and replay
One slider per joint, plus Save/Run to record and replay motion sequences.

Expected result: A robot arm that follows live slider control and can replay saved motion sequences automatically.

Conclusion

You built an Arduino Uno robot arm with an HC-05 Bluetooth module that can be driven from a phone and can record and replay servo positions. This combines multi-servo control, proper servo power design, wireless commands, and simple motion automation using saved steps.

Want the exact parts used in this build? Grab them from ShillehTek.com. If you want help customizing this project or building something for your product, check out our IoT consulting services.

Credits: Photos and original build concept referenced from Dejan of HowToMechatronics and the Hackster.io repost by Webotricks.