PhysiClaw logoPhysiClaw.ai
PhysiClaw.ai, fully assembled

PhysiClaw Assembly Manual

We build agents that interact with you in the real world

VERSION 2026-08-05
TABLE OF CONTENTSPhysiClaw.ai
22
INTRODUCTIONPhysiClaw.ai

PhysiClaw

PhysiClaw is a physically-interactive agent: it operates a phone by tapping on its screen, so it needs hardware to carry out those actions. This manual covers the assembly of that hardware. It has three parts: a CoreXY stage that moves across the plane (X/Y positioning), a touch mechanism that presses the screen along the Z axis, and a camera that watches the screen.

Before you begin

Before you start, read this manual all the way through, and check the parts you've bought against the bill of materials to make sure nothing is missing. Assembling a PhysiClaw takes about two to three hours, so set aside enough time.

Reporting an issue

Should you find an error in this manual or have a suggestion for an improvement, please consider opening an issue on GitHub (github.com/physiclaw/PhysiClaw/issues). When raising an issue please include the relevant page numbers and a short description; annotated screenshots are also very welcome. We periodically update the manual based on the feedback we get.

33
HARDWARE — REFERENCEPhysiClaw.ai
Socket head cap screw (SHCS)

Socket head cap screw (SHCS)

Cylindrical head, hex drive.

ISO 4762 / DIN 912

Button head cap screw (BHCS)

Button head cap screw (BHCS)

Domed head, hex drive. Used on surfaces where a lower profile matters but a flush head isn't required.

ISO 7380-1

Flat head cap screw (FHCS)

Flat head cap screw (FHCS)

90° countersunk head, hex drive. Sits flush with the surface, used where nothing can protrude above the part.

ISO 10642 / DIN 7991

Shim

Shim

5×8×0.5 shim. Stacked under each idler to adjust axial play.

5×8×0.5

Hex nut

Hex nut

Pairs with a bolt to clamp parts firmly together.

ISO 4032 / DIN 934

Square nut

Square nut

A square nut sits in a pocket of the printed part, letting you tighten a bolt into it.

DIN 557

44
HARDWARE — REFERENCEPhysiClaw.ai
Standard T-nut (slide-in)

Standard T-nut (slide-in)

Slides into the slot from the open end of the extrusion. As you tighten the screw, the nut is pulled up and catches on the inner edges of the slot opening.

Hammer T-nut (drop-in)

Hammer T-nut (drop-in)

Drops flat into a slot anywhere along its length, then a quarter turn locks it.

GT2 drive pulley

GT2 drive pulley

20-tooth toothed pulley. One sits on each stepper shaft, locked to the shaft's D-flat with a set screw; it drives the GT2 belt.

GT2 · 20T · 5 mm bore · 6 mm belt

GT2 idler (toothed)

GT2 idler (toothed)

Toothed turning wheel that meshes with the toothed side of the belt as it spins.

GT2 · 20T · 5 mm bore · 6 mm belt

GT2 idler (smooth)

GT2 idler (smooth)

Un-toothed turning wheel that rides on the belt's flat back as it spins.

5 mm bore · 6 mm belt

Flat bracket

Flat bracket

Two-hole plate with M5 holes 20 mm apart.

55
HARDWARE — TOOLSPhysiClaw.ai
fastener_50_hex_driver assembled

2 mm & 3 mm hex drivers

The 2 mm and 3 mm hex drivers see the most use in this build. We recommend a quality driver in each size.

Driver sizes

These cover the socket screws used in this build: 2 mm for M3 button/flat head screws, 3 mm for M5 button/flat head screws (BHCS/FHCS), and 5 mm for M6 socket head cap screws (SHCS).

66
3D PRINTED PARTSPhysiClaw.ai
77
PhysiClaw.ai
SECTION 01

Frame

Four 2040 aluminum extrusions form the base frame, and every other part mounts onto it. Make sure all four corners are square. This is the foundation for accurate motion later on.

88
FRAMEframe_10PhysiClaw.ai
frame_10_extrusion_tnut exploded

Preload the T-nuts

Slide every T-nut into its slot before squaring the frame.

Bill of materials
ComponentSpecQty
Extrusion 2040345 mm · CB2
Extrusion 2040190 mm2
T-nutSlide-In M58
99
FRAMEframe_20PhysiClaw.ai
frame_20_SHCS exploded

Direction Convention

Top, bottom, left, and right throughout this manual refer to this view.

Mind the placement

The short extrusion carrying the four slide-in T-nuts goes on top.

Counterbores face out

The counterbored ends of the long extrusions face outboard, each counterbore aligned with the short extrusion's end bore.

Square before final tightening

Each M6×20 SHCS drops through the long's counterbore into the short's end hole. Run all 8 in snug, square the frame on a flat surface, then tighten.

Bill of materials
ComponentSpecQty
SHCSM6×208
1010
FRAMEframe_30 · frame_31PhysiClaw.ai
frame_31_bracket assembled
frame_30_bracket_tnut exploded

Reinforce the frame

One joining plate reinforces each corner. Run an M5×10 BHCS through the plate, start a drop-in T-nut on it loosely, drop the assembly into the closed frame, then tighten.

Bill of materials
ComponentSpecQty
Flat bracket40 × 18 × 4 mm4
BHCSM5×108
T-nutDrop-In M58
1111
FRAMEframe_40 · frame_41PhysiClaw.ai
frame_41_bumper assembled
frame_40_bumper_tnut exploded

Feet point down

The bumpers are the machine's feet, mounted under the four corners of the frame.

Use the screws that come with the bumpers

If the bumpers you bought came with their own screws, use those. They're the right size.

Bill of materials
ComponentSpecQty
BumperØ20 × 22 mm4
BHCSM5×164
T-nutDrop-In M54
1212
PhysiClaw.ai
SECTION 02

Idler

Install one idler assembly at each of the four corners of the frame, all using smooth idlers. They roll against the flat back side of the GT2 belt, redirecting it around each corner.

1313
IDLERidler_10PhysiClaw.ai
idler_10_lu exploded
idler_10_lu assembled

Center hardware first

Drop the center M5 square nut and its M5×10 BHCS into the middle counterbore hole first. The idler stacks block access later.

Confirm the idler spins freely

Once installed, check that each idler turns freely.

Flat face toward the screw

Seat each square nut with its flat face pointing toward its screw.

Side pocket hard to seat?

If a side square nut won't drop into place, clear the pocket with a small screwdriver or a pin first. Prints can leave residue in the slot.

Bill of materials
ComponentSpecQty
Idler mountSLS/MJF 3D Print1
IdlerGT2 20T, smooth3
BHCSM5×101
Shoulder screwØ5×10×M41
Shoulder screwØ5×20×M41
Square nutM42
Square nutM51
Shim5×8×0.53
1414
IDLERidler_12PhysiClaw.ai
idler_12_lu exploded
idler_12_lu assembled

Two ways to the frame

The block locks to the frame in two places: the middle M5 screw catches a slide-in T-nut in the extrusion slot, and the bracket bridges block and frame. On the bracket, the longer M5×12 BHCS threads into the block's captive square nut; the M5×10 catches the T-nut in the frame slot.

2 mm gap to the corner plate

Position the block so it sits 2 mm clear of the frame-corner joining plate.

Bill of materials
ComponentSpecQty
Flat bracket40 × 18 × 4 mm1
BHCSM5×101
BHCSM5×121
T-nutDrop-In M51
1515
IDLERidler_20PhysiClaw.ai
idler_20_ru exploded
idler_20_ru assembled

Each idler stack is 18 mm

Idler 8.5 mm, spacer 9 mm, shim 0.5 mm. Use shims and spacers to bring every idler stack to a uniform 18 mm.

Spacer must total 9 mm

The spacer is 9 mm tall. If you can't buy that exact height, stack shorter spacers to total 9 mm.

Bill of materials
ComponentSpecQty
Idler mountSLS/MJF 3D Print1
IdlerGT2 20T, smooth3
BHCSM5×101
Shoulder screwØ5×20×M42
Square nutM42
Square nutM51
Spacer5×10×91
Shim5×8×0.53
1616
IDLERidler_22PhysiClaw.ai
idler_22_ru exploded
idler_22_ru assembled

Long screw into the block

Same screw split as the left bracket: the M5×12 BHCS threads into the block's captive square nut, the M5×10 into the frame-slot T-nut.

Match the left block's gap

Set the right block the same 2 mm clear of the frame-corner plate as the left block. Keep both gaps equal so the idler stations stay symmetric.

Bill of materials
ComponentSpecQty
Flat bracket40 × 18 × 4 mm1
BHCSM5×101
BHCSM5×121
T-nutDrop-In M51
1717
IDLERidler_30PhysiClaw.ai
idler_30_ld exploded
idler_30_ld assembled

Motor A idler — sits lower

This idler carries Motor A's belt. With no spacer, it rides on the lower belt plane.

Bill of materials
ComponentSpecQty
Idler mountSLS/MJF 3D Print1
IdlerGT2 20T, smooth1
BHCSM5×101
Shoulder screwØ5×10×M41
Square nutM41
Shim5×8×0.51
1818
IDLERidler_31PhysiClaw.ai
idler_31_ld exploded
idler_31_ld assembled

2 mm gap to the corner plate

Set this block 2 mm clear of the frame-corner plate, the same gap used at every other idler station.

1919
IDLERidler_40PhysiClaw.ai
idler_40_rd exploded
idler_40_rd assembled

Motor B idler — sits higher

This idler carries Motor B's belt. The 9 mm spacer lifts it onto the upper belt plane.

Bill of materials
ComponentSpecQty
Idler mountSLS/MJF 3D Print1
IdlerGT2 20T, smooth1
BHCSM5×101
Shoulder screwØ5×20×M41
Square nutM41
Spacer5×10×91
Shim5×8×0.51
2020
IDLERidler_41PhysiClaw.ai
idler_41_rd exploded
idler_41_rd assembled

Match the left block's gap

Set the right block the same 2 mm clear of the frame-corner plate as the left block, so the lower idler stations stay symmetric.

2121
PhysiClaw.ai
SECTION 03

Motor

Two NEMA 17 stepper motors mount on the top extrusions of the frame, one on each side. They drive the CoreXY belts, which move the stylus carriage.

2222
MOTORmotor_10PhysiClaw.ai
motor_10_bracket exploded
motor_10_bracket assembled

Note the motor wire direction

Check which way the motor's wires face and match the orientation shown. That orientation sets the wiring clearance later.

Only the spacer height matters

Motor A's spacer must be 8 mm tall.

Tighten in a cross pattern

Run all four motor screws in finger-tight first, then tighten opposite corners in pairs. This pulls the motor flat against the bracket instead of tilting it to one side.

Bill of materials
ComponentSpecQty
Motor bracket60×42×31
MotorNEMA 17 stepper, 38 mm height1
BHCSM3×64
BHCSM5×162
Spacer6×12×82
2323
MOTORmotor_11PhysiClaw.ai
motor_11_frame exploded
motor_11_frame assembled

Motor A

We refer to the left motor as Motor A.

Note the wire direction

Confirm the motor's wires face the direction shown before fixing the bracket.

Leave the bolts loose

Don't fully tighten the motor mount yet. You'll slide it later to tension the belt.

2424
MOTORmotor_20PhysiClaw.ai
motor_20_bracket exploded
motor_20_bracket assembled

A taller spacer here

Motor B's spacer must be 12 mm tall.

Right motor — mirror image

Built like the left motor, but mirrored: the cable connector faces right.

Bill of materials
ComponentSpecQty
Motor bracket60×42×31
MotorNEMA 17 stepper, 38 mm height1
BHCSM3×64
BHCSM5×202
Spacer6×12×122
2525
MOTORmotor_21PhysiClaw.ai
motor_21_frame exploded
motor_21_frame assembled

Motor B

We refer to the right motor as Motor B.

Mirror

This is the right motor, a mirror of the left. The cable connector faces right.

Leave the bolts loose

Snug only. Final torque comes after belt tensioning.

2626
MOTORmotor_30PhysiClaw.ai
motor_30_pulley exploded
motor_30_pulley assembled

Two heights

The A and B belts sit at different heights: Motor A's pulley (left) is coplanar with the lower idlers, Motor B's pulley (right) coplanar with the upper idlers. Slide each pulley along its motor shaft into position, then lock it down with the set screw.

Set screws

Tighten one set screw onto the shaft's D-flat first, then tighten the other.

Threadlocker

Apply threadlocker to every set screw. A loose pulley throws off motion accuracy and is the single most common issue users report. Before you do, though, make sure the pulleys and idlers are aligned. You can also hold off on the threadlocker and apply it after the belts are installed.

Bill of materials
ComponentSpecQty
PulleyGT2 20T, 6 mm2
2727
PhysiClaw.ai
SECTION 04

Linear motion

PhysiClaw's X/Y motion uses a CoreXY arrangement, guided by three MGN9H linear rails: two run left and right as the Y axis, and one spans between them as the X axis. Each of the two points where the X axis meets the Y rails carries two idler assemblies.

2828
LINEAR MOTIONlinear_10PhysiClaw.ai
linear_10_y exploded
linear_10_y assembled

Build two Y rails

The Y axis uses two identical rails. Assemble both the same way.

Clean and grease the rails

MGN9H rails arrive coated in shipping oil. Wipe it off and pack the carriage with fresh grease before mounting. That's what gives smooth, long-lasting motion. Prep every rail the same way.

Let the T-nuts hang

Thread an M3×10 FHCS into every other hole and let its drop-in T-nut dangle on the screw tip. Lower the whole rail onto the extrusion slot, then tighten to draw the nuts up snug.

Mind the carriage

The carriage slides off the rail end with little effort, and a dropped one spills its ball bearings, ruining it. Keep it on the rail, and never swap carriages between rails.

Bill of materials
ComponentSpecQty
Linear railMGN9H, 240 mm2
FHCSM3×1012
T-nutDrop-In M312
2929
LINEAR MOTIONlinear_11PhysiClaw.ai
linear_11_y exploded

Install the rails

Adjust the idler mounts away from the motor so both ends of each Y rail sit snug against them.

Fix the Y rails, but not tight

Hold both Y rails in place with the bolts snug, not fully tightened. Only once the X axis is installed and travels smoothly should you torque them down.

Tighten from the middle out

When you do tighten, start at the center bolt and work outward so the rail beds down flush against the extrusion.

3030
LINEAR MOTIONlinear_20PhysiClaw.ai
linear_20_joint exploded
linear_20_joint assembled

Straight side toward the motor

The left and right joints are mirrored. Mount each one with its straight side facing the motor.

Tighten in a cross pattern

Thread all four screws in first, then tighten opposite corners in pairs. This seats the joint flat on the slider.

Bill of materials
ComponentSpecQty
XY joint (left)SLS/MJF 3D Print1
XY joint (right)SLS/MJF 3D Print1
FHCSM3×108
3131
LINEAR MOTIONlinear_30PhysiClaw.ai
linear_30_x exploded
linear_30_x assembled

Preload the X-beam T-nuts

Slide the two M5 T-nuts in, one from each end.

Bill of materials
ComponentSpecQty
Extrusion 1020185 mm1
T-nutSlide-In M52
3232
LINEAR MOTIONlinear_31PhysiClaw.ai
linear_31_x exploded

Check the X beam slides smoothly

The X beam should glide freely along the Y rails. If it binds, realign the Y rails until it runs smoothly, then tighten them from the center bolt outward.

Be patient

Don't expect to get it in one pass. Snug a few screws, slide the X beam to feel the resistance, then nudge the Y rails and try again. It can take a few minutes of back-and-forth before the beam glides smoothly.

Bill of materials
ComponentSpecQty
FHCSM5×122
3333
LINEAR MOTIONlinear_32PhysiClaw.ai
linear_32_x exploded
linear_32_x assembled

X rail

Mount this rail just like the Y rails: let the T-nuts hang loose, lower the rail into the slot, then tighten.

Bill of materials
ComponentSpecQty
Linear railMGN9H, 150 mm1
FHCSM3×104
T-nutDrop-In M34
3434
LINEAR MOTIONlinear_33PhysiClaw.ai
linear_33_x exploded

Check both axes move freely

The X rail is now mounted on the X beam. Confirm its carriage slides smoothly along the X rail, and that the whole beam still travels freely along the Y rails. If either binds, realign that rail and retighten from the center out.

3535
LINEAR MOTIONlinear_40PhysiClaw.ai
linear_40_idler_lj1 exploded
linear_40_idler_lj1 assembled

Motor B idler — sits higher

This idler carries Motor B's belt on the left joint. The 9 mm spacer lifts it above the others, keeping its belt on the upper plane.

Bill of materials
ComponentSpecQty
IdlerGT2 20T, smooth1
Shoulder screwØ5×20×M41
Spacer5×10×91
Shim5×8×0.51
3636
LINEAR MOTIONlinear_41PhysiClaw.ai
linear_41_idler_lj1 exploded
linear_41_idler_lj1 assembled

Use the correct hole

The idler mounts in the top hole of the left joint. Take care not to use the wrong one.

Bill of materials
ComponentSpecQty
Square nutM41
3737
LINEAR MOTIONlinear_42PhysiClaw.ai
linear_42_idler_lj2 exploded
linear_42_idler_lj2 assembled

Motor A idler — sits lower

Use the toothed idler here, not the smooth one.

It carries Motor A's belt and, with no spacer, rides on the lower belt plane.

Bill of materials
ComponentSpecQty
IdlerGT2 20T, toothed1
Shoulder screwØ5×10×M41
Shim5×8×0.51
3838
LINEAR MOTIONlinear_43PhysiClaw.ai
linear_43_idler_lj2 exploded
linear_43_idler_lj2 assembled

Install in the right position

Before tightening, confirm the idler is seated in the correct position on the joint.

Bill of materials
ComponentSpecQty
Square nutM41
3939
LINEAR MOTIONlinear_44PhysiClaw.ai
linear_44_idler_rj1 exploded
linear_44_idler_rj1 assembled

Motor A idler — sits lower

This idler carries Motor A's belt on the right joint, in the top hole. With no spacer, it rides on the lower belt plane.

Bill of materials
ComponentSpecQty
IdlerGT2 20T, smooth1
Shoulder screwØ5×10×M41
Shim5×8×0.51
4040
LINEAR MOTIONlinear_45PhysiClaw.ai
linear_45_idler_rj1 exploded
linear_45_idler_rj1 assembled

Install in the right position

Before tightening, confirm the idler is seated in the correct position on the joint.

Bill of materials
ComponentSpecQty
Square nutM41
4141
LINEAR MOTIONlinear_46PhysiClaw.ai
linear_46_idler_rj2 exploded
linear_46_idler_rj2 assembled

Motor B idler — sits higher

Use the toothed idler here, not the smooth one.

It carries Motor B's belt and, with the 9 mm spacer, rides on the upper belt plane.

Bill of materials
ComponentSpecQty
IdlerGT2 20T, toothed1
Shoulder screwØ5×20×M41
Spacer5×10×91
Shim5×8×0.51
4242
LINEAR MOTIONlinear_47PhysiClaw.ai
linear_47_idler_rj2 exploded
linear_47_idler_rj2 assembled

Check all four idlers

All four idlers are now mounted on the XY joints. Recheck that each one sits in its correct location.

Bill of materials
ComponentSpecQty
Square nutM41
4343
PhysiClaw.ai
SECTION 05

Belt path

PhysiClaw's CoreXY drive runs on two GT2 belts, A and B, set on two stacked planes so they never cross. The two belts must be tensioned equally to keep the motion accurate.

4444
BELT PATHbelt_10 · belt_11PhysiClaw.ai
belt_10_motor_a exploded
belt_11_clamp_show assembled

Install belt A

The Motor A belt is a single open length with both ends clamped to the X carriage. It must stay flat in one plane and never twist along the way. The teeth grip the toothed pulleys; the smooth back rides on the smooth idlers.

The clamp self-locks

Feed each belt end into the clamp's bottom slot, loop it around the post, and fold it back against itself so the teeth mesh. That teeth-on-teeth grip holds the belt with no extra fasteners.

Tension by sliding the motor

Leave Motor A's two M5 screws loose, clamp both belt ends into the clamp, then slide the motor to pull the belt tight.

Bill of materials
ComponentSpecQty
Timing beltGT2-6 mm, open-ended1
4545
BELT PATHbelt_20PhysiClaw.ai
belt_20_clamp exploded
belt_20_clamp assembled

Clamp the belt before mounting

Make sure the Motor A belt is seated in the clamp's bottom slot before you fix the clamp to the X carriage.

Match the Motor B belt length

Before fitting the Motor A belt into its clamp, cut the Motor B belt to match it. Both must be the same length.

Bill of materials
ComponentSpecQty
Belt clampSLS/MJF 3D Print1
BHCSM3×84
4646
BELT PATHbelt_30 · belt_11PhysiClaw.ai
belt_30_motor_b exploded
belt_11_clamp_show assembled

Install belt B

Route the Motor B belt on the upper idler plane. It must not cross belt A. Clamp both ends to the X carriage, the same way as belt A.

Check the belts

With both belts installed, push the carriage by hand through its full travel in every direction. It should move smoothly with the same, even resistance throughout. That resistance is just the motors. Confirm there's no sticking, no interference, no twisted belts, and no odd noises, with the two belts on their separate planes.

Threadlocker

If the pulley set screws have no threadlocker yet, apply it now that the belts run smoothly.

4747
BELT PATHbelt_30PhysiClaw.ai
belt_30_motor_b assembled
75 Hz

Belt tension

Equal tension on both belts is essential for a CoreXY motion system. Even a slight difference between the two will skew the gantry's motion. You can adjust a motor's position to fine-tune the tension of its belt.

Pluck the belts

For a quick check, move the X carriage fully to the motor side and pluck the indicated belts with a finger. The two should feel and sound about the same. Matching pitch means roughly equal tension.

75 Hz at 220 mm

For a precise check, measure each belt with a tuning app on your phone while the X carriage is parked at the marked position. Pluck the belts and aim for 75 Hz. If both read the same frequency, the tension is correct.

4848
PhysiClaw.ai
SECTION 06

Touch end

Mount the capacitive stylus tip onto the push-pull solenoid, then install the two together onto the X carriage.

4949
TOUCH ENDtapz_10PhysiClaw.ai
tapz_10_solenoid_tip exploded
tapz_10_solenoid_tip assembled

Fit the stylus tip

The solenoid ships with a nut on its bottom end. Remove that nut, then thread the stylus tip on in its place.

Solenoid mount holes

Two M3 holes, 15 mm apart.

Bill of materials
ComponentSpecQty
Solenoid12 V, 2×M3, 15 mm pitch1
Stylus tipConductive fabric tip, Ø7 mm1
5050
TOUCH ENDtapz_11PhysiClaw.ai
tapz_11_solenoid_attach exploded
tapz_11_solenoid_attach assembled

10 hole pairs for height tuning

The mount has 10 pairs of holes, spaced 1 mm apart. Pick a pair now, and you can later raise or lower the stylus in 1 mm steps.

Route the power leads

As indicated, feed the solenoid's +/− leads into the rectangular hole on the mount side, then run them up and out through the rectangular hole at the top.

Ground the solenoid

Clamp the ground wire's bare copper between the solenoid housing and the mount, then tighten a screw to pin it. This grounds the solenoid. Run the ground wire out through the other rectangular hole below to join the power leads.

Bill of materials
ComponentSpecQty
Solenoid mountSLS/MJF 3D Print1
BHCSM3×62
5151
TOUCH ENDtapz_20PhysiClaw.ai
tapz_20_solenoid_mount exploded
tapz_20_solenoid_mount assembled

Mount the solenoid to the clamp

Six screws hold the solenoid assembly to the clamp. To adjust the stylus height later, undo them and refit at a different hole pair.

Bill of materials
ComponentSpecQty
BHCSM3×84
FHCSM3×102
Square nutM36
5252
PhysiClaw.ai
SECTION 07

Phone bed

Two cross-beams mount under the frame and carry the printed phone bed. The phone lies in the bed screen-up, its top-left corner seated against the bed's corner, level under the stylus.

5353
PHONE BEDphone_10PhysiClaw.ai
phone_10_extrusion exploded
phone_10_extrusion assembled

Make two

You need two identical cross-beams for the bed.

Bill of materials
ComponentSpecQty
Extrusion 1020230 mm, M5 end holes2
BHCSM5×164
T-nutDrop-In M54
5454
PHONE BEDphone_20PhysiClaw.ai
phone_20_bed_tnut exploded
phone_20_bed_tnut assembled
Bill of materials
ComponentSpecQty
Phone bedSLS/MJF 3D Print1
FHCSM3×84
T-nutDrop-In M34
5555
PHONE BEDphone_30PhysiClaw.ai
phone_30_bed_extrusion assembled

Seat the bed on the beams

Lay the two cross-beams parallel, slotted faces up, then lower the bed's hanging T-nuts into the slots and tighten.

5656
PHONE BEDphone_40PhysiClaw.ai
phone_40_bed_frame assembled

Install the phone bed

Stand the frame on end first. It's far easier to work vertically. Then slide each beam's T-nuts into the slots on the frame's underside.

Position the phone

Place a phone on the bed, pushed into the top-left corner. Move the X carriage around and check the stylus tip can reach every part of the screen.

Set the solenoid height

Set the solenoid's mounting height so the stylus tip just makes stable contact with the screen. Too low, and the solenoid can't pull in fully: the magnetic force is then too weak to hold the tip down, so the tip springs back and both long-press and swipe fail. Too high, and the tip can't reach the screen or the contact patch is too small. Fine-tune until the tip makes stable contact with the screen.

Keep the screen flat

The rear camera bump lifts one corner, so the phone won't lie flat. Slip a thin shim or a few sheets of paper under the low edge until the screen is level and facing straight up. Make sure the phone can't rock or shift when the stylus taps. Any tilt or wobble can make it miss.

5757
PhysiClaw.ai
SECTION 08

Control board

The control board mounts at the front of the frame. The solenoid's wires are spiral-wrapped to a Teflon tube that stiffens the bundle so it holds its shape, clear of the motors and belts. The tube anchors to a frame-mounted holder and to the carriage.

5858
CONTROL BOARDboard_10PhysiClaw.ai
board_10_holder_tnut exploded
board_10_holder_tnut assembled

Fit the T-nuts

Leave them loose for the next step.

Bill of materials
ComponentSpecQty
Control board holderSLS/MJF 3D Print1
FHCSM5×122
T-nutDrop-In M52
5959
CONTROL BOARDboard_20PhysiClaw.ai
board_20_frame assembled
board_20_frame assembled

Mount the control board holder

Mount it on the top extrusion's outer face.

6060
CONTROL BOARDboard_30PhysiClaw.ai
board_30_pcb exploded
board_30_pcb assembled

Fasten the control board

Four screw–nut pairs. The lower two nuts are obscured and not drawn.

Bill of materials
ComponentSpecQty
Control boardMKS DLC32 V2.11
BHCSM3×104
Square nutM34
6161
CONTROL BOARDboard_31PhysiClaw.ai
board_31_tube_tnut exploded
board_31_tube_tnut assembled

Fit the T-nuts

Two M5 FHCS into hammer T-nuts. Leave them loose for the next step.

Bill of materials
ComponentSpecQty
Tube holderSLS/MJF 3D Print1
FHCSM5×122
T-nutDrop-In M52
6262
CONTROL BOARDboard_32PhysiClaw.ai
board_32_tube_holder assembled
board_32_tube_holder assembled

Mount the tube holder

Mount it on the top extrusion beside the control board. Its 4 mm socket anchors the fixed end of the Teflon tube.

6363
CONTROL BOARDboard_40PhysiClaw.ai
board_40_teflon assembled

Rough length

Make the tube about 400 mm, long enough to reach from the tube holder to the X carriage at its farthest position.

Anchor the solenoid leads

Cable-tie the solenoid leads to the tube holder, so the solenoid's travel can't shake the wire at the control-board terminals. Constant shaking works the contact loose, and the solenoid stops tapping the screen.

PTFE vs FEP

Either tube works here: PTFE (milky white) or FEP (clear). The Ø4 tube's stiffness is enough to hold the wire bundle's shape.

Spiral-wrap the tube

Spiral-wrap the solenoid wires to the Teflon tube along its length. The wires don't go inside. The tube just stiffens the bundle so it holds a clear path past the belts and motors.

Bill of materials
ComponentSpecQty
Teflon tubeØ4/2, 400 mm1
Spiral wrapØ4, ~400 mm1
6464
PhysiClaw.ai
SECTION 09

Camera

The camera is mounted on the right side of the frame, facing the phone screen.

6565
CAMERAcamera_10PhysiClaw.ai
camera_10_bracket exploded
camera_10_bracket assembled

1/4-20, not metric

The socket screw and hex nut that the gooseneck mounts on are 1/4-20, the imperial tripod thread (≈ 6.35 mm). Don't substitute an M6.

Imperial Tools

SHCS 1/4-20 takes a 3/16" hex key; hex nut 1/4-20 takes a 7/16" (or metric 11mm) open-end wrench. Needle-nose pliers you already have will also do the job. There's no need to buy tools just for this.

Bill of materials
ComponentSpecQty
Corner bracket2ר6.5 mm1
BHCSM5×101
T-nutDrop-In M51
SHCS1/4-20×16 (imperial)1
Hex nut1/4-20 (imperial)1
6666
CAMERAcamera_20PhysiClaw.ai
camera_20_gooseneck exploded
camera_20_gooseneck assembled

Thread on the gooseneck

Spin the gooseneck's female end onto the stud, snug against the hex nut. The free male end takes the camera next.

Bill of materials
ComponentSpecQty
GooseneckØ10×300, 1/4-20 M/F1
6767
CAMERAcamera_30PhysiClaw.ai
camera_30_mount exploded
camera_30_mount assembled

Thread on the camera

Thread the camera's 1/4-20 female socket onto the gooseneck's male stud until it bottoms on the stud collar. The camera now hangs off the neck tip.

Bill of materials
ComponentSpecQty
Camera4K HD, autofocus1
6868
CAMERAcamera_40PhysiClaw.ai
camera_40_frame assembled

Use the lower slot

Mount the corner bracket on the lower slot of the right extrusion's outer face.

Orient the camera

Bend the gooseneck so the camera points squarely at the phone screen, and align the sensor's long edge with the phone's long edge.

Lock it down

Make sure the camera is held firm. It shouldn't drift or wobble.

Route the USB cable

Secure the camera's USB cable along the gooseneck to keep it clear of the belt.

6969
PhysiClaw.ai
SECTION 10

Wiring

Connect the control board's stepper driver outputs to the motors. Wire the solenoid to the spindle output, and ground it.

7070
WIRINGwire_10PhysiClaw.ai
wire_10_tmc2209 exploded
wire_10_tmc2209 assembled

Power off first

Never plug in or remove a driver while the board is powered.

Mind the orientation

Match each driver's pin labels to the board silkscreen before pressing it home. A reversed TMC2209 can burn out on power-up.

Rule of thumb

Colored to colored, black to black.

Heatsink

TMC2209 driver modules typically include a heatsink that can be stuck onto the top of the driver chip.

Bill of materials
ComponentSpecQty
Motor driverTMC22092
7171
WIRINGwire_10PhysiClaw.ai
wire_10_tmc2209 assembled
camera_40_frame assembled
Motor B (X)
Motor A (Y1)
Solenoid (spindle)
Power (DC in)
USB Serial Port
Motor A
Motor B

Connections

The board uses standard GRBL axis outputs, remapped as follows: the X-axis motor driver drives Motor B, the Y1-axis motor driver drives Motor A, and the Spindle output drives the solenoid (in place of a spindle).

No polarity

The Spindle output (to the solenoid) is not polarity-sensitive. Either lead can go to either terminal.

Motor cable connectors

Motor side: 6-pin PH2.0 (2.0 mm pitch), with two pins empty and only four used. Board side: 4-pin XH2.54 (2.54 mm pitch).

Bill of materials
ComponentSpecQty
Power adapter12 V 2 A1
Motor cableXH2.542
Data cableUSB serial1
7272
WIRINGwire_splicePhysiClaw.ai
wire splice

Extend the leads

The solenoid's stock leads don't reach the control board. Splice extra hookup wire onto both the 12 V and GND leads.

Keep the stock leads under 50 mm

Cut the solenoid's stock leads back to 50 mm or less before splicing, so the joints sit clear of where the cable bends most. A joint that flexes with every gesture fatigues and snaps.

Stagger the splices

Solder each joint and cover it with heat-shrink. Offset the two splices about 10 mm so the insulated joints don't sit side by side.

Bill of materials
ComponentSpecQty
Lead wire0.3 mm²1
7373
WIRINGtapz_10PhysiClaw.ai
tapz_10_solenoid_tip assembled

Ground the stylus

The stylus rides on the solenoid's iron core, and the core is tied to the housing through the metal return spring, so grounding the housing grounds the core, and the tip with it. Give it a real ground reference. Do not use the control board's GND.

Why it matters

A capacitive screen senses a touch through capacitive coupling to ground. A finger works because the body is a large conductor tied to earth; the arm's stylus couples to earth too weakly, so a tap shifts the screen's charge distribution only slightly, and the phone registers the touch unreliably. Tie the stylus to a solid ground to restore that coupling and steady the touch.

How to ground it

Connect the housing to the power supply's common ground. The simplest option is to clip the wire to bare metal on a desktop PC chassis that is grounded through a three-prong outlet. The chassis reaches earth through the mains, giving a stable reference.

Three wires

Three wires run from the solenoid: positive (+), negative (−), and ground. Use spiral wrap to bind all three wires together with the Teflon tube into one bundle, and run it up to the control board holder, then connect + and − to the control board's Spindle terminal and the ground wire to the power supply's common ground.

Warning

Never put the ground wire into a wall socket. Mains voltage (220 V/120 V) is lethal. Touching the live terminal instead of earth can cause a fatal shock and instantly destroy your phone and equipment. Connect only to a verified ground point.

7474
PhysiClaw.ai
SECTION 11

Bill of materials

This is the complete parts list for the whole machine. Use it to gather everything before you start assembling.

7575
Bill of materials11 — BOMPhysiClaw.ai
ClassComponentSpecQtyApplication
FrameEuropean Standard Anodized Black Aluminum Profile Extrusion 2040 T SlotLength 345 mm, counterbored 10 mm from each end on the 40 mm-wide face for M6 SHCS2Frame side rails
Length 190 mm, both ends tapped M62Frame end rails
European Standard Aluminum Profile Extrusion 1020Length 185 mm1Gantry X beam
Length 230 mm, M5 through-hole 10 mm from each end2Phone bed support
Custom parts3D printed partsSelective Laser Sintering (SLS) or Multi Jet Fusion (MJF), PA12 nylon (or equivalent), black11Idler mount (4 pc), XY joint (left), XY joint (right), Belt clamp, Solenoid mount, Phone bed, Control board holder, Tube holder
Linear guideMGN9H railRail length 240 mm2Y-axis rails
Rail length 150 mm1X-axis rail
MGN9H carriageH-type long carriage, 4×M3, 15 × 16 mm mounting hole pitch3One per rail
Motion componentsPulleyGT2 20T, 5 mm bore, 6 mm width2Motor drive pulleys
IdlerGT2 20T smooth, 5 mm bore, 6 mm width10Redirect the CoreXY belt
GT2 20T toothed, 5 mm bore, 6 mm width2Redirect the CoreXY belt
Timing beltGT2, 6 mm width, 5 m/roll1CoreXY belt
7676
Bill of materials (cont.)11 — BOMPhysiClaw.ai
ClassComponentSpecQtyApplication
ElectronicsControl boardMKS DLC32 V2.1 (incl. USB cable)1Main controller
Stepper driverTMC22092Motor drivers
Power supply12 V 2 A adapter, 5.5×2.1 mm barrel plug1System power
Camera4K HD USB webcam, autofocus1Overhead phone-screen view
Wiring / CablesMotor cableXH2.54, 4-pin, 200 mm2Stepper motor → control board
Lead wire0.3 mm² stranded flexible wire, pure copper core, 2 m1Solenoid GND + lead ext.
ActuatorsStepper motorNEMA 17, 38 or 40 mm height2Drive motors
Solenoid12 V, 0.8 A, 10 mm stroke, 0.2–6 N push-pull, 2×M3 mounts, 15 mm pitch1Drives the stylus tip to tap
HardwareFlat bracket40 × 18 × 4 mm (L×W×T), 20 mm hole pitch, M5 holes6Frame & idler joints
Motor bracket60 × 42 × 3 mm (L×W×T)2Motor mounts
Corner bracket2-hole right-angle bracket, 26 mm long, 30 mm leg, 2ר6.5 holes1Camera arm mount
BumperCylindrical, 20 mm diameter, 22 mm height, incl. machine screw4Frame feet
Stylus tipM3 female thread, Ø7 mm fabric tip, Ø8.5 mm OD, 12.5 mm height1Screen-tapping tip
Teflon tube2 mm ID, 4 mm OD, 1 m, PTFE or FEP1Backbone for the solenoid wire so the run holds its shape
Spiral wrapØ4 mm, ~0.5 m1Binds the wire to the tube
Gooseneck360° adjustable, 1/4-20 M/F, 300 mm long, 10 mm OD1Camera arm
7777
Bill of materials (cont.)11 — BOMPhysiClaw.ai
ClassComponentSpecQtyApplication
FastenersBHCSM3×6 (thread dia × thread length)10Motors & stylus
M3×88Belt clamps & stylus
M3×104Control board mount
M5×1015Frame, idlers, camera base
M5×122Idler-mount brackets
M5×1610Frame, phone bed & Motor A mount
M5×202Motor B mount
FHCSM3×8, length = overall (incl. head), not thread length4Phone bed
M3×1026Gantry & stylus
M5×126Gantry, control board & tube holder mount
SHCSM6×208Frame joints
1/4-20×16, imperial (≈ 6.35 mm), not interchangeable with M61Camera arm
Shoulder screwØ5×10×M4 (shank dia × shank length × thread)4Idler
Ø5×20×M46Idler
7878
Bill of materials (cont.)11 — BOMPhysiClaw.ai
ClassComponentSpecQtyApplication
FastenersT-nutDrop-In M320Gantry & phone bed
Drop-In M523Frame, idlers, phone bed, control board holder, tube holder, camera base
Slide-In M510Frame & gantry
Square nutM3, 5.5 mm square, 2.4 mm thick10Stylus holder & control board holder
M4, 7 mm square, 3.2 mm thick10Idler
M5, 8 mm square, 4 mm thick2Idler
Hex nut1/4-20, imperial (≈ 6.35 mm), not interchangeable with M61Camera arm
Shim5 mm ID, 8 mm OD, 0.5 mm thick12Idler
Spacer5 mm ID, 10 mm OD, 9 mm height4Idler
6 mm ID, 12 mm OD, 8 mm height2Motor A bracket standoff
6 mm ID, 12 mm OD, 12 mm height2Motor B bracket standoff
ToolsHex key2 / 3 / 5 mm3M3, M5, M6 screws
OtherGreaseLithium grease, NLGI 21Rail lubrication
ThreadlockerLoctite 243 or equivalent — medium strength, blue1Lock pulley set screws
Heat shrink tubingØ3 mm2Insulate and protect wire splices
7979
END OF MANUAL

Next, tell PhysiClaw what you'd like it to do.

“PhysiClaw can do anything you can do on your phone: it looks at the screen and touches it, just like you.”

PhysiClaw logo
PhysiClaw.ai