
Chessboard2
ut-ras/chessbot
Python/MQTT software, Raspberry Pi Config files, PCB Schematics for an autonomous chess playing robot

Python/MQTT software, Raspberry Pi Config files, PCB Schematics for an autonomous chess playing robot
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.
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.
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
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.
git clone https://github.com/ut-ras/chessbot.git cd chessbot
pip install -r requirements.txtsudo apt-get install stockfish && which stockfishThe 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.
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.
Run the Python script:
python python/bitboard_with_stockfish.pypython/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
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| Qty | Value | Footprint | References |
|---|---|---|---|
| 27 | 1k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R2, R4, R5, R10, R11, R12, R14, R15, R16, R17, R18, R21, R34, R52, R55, R56 +11 |
| 9 | 10k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1, R3, R8, R13, R19, R20, R22, R43, R48 |
| 8 | 22uF | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C1, C3, C4, C6, C7, C9, C12, C14 |
| 8 | SolderJumper_2_Open | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP4, JP8, JP11, JP12, JP18, JP19, JP29, JP30 |
| 7 | 100 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R53, R54, R61, R67, R68, R69, R70 |
| 7 | G | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D11, D13, D23, D25, D26, D27, D32 |
| 7 | SolderJumper_2_Bridged | Jumper:SolderJumper-2_P1.3mm_Bridged2Bar_RoundedPad1.0x1.5mm | JP1, JP10, JP20, JP22, JP24, JP26, JP28 |
| 7 | TestPoint | TestPoint:TestPoint_THTPad_1.0x1.0mm_Drill0.5mm | TP1, TP3, TP8, TP9, TP10, TP11, TP14 |
| 6 | MountingHole_2.7mm_M2.5 | MountingHole:MountingHole_2.7mm_M2.5 | MH1, MH2, MH3, MH3, MH4, MH4 |
| 5 | Jumper_2_Bridged | 0chessbot-parts:Bridged_TestPoint_2Pads_Pitch2.54mm_Drill0.8mm | JP13, JP14, JP15, JP16, JP17 |
| 5 | R | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D12, D20, D21, D28, D31 |
| 4 | 100n | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C2, C8, C11, C13 |
| 4 | 3k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R32, R33, R46, R51 |
| 4 | TestPoint | TestPoint:TestPoint_THTPad_D2.0mm_Drill1.0mm | TP4, TP5, TP7, TP15 |
| 4 | WS2812B | LED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mm | D6, D7, D14, D15 |
| 4 | Y | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D2, D3, D4, D10 |
| 3 | 47k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R31, R44, R49 |
| 3 | Bypass | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP21, JP23, JP27 |
| 3 | Conn_02x04_Counter_Clockwise | Connector_PinSocket_2.54mm:PinSocket_2x04_P2.54mm_Horizontal | J1, J3, J6 |
| 3 | SM4007PL | Diode_SMD:Nexperia_CFP3_SOD-123W | D1, D5, D8 |
| 3 | TPS25963x | Package_SO:TI_SO-PowerPAD-8 | U2, U5, U6 |
| 2 | 100u | Capacitor_SMD:CP_Elec_6.3x5.4 | C10, C15 |
| 2 | 150k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R42, R47 |
| 2 | 470R | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R45, R50 |
| 2 | CFG3 | Jumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mm | JP6, JP7 |
| 2 | SS54 | Diode_SMD:D_SMA_Handsoldering | D29, D30 |
| 2 | SolderJumper_3_Bridged12 | Jumper:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mm | JP2, JP9 |
| 2 | TestPoint | TestPoint:TestPoint_Pad_D1.0mm | TP12, TP13 |
| 1 | 1u | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C5 |
| 1 | 20V+ D_TVS | Diode_SMD:D_SOD-123F | D9 |
| 1 | 20k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R30 |
| 1 | 3V3V+ D_TVS | Diode_SMD:D_SOD-123F | D17 |
| 1 | 6V+ D_TVS | Diode_SMD:D_SOD-123F | D18 |
| 1 | 82k | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R29 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U3 |
| 1 | CH224K | 0chessbot-parts:SSOP-10-1EP_3.9x4.9mm_P1mm_EP2.1x3.3mm | U4 |
| 1 | Conn_02x04_Row_Letter_First | Connector_PinSocket_2.54mm:PinSocket_2x04_P2.54mm_Horizontal | J5 |
| 1 | Conn_02x04_Row_Letter_Last | Connector_PinSocket_2.54mm:PinSocket_2x04_P2.54mm_Horizontal | J2 |
| 1 | GPIO | 0chessbot-parts:Samtec_HLE-120-02-xxx-DV-BE-A_2x20_P2.54mm_Horizontal | J27 |
| 1 | LOGO | LOGO | G*** |
| 1 | NMOS AO3400A | Package_TO_SOT_SMD:SOT-23_Handsoldering | Q1 |
| 1 | PMOS AO3401A | Package_TO_SOT_SMD:SOT-23 | Q2 |
| 1 | Pololu Voltage Regulator | 0chessbot-parts:reg15d | J11 |
| 1 | Pololu_Breakout_MP6500 | 0chessbot-parts:Pololu_Breakout-16_15.2x20.3mm | A1 |
| 1 | SW_Push TODO FP CHECK | 0chessbot-parts:SW_SPST_SKQG_WithStem | SW2 |
| 1 | Screw_Terminal_01x02 | TerminalBlock_Phoenix:TerminalBlock_Phoenix_PT-1,5-2-5.0-H_1x02_P5.00mm_Horizontal | J7 |
| 1 | SilentStepStick TMC5160T | 0chessbot-parts:Pololu_Breakout-16_15.2x20.3mm | A2 |
| 1 | TYPE-C-31-M-12 | 0chessbot-parts:USB_C_Receptacle_HRO_TYPE-C-31-M-12 | J4 |
| 1 | TestPoint | TestPoint:TestPoint_THTPad_1.5x1.5mm_Drill0.7mm | TP6 |
| 1 | mini560 voltage regulator | 0chessbot-parts:mini560 | J9 |
The 167 most common of 170 parts.
It measures 65 × 57 mm and has 4 copper layers, 1.56 mm thick.
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.
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.
Its repository states no licence, so its author keeps all rights: ask ut-ras before reusing the design.

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

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


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.


cjheath/jlcbasic
JLC Basic parts library for Kicad fetched and converted from EasyEDA


El-Luhb/nvme-Carrier-for-LattePanda-Mu
nvme Carrier PCB for the LattePanda Mu compute module

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.
