Arduino Exoskeleton Arm
by roombawoomba in Circuits > Assistive Tech
2735 Views, 33 Favorites, 0 Comments
Arduino Exoskeleton Arm
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
There are only a few components required for this project! Everything else is either consumables or tools.
Electronics & hardware
- Arduino Nano – 1x
- Potentiometer – 1x
- TD-8135MG continuous-rotation servo – 1x
- LM2596 buck voltage regulator - 1x
- 12V 3000 mAh battery pack – 1x
- T-plug battery connector / cable – 1x
- Switch – 1x
- Bearing – 1x
- Jumper cables, hookup wire - Assorted
- Heat shrink tubing and soldering supplies - Assorted
- Felt sheets, tape to mount battery – Approx 100cm*10cm
- Velcro strips: “hook” (spiky) and “loop” (soft) — Approx 100cm*10cm
- String (5 mm in diameter) for tow line – Approx 30cm
- 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)
- Bicep shield – 1x
- Forearm shield – 1x
- Tow rod - 1x
- Switch barrel casing – 1x
- Pot-bearing ring (small round part to hold the pot in the hinge side) – 1x
- Bearing screw insert (small circle that is inserted into the bearing, so the screw can grab the bearing) – 1x
Tools
- 3D printer
- PETG or stronger filament
- Soldering iron & solder
- Screwdriver
- Hot glue gun (for mounting & securing parts)
- Wire stripper/cutter
- Heat shrink torch or lighter
3D Printing
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)
- Layer height: 0.2mm
- Perimeters / shells: 3–5 (3 is minimum; 4+ for higher strength)
- Infill: 45–70% (higher infill for main shields because they take most of the load)
- Top/bottom layers: 6–8
- Print orientation: print all the parts vertically so minimal supports are required.
- Supports: Enable supports on all the models. I used tree supports which only touched the build plate.
- 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
- 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.
- 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.
- 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.
- Switch barrel — a small barrel-shaped part that encloses the switch. It’s designed to fit easily in the palm of your hand.
- 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.
- 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
Now we can begin the actual project!
- 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.
- Then, install the round servo base onto the tow rod and screw it in place tightly with 4 M2x8mm screws.
- 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.
- 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.
- 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
Now that we’ve done that, we can bring both sides of the tool together.
- 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!)
- 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.
- 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!)
- 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!
- 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.
- 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.
- 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
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:
- 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.
- Then, solder another wire from the additional switch terminal to a jumper cable, again using some extra wire if needed.
- The battery’s negative cable should be a common ground, so just solder it directly to a jumper cable.
- 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.
- 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
Now that that’s done, we can set up the brains and hearts of our bionic arm!
- 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.
- 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.
- 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
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:
- Download and then open the sketch in the Arduino IDE.
- Connect your Nano by USB and select the correct board/port.
- Click on Upload.
- Once uploaded, disconnect the USB, flip your switch on, and the system will wait ~2 seconds for calibration before working.
Downloads
Wiring Everything
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
- First, plug in the switch’s output to the LM2596 VIN+
- Then, the Battery’s negative pin should go to the LM2596 VIN-
- 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.
- Important: Make sure the LM2596 output is measured with a multimeter before connecting the Nano.
Servo
- Servo V+ → LM2596 output + (shared 5 V rail)
- Servo GND → Arduino GND (tie grounds together)
- Servo signal → Arduino D4
Potentiometer (3-pin)
- Pot middle (wiper) → Arduino A7 (analog input).
- Pot one outer → Arduino 5V.
- Pot other outer → Arduino GND.
Arduino
- Arduino VIN ← LM2596 output +
- Arduino GND ← LM2596 output -
- Servo GND connected to Arduino GND.
Before your first power-up:
- Double-check all your connections and polarity.
- Measure the LM2596’s output with a multimeter to confirm the voltage.
- Ensure the grounds are common.
- 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!
- Keep the switch OFF until everything is confirmed.
Downloads
Creating Straps & Comfort Padding
For the final touches of our bionic arm, we need to create the mounting straps!
- First, cut four felt strips approximately. ~20 cm long (adjust for your arm size).
- Then cut four loop (soft) Velcro strips, which are approximately ~15cm long.
- Cut four hook (spiky) Velcro strips, which are approximately ~5-8cm long.
- 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.
- Once you’ve done that, feed the straps through the Velcro slots in the shields with the hook/loop facing outwards.
- Use plenty of hot glue to mount the strips to the shields so they don’t slip.
- 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.
- 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!
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!
- 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!
- 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!
- 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!