Saturn Arm

Created by [Kunshpreet]

Development log for a VR-controlled robotic arm project

Total time spent thus far: 103h

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


image


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

image - 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

image image - 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

image

  • 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
  • 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:

Total time spent: 20h

Aug 1-20: Hardware Building, Testing and Debugging

0 - Failures & Issues - Burned 1 Γ— Raspberry Pi Zero 2 W (likely due to incorrect LM2596 calibration)
- 1 PCB failed due to soldering issues (not design-related)
- Accidentally ordered 360Β° continuous rotation servos instead of 180Β° positional ones
- Stripped the internal gear of TWO 180 Β° servo during torque testing
- Original 3D-printed gears failed under load, requiring redesign

  • Fixes & Improvements

    • Learned an important tip: always calibrate the LM2596 before powering sensitive boards
    • Fully soldered all working boards and connectors
    • Updated firmware with expanded debugging tools (serial logs, error states, power monitoring)
    • 3D printed replacement parts to strengthen gear assemblies
  • Integration & Results

    • Ran the PCB successfully after assembly
    • Verified stable communication between Raspberry Pi and motor drivers
    • Completed end-to-end integration of PCBs, motors, and encoders
    • System reached the stage of a stable working prototype
    • Project will be on hold until I get another 180-degree servo to implement VR support

Total time spent: 30h