Total time spent thus far: 73h
May 25-26: Initial Concept and Design
- Created idea
- Pitched concept
- Developed rough Bill of Materials (BOM)
- Total time spent: 4h
May 26-28: Arm Assembly and Design Refinements
- Finished first part of the arm
- Nearly completed second part
- Redesigned bearing holders (original design required impractical assembly)
- Identified needed PCB components:
- 4 Γ 3-pin connectors for Servos
- 1 Γ 4-pin connector for stepper
- 1 Γ 2-pin connector for PSU
- 3 Γ MG996R servos
- M3.5 screws
- Nema23 23HS5628 stepper + TB6600 Controller
- SG90 servo
- LM2596 voltage regulator (for ESP32 compatibility)
- PSU: AliExpress link
- Rotary encoder
- TODO:
- Finish second arm
- Complete claw mechanism
- Finalize bottom part
- Design camera mount
Total time spent: 16h
May 29: Structural Completion and PCB Design
- Finished all arms + claw assembly
- Improved aesthetic design
- Designed PCB (significant time spent on hole placement)
- Created stepper motor base connection with tight-tolerance square insert
- Current progress: ~60%
- TODO:
- Complete base assembly
- Fix 3D printed inserts
- Finalize BOM
- Begin coding
- Total time spent: 6h
May 30 - June 1: Component Updates and PCB Revision
- Arm improvements:
- Added screw mounts to arm holders
- Designed printable nuts for assembly
- Created side components
- Major PCB changes:
- Switched ESP32 β Raspberry Pi Zero W (better camera streaming)
- Significant time spent updating PCB layout/screw holes
- TODO:
- Design camera mount
- Convert to wall-plug PSU
- Add/remove rotary encoder based on space
- Update connectors: 2-pin β PSU pins, 4-pin β 6-pin
- Find placement for TB6600 Controller
- Total time spent: 10h
June 2: Power System and Controller Updates
- Implemented changes:
- Converted to wall-plug PSU
- Added second rotary encoder
- Updated connectors: 2-pin β PSU, 4-pin β 6-pin
- Replaced TB6600 with space-saving TMC2208 controller
- TODO:
- Finalize camera mounting solution
- Complete official BOM
- Start coding base functionality
- Total time spent: 4h
June 2: Github Stuff
- Created Journal.md
- Finished BOM
- TODO:
- Add Camera to BOM
- Finalize camera mounting solution
- Start coding base functionality
- Start coding VR β Arm Pose in Unity
- Total time spent: 3h
June 2-4: Coding
- Added rotary encoder support
- Encoder 1 β controls Joint 1
- Encoder 2 β controls Joint 2
- Encoder 3 β controls the claw
- Encoder 4 β controls base (stepper/rotation)
- Implemented inverse kinematics with safety checks
- Enforces Β±90Β° range from vertical (coded as 90Β°)
- Restricts x β [-5.5, 5.5] if y β₯ -2 cm
- Added movement validation system
- Only moves to reachable coordinates within the armβs physical limits
- Displays an error if the point is unreachable
- New command features
- Supports input like x:5,y:8,z:-2
- stop command halts all motors immediately
- Maintains stable claw orientation (always facing downward)
- TODO:
- Finalize camera mounting solution
- Start coding VR β Arm Pose in Unity Total time spent: 10h
June 4-10: Coding for Pi Zero 2 W to Unity VR
- Ported legacy code to Pico SDK environment
- Implemented hardware abstraction layer for:
- Servo/stepper motor control
- Rotary encoder feedback
- Servo/stepper motor control
- Verified all hardware functionality
- Built a lightweight TCP server using lwIP
- Added WebSocket support for real-time control
- Key endpoints:
| Endpoint | Function |
|----------|----------|
|/move
| Coordinate-based arm movement |
|/direct
| Raw servo control |
|/encoders
| Live position feedback |
|/camera
| MJPEG video stream (10 FPS) | - Unity Features:
- Controller-triggered calibration
- 1:1 movement mapping (VR β Physical Arm)
- Real-time camera display
- Connection status UI
- TODO:
- Find out where to put the camera :sob:
- Controller-triggered calibration
Total time spent: 20h