This project aims to create an autonomous robot capable of playing an intelligent, over-the-board game of chess against a human opponent. The system uses a three-axis, cantilevered, overhead gantry to move parallel to the chess board. Each axis is driven by a stepper motor, the horizontal axes using belts and the vertical axis using a rack and pinion. A crosspoint array of reed switches embedded in the physical chess board allows for piece detection, and with software record of the board state, piece recognition. This system is orchestrated by an MSP432E401Y microcontroller, with chess moves being pulled from the open-source Stockfish chess engine, running on a Raspberry Pi 3A+. All communication between the Raspberry Pi and MSP432 is done through a universal asynchronous receiver-transmitter (UART) serial connection.
This repository contains all schematic and PCB files for the system, generated in KiCad. Files can be graphically viewed at CADLab. In this document, <LGR> will indicate your local path to the GIT repo.
- Clone this repo onto your local machine.
- Open
<LGR>/Boards/Main_Board/_Top_Level/Main_Board.kicad_prowith KiCad to view the main project. - In KiCad, open
Main_Board.kicad_schto view the schematic, orMain_Board.kicad_pcbto view the PCB.
- Create the following new directories:
<LGR>/Boards/<YOUR_BOARD_NAME><LGR>/Boards/<YOUR_BOARD_NAME>/_DFM<LGR>/Boards/<YOUR_BOARD_NAME>/_DFM/Gerber<LGR>/Boards/<YOUR_BOARD_NAME>/_Top_Level
- Open KiCad
- Select
File->New Project - A
Create New Projectwindow will pop up. In the window, navigate to<LGR>/Boards/<YOUR_BOARD_NAME>/_Top_Level - Enter the file name
<YOUR_BOARD_NAME>.kicad_proand clickSave
- Create a new directory:
<LGR>/Boards/<YOUR_BOARD_NAME>/<SUBSHEET_NAME> - Open
<LGR>/Boards/<YOUR_BOARD_NAME>/_Top_Level/<YOUR_BOARD_NAME>.kicad_schin the KiCad Schematic Editor - Select
Place->Add Sheet - Click to place the symbol
- A
Sheet Propertieswindow will pop up. Add the following entry:- Sheet Name:
<DESCRIPTIVE_NAME>, Sheet File:../<SUBSHEET_NAME>/<COMPONENT_NAME>.kicad_sch
- Sheet Name:
- Right click the component and select
Import Sheet Pinto place the hierarchical labels
Note: We no longer use a custom path for project libraries. We instead use relative paths from ${KIPRJMOD}
- Install the library:
- Download an external library
- Ex: A model for the DRV8824QPWPRQ1 can be found under 'ECAD Model'
- Unzip the download to get a
*.epwfile - Download the Library Loader tool from Mouser
- Register/login to the Library Loader tool
- Click
Open ECAD Modeland select the downloaded*.epwfile - By default the output is in
~/Downloads/LIB_GET.zip. Unzip it - Copy the unzipped contents into:
<LGR>/Project_Libraries/<LIBRARY_NAME>
- Download an external library
- Import the symbol:
- In the KiCad Schematic Editor, go to:
Preferences->Manage Symbol Libraries->Project Specific Libraries - Add the following entry by clicking the
+button:- Nickname:
<LIBRARY_NAME>, Library Path:${KIPRJMOD}/../../../Project_Libraries/<LIBRARY_NAME>/KiCad/<LIBRARY_NAME>.lib
- Nickname:
- Select
Migrate Libraries - Place the device in KiCad by going to
Place->Add Symboland search for<LIBRARY_NAME>
- In the KiCad Schematic Editor, go to:
- Add the footprint:
- In the KiCad PCB Editor, go to:
Preferences->Manage Footprint Libraries->Project Specific Libraries - Add the following entry by clicking the
+button:- Nickname:
<LIBRARY_NAME>, Library Path:${KIPRJMOD}/../../../Project_Libraries/<LIBRARY_NAME>/KiCad
- Nickname:
- In the KiCad PCB Editor, go to:
- Update the symbol field to make exporting the BOM easier:
- Right click on the symbol and click
Properties - Click
Edit Library Symbol. This should open a symbol editing window. - Go to
File -> Symbol Properties - Use the
+button to add the fieldsDatasheet,Manufacturer's Part Number,Digikey Part Number,Mouser Part Number,Digikey Link, andMouser Linkin that order (with that exact spelling/capitalization)- The
Datasheetshould be a URL to the datasheet, and theDigikey linkandMouser linkfields should be links to the part's product page
- The
- Uncheck the
Showfield for everything except theReferenceandValuefields - If the part has a meaningful value (e.g., a 10k resistor), add that value in the
Valuefield - In the
Footprintfield, select the folder icon and search for<LIBRARY_NAME>in the popup - Double click the result to associate the footprint you imported with the symbol you imported
- Note: The footprint field might show something like
<LIBRARY_NAME>:<SEEMINGLY_RANDOM_STRING>, this is okay
- Note: The footprint field might show something like
- Click
Okand close the library editor - In the schematic, either right click the symbol and select
Updateor delete and re-add the symbol. The fields should now be included correctly
- Right click on the symbol and click
