Skip to the content
PCBKitNew board
2 layersModel1, the printed circuit board in 3D

Modular 4DOF Arm mechatronics project files

Copper layers
2
Thickness
1.6 mm
Parts
12
Nets
63
Pads
107
Tracks, vias
32, 0
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
16 Jun 2026
Updated
25 Jun 2026

Overview

Model1 is an open-source printed circuit board by Jamalch15, from the Jamalch15/ARES-4 repository on GitHub. It is a 2-layer board with 12 parts on 63 nets, routed with 32 tracks and 0 vias.

Its parts include 7 connectors and 1 IC.

README

README.md

ARES-4 Modular 4DOF Robot Arm

ARES-4 is a mechatronics prototype for object handling with a modular 4DOF robot arm. The system combines a browser-based PC control app, an ESP32-S3 controller layer, interchangeable end-effector support, vision-assisted task workflows, and the supporting mechanical and electronics design files.

The repository is intended to accompany the final report as the source-code and design-file reference. It keeps the runnable software, firmware, test suite, configuration template, and engineering notes in one place without committing draft report PDFs or course handouts.

Project Overview

The arm is built as a compact serial manipulator for small-object handling. The current prototype uses two stepper-driven inner joints, two servo-driven outer joints, and a quick-swap tool interface for end effectors such as a gripper or electromagnet.

The software is split into two main layers:

  • PC side: local GUI, robot model, forward/inverse kinematics, trajectory generation, task sequencing, camera processing, calibration, logging, and serial communication.
  • Controller side: ESP32-S3 firmware for hardware-facing actuator commands, tool control, safety state, configuration sync, and status reporting.

The normal demo flow is:

text
camera or operator input
-> robot-frame target
-> task sequence
-> IK and trajectory preview
-> operator approval
-> ESP32-S3 motion/tool commands
-> status feedback to the GUI

Demo Video

Current Features

  • Local FastAPI/WebSocket backend with a browser dashboard.
  • 3D robot viewport with current pose, preview pose, target marker, path line, and projected workspace camera layer.
  • Manual joint controls, Cartesian target preview, live jog modes, and reusable program builder.
  • Pick-and-place and color-sorting task workflows with preview before execution.
  • Standard DH-based forward kinematics and numerical Jacobian inverse kinematics.
  • Configurable robot geometry, joint limits, tool offsets, motion limits, hardware IO, camera calibration, and task destinations.
  • ESP32-S3 PlatformIO firmware targets for single-axis tests, no-motor protocol testing, and the open-loop full-arm controller.
  • Shoulder AS5048A encoder readback support for calibrated evidence, diagnostics, and optional bounded correction workflows.
  • Python test suite covering configuration, kinematics, motion, safety, protocol, vision/task integration, calibration, and program behavior.

Repository Layout

text
pc_app/                 PC dashboard, backend, tests, tools, and config template
controller_firmware/    ESP32-S3 PlatformIO firmware and serial protocol notes
docs/                   Architecture, calibration, vision, and planning notes
electronics/            KiCad schematics, PCB files, footprints, and symbols
Mechanical/             Mechanical calculation files
.github/workflows/      GitHub Actions test workflow for the PC app

Detailed subsystem notes:

  • pc_app/README.md: dashboard setup, GUI guide, configuration, calibration, and protocol details.
  • controller_firmware/README.md: PlatformIO environments, firmware roles, upload notes, and controller behavior.
  • docs/README.md: documentation map for architecture, calibration, vision, task, and historical planning notes.
  • AGENTS.md: repository guidance for coding agents.

Quick Start

The dashboard can run in simulation mode without the ESP32-S3 connected. If the virtual environment already exists, start the UI with:

powershell
cd pc_app
.\.venv\Scripts\Activate.ps1
uvicorn app.main:app --reload --host 127.0.0.1 --port 8000

Open:

text
http://127.0.0.1:8000

Keep that PowerShell window open while using the dashboard. Stop the server with Ctrl+C.

For first-time setup, create the virtual environment and install dependencies before starting uvicorn:

powershell
cd pc_app
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt
uvicorn app.main:app --reload --host 127.0.0.1 --port 8000

The tracked pc_app/config/robot.example.yaml is the simulation-safe fallback. Machine-specific calibration and hardware settings are saved in pc_app/config/robot.local.yaml when present.

Testing

Run the PC app test suite from pc_app:

powershell
cd pc_app
python -m pytest

GitHub Actions runs the same suite on Ubuntu from a clean checkout. Tests that depend on the committed reference robot configuration should use the example config explicitly, because local machines may also have an ignored robot.local.yaml.

Firmware Build

PlatformIO is used for the ESP32-S3 firmware.

powershell
cd controller_firmware\platformio
pio run -e esp32-s3-arm-controller

Useful upload targets are documented in controller_firmware/README.md. The main prototype controller is platformio/src/arm_controller.cpp; main.cpp remains as a single-axis hardware test sketch.

Configuration And Calibration

The PC app keeps the robot model in YAML configuration:

  • pc_app/config/robot.example.yaml is tracked and should stay generic.
  • pc_app/config/robot.local.yaml is ignored and stores machine-specific geometry, calibration, IO pins, camera settings, and task setup.
  • pc_app/config/programs.local.json is ignored and stores local user-created motion programs.

Calibration-related notes are collected in docs/README.md. The most relevant implementation references are the kinematics calibration, workspace vision calibration, and shoulder encoder documents.

Safety Notes

This is a prototype robot system. Preview planned motion in the dashboard before executing it on physical hardware, keep joint limits conservative, and keep the workspace clear while armed. Real hardware movement requires a known pose, synced hardware configuration, an armed controller, and a valid motion request. STOP and ESTOP paths are implemented in the app/controller flow, but they do not replace normal lab safety practices.

The current control approach is mostly open-loop during motion. Encoder readback is used as calibrated evidence for the shoulder joint and optional post-move checks; it is not a complete closed-loop Cartesian control system.

Local Files And Generated Output

The repo intentionally ignores local and generated files such as:

  • Python virtual environments, caches, and test output.
  • PlatformIO build output under .pio/.
  • Local robot/app calibration files.
  • KiCad lock files, backup folders, and history folders.
  • Localhost server logs.

Before submitting or pushing, check:

powershell
git status --short

Only source, documentation, design files, and intentional configuration templates should be committed.

AI Usage

AI tools were used as support for drafting, organization, code review, and implementation assistance during development. The design choices, validation, testing, and submitted project work remain the responsibility of the project authors.

Parts

12
QtyValueFootprintReferences
2Conn_01x03_PinConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ4, J5
2Conn_01x04_PinConnector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_VerticalJ6, J7
2Conn_01x22_SocketConnector_PinSocket_2.54mm:PinSocket_1x22_P2.54mm_VerticalJ2, J3
2Pololu_Breakout_DRV8825Module:Pololu_Breakout-16_15.2x20.3mmA1, A2
2~Custom_Library:XL4015_Module_THTXL1, XL2
1Conn_01x06_PinConnector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_VerticalJ1
1LM7805_TO220Package_TO_SOT_THT:TO-220-3_VerticalU1

Questions

What parts does the Model1 use?

12 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Model1 KiCad files?

From the Jamalch15/ARES-4 repository on GitHub, at the commit this page was made from: the board is electronics/Model1/Model1.kicad_pcb and its schematic electronics/Model1/Model1.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Model1 design in my own project?

Its repository states no licence, so its author keeps all rights: ask Jamalch15 before reusing the design.

Similar boards

  • 2 layersNrf bga, the printed circuit board in 3D

    Nrf bga

    github-linguist/linguist

    Language Savant. If your repository's language is being reported incorrectly, send us a pull request!

    12 parts14kMIT
  • 2 layers66.9 × 74.5 mmDeskHop, the printed circuit board in 3D

    DeskHop

    hrvach/deskhop

    Fast Desktop Switching Device

    12 parts7.9kGPL-3.0
  • 2 layers40 × 15 mmSensors, the printed circuit board in 3D

    Sensors

    google/mozc-devices

    Circuit diagrams and firmware source code for Gboard DIY keyboards

    12 parts3kApache-2.0
  • 2 layers42.7 × 56.5 mmTle6240 driver, the printed circuit board in 3D

    Tle6240 driver

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    12 parts1.2k
  • 2 layers49 × 25 mm5v boost regulator, the printed circuit board in 3D

    5v boost regulator

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    12 parts915
  • 2 layers28.3 × 10.3 mmTap Photosensor PCB, the printed circuit board in 3D

    Tap Photosensor PCB

    VoronDesign/Voron-Tap

    Tap is a nozzle-based z-probe for the V2 and Trident printer designs. The entire toolhead moves to trigger an optical switch. Tap offers many advantages:

    12 parts716GPL-3.0
  • 2 layers25.4 × 70.4 mmTpmsniffer, the printed circuit board in 3D

    Tpmsniffer

    stacksmashing/pico-tpmsniffer

    A simple, very experimental TPM sniffer for LPC bus

    12 parts696