Skip to the content
2 layers220 × 70 mmAcpm arduino motor part, the printed circuit board in 3D

Acpm arduino motor part

rtweera/autochess

Fully autonomous chess playing machine with a physical chess board, allowing a human player to compete as if playing against another human, with an ELO rating of 2000.

Size
220 × 70 mm
Copper layers
2
Thickness
1.6 mm
Parts
34
Nets
48
Pads
154
Tracks, vias
405, 40
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
31 Aug 2024
Updated
3 Apr 2026

Overview

Acpm arduino motor part is an open-source printed circuit board by rtweera, from the rtweera/autochess repository on GitHub. It is a 2-layer board of 220 × 70 mm with 34 parts on 48 nets, routed with 405 tracks and 40 vias.

It is built around the DRV8825PWP and LM7805. Its parts include 8 capacitors, 8 resistors, 8 connectors, 3 ICs and 2 switches. It belongs with the robots and motor control boards and the AVR (ATmega, ATtiny) boards of this library.

Main components

2

README

README.md

AutoChess

An autonomous chess board project that combines:

  • Mechanical piece movement (XY stepper gantry + electromagnet)
  • Board state sensing (reed switches via multiplexers)
  • On-board chess engine (MicroMax-based logic)
  • Dual-microcontroller control flow (Arduino Mega + ESP-based board)

AutoChess banner


Overview

This repository contains firmware, PCB design files, and project assets for a physical chess board that:

  1. Detects the human player’s move from sensors,
  2. Validates and evaluates the move with an embedded chess engine,
  3. Computes the AI response,
  4. Physically moves pieces on the board.

The project appears structured for Human vs Computer (HvsC) gameplay with game-state handling (stalemate, invalid move, wins, punishment flow).


Repository Structure

text
autochess/
├── node_game &mega_game_algo/
│   ├── mega_game_algo/
│   │   ├── mega_game_algo.ino
│   │   └── global.h
│   └── node_game_algo/
│       └── node_game_algo.ino
├── Mux_codes/
│   └── module_testing/
│       └── module_testing.ino
├── pcb/
│   ├── autonomous chess playing machine/
│   └── libraries/
├── pcb_to_entc/
│   ├── acpm-arduino_motor_part/
│   ├── acpm-mux_part/
│   └── pre_final_to_entc/
├── EXMO/
│   └── main_banner.png
├── Datasheets/
├── AI Group 10 - Project Report.pdf
└── Autunomous Chess Board.pptx

System Architecture

1) Arduino Mega firmware (mega_game_algo.ino)

  • Handles the main game loop/state machine
  • Reads board sensors through multiplexers
  • Controls:
    • Stepper motors (X/Y movement)
    • Electromagnet pickup/drop
    • LCD display
    • Buttons and limit switches
  • Sends player move to AI controller and receives AI result/move through Serial2

2) ESP/Node firmware (node_game_algo.ino)

  • Runs a MicroMax-style chess engine
  • Validates incoming human move
  • Computes the computer move
  • Returns:
    • status codes (stalemate/invalid/win/etc.), or
    • a 4-char move coordinate (e.g. e2e4)

3) Sensor subsystem

  • Reed switch matrix read through mux lines (s0..s3) and mux inputs (m0..m3)
  • Board occupancy stored in arr[8][8] and compared against backups to detect move origin/destination

4) Motion subsystem

  • Two stepper channels (white/black motor pins in code naming)
  • Calibrates against limit switches
  • Supports:
    • straight moves
    • diagonal moves
    • knight movement path handling
    • castling handling
    • capture handling with resting zones

Communication Protocol (Mega ↔ Node)

Mega → Node

  • Sends player move as 4 ASCII chars + newline
  • Example: e2e4\n
  • Special restart signal: R

Node → Mega

  • Returns either a move (a1b2 format) or status code.
  • Mega checks first character:
    • S → stalemate
    • N → no valid move
    • P → player wins
    • C → computer wins
    • I → punishment
    • otherwise parse as move string

Firmware Entry Points

  • Mega setup/loop:
    • /home/runner/work/autochess/autochess/node_game &mega_game_algo/mega_game_algo/mega_game_algo.ino
  • Node setup/loop:
    • /home/runner/work/autochess/autochess/node_game &mega_game_algo/node_game_algo/node_game_algo.ino
  • Shared globals/constants:
    • /home/runner/work/autochess/autochess/node_game &mega_game_algo/mega_game_algo/global.h
  • Multiplexer test sketch:
    • /home/runner/work/autochess/autochess/Mux_codes/module_testing/module_testing.ino

Hardware Pin Mapping (from firmware)

Mega-side key pins

  • Multiplexer select: s0=24, s1=26, s2=28, s3=30
  • Multiplexer read inputs: m0=36, m1=38, m2=40, m3=42
  • Motors:
    • black step/dir: 29 / 27
    • white step/dir: 47 / 45
  • Electromagnet: 53
  • Buttons: white 12, black 11
  • Limit switches: white 23, black 25
  • Reset pin to AI board: 50

Node-side key pins

  • Serial + engine logic only in provided sketch (no board actuator pins)

Confirm physical wiring against PCB schematics before powering hardware.


Game Flow (HvsC)

  1. System starts and displays startup screen.
  2. Calibration homes trolley and moves to start position.
  3. White (human) move is detected from reed sensor changes.
  4. On white button press, move is sent to AI controller.
  5. AI responds with status or computer move.
  6. If move provided, Mega performs physical black/computer movement.
  7. Repeat until game-over state.

PCB and Manufacturing Files

Primary PCB resources are under:

  • /home/runner/work/autochess/autochess/pcb/
  • /home/runner/work/autochess/autochess/pcb_to_entc/

Includes:

  • .kicad_sch, .kicad_pcb, .kicad_pro design files
  • gerbers/ output folders
  • related custom libraries for DRV8825 modules
  • printable board PDFs in pcb_to_entc/pre_final_to_entc/

How to Build / Flash Firmware

No automated build scripts are included in this repository. Use the Arduino toolchain.

Suggested process

  1. Open .ino files in Arduino IDE / Arduino CLI.
  2. Select the correct board/port for each firmware target:
    • Mega sketch: mega_game_algo.ino
    • Node/ESP sketch: node_game_algo.ino
  3. Install required libraries (as referenced in source), including:
    • LiquidCrystal_I2C
    • standard Arduino core libraries
  4. Compile and upload each sketch to its target board.
  5. Open Serial Monitor(s) at 9600 baud for diagnostics.

Testing and Validation

Available in-repo validation artifact

  • Mux_codes/module_testing/module_testing.ino for basic mux signal testing.

Manual validation checklist

  • Calibration reaches and respects both limit switches.
  • Sensor scan detects a single move correctly (from/to squares).
  • Serial protocol roundtrip works between boards.
  • Electromagnet toggles reliably during pickup/drop.
  • Piece movement logic works for:
    • straight, diagonal, knight, castling, captures.

Known Notes / Limitations

  • Repository currently has no CI, unit tests, or automated lint/build pipeline.
  • Some directories include desktop.ini files from Windows environments.
  • File and folder naming is historical and includes spaces/special characters.

Documentation Assets

  • Project report: AI Group 10 - Project Report.pdf
  • Presentation: Autunomous Chess Board.pptx (filename in repository; title intent: "Autonomous Chess Board")

These likely contain additional mechanical/electrical background and design rationale.


Contributing

If you plan to contribute:

  1. Keep firmware changes separated by module (Mega vs Node).
  2. Document pin changes and protocol changes in this README.
  3. Validate hardware safety (limit switches, motor directions, current limits) before long runs.

License

No top-level project license file is currently present in this repository. Some bundled PCB library components include their own license files under pcb/libraries/.../License.txt.

Parts

34
QtyValueFootprintReferences
81kResistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_HorizontalR1, R2, R3, R4, R5, R6, R7, R8
50.1uFCapacitor_THT:C_Disc_D5.0mm_W2.5mm_P2.50mmC3, C4, C5, C6, C8
2100uFCapacitor_THT:CP_Radial_D6.3mm_P2.50mmC1, C2
2DRV8825DRV8825_STEPPER_MOTOR_DRIVER_CARRIER:IC_DRV8825_STEPPER_MOTOR_DRIVER_CARRIERU1, U2
2MicrosteppingButton_Switch_THT:SW_DIP_SPSTx03_Slide_9.78x9.8mm_W7.62mm_P2.54mmSW1, SW2
10.33uFCapacitor_THT:C_Rect_L7.0mm_W3.5mm_P5.00mmC7
1Arduino_Nano_v3.xModule:Arduino_NanoA1
1Circuit_ConnectorConnector_JST:JST_XH_B10B-XH-A_1x10_P2.50mm_VerticalJ8
1LCDConnector_JST:JST_XH_B6B-XH-A_1x06_P2.50mm_VerticalJ3
1LM7805Package_TO_SOT_THT:TO-220-3_VerticalU3
1Limit_AConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ4
1Limit_BConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ5
1PowerConnector_JST:JST_XH_B2B-XH-A_1x02_P2.50mm_VerticalJ7
1ServoConnector_JST:JST_XH_B3B-XH-A_1x03_P2.50mm_VerticalJ6
1Stepper_AConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ1
1Stepper_BConnector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_VerticalJ2

The 30 most common of 34 parts.

More from rtweera/autochess

3
  • 2 layers220 × 70 mmAcpm arduino motor part, the printed circuit board in 3D

    Acpm arduino motor part

    rtweera/autochess

    Fully autonomous chess playing machine with a physical chess board, allowing a human player to compete as if playing against another human, with an ELO rating of 2000.

    34 parts
  • 2 layers220 × 70 mmAutonomous chess playing machine, the printed circuit board in 3D

    Autonomous chess playing machine

    rtweera/autochess

    Fully autonomous chess playing machine with a physical chess board, allowing a human player to compete as if playing against another human, with an ELO rating of 2000.

    21 parts
  • 2 layers220 × 70 mmAutonomous chess playing machine, the printed circuit board in 3D

    Autonomous chess playing machine

    rtweera/autochess

    Fully autonomous chess playing machine with a physical chess board, allowing a human player to compete as if playing against another human, with an ELO rating of 2000.

    21 parts

Similar boards

  • 2 layers100 × 99.8 mmUnderdog, the printed circuit board in 3D

    Underdog

    turboedge/SpeedyBoards

    EMS boards powered by Speeduino

    396 parts110GPL-2.0
  • 2 layers125 × 125 mmDiy robotics arm, the printed circuit board in 3D

    Diy robotics arm

    mathias31415/diy_robotics

    Gripper, PCBs and ROS2 software for Six-Axis Robot Arm WE-R2.4 from LoboCNC

    34 parts39
  • 4 layers20.2 × 14.8 mmCooldrv, the printed circuit board in 3D

    Cooldrv

    kliment/cooldrv

    drv8825-based stepper driver module

    11 parts10
  • 4 layers78 × 46 mmHydro, the printed circuit board in 3D

    Hydro

    o7-machinehum/Hydroponic

    Please find the electronics files in the ee folder, all pcb design is done with the open source software KiCad. Is uses an STM32 as the main controller, and an ST L6470 moter driver for the stepper motor.

    69 parts5
  • 4 layers108.4 × 94 mmCompact stepper controller, the printed circuit board in 3D

    Compact stepper controller

    eli3162/diw_printer

    Direct ink Writing(DIW) is a technology that enables 3d printers to print many gels, solvents, and other liquids instead of normal plastic filaments.

    44 parts3GPL-3.0
  • 2 layersStepper, the printed circuit board in 3D

    Stepper

    bibishte/firmwares

    programmes for microcontrollers ans schematic

    68 parts2GPL-2.0
  • 2 layers20.6 × 28 mmStepperDriverU, the printed circuit board in 3D

    StepperDriverU

    akita11/StepperDriverUnit

    23 parts1MIT

Questions

How big is the Acpm arduino motor part PCB?

It measures 220 × 70 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Acpm arduino motor part use?

34 parts, built around the DRV8825PWP and LM7805. 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 Acpm arduino motor part KiCad files?

From the rtweera/autochess repository on GitHub, at the commit this page was made from: the board is pcb_to_entc/acpm-arduino_motor_part/acpm-arduino_motor_part.kicad_pcb and its schematic pcb/autonomous chess playing machine/acpm-arduino_motor_part/acpm-arduino_motor_part.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Acpm arduino motor part design in my own project?

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