Arduino Exoskeleton Arm

by roombawoomba in Circuits > Assistive Tech

2735 Views, 33 Favorites, 0 Comments

Arduino Exoskeleton Arm

No load
1KG Load
F84358PMG16AEA5.jpg
FQLRRHDMG16AEOS.jpg
FG0XDC1MG16AFDL.jpg
FLYN546MG16AF8L.jpg

Many small workshop and household tasks require holding or lifting while you work. This constant load makes your arm tired, reducing precision and speed and also leads to possible injuries.

To solve this, I built a compact Arduino-based bionic arm/exoskeleton that does exactly that!

It’s a wearable assist that clamps over your bicep and forearm with 3D-printed shields, senses small elbow movements via a potentiometer in the joint and then uses a continuous-rotation servo to take over the work by towing a 5 mm string between the two shields.

The result is that you can make a light initiating movement, and the mechanism finishes the motion for you so your muscles can relax, perfect for workshop tasks, holding awkward parts steady, or adding an extra pair of “hands” to a project!

This project is practical, lightweight and intentionally simple so others can adapt it to different load levels and ergonomics. I tested it with 1 kg, 2 kg and 10 kg loads, and it performed reliably well!

I’ll guide you through all the parts, printing tips, assembly, wiring, code and much more in this Instructables!

Supplies

IMG_9270.JPG
IMG_9271.JPG
IMG_9272.JPG
IMG_9274.JPG
IMG_9275.JPG
FHCYCCNMG16A4GG.jpg
FXODALIMG16A6ED.jpg

There are only a few components required for this project! Everything else is either consumables or tools.


Electronics & hardware

  1. Arduino Nano – 1x
  2. Potentiometer – 1x
  3. TD-8135MG continuous-rotation servo – 1x
  4. LM2596 buck voltage regulator - 1x
  5. 12V 3000 mAh battery pack – 1x
  6. T-plug battery connector / cable – 1x
  7. Switch – 1x
  8. Bearing – 1x
  9. Jumper cables, hookup wire - Assorted
  10. Heat shrink tubing and soldering supplies - Assorted
  11. Felt sheets, tape to mount battery – Approx 100cm*10cm
  12. Velcro strips: “hook” (spiky) and “loop” (soft) — Approx 100cm*10cm
  13. String (5 mm in diameter) for tow line – Approx 30cm
  14. Screws & nuts: 2 × M5 × 20 mm, 1 × M5 nut, 4 × M2 × 10 mm, 4 x M2 x 8 mm, 3 x M5 washers


3D printed parts (total 6 pieces)

  1. Bicep shield – 1x
  2. Forearm shield – 1x
  3. Tow rod - 1x
  4. Switch barrel casing – 1x
  5. Pot-bearing ring (small round part to hold the pot in the hinge side) – 1x
  6. Bearing screw insert (small circle that is inserted into the bearing, so the screw can grab the bearing) – 1x

Tools

  1. 3D printer
  2. PETG or stronger filament
  3. Soldering iron & solder
  4. Screwdriver
  5. Hot glue gun (for mounting & securing parts)
  6. Wire stripper/cutter
  7. Heat shrink torch or lighter

3D Printing

IMG_9277.JPG
IMG_9276.JPG
IMG_9279.JPG
IMG_9280.JPG
IMG_9281.JPG
IMG_9282.JPG
IMG_9283.JPG
IMG_9284.JPG
IMG_9286.JPG
IMG_9287.JPG

I recommend printing these parts in PETG or a stronger filament for durability and slightly better heat resistance. PLA is fine for prototyping, but keeping loads and temperatures in mind, you’ll want a stronger material. Additionally, because these parts carry large loads and hinge forces, I printed them with sturdier settings:

Suggested print settings (starting point)

  1. Layer height: 0.2mm
  2. Perimeters / shells: 3–5 (3 is minimum; 4+ for higher strength)
  3. Infill: 45–70% (higher infill for main shields because they take most of the load)
  4. Top/bottom layers: 6–8
  5. Print orientation: print all the parts vertically so minimal supports are required.
  6. Supports: Enable supports on all the models. I used tree supports which only touched the build plate.
  7. Tolerances: allow 0.2–0.4 mm clearance on holes for bearings/screws. You should test fit a small sample model before you print the entire setup.

Parts & roles

  1. Bicep shield — houses the servo, serves as the stationary upper arm mount. The servo slots into a dedicated bay and screws down. There’s a guide hole for the string and two Velcro strap routing holes.
  2. Forearm shield — holds the Arduino Nano, LM2596, battery, and the potentiometer on it. It fits over the bicep shield on the hinge. It has a guide hole and an anchor/hook for the string.
  3. Tow rod— the tow rod accepts a small round servo base that bolts to the printed rod. The string passes through a hole in the rod and is tied into a knot. The rod rotates when the servo spins, pulling the string. The round servo base connects to the servo.
  4. Switch barrel — a small barrel-shaped part that encloses the switch. It’s designed to fit easily in the palm of your hand.
  5. Pot-bearing ring — a circular ring with a centre hole sized so the potentiometer shaft sits snugly and acts as one half of the joint bearing.
  6. Bearing screw insert — a small circular insert that fits into the bearing and provides screw holes so you can fasten the bearing to the printed part (the screw grabs through this piece).

Once you have printed all the parts, make sure to remove any supports and clean up the pieces so they move smoothly!

Mounting the Servo

IMG_9289.JPG
IMG_9290.JPG
IMG_9291.JPG
IMG_9292.JPG
IMG_9297.JPG
IMG_9299.JPG
IMG_9302.JPG
IMG_9303.JPG
IMG_9305.JPG
IMG_9306.JPG
IMG_9307.JPG
IMG_9309.JPG
IMG_9311.JPG
IMG_9312.JPG

Now we can begin the actual project!

  1. To start, slot the TD-8135MG servo into the servo bay on the bicep shield and screw it down with the supplied M2 (or M3, depending on your servo) screws. Make sure the servo is mounted securely without any wobbles.


  1. Then, install the round servo base onto the tow rod and screw it in place tightly with 4 M2x8mm screws.


  1. Thread the 5 mm string through the hole in the tow rod and tie a secure knot or use a small crimp/stop so it cannot slip back through. I tied a single knot but made sure it was secure by doing a test pull.


  1. Now, mount the tow rod onto the servo spline. Then, to mount it in place, by using an M5x20mm screw. You can optionally add 3 washers (like I did) in between the rod and the bicep shield to keep it steady and reduce any wobble.


  1. Now you can turn the rod by hand to ensure it has a smooth rotation and that the tied string has clearance from the printed bicep shield.


Tip: Because this is a continuous rotation servo, it will spin and not move to a specific angle.

Connecting the Two Shields

IMG_9316.JPG
IMG_9319.JPG
IMG_9321.JPG
IMG_9313.JPG
IMG_9318.JPG
IMG_9322.JPG
IMG_9323.JPG
IMG_9324.JPG
IMG_9325.JPG
IMG_9326.JPG
IMG_9327.JPG
IMG_9328.JPG
IMG_9329.JPG
IMG_9330.JPG
IMG_9331.JPG
IMG_9332.JPG
IMG_9333.JPG
IMG_9334.JPG
IMG_9335.JPG
IMG_9336.JPG
IMG_9339.JPG
IMG_9337.JPG
IMG_9338.JPG
IMG_9340.JPG
IMG_9341.JPG
IMG_9342.JPG
IMG_9343.JPG

Now that we’ve done that, we can bring both sides of the tool together.

  1. First, on the bicep shield bearing side (the side with a hole), slot the bearing into its recess. Optionally add a small bead of hot glue around the outer edge for adhesion and grip (Make sure not to glue the inner race!)


  1. Then, slot the bearing screw insert into the bearing centre. This gives you screw holes so the forearm shield can grab on tightly to the bearing.


  1. Now, on the opposite side, slot the pot-bearing ring into its allocated recess and glue it tightly so it won’t move. This ring provides the mount for the potentiometer shaft and forms the other half of the hinge. (Make sure to angle it properly so that when the potentiometer is installed, it won’t be limited in its rotation!)


  1. Once that is done, slide the forearm shield over the bicep shield until it clicks into place. The pot-bearing ring (the potentiometer will be installed later) replaces one side of the bearing and the main bearing sits on the other side. Your joint should now rotate!


  1. To secure everything in place, insert the long hinge screw (M5 × 20 mm), from the bearing side through both shields. On the other end, use the M5 nut to lock it in place. Tighten it until the hinge is snug but still allows rotation. Use washers as needed to prevent crushing the printed parts.


  1. Now, install the potentiometer into the allocated potentiometer space on the forearm shield. Its shaft should connect inside of the pot-bearing ring, allowing it to detect the angle of your elbow/the hinge.


  1. Now, finally, thread the string along the guide holes: from the tow rod, through the bicep shield string guide, along through to the forearm shield’s guide hole, and then tie it onto the hook anchor on the forearm shield very tightly. I used multiple knots to make sure it was secure.

Wiring Up the Switch

Switch.png
IMG_9348.JPG
IMG_9351.JPG
IMG_9353.JPG
IMG_9357.JPG
IMG_9354.JPG
IMG_9355.JPG
IMG_9358.JPG
IMG_9359.JPG
IMG_9360.JPG
IMG_9361.JPG
IMG_9362.JPG
IMG_9363.JPG

Now we can finally get onto the actual electronics for this. First, we will need to make the safety switch! It will act as an emergency stop for the servo arm and cut power to everything. I've attached a simple Fritzing diagram, which also includes the LM2596, which will be wired later on. To make it, first:

  1. Solder the T-plug cable’s positive lead to the input terminal of the switch. I would recommend using some extra wire to lengthen the cable since it will need to fit inside the switch barrel.
  2. Then, solder another wire from the additional switch terminal to a jumper cable, again using some extra wire if needed.
  3. The battery’s negative cable should be a common ground, so just solder it directly to a jumper cable.
  4. Now, insulate the joints with heat shrink and/or electrical tape and then slip everything into the printed barrel casing, feeding the wires out the other end where they’ll connect to your forearm electronics.
  5. Use hot glue inside the barrel to fix wires in place so the switch can’t yank out.

Important: The switch severs the positive feed. Keep the negative common ground intact.

Downloads

Installing Electronics on the Forearm Shield

IMG_9365.JPG
IMG_9366.JPG
IMG_9367.JPG
IMG_9372.JPG
IMG_9374.JPG
IMG_9375.JPG
IMG_9376.JPG
IMG_9378.JPG
IMG_9379.JPG

Now that that’s done, we can set up the brains and hearts of our bionic arm!

  1. First, place your Arduino Nano on a small breadboard and hot glue it onto the forearm shield in the allocated space. Leave room beside it for the battery pack.


  1. Then, place the 3000 mAh battery pack next to the Nano and tape/hot glue its edges. I used tape in order to make it easy to remove and to avoid hot glue residue on the battery.


  1. Prepare the LM2596: solder header pins on the output side (so it can plug into the breadboard) and solder the wiring leads for the input side (which come from the switch barrel). Mount the LM2596 on the breadboard/pins and hot glue it in place.


Uploading the Code

arduino.png

Now it’s time to bring everything to life!

I've attached the sketch in this step that links your elbow movement (potentiometer) to the servo motor. The potentiometer acts like a “muscle sensor” so when you bend slightly, the Arduino detects the change and spins the servo in the right direction to tow the string and help you out.

To upload the sketch using the Arduino IDE:

  1. Download and then open the sketch in the Arduino IDE.
  2. Connect your Nano by USB and select the correct board/port.
  3. Click on Upload.
  4. Once uploaded, disconnect the USB, flip your switch on, and the system will wait ~2 seconds for calibration before working.


Downloads

Wiring Everything

Untitled Sketch_bb.png
IMG_9388.JPG
IMG_9387.JPG
IMG_9389.JPG
IMG_9390.JPG
IMG_9391.JPG
IMG_9392.JPG
IMG_9412.JPG
IMG_9398.JPG
IMG_9403.JPG
IMG_9411.JPG
IMG_9410.JPG
IMG_9402.JPG
IMG_9405.JPG
IMG_9409.JPG
IMG_9414.JPG
IMG_9404.JPG
IMG_9406.JPG
IMG_9408.JPG
IMG_9407.JPG
IMG_9413.JPG

Finally, we’re onto the final steps of this bionic arm project, wiring! The circuit for this is relatively simple, due to only having two components (the potentiometer and the servo) and one power supply (the LM2596). I’ve also attached multiple images to demonstrate the circuit and a Fritzing diagram!. (Ignore the change of Arduino boards in the photos; I simply replaced my original one since it was broken)

To begin, we can create the power supply path.

Power path

  1. First, plug in the switch’s output to the LM2596 VIN+
  2. Then, the Battery’s negative pin should go to the LM2596 VIN-
  3. Then, connect up the battery to test the circuit, and the LED on the LM2596 should light up. Use a small screwdriver to then adjust the output voltage from the LM2596. I recommend putting the output voltage at around 5-5.1V. This will allow both the servo and nano to be powered while limiting the heat generated.
  4. Important: Make sure the LM2596 output is measured with a multimeter before connecting the Nano.

Servo

  1. Servo V+ → LM2596 output + (shared 5 V rail)
  2. Servo GND → Arduino GND (tie grounds together)
  3. Servo signal → Arduino D4

Potentiometer (3-pin)

  1. Pot middle (wiper) → Arduino A7 (analog input).
  2. Pot one outer → Arduino 5V.
  3. Pot other outer → Arduino GND.

Arduino

  1. Arduino VIN ← LM2596 output +
  2. Arduino GND ← LM2596 output -
  3. Servo GND connected to Arduino GND.

Before your first power-up:

  1. Double-check all your connections and polarity.
  2. Measure the LM2596’s output with a multimeter to confirm the voltage.
  3. Ensure the grounds are common.
  4. Do NOT connect the servo’s + pin to the Arduino’s 5V out since it will draw too much current and BURN your board’s voltage regulator!
  5. Keep the switch OFF until everything is confirmed.

Downloads

Creating Straps & Comfort Padding

IMG_9431.JPG
IMG_9433.JPG
IMG_9415.JPG
IMG_9416.JPG
IMG_9419.JPG
IMG_9421.JPG
IMG_9422.JPG
IMG_9423.JPG
IMG_9424.JPG
IMG_9427.JPG
IMG_9428.JPG
IMG_9429.JPG
IMG_9435.JPG
IMG_9437.JPG
IMG_9436.JPG
IMG_9441.JPG
IMG_9445.JPG
IMG_9443.JPG
IMG_9448.JPG
IMG_9451.JPG
IMG_9450.JPG
IMG_9452.JPG
IMG_9456.JPG
IMG_9454.JPG
IMG_9455.JPG
IMG_9459.JPG
IMG_9457.JPG


For the final touches of our bionic arm, we need to create the mounting straps!

  1. First, cut four felt strips approximately. ~20 cm long (adjust for your arm size).


  1. Then cut four loop (soft) Velcro strips, which are approximately ~15cm long.


  1. Cut four hook (spiky) Velcro strips, which are approximately ~5-8cm long.


  1. Then, glue the loop (soft) Velcro strips across the felt, leaving the final 5–8 cm as space for the hook (spiky) side so it can fasten. I made four of these straps, with one of them (the one around my wrist) being slightly smaller.


  1. Once you’ve done that, feed the straps through the Velcro slots in the shields with the hook/loop facing outwards.


  1. Use plenty of hot glue to mount the strips to the shields so they don’t slip.


  1. Now, this step is optional, but if you have spare pieces of felt, you can cut them out to line the inside of both shields for maximum comfort. I hot-glued mine in place, and it prevents chafing and also distributes the pressure.


  1. Once you’ve done all that, you can do a check fit by strapping the exoskeleton to your arm and tightening the straps! Make sure you can move your elbow freely until the two guides meet each other.


Done!

10KG Load
No load
1KG Load
2.5KG Load
IMG_9461.JPG
IMG_9462.JPG
IMG_9463.JPG
IMG_9471.JPG
IMG_9464.JPG
IMG_9465.JPG
IMG_9467.JPG
IMG_9469.JPG
IMG_9470.JPG
IMG_9472.JPG

With that, your bionic arm should be complete!

To use it, first have your elbow in an extended position with the tow string taut. Power it on and wait 2 seconds for the continuous-rotation servo calibration in the code (this sets the maximum position). Once it has completed that, you can make a small initiating motion at the elbow (just a very light bend), which will cause the potentiometer to detect the movement.

The Arduino will then command the servo to rotate the tow rod and pull the string, assisting in your motion!

If you want to stop mid-movement, just push in the opposite direction slightly, and the potentiometer will detect it, allowing your Arduino to pause the servo or spin it the other way accordingly.


I tested the exoskeleton arm with a few different weights to see how well it could actually assist!

  1. With a 1 kg load, it was effortless. The bionic arm took over almost instantly, and it felt like I wasn’t holding anything except for my fingers gripping the box!
  2. At a 2 kg load, it was still extremely smooth. My biceps were not active at all, and the only muscles that were tense were my forearms for gripping the screwdriver and box. The servo had no problem keeping up, and the support was obvious!
  3. For a 10 kg load, it was slightly different. There was a slight effort involved, but it was still far easier than lifting 10 kg without the bionic arm. Instead of a hard strain, it felt like a much lighter object that just needed guiding.

My tests proved that it didn’t just look cool, but it genuinely helped and had an effect for tasks that involved repeated or awkward holding.

This project is not only fun to build, but it’s also a practical tool for making tough workshop tasks a LOT easier!