Initial commit
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
# Hermes robot enclosure
|
||||
|
||||

|
||||
|
||||
An upright cabinet for the Raspberry Pi 4 and BrainCraft HAT. The display is the face, and the
|
||||
speaker sits behind a grille below it. The whole cabinet pans on a bearing turntable, and a small
|
||||
yoke on top tilts only the camera. Everything is in one parametric OpenSCAD file,
|
||||
`hermes_robot.scad`. Ready-made STLs are in `stl/`, but **don't print the large parts until the test
|
||||
pieces fit**: most dimensions were taken from photos and datasheets.
|
||||
|
||||
Overall size: about 86 × 40 × 146 mm for the cabinet, on a 90 mm base. Total height is about 225 mm
|
||||
including the camera.
|
||||
|
||||
## Parts to buy
|
||||
|
||||
| Part | Notes |
|
||||
|---|---|
|
||||
| 2 × MG90S metal-gear micro servos | Pan (in the base) and tilt (camera). Use the double-arm horns they come with. |
|
||||
| 6810-2RS ball bearing, 50 × 65 × 7 mm | The turntable. The 50 mm bore leaves room for the servo and cables. |
|
||||
| Adafruit 5986 speaker (or the CQRobot 8 Ω JST-PH equivalent) | 70 × 30 × 17 mm box. |
|
||||
| 30 × 30 × 10 mm 5 V fan | Optional; plugs into the HAT's fan header. Set `fan = false` to drop the mount. |
|
||||
| Right-angle USB-C cable | The left side has about 13 mm beside the board for the plug. |
|
||||
| M3 screws: 4 × 8 mm (back cover), 4 × 8 mm (turntable), 2 × 12 mm + nuts (yoke), 1 × 16 mm (tilt axle) + washer | Self-tapping into PETG where the model has 2.6 mm pilots. |
|
||||
| 4 × M2 × 6 mm screws | Camera board to cradle. |
|
||||
| 4 small rubber feet, 10 mm | Optional, in the base's recesses. |
|
||||
|
||||
The servos plug into the HAT's GPIO12 (pan) and GPIO13 (tilt) ports. Those ports are factory-set to
|
||||
5 V (checked by continuity on the "3pin Volt" jumper), so no soldering is needed.
|
||||
|
||||
## Measure first
|
||||
|
||||
Every value marked `MEASURE` in the `.scad` file is an estimate. With calipers, check at least:
|
||||
|
||||
1. **The stack:** the gap between the Pi and HAT boards (`stack_gap`), the tallest part on the HAT's
|
||||
front (`hat_clear`), and the screw-head size (`head_d`, `head_h`).
|
||||
2. **HAT features:** the display glass position (`glass_px`, `glass_py`), the mics, the audio switch
|
||||
and the LEDs. All are in Pi coordinates: `px` runs down the board from the microSD end, `py`
|
||||
across it from the USB-C edge.
|
||||
3. **The speaker box** (`spk`).
|
||||
4. **The servo** (`srv_*`) and its **double-arm horn** (`horn_*`): arm length from shaft centre to
|
||||
tip, widths at hub and tip, thickness, and the radii of its screw holes.
|
||||
5. **The bearing** (`brg_*`), if yours isn't a 6810.
|
||||
6. **The camera board** (`cam_*`): the hole positions and lens position.
|
||||
|
||||
Change a value, then re-export: `openscad -D 'PART="body"' -o stl/body.stl hermes_robot.scad`.
|
||||
|
||||
## Print the test pieces first
|
||||
|
||||
| Piece | What it checks | Rough time |
|
||||
|---|---|---|
|
||||
| `test_front` | The front wall over the HAT. Press it onto the stack: the cups should seat on the screw heads, with the window over the display, the mic holes over the mics, the slot over the audio switch, and the thin LED spots over the LEDs. | ~40 min |
|
||||
| `test_bearing` | The bearing seat in the base and the hub on the plate. The bearing should press in firmly by hand; adjust `press` if it's loose or won't go. | ~1 h |
|
||||
| `test_servo` | The servo posts in the base: the screw holes should line up with the servo's tabs. | ~25 min |
|
||||
| `test_yoke` | The tilt servo's mount plate: the case should slide through and the tabs line up. | ~15 min |
|
||||
|
||||
## Printing (Adventurer 5M Pro, PETG)
|
||||
|
||||
| Part | Orientation (as exported) | Notes |
|
||||
|---|---|---|
|
||||
| `body` | Front face on the bed | No supports. The front face takes the plate's texture. |
|
||||
| `back` | Outside face on the bed | No supports. |
|
||||
| `base` | Upright | No supports. |
|
||||
| `plate` | Top face on the bed, hub up | No supports. |
|
||||
| `yoke` | Upright | No supports. |
|
||||
| `cradle` | Horn flange on the bed | No supports. |
|
||||
|
||||
Suggested settings: 0.2 mm layers, 3 walls, 20% gyroid infill. Use 40% infill for `plate` and
|
||||
`cradle`, which carry the servo horns. Print the bearing seat and hub slowly on their outer walls for
|
||||
accuracy.
|
||||
|
||||
## Assembly
|
||||
|
||||
1. **Base:** set the pan servo on its posts, shaft up, and screw it through the tabs. Press the
|
||||
bearing into the seat. Feed the USB-C cable in through the slot at the back of the base, up through
|
||||
the bearing.
|
||||
2. **Turntable:** screw a double-arm horn into the pocket under the plate. Centre the servo (run the
|
||||
software's `turn_head(0, 0)`, or use a servo tester), press the plate's hub into the bearing so the
|
||||
horn meets the spline, and fit the horn's centre screw through the hole in the plate.
|
||||
3. **Body onto the plate:** pass the power cable and the pan servo's lead up through the floor hole.
|
||||
Then screw the plate on from inside the body with 4 × M3, before the speaker goes in.
|
||||
4. **Speaker:** route its lead up the left-hand channel, and set the box on its feet, facing the grille.
|
||||
5. **Stack:** plug in the speaker, the servo leads and the fan. Lower the Pi and HAT stack face-first
|
||||
onto the locating cups, then connect the right-angle USB-C plug on the left.
|
||||
6. **Back cover:** its cups clamp the stack, and its bars hold the speaker against the grille. Use
|
||||
4 × M3.
|
||||
7. **Camera:** screw the board to the cradle (M2). Fit the second horn into the flange pocket. Centre
|
||||
the tilt servo, mount it in the yoke, push the flange onto its spline, and add the M3 axle on the
|
||||
other side. Feed the ribbon down through the slot. Bolt the yoke to the top with 2 × M3 and nuts
|
||||
from inside.
|
||||
|
||||
The camera ribbon drops straight from the cradle into the gap between the Pi and the HAT, then down
|
||||
to the camera connector. A 15–20 cm ribbon should be enough. Leave a gentle loop above the slot for
|
||||
the tilt.
|
||||
|
||||
## Known compromises
|
||||
|
||||
- The tilt servo hangs about 5 mm past the left side of the cabinet. Set `cam_x_offset = 5` to move
|
||||
the camera and yoke right and bring it flush, at the cost of an off-centre camera.
|
||||
- The front's controls (joystick, button) aren't exposed. They sit about 7 mm behind the front wall.
|
||||
The LEDs glow through 0.6 mm of PETG, so light-coloured filament works best for that.
|
||||
- There's no hard stop on the pan. Software limits (±80°) and the slack in the power cable are what
|
||||
keep it from over-rotating.
|
||||
Reference in New Issue
Block a user