Skip to content

Latest commit

 

History

History
284 lines (186 loc) · 18.7 KB

assembly.md

File metadata and controls

284 lines (186 loc) · 18.7 KB

Mechanical assembly

How to join the printed parts and seat the five micro servos. Use M2 screws that thread into the plastic — no glue, no heat-set inserts.

Follow getting-started.md for overall build order; this file is the mechanical procedure. Start here after connecting and flashing.

Screw lengths called out below (M2×4 / ×8 / ×16) match the reference list. If you substitute nearby lengths, test-fit first. Totals: 3d_models/README.md → Screws. Buyer cart: shopping.md.

Before you start: the main control board is connected on the desk and firmware is flashed (main-control-board.md, then flash.md). Print or order the set for your servo model (3d_models/README.md, order-parts.md). All five servos are the same type; the printed pockets match that model. Breakout modules: assembly-modular.md replaces §12 and §13 below.

Left / right: throughout this guide, “robot’s left” and “robot’s right” mean the figure’s sides — not your left/right as you face it.

Build map

  1. Head + Hat (OLED + head servo)
  2. Center Neck → join Head/Neck → Chest side servos → mount on Chest → Belly → Chair
  3. Desk stack → mount electronics → plug channels → Chair↔Desk → BottomCover
  4. Arms → Lamp → setup wizard

1. Head — OLED and servo

  1. Peel the protective sticker off the Waveshare OLED screen.
  2. Plug the cable that shipped with the Waveshare OLED into the display before seating it. Once the OLED is in its pocket, the connector is hard to reach.
  3. Take one of the five identical micro servos. Do not attach a horn yet. Orientation does not matter at this stage.
  4. Seat the servo and the OLED into their dedicated pockets in the printed Head.
  5. Route both cables through the openings in the shell — OLED cable on one side of the head, servo lead on the opposite side.
  6. Clip each cable into the molded cable clips on the back of Head (clips are part of the print).

Head

2. Hat

  1. Place Hat on top of Head.
  2. Fasten with two M2 screws (M2×8 mm works). Thread into the printed plastic — do not overtighten.

Head

2a. Bench window (centering)

Electronics and firmware should already be done (getting-started connect + flash). If the module is not flashed yet, stop and do flash.md first. From here on you set each printed part on a servo that is already at 90° (shaft center).

Bench window: keep the electronics on the desk — do not seat them in the chest until §12.

Stop. Join the setup AP only for Assembly support → Move all to 90° (optional Identify wiggle per joint). Return to the hub — do not run guided range calibration or finish the wizard (OLED, LED, speaker, home Wi-Fi) until §20.

After each centering step, unplug the servo from the PCA9685 before you keep building. Leaving the lead attached makes the next joins awkward. You reconnect the correct channels later.

Center a servo

Use this recipe whenever a later step says to center a servo:

  1. Plug the servo into any PCA9685 channel (channel mapping does not matter for centering).
  2. Power the ESP32. Join the setup Wi‑Fi (TinyEngineer-XXXX), open http://192.168.4.1/config, open Assembly support, and press Move all to 90°. Use Identify on a joint if you need to see which plug is which. The shaft is now at electrical center.
  3. After you finish that joint, unplug the servo from the PCA9685 before the next awkward join.

3. Neck — center a servo and attach Neck

  1. Take the next unused servo (not the one already in Head). Do not attach a plastic horn — Neck mounts on the shaft.
  2. Center that servo.
  3. Press Neck onto the servo shaft so the part sits perpendicular to the servo body.
  4. Align the raised bulge in the middle of Neck toward the back of the servo — the longer end of the servo body (cable / electronics side).
  5. Fasten Neck with the screw that came with the servo, keeping that perpendicular orientation.
  6. Drop an M2 nut into a hexagonal pocket on Neck:
  • Use the pocket with the larger center hole.
  • That pocket is on the robot’s right.
  • The pocket with the smaller hole is for mounting a servo later — leave it empty for now.
  1. Unplug this servo from the PCA9685 so the next steps are easier to handle.

Neck

4. Join Neck and Head

  1. Center the servo already inside Head.
  2. Take the Neck assembly from §3. First stage: fit Neck onto the Head servo shaft — Neck has a dedicated pocket for that shaft. Gently push the Head cables aside if needed so the shaft seats fully.
  3. Second stage: slide Neck further onto Head until the side with the M2 nut sits flush with Head and lines up with the mounting hole on that side. Keep the nut in its hex pocket so it does not fall out.
  4. At 90°, Neck must sit perpendicular to Head. Adjust before fastening if needed.
  5. Fasten Neck to Head:
  • Robot’s right: M2 screw into the captured nut (M2×8 mm works).
  • Robot’s left: the mounting screw that came with the servo.
  1. Unplug the Head servo from the PCA9685 before continuing.

Neck

5. Chest — side servos

  1. Take the printed Chest.
  2. Seat two unused servos in the side pockets (left and right). No horns yet. Shaft orientation does not matter — you will calibrate later.
  3. Route each servo lead through the vertical tunnel at the front of Chest so the connectors exit from the bottom of the part.
  4. Fasten both servos with four M2 screws total — two per servo (M2×16 mm works). Do not overtighten.

Chest

6. Mount head assembly on Chest

  1. Take the joined Head + Neck from §4. The servo already fastened to Neck goes into the center servo pocket in Chest.
  2. Before seating that servo, route its lead through the central tunnel in Chest and out the bottom of the part.
  3. Seat the Neck servo fully in the center pocket. Keep front of Head/Neck on the same side as front of Chest (the side with the cable tunnels).
  4. Fasten it to Chest with M2×8 mm screws. Prefer two screws; if space is tight, one screw at the back of the robot is enough.

Chest

7. Belly — last servo

  1. Take the last unused servo. Center it.
  2. Press BellyJoint onto the servo shaft. Do not use a plastic horn. BellyJoint is a hexagon — seat it so one flat edge is parallel to the shorter side of the servo body (not point-to-side). Match image below.
  3. When alignment is correct, fasten with the screw that came with the servo.
  4. Unplug this servo from the PCA9685 before continuing.

Belly

8. Route chest cables through Belly and join

  1. Take the three servo leads that exit the bottom of Chest: Neck (center) and the two side (hand) servos.
  2. Pass them into Belly through the large upper opening, then out through the lower side opening.
  3. Keep the same left-to-right order as they leave Chest: left hand → neck → right hand. That order is only an identification aid for later — not the PCA9685 channel sequence.
  4. Orient Belly so its rounded side faces the back and matches the profile of Chest, then fasten with four M2 screws (M2×8 mm works).

Belly

9. Seat the body in Chair

  1. Take the servo with BellyJoint already mounted (§7). Seat it in the pocket at the bottom of Chair. Route its lead out under Chair and forward through the center channel on the underside.
  2. Slide SeatLeft and SeatRight onto Chair from the sides along the dovetail joints. Do not push them fully together yet — leave a gap so BellyJoint stays clear.
  3. From above, lower Belly (with the rest of the robot already fastened to it from §8) onto BellyJoint. The base of Belly has a hexagonal pocket that matches BellyJoint. Once it is seated, push the seat parts together — they lock Belly and the body in place. Watch the cables — do not pinch or crush them.
  4. Optionally fasten the seats with two M2×16 mm screws. The joint also holds without them; the chair backrests will clamp the seats later.

This finishes the main robot body. Set it aside — next steps build the desk.

Chair

10. Desk top stack

  1. Take DeskTop, DeskPad, and Desk.
  2. Seat DeskTop into DeskPad — the parts nest together.
  3. Place that stack onto Desk. Orient so the rounded cutout faces the robot (the side where the figure sits).
  4. Fasten through the four corner holes with four M2 screws (M2×16 mm works).

Desk

11. Desk emblem

  1. Place AiEmblem on the front of the desk.
  2. Fasten with two short M2 screws (M2×4 mm works).

Desk

12. Electronics inside the desk

Seat the main control board in Desk. This step mounts what you already connected on the desk (getting-started connect + flash). Electrical plugs: main-control-board.md. Breakout modules: assembly-modular.md.

  1. Seat the board in the desk cavity.
  2. Leave servos and the OLED unplugged until §15.
  3. Speaker — finish the board connector or the solder pads per the connect guide (one method only). Stick or tuck the speaker inside the desk as needed.
  4. Leave the ESP32 out until §13 — it seats from above into the board headers through the desk-top cut.

13. ESP32, power/AP smoke test, and LampBase

  1. Seat the ESP32-C3-Zero in the desk-top opening from above so its pins pass through the cut into the board headers underneath. Orient using the USB marking on the PCB (main-control-board.md). The module should sit flush and not stick up above the desk surface.
  2. Power/AP smoke test (optional but recommended) before locking the module in:
  • Confirm seating and orientation. Servo plugs and the OLED come in §15.
  • Firmware should already be on the module.
  • Apply power on the board USB-C. The ESP32 LED should light and the board should start the setup access point.
  • If that looks good, disconnect power.
  1. Place the printed LampButton under LampBase so it can press the ESP32 reset button from above.
  2. Orient LampBase so its opening sits over the ESP32 status LED.
  3. Fasten LampBase to the desk with two M2 screws (M2×8 mm works). This also holds the ESP32 from above.

14. Desk props — laptop, mug, bell

  1. Laptop — slide LaptopScreen into the pocket on the underside of LaptopCase. Place the laptop on the desk and fasten with one M2 screw from under the desk (M2×8 mm works). Optional: put a printed paper screen in front of the plate — laptop screen inserts.
  2. Mug — seat Coffee inside Mug. Place the mug in its dedicated spot on the desk and fasten the same way: one M2 screw from under the desk (M2×8 mm works).
  3. Bell — first drive the M2 screw fully into Bell alone (M2×16 mm works). Then, with the screw already in the bell, drive that screw down into the desk from above and secure with an M2 nut underneath.

Desk

15. Connect servos and OLED

Easiest with the desk tipped onto its front wall so the servo headers face up, and the seated robot body beside it.

  1. Plug every servo lead and the OLED cable into the labeled board headers (main-control-board.md). Breakout build: plug them into the PCA9685 and the harness — assembly-modular.md.
  2. Use the correct PCA9685 channel order following labels on the board (pinout):
Channel Joint
0 Head pitch
1 Neck yaw
2 Left hand
3 Right hand
4 Body / torso
  1. Power up and run a servos + OLED smoke test: servos respond, OLED shows something sensible, no brown-out or odd movement. If something is wrong, power down before swapping plugs.

Integrated PCB build:
Desk — Integrated PCB, board with headers for direct servo and display plug-in.

Modular breakout build:
Desk — Modular breakout build, using a PCA9685 and harness for servo/display connections.

16. Fasten Chair to Desk

  1. Gently slide the desk up to the chair so the mounting holes on the desk (back / armrest sides) line up with the matching holes on Chair.
  2. Fasten with six M2 screws total — three per side (M2×8 mm works). Do not force the parts; keep cables clear of the screw paths.

Desk

Close the underside with BottomCover

  1. Finish the servo and OLED cables and the six side screws joining Chair to Desk first. Power down, support the robot, and turn it over without loading the arms or desk props.
  2. Route the chair leads through the existing tunnel and into the desk cavity. Keep the cables inside the perimeter, away from all six cover screw paths; no wire should sit between the cover and the chair/desk mating surfaces.
  3. Use the updated Chair from the same servo folder: it has two reinforced blind pilot holes underneath its rear wall. An older chair without these holes must be reprinted for the six-point attachment; keep clear of the existing side screws and cables.
  4. Place the flat mating face of BottomCover against the desk and chair. Its stem follows the chair; the recessed pockets face outward. Align the four desk holes and the two rear chair holes.
  5. Fasten with six M2×8 mm pan/button-head screws — four into the desk and two into the chair. Heads no larger than 4.0 mm diameter × 2.0 mm high. No nuts.
  6. Tighten until each head sits in its pocket and none sticks past the flat underside. No trapped wires. Set the robot upright.

Print BottomCover with its mating face down and pockets up, as exported. No supports. Printed fit still needs a test-fit.

17. Arms — elbow joints

Build the arm assemblies only — do not mount them on the chest servos yet.

  1. At each elbow there is a screw hole joining the forearm to the upper arm.
  2. Fasten left and right the same way: ForearmLeft to UpperArm and ForearmRight to UpperArm with one M2 screw per elbow (M2×8 mm works). Print / use two UpperArm parts (one per side).

Arms

18. Mount arms on the chest servos

  1. Center the side (hand) servos first.
  2. Press each arm assembly onto its chest servo shaft. The upper arms have dedicated pockets for the shafts.
  3. With the servos at 90°, set each arm so the hand sits at about shoulder height and the forearm points forward (toward the desk).
  4. When the pose looks right, fasten each arm with the mounting screw that came with that servo.
  5. Do this for both arms. If centering is not perfect, that is fine — you will refine it in the setup calibration later.

Body

19. Lamp (press-fit)

No screws — everything is a friction fit.

  1. Place LampCap onto LampDiffuser.
  2. Push that stack into the opening in LampBase.

Lamp

20. Setup wizard and first boot on Wi-Fi

The robot is built. What remains is servo calibration, Wi-Fi, and a quick check that everything works.

  1. Connect power. The board should start the setup access point (TinyEngineer-XXXX). First boot, or after factory reset + power-cycle.
  2. Join that Wi-Fi and open the configurator (http://192.168.4.1/config).
  3. Walk through the entire setup wizard:
  4. Servos hub: run Calibrate servos (guided Body → Neck → Head → Hands) on the assembled robot, or Skip if NVS/defaults are already good. Assembly support is only for seating horns — use it from the hub if needed, then return; it does not start range calibration.
  5. Look at the OLED and tap Rotate 180° if text is upside down (factory reset keeps the rotation).
  6. Tap Red/Green/Blue on the onboard LED; change mapping only if colors look wrong (default GRB; factory reset keeps the mapping).
  7. Play the welcome clip through the speaker.
  8. Hostname and home Wi-Fi (2.4 GHz only), or USB-only. OLED shows join-AP steps.
  9. When the wizard is finished, disconnect power, then power on again.
  10. The robot should join your home network and expose the REST API. Prove it — getting-started §7, api.md.

Wi-Fi is not editable from the normal Config page later — factory reset to change it.

Related

Topic Doc
Overall build checklist getting-started.md (assemble is §5)
Shopping list shopping.md
Parts inventory / printables 3d_models/README.md
Print or order parts getting-started §2 · order-parts.md
Different servo size / CAD params parametric-design.md
Servo axes and safe ranges robot-movement.md
Connect and flash (before this page) hardware/main-control-board.md · flash.md
Extra modules (advanced) assembly-modular.md · hardware/wiring.md