V2 Assembly Instructions
V2 Assembly Instructions
From this point onwards, you should have a working Pi with Pi OS imaged onto the
machine.
Setup Display:
dtoverlay=vc4-kms-v3d
dtoverlay=vc4-kms-dsi-waveshare-panel,7_0_inchC,dsi0
NOTE: You may already have the “dtoverlay=vc4-kms-v3d” line in your config.txt. In that
case, you DO NOT need to add it again.
Save the file.
Right-click the SD card and choose Eject.
Troubleshooting Tips
If the screen stays black:
o Recheck your ribbon cable connection (both ends).
o Make sure you edited the correct DSI overlay in config.txt.
o Try waiting ~2–3 minutes for the Pi to fully boot.
If the boot still fails:
o You can pull out the SD card, plug it back into your PC, and fix the config.txt. No
need to reflash unless you corrupted the OS.
Original Instructions
INCLUDEPICTURE
"https://docs.arducam.com/Raspberry-Pi-Camera/Low-Light/picture/Arducam_quick_start_guide_ov64
a40_picture_new_2.png" \* MERGEFORMATINET
Verify Camera:
o Turn on the Raspberry Pi.
o In a terminal, list the detected cameras using:
libcamera-hello --list-cameras
o
o Connect the speaker that comes in the box for testing (we will be
switching this out with our actual speakers later).
Once connected, plug and power on the Raspberry Pi.
6. Reboot the Pi
bash
sudo reboot
Setup Speakers:
We won’t be using the speakers that come out of the box with the Audio
HAT since they are too big.
1. Turn off and unplug the Raspberry Pi.
2. On the PH2.0-N speakers, cut off the JST connector end on each speaker
wire with a wire/flush cutter.
3. Strip the ends of the wires (~5 mm) with your wire stripper.
1.
4. Use a small flathead screwdriver (i.e. 5/64”) to open the screw termin-
als on the HAT.
5. Insert the:
🔊 7. Test Playback
bash
if you are using a ina260 to monitor the battery power, use the 3d printed supports to secure it
Add Heat Inserts:
- You will be using the M2.5 Heat Inserts to add screwable holes into your components.
- Make sure each heat insert is sitting flush to the part and the ones where the lid of the
case screw need to be sitting below the lid parts.
- Each heat insert needs to be straight with the hole it is inserted into.
Drive Train:
Chassis:
Legs:
Both legs have the same holes, the left leg will have more holes for the buck converter than
the right one.
The above casing is leg hull is outdated. Please add 2 heat inserts here as well:
Supports:
- INA260 Support:
o
Parts Modification:
Axel Rods:
Cut the 4mm axel rods to these dimensions.
LDX-227:
Cut the protruding plastic part on one of the LDX-227 servo if you are using them.
You can use a flush cutter or knife to cut through the plastic bit by bit.
PCA9685:
If the pins on your PCA9685 (servo controller) are bent, use some pliers to carefully make
them straight.
Assembly
A. Install the Suspension:
1.
2. B. use a soldering iron and lightly circle around the hole to
soften it before inserting the rod fully through.
1. Less recommended.
o Tug and pull both spring drivers apart to confirm that the axles are
tightly in place.
o
4. Mount Suspension Mounts onto Bearings
o Align and slide each suspension mount over the bearings that were
installed in Step 1. The bearing should slot into the suspension mount,
allowing it to rotate relative to the spring driver.
o
5. Secure Suspension to Upper Case with Springs
o Position the full assembly so the suspension mounts can be bolted
to the upper case frame.
o
o The easiest way to screw this piece on with the springs is to first
insert only the spring closest to the upper-case wall in between the
strut mount on the upper case’s protruding insert.
o Screw the suspension to the top case by holding it together and use 8
M2.5x8mm screws for the 8 screw holes on the suspension mount.
Don’t tighten the screws all the way in just yet.
o Once you have all the screws in, push down the strut mount that
already has a spring to provide room to insert the last spring.
o Insert the last spring first in the strut mount, then once it is nicely
inserted slide the other end of the spring into the upper case’s
protruding spring insert.
o Before tightening everything, ensure the springs are seated correctly:
They should sit between the strut mounts and the
suspension mounts, providing compression resistance.
1. Rotate the strut mounts so that it is angled directly facing
the protruding spring inserts on the case.
When bolted, the springs should be slightly compressed for
functionality.
o Finish tightening all the screws.
B. Main Leg Mount + Suspension Linkage:
o
Screw the 2 holes in securely using two M2.5x8mm screws. This forms the structural
base that holds the PCA9685.
Extension Cables:
o Plug 12” servo extension wires into PCA9685 channels 3–8.
Use the male end of this wire and like in the previous example match the
white wire to the PWM pin of the channel.
o
These cables will be used to:
Supply power from the battery to each buck converter
Deliver regulated power from each buck converter to a device (either the PCA9685
or the Raspberry Pi)
Prepare the cables by:
Splitting each end and stripping ~5mm off using 18 AWG STRD on a wire stripper.
Twist the bare stranded wires together to prevent fraying.
The 50 cm length is longer than needed to give you flexibility during routing and final
positioning.
Step 9: Route One Power Cable to the Left Leg (PCA9685 Power System)
Take one of the 2-conductor cables.
Feed it through the left hole in the upper case and into the left leg cavity.
Wire #1 (visually in orange) responsibilities:
o Red wire: connects battery positive to IN+ of LM2596 buck converter
o Black wire: connects battery ground to IN– of LM2596 buck converter
Take a second 2-conductor cable.
Feed it through the same hole into the left leg.
Wire #2 (visually in red) responsibilities:
o Red wire: connects OUT+ of LM2596 buck converter to V+ input of PCA9685
o Black wire: connects OUT– of LM2596 buck converter to GND of PCA9685
o NOTE: Please only connect the PCA9685 side of this wire for now. Leave the
OUT port of the LM2596 buck converter disconnected.
o PCA9685 Screw Terminal:
o Unscrew and disconnect the
Step 10: Route Power Cables to the Right Leg (Raspberry Pi Power System)
Repeat the process for the right leg but with the DC 6A USB Voltage Regulator (buck
converter for the Pi) using the remaining two 2-conductor cables:
o Cable 3 (visually in orange):
Red: Battery → Buck IN+
Black: Battery GND → Buck IN–
o Cable 4 (visually in red):
Red: Buck OUT+ → Raspberry Pi 5V via USB-C breakout
Black: Buck OUT– → Raspberry Pi GND
o
o
Feed both cables through the right hole in the upper case and into the right leg
cavity.
o
o After confirming you can remove the probes from the multimeter.
Find the corresponding VIN+/- wires from the 2 buck converters and twist them
together.
o
Use the lever wire nut that comes with the battery and insert the battery’s power (red)
and ground (black) wires. Insert the combined VIN+/- (red/black) buck converter wires
into the other side of the lever wire nut matching the same color.
o
You should see the buck converters light up now. This confirms the battery is
successfully providing power.
o
o
When the LM2596 buck converter’s IN LED is on, you should see the
input voltage read around ~12V as expected.
o
The Pi USB buck converter should also have an LED light up.
Your LM2956 buck converter output voltage now needs to be adjusted:
o Use a small flat-head screwdriver.
o Press the right (OUT) button to switch the display to show the OUT voltage
instead.
o Turn the potentiometer screw (gold screw on the blue box at the top) on the
buck converter:
Clockwise = increases voltage
Counter-clockwise = decreases voltage
We want to turn the screw counter-clockwise to a little more than 6 V.
o Use a multimeter to measure the output voltage on the OUT terminals
o Adjust carefully until the display reads a little more than ~6V
Once this is done, unplug the battery’s output cables from the lever wire nut.
Screw the LM2956 buck converter’s wires to the PCA9685 servo drivers on.
Step 12: Solder USB-C Breakout Board to the Buck Converter Output (for the Pi)
You’ll be connecting a USB-C Male (NOT female) breakout board to the output
wires of the Pi buck converter located in the right leg.
From the OUT+ and OUT– terminals on the buck converter:
o OUT+ (red wire) → V pad on the USB-C board.
o OUT– (usually black) → G pad on the USB-C board.
🔧 Important tips:
o Double-check polarity: Reversing +/– can damage the Pi.
o Use heat shrink tubing or electrical tape to insulate solder joints.
o You can strip and tin the wires before soldering for a clean joint.
Once connected, this USB-C breakout lets you power the Pi safely and cleanly via its
USB-C port without a full USB plug or adapter.
o Recommended: You can also add heat shrink tubing around the connection to
secure it and prevent accidental shorting of your power source.
After soldering the wires into the breakout board, plug in the USB-C board into the
USB-C port of the Raspberry Pi.
Plug the battery’s output cables back into the lever wire nut and boot up the Raspberry
Pi to test power delivery.
You may get the following warning:
o
o You are free to ignore it as long as you make sure all your peripheral
components are successfully receiving enough power.
After confirming successful power delivery, power off the Pi and unplug the battery’s
output cables again from the lever wire nut.
Step 13: Solder USB-C Breakout Board to the Buck Converter Output (for the Pi)
Solder the A0 Jumper:
o On the INA260 board, locate the A0 solder jumper.
o Bridge the A0 pads using a small solder blob.
This changes the INA260’s I2C address from its default (0x40) to 0x41,
preventing any conflict with the PCA9685 (which also uses 0x40 by
default).
Install the INA260:
o Take the INA260 support bracket.
o Place it between the WM8960 Audio HAT and the Raspberry Pi’s USB-A
ports, as shown in the image.
o Use an M2.5 x 4mm screw to fasten the support bracket to the Raspberry Pi,
anchoring it between the Audio HAT and the USB-A ports.
o Align the INA260 power sensor board onto the support bracket.
o Fasten it using another M2.5 x 4mm screw, making sure it’s secure and seated
properly.
Step 14: Create and Route the I2C Wire Harness (Shared I2C Bus for Pi, INA260, and
PCA9685)
o Cut the jumper wires coming out of the INA260 to approximately 6 cm long
Strip using 22 AWG STRD about ½ an inch.
o Cut the jumper wires coming out of the PCA9685 to approximately 15 cm long
Strip using 22 AWG STRD about ½ an inch.
o Begin splicing the wires together using the correct colors by twisting the bares
wires around each other, then twisting the wire themselves (you may have to
unplug the wire from the pins) tight.
You should be able to tug on the wires without it getting loose.
o Solder the connections together.
o Using heat shrink wrap and a heat gun / lighter, shrink the insulation around the
exposed wire splice.
Connect the battery’s wires back to the corresponding lever wire nut.W
Boot up the Raspberry Pi and confirm everything is working as normal.
And attach and screw the servo horn onto the servo as such.
Otherwise, you can use the middle servo horn variant STL
without this cutout to directly attach the printed horn onto the
servo shaft, though this will wear over time.
Attach the pusher rod:
o Use a M2.5x8mm screw to secure the pusher rod to the hole in the
servo horn.
o The pusher rod should pivot and rotate freely.
o
Attach the pusher rod, suspension mounts to the axel:
o Lift the leg mounts up as shown in the image to give room to attach
the pieces.
o
o Center the pusher rod in the middle with the middle servo rested
against the case like in the image.
o
Verify servo horn angle:
o When you have the middle servo placed like above, the center of the
leg mounts should be centered on the 2 leg holes of the upper
chassis.
o
o Like this:
o
o If it doesn’t sit the in the center, please readjust the servo horn’s
angle on the servo and try again.
Make sure to route the servo/power wiring inside the upper loop of the
Vertical Servo mount.
Secure it with a M2.5x10mm screw that goes into the upper chassis.
o
o The Vertical Servo Clip (1)
o
o And the 16-channel PWM PCA9685 support bracket (2)
o
o Ensure alignment and that all screw holes line up cleanly.
Insert the right side power cables into the vertical servo clip holes.
o
Wiring should look like:
o
No more vertical servo protector
F. Leg Servos:
⚠️Important: Before securing the horn, ensure the servo is in its center position if you
haven’t already by running the following:
python3 V2_app-servotester.py
a. Select the option 1. Set all servos to preset position.
b. If the servo moved during this step, re-run the script, let it center, and then install
the horn.
Step 1: Install the Printable Servo Horns onto the Leg Rotation Servos
Locate the two leg rotation servos already mounted on either side of the main
chassis.
For each servo:
o Grab a printable leg servo horn.
o Pre-emptively screw in two M2.5x8mm screws on the two sides of the horn so
that it protrudes out 1mm out the other side (this is important for aligning the
servo horn to the leg mount later).
o Screw in an M3x12mm screw into the center of the horn pointing the other
direction.
o Align the servo horn with the servo output shaft such that:
The notch or marking on the horn is facing upward (this represents the
center position).
The horn is aligned flush against the servo body.
NOTE: Push in the servo horn into the servo shaft so that the brass
(gold) part of it is only 1.5 mm visible.
If it isn’t tightly fit inside the servo horn, it will slip out!
Screw in the M3x12mm screw into the servo shaft.
o Use two protruding M2.5x8mm screws to help align the servo horn with the
leg mount.
Fasten the servo horn onto the leg mount with those screws.
📝 Note:
These steps are symmetrical:
o You’ll repeat the exact same process on the left and right leg assemblies.
o Just mirror the orientation when switching sides.
These next steps for the legs and arm are the same for each side, just mirrored.
G.Arm Servos:
Step 1: Install MG90S Servo into the Right Main Arm Case:
o
1. Ex. From Right Leg
o Let’s begin setting things up on the right leg first!
o Slide the servo for the forearm (not the hand servo!) into the servo
socket inside the arm casing. You will likely have to disconnect and
reconnect the servo from the servo extension wire to route the wires
properly.
o
o Secure it using the small self-tapping screws that come with the
MG90S.
o
o Then pull it out from the top hole of the lower leg casing. This
ensures it routes cleanly and avoids internal obstructions.
o
o
o Insert the connector hinge to the main arm case as in the image
above.
1. There is a flat and a rounded side to this hinge. The flat side sits
on the arm case while the rounded side sits on the lower leg.
o Use a short length of filament as a hinge pin.
o Insert the filament through the small hinge hole that links the main
arm to the connector part.
1. The hinge holes are designed to have a diameter of 2.00mm,
more than enough for the 1.75mm diameter of most standard
filaments.
2. However, 3D printers tend to print holes smaller than designed
depending on the printer settings/model. If your filament cannot
fit through the holes, you can:
1. Use the Bambu Studio hole compensation and add 0.1
mm to the hole diameter incrementally until it fits.
1.
2. Otherwise, try using M2.6 self-tapping screws and then
M2.5 regular screws to open the hole until the filament
can fit all the way through in and out smoothly.
3.
o
o Trim the filament flush with both sides so it doesn't interfere with
arm motion.
o
1.
o Again, feed the wire through the same routing path used earlier.
1.
o
o You will have to slide the board under the left notch for the bracket to
fit.
Take the part labeled “lower leg lid”.
Align and bolt it down with four M2.5x8mm screws to the open section of
the leg where the buck converter is installed.
Locate the Finger 2 part of the robotic hand.
Insert a small cylindrical 8x3mm magnet into the provided cavity
(usually near the tip).
Once the magnet is in place, plug the cavity using the finger plug to
hold the magnet securely.
o You might have trouble inserting the magnet flat in the cavity. In that
case, use another magnet on the outside of the finger 2 component
and use the attracting polarity to help align it in the cavity.
Simultaneously, push the magnet in with the plug.
o
o If it is still not enough you can use a clamp to force the plug in.
o
o The blue rod in the image is the Finger2 Rod
NOTE: When aligning, make sure that the small protruding bits
of both rods around their holes are all facing the same direction.
o Do not mistake the Finger 1 and 2 rods to be identical/symmetrical,
they are not.
o
Finger 1 (NOT in blue in the above) should have a larger
protrusion at where the two rods align with their holes.
o These rods act as rotational pivots for finger articulation.
Using self-tapping screws, connect the rods with Finger 1 and 2 (with the
appropriate facing and orientation mentioned above) using M2x8mm self-
tapping screws.
o
o Do not screw them all the way in. The rods should still be able to
rotate freely.
o
o If you have used the correct finger rods with the correct facing, they
should line up nicely together one on top of the other like the
following:
o
o
o Make sure to insert the finger rods into the appropriate slot in the
forearm case!
Insert 3D printer filament into the holes:
o These act as axles/pins.
o
Again if it doesn’t fit properly, use M2.6 self-tapping screws ->
M2.5 regular screws to open up the hole.
If the rounded edges of the hinge are rough, you can use a
soldering iron to rub it smooth.
o Cut the filament so that it sits flush on both sides, providing secure
yet rotatable support for the finger mechanism.
1.
This filament should freely allow the arm to rotate but not fall out or protrude
excessively.
Step 11: Install the MG996R Servo into the Lower Leg
Position the MG996R servo inside the rectangular cutout of the lower leg, as shown
in the image.
1.
2.
3. Ex. From Right Leg
1.
Screw them both together at their most extended point with a M2.6x12mm screw.
1.
2. Don’t screw too tightly as it should be able to rotate freely to the following
position.
3.
Screw the arm shaft to the main arm case using a M2.6x12mm screw in the position of
the image below with the arm opened up.
1.
2. This arm should be able to swivel counterclockwise freely from this position.
Use the built-in notch to connect the main arm with the forearm case together.
1.
2. They should be able to rotate freely as well.
Ensure your arms are in an enclosed position:
1.
Bolt the connecting arm with the MG996R servo using an M3x8mm screw.
1.
2. If you accidentally turn the servo shaft on the servo motor, please unscrew and
reset the position with the V2-servo-tester script again.
Step 14: Secure the Internal Shaft and Close the Assembly
Before doing anything in this step, ensure that the hands/claws of TARS are fully
closed!
Connect the Finger 1 and 2 rods to the mg90s finger servo using the forearm servo
horn component as shown.
1. Use an M2.6x12mm self-tapping screw to screw in the forearm servo horn and
the Finger 1 and 2 rods together.
2. Use the small regular (not self-tapping) screw that came with the servo to
fasten the servo horn to the motor shaft.
3.
Retrieve a one-sided servo horn that comes with the servo and lay it in the forearm lid
to confirm that it fits.
1.
Using another one of the small regular screws that come with the servo, screw the
one-sided servo horn onto the servo straight vertically.
1.
2. You do not need to screw it in tight just yet, we will do that in the next step.
Place the forearm lid onto the forearm case and make sure the servo horn fits into the
slot on the case.
1.
2. Screw in the servo horn tightly.
3.
4. Screw in the forearm lid with three M2.5x6mm screws
Screw in the main arm lid with three more M2.5x6mm screws
1.
Repeat the same steps but with the left leg and everything mirrored.
On Step 5, the buck converter you will be securing is the adjustable one.
1. You will notice that the holes of the lower leg may not match your buck
converter. This is normal.
2. This buck converter can come in all shapes and sizes, so align the holes and
pick out whichever holes you will need to screw in.
You do not need to screw in all of them.
3. If you would like to use M3 screws, go ahead and screw them in as is.
4. If you would like to use M2.5 screws, you can add your M2.5 heat inserts to the
screw holes of interest and then screw them in.
5. Even one screw is enough.
On Step 13, screw the arm shaft and the connecting arm in this position:
1.
H.Final Assembly
o
Press-fit the switch until secure; it should snap or sit firmly.
Then:
o Take a short length of 1.75 mm filament.
o Insert it through the hinge holes of the access panel door and frame to act as
a hinge pin.
o Trim flush on both ends so it sits neatly without sticking out.
o
o Don’t screw in all the way.
From the rear end of the servo, slide the hull hub into place around each leg’s servo
horn:
o
You are now attaching the main side Hull pieces (arms of TARS) to the already-
mounted LDX-227 servos.
o Slide in the hull from underneath and make sure to take care of the wiring.
o
o This step is tricky because of cable routing:
18 AWG power wires should run through the center channel
underneath the servo body.
Thinner signal wires (servo, I2C, etc.) wrap around the sides of the
servo.
o Use a screwdriver to help you route the wires around.
The servo clip is a part that holds the servo securely in place from the outside of the
Hull.
o After you've inserted the Hull around the LDX-227 servo and routed all wires:
o Make sure no wires are pinched between the Hull and servo body.
o Once confirmed, place the servo clip over the servo tab area and bolt it with
M2.5x8mm screws.
o
o You may realize that the holes don’t align. Shuffle the hull underneath the servo
to properly align it.
Screw in the hull hub onto the hull with the existing screws:
Step 6: Attach the Hull Lid and Connect the Lower Leg
Place the Hull Lid on the Hull and screw it in place using M2.5x6mm screws.
o
Slide in and snap the lid of the lower leg in place:
o
Then, connect the lower leg (the limb assembly) to the Hull with two M2.5x10mm
screws:
o
Step 7: Finalize the Wiring Using the Switch and the INA260
o NOTE: The SDA, SCL pins are flipped on the Pi.
Refer to the wiring diagram.
At this point, verify:
o Speaker wires are routed to the Audio HAT.
Make sure the right and left speakers go to the appropriate right and left
channels of the Audio HAT.
o All 9 servo channels are connected to the correct extension wires (Channels 0–
8 on the PCA9685).
o Power wires (from the buck converters) are connected to or can reach:
PCA9685 (6V)
Raspberry Pi (5V via USB-C breakout)
o I2C connections between the Pi, INA260, and PCA9685 are wired correctly.
Connect the circuit to the switch:
o
o For the power terminal (power coming out from the battery):
Disconnect the battery power cable from the lever wire nut.
Strip ½ inch from battery power cable, twist the end.
Add a large heat shrink and a smaller one.
Curl around power switch terminal.
Solder on the connection.
Shrink the larger one around the terminal.
Shrink the smaller one around the larger one that is shrunk to keep it in
place.
o For the Load terminal to the INA260:
Cut a new 12cm long 18 AWG power wire
Repeat the same steps to connect to the Load terminal of the switch.
o You can test out if the switch works with a multimeter and by flipping on and off
the switch to see if the voltage changes.
o You can also now slide the door component underneath the other wires as in the
image.
Screw it in with two M2.5x4mm screws
Connect the INA260:
o
o Strip 0.5 mm off the power cable coming out of the switch and twist the ends.
o Feed it into the Vin+ screw terminal of the INA260.
o Cut a new 8 cm long 18 AWG power wire.
o Strip 0.5 mm off both the ends and twist them.
o Feed one end to the Vin- screw terminal of the INA260, and the other to the
original lever wire nut power terminal.
Through this connection setup, the INA260 can measure the current draw
of the battery and thus your battery level.
Then, attach the camera module using two M2x5mm self-tapping screws.
o Make sure it's centered and stable to avoid shaky image feed.
Use 2 short Velcro straps joined together (or 1 long one) to secure the battery to
the lower lid.
Thread the charging cable through the designated hole in the access panel door.
o
o You can screw it in through the hole to secure it.
Connect the USB-C power cable to the Pi
o
o
Lower Lid
o Use M2.5x10mm screws.
o ⚠️Be gentle! Carefully align before pressing down to avoid bending GPIO
pins or damaging the Audio HAT.
Upper Lid
o This can be screwed on once the lower lid is secured.
Bottom Lid
o Secure last, after all internal wiring and components are in place.
Double-check for any pinched wires or misaligned components before fully tightening
all screws.
Attach the Lower Chassis and Foot Pad
Finally, bolt down the lower chassis base part (the flat panel that sits below the robot)
together with the chassis foot pad, which helps TARS stand evenly.
o
Use four M2.5x6mm screws to secure the parts to the bottom of the robot’s main
frame.
Make sure there’s no wobble or overhang, and everything is flush and sturdy.
Using eight M2.5x6mm screws, screw the left and right footpads to the left and right
legs as well.
o
If your screen is not displaying the correct orientation (common in this build), fix it through the
Raspberry Pi’s graphical config:
1. Open:
Raspberry Pi Menu → Preferences → Screen Configuration
2. In the menu bar:
Screens → DSI-1 (or DSI-0 depending on your screen) → Orientation → Right
3. Apply the change and reboot if prompted. This rotates the screen 90° clockwise,
making the image appear upright in your TARS configuration.