All the computing power is provided by an Arduino Nano 33 Iot. The total board is powered via micro USB which is also used for programming the board. When using the board on the go, a power bank can be used to power the board.
The board uses only 11 digital outputs of the Arduino and the sensor values can be read by only one analog input with ADC. The Arduino Nano 33 IoT provides more then enough inputs and outputs and already comes with an u-Blox WiFi module which is used to connect to the Lichess server. A great advantage of Arduino development boards is the availability and the great developer community which already provide a ton of libraries to get you started. No need to be thinking about bootloader, programming interface – an easy to learn and simplified programming language helps to get a program running in seconds.
Under each square a magnetic hall sensor detects if the square is occupied by a chess piece. Every chess piece contains a small magnet pulling the sensor output low if the square is occupied. If no chess piece is on the square the sensor output is high. A high speed matrix multiplexing circuit connect one output at a time to a single ADC Input of the MCU. By cycling through all 64 sensors the total chess board state is read in about 1 ms.
Each square contains 4 warm-white LEDs in parallel connected to a transistor which switches all 4 LEDs on or off. Each transistor is connected to a shift register (one 8 bit register for each row) and all shift registers are connected in a daisy chain in series. All outputs of the shift registers can be switched on or off simultaneously. If for example only one square shall light up, the total board state needs to be rewritten – a common procedure for LED displays..
The board automatically connects to your Lichess account. For this purpose you need to generate a personal API token on the Lichess website and adapt the token in the source code before programming the board. To connect to the internet, you could either use a hotspot from your mobile phone or connect directly via your WiFi router. To access the WiFi you also need to adapt the WiFi Login credentials in the source code. Once the board is set up and programmed no buttons are needed to start a game. The game is initiated via the Lichess App and the board automatically searches for ongoing games and connects to the game if a game is found. If a game has ended, the board automatically goes back to searching for ongoing games and thereby a new game can be initiated.