Skip to the content
PCBKitNew board
4 layers65 × 57 mmControlboard, the printed circuit board in 3D

Controlboard

ut-ras/chessbot7

Python/MQTT software, Raspberry Pi Config files, PCB Schematics for an autonomous chess playing robot

Size
65 × 57 mm
Copper layers
4
Thickness
1.56 mm
Parts
170
Nets
139
Pads
744
Tracks, vias
1,281, 121
Pours
3
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
24 Jan 2024
Updated
22 Oct 2025

Overview

Controlboard is an open-source printed circuit board by ut-ras, from the ut-ras/chessbot repository on GitHub. It is a 4-layer board of 65 × 57 mm with 170 parts on 139 nets, routed with 1,281 tracks and 121 vias.

It is built around the CH224K, AMS1117-3.3 and WS2812B, with the SM4007PL, SS54 and TYPE-C-31-M-12 among its other parts. Its parts include 56 resistors, 28 diodes, 15 capacitors, 10 connectors and 5 ICs. It belongs with the robots and motor control boards of this library.

Main components

6

README

README.md

ChessBot: Automated Chessboard

Overview

ChessBot is an innovative project developed by the IEEE RAS - Demobots team. It is a CNC-inspired automated chessboard designed to enhance the experience of playing chess. Using an actuated electromagnet gantry system, ChessBot can move magnetized chess pieces across the board autonomously, allowing for a seamless game between two players or against a computer-controlled opponent. The project aims to merge the ancient game of chess with modern technology, providing a unique and interactive experience.

Features

  • Automated Piece Movement: Moves chess pieces using an electromagnet on a step-driven gantry system, controlled under the board.

  • Magnetized Chess Pieces: Each piece is magnetized for precise and secure movement. Piece movements are detected via 3D magnetic sensors underneath each square.

  • Player vs. Computer Mode: Play against an AI with adjustable difficulty settings.

  • Two-Player Online Mode: Enjoy an enhanced tele-chess experience with automated piece movements that reflect your partner's movements from across the internet using Lichess

Installation & Setup (WIP)

Make sure you have Python 3.6 or higher installed on your system. You can download it from the official Python website.

If on Windows use WSL for now, as the code is not tested on Windows.

  1. Clone the repository to your local machine:
bash
git clone https://github.com/ut-ras/chessbot.git 
  1. Install the required Python packages:
bash
cd chessbot
pip install -r requirements.txt
  1. install stockfish and note what path it is installed to, you will need this for the python script. On Ubuntu or WSL you can do this with the following commands:
bash
sudo apt-get install stockfish && which stockfish

The output of the which stockfish command will be the path to the stockfish binary. Copy that path, you will need this for the python script.

  1. In the python/bitboard_with_stockfish.py file, change the stockfish_path variable to the path of the stockfish binary you found in the previous step.

  2. Run the Python script:

bash
python python/bitboard_with_stockfish.py

Software

  • python/bitboard_with_stockfish.py - This is the main file that runs the chess engine. It uses the python-chess library to interface with the Stockfish chess engine. The bitboard implementation is a custom implementation that uses 64-bit integers to represent the chessboard. Makes calls to functions in python/display_output.py, animates the board for a 128x64 display, currently only makes the bitmap.

    • Bitboards are 64bit integer representations of the entire chessboard. 8x8 squares = 64 squares, so a digital for each individual square, that digit is 1 when a piece is on the corresponding square and 0 when a piece is absent from the square.

    • So far we arent using any "standard" bitboard implementations, as our situation is a tad unique. Most chess engines that utilize 12 bitboards, one for each piece type, ( [pawn + knight + bishop + rook + queen + king] * 2 teams = 12 piece types).

    • Here is a diagram of how each space on the chessboard is indexed in the bitboard, the number at each square is the digital that is either high or low depending on if a piece is there or not. For example, square a4 is position 32

      text
        8 |  0  1  2  3  4  5  6  7
        7 |  8  9 10 11 12 13 14 15
        6 | 16 17 18 19 20 21 22 23
        5 | 24 25 26 27 28 29 30 31
        4 | 32 33 34 35 36 37 38 39
        3 | 40 41 42 43 44 45 46 47
        2 | 48 49 50 51 52 53 54 55
        1 | 56 57 58 59 60 61 62 63
           -------------------------
           a  b  c  d  e  f  g  h

TODO

  • Assemble and test chessboard PCB's - each is an individual rank of the board that connect together.
  • Fill this section in with what we have left to do lol

Parts

170
QtyValueFootprintReferences
271kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR2, R4, R5, R10, R11, R12, R14, R15, R16, R17, R18, R21, R34, R52, R55, R56 +11
910kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R3, R8, R13, R19, R20, R22, R43, R48
822uFCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC1, C3, C4, C6, C7, C9, C12, C14
8SolderJumper_2_OpenJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP4, JP8, JP11, JP12, JP18, JP19, JP29, JP30
7100Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR53, R54, R61, R67, R68, R69, R70
7GLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD11, D13, D23, D25, D26, D27, D32
7SolderJumper_2_BridgedJumper:SolderJumper-2_P1.3mm_Bridged2Bar_RoundedPad1.0x1.5mmJP1, JP10, JP20, JP22, JP24, JP26, JP28
7TestPointTestPoint:TestPoint_THTPad_1.0x1.0mm_Drill0.5mmTP1, TP3, TP8, TP9, TP10, TP11, TP14
6MountingHole_2.7mm_M2.5MountingHole:MountingHole_2.7mm_M2.5MH1, MH2, MH3, MH3, MH4, MH4
5Jumper_2_Bridged0chessbot-parts:Bridged_TestPoint_2Pads_Pitch2.54mm_Drill0.8mmJP13, JP14, JP15, JP16, JP17
5RLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD12, D20, D21, D28, D31
4100nCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC2, C8, C11, C13
43kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR32, R33, R46, R51
4TestPointTestPoint:TestPoint_THTPad_D2.0mm_Drill1.0mmTP4, TP5, TP7, TP15
4WS2812BLED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mmD6, D7, D14, D15
4YLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD2, D3, D4, D10
347kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR31, R44, R49
3BypassJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP21, JP23, JP27
3Conn_02x04_Counter_ClockwiseConnector_PinSocket_2.54mm:PinSocket_2x04_P2.54mm_HorizontalJ1, J3, J6
3SM4007PLDiode_SMD:Nexperia_CFP3_SOD-123WD1, D5, D8
3TPS25963xPackage_SO:TI_SO-PowerPAD-8U2, U5, U6
2100uCapacitor_SMD:CP_Elec_6.3x5.4C10, C15
2150kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR42, R47
2470RResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR45, R50
2CFG3Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP6, JP7
2SS54Diode_SMD:D_SMA_HandsolderingD29, D30
2SolderJumper_3_Bridged12Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mmJP2, JP9
2TestPointTestPoint:TestPoint_Pad_D1.0mmTP12, TP13
11uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC5
120V+ D_TVSDiode_SMD:D_SOD-123FD9
120kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR30
13V3V+ D_TVSDiode_SMD:D_SOD-123FD17
16V+ D_TVSDiode_SMD:D_SOD-123FD18
182kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR29
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U3
1CH224K0chessbot-parts:SSOP-10-1EP_3.9x4.9mm_P1mm_EP2.1x3.3mmU4
1Conn_02x04_Row_Letter_FirstConnector_PinSocket_2.54mm:PinSocket_2x04_P2.54mm_HorizontalJ5
1Conn_02x04_Row_Letter_LastConnector_PinSocket_2.54mm:PinSocket_2x04_P2.54mm_HorizontalJ2
1GPIO0chessbot-parts:Samtec_HLE-120-02-xxx-DV-BE-A_2x20_P2.54mm_HorizontalJ27
1LOGOLOGOG***
1NMOS AO3400APackage_TO_SOT_SMD:SOT-23_HandsolderingQ1
1PMOS AO3401APackage_TO_SOT_SMD:SOT-23Q2
1Pololu Voltage Regulator0chessbot-parts:reg15dJ11
1Pololu_Breakout_MP65000chessbot-parts:Pololu_Breakout-16_15.2x20.3mmA1
1SW_Push TODO FP CHECK0chessbot-parts:SW_SPST_SKQG_WithStemSW2
1Screw_Terminal_01x02TerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-2-5.0-H_1x02_P5.00mm_HorizontalJ7
1SilentStepStick TMC5160T0chessbot-parts:Pololu_Breakout-16_15.2x20.3mmA2
1TYPE-C-31-M-120chessbot-parts:USB_C_Receptacle_HRO_TYPE-C-31-M-12J4
1TestPointTestPoint:TestPoint_THTPad_1.5x1.5mm_Drill0.7mmTP6
1mini560 voltage regulator0chessbot-parts:mini560J9

The 167 most common of 170 parts.

Questions

How big is the Controlboard PCB?

It measures 65 × 57 mm and has 4 copper layers, 1.56 mm thick.

What parts does the Controlboard use?

170 parts, built around the CH224K, AMS1117-3.3, WS2812B and SM4007PL. 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 Controlboard KiCad files?

From the ut-ras/chessbot repository on GitHub, at the commit this page was made from: the board is hardware/controlboard/controlboard.kicad_pcb and its schematic hardware/chessboard-bus/chessboard5-bus.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Controlboard design in my own project?

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

More from ut-ras/chessbot

2
  • 2 layers240 × 12 mmChessboard2, the printed circuit board in 3D

    Chessboard2

    ut-ras/chessbot

    Python/MQTT software, Raspberry Pi Config files, PCB Schematics for an autonomous chess playing robot

    78 parts7
  • 2 layers10 × 300 mmChessboard5-bus, the printed circuit board in 3D

    Chessboard5-bus

    ut-ras/chessbot

    Python/MQTT software, Raspberry Pi Config files, PCB Schematics for an autonomous chess playing robot

    14 parts7

Similar boards

  • 4 layers76 × 68 mmRobobuoy Sub v2 0, the printed circuit board in 3D

    Robobuoy Sub v2 0

    pnn69/Kicad_PCB

    Schematics and PCB's designed with Kicad

    119 parts
  • 6 layers100 × 120 mmAstra piNas, the printed circuit board in 3D

    Astra piNas

    jlcjak/astra_piNas

    Six-layer CM5 Lite dual-NVMe carrier with PCIe switch, Ethernet, microSD, USB-C PD and PoE. Review design; fabrication hold documented.

    176 parts30
  • 4 layers61.3 × 61.7 mmBio thing, the printed circuit board in 3D

    Bio thing

    noahalam77-code/TheraPatch

    82 partsMIT
  • 2 layers121 × 75.5 mmJlctest, the printed circuit board in 3D

    Jlctest

    cjheath/jlcbasic

    JLC Basic parts library for Kicad fetched and converted from EasyEDA

    46 parts5
  • 2 layers40 × 111 mmLED Wled, the printed circuit board in 3D

    LED Wled

    edvard5/wEasyLed_V2

    96 parts
  • 4 layers170.2 × 170.2 mmNvme Carrier all M2, the printed circuit board in 3D

    Nvme Carrier all M2

    El-Luhb/nvme-Carrier-for-LattePanda-Mu

    nvme Carrier PCB for the LattePanda Mu compute module

    400 parts12MIT
  • 2 layers120 × 95 mmAmp, the printed circuit board in 3D

    Amp

    rmalchow/ondaire

    A KiCad 10 project for a powered-speaker node: an ESP32-S3 dev board drops into a socket, an I²S DAC + class-D amp turn the stream into 40–50 W of audio, and the whole thing runs from a single USB-C cable via USB-PD.

    68 parts1