

Embedded def
Embedded Connect Four system combining PIC assembly firmware, UART communication, a C++ solver, KiCad PCB design, electronics, and mechanical integration.
- Size
- 95 × 150 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 174
- Nets
- 113
- Pads
- 386
- Tracks, vias
- 560, 37
- Pours
- 4
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 5 Jul 2026
- Updated
- 5 Jul 2026
Overview
Embedded def is an open-source printed circuit board by RomainMls, from the RomainMls/connect-four-embedded-system repository on GitHub. It is a 4-layer board of 95 × 150 mm with 174 parts on 113 nets, routed with 560 tracks and 37 vias.
It is built around the 2STR1160. Its parts include 42 resistors, 22 diodes, 12 capacitors, 11 connectors and 8 ICs.
Main components
1README
README.mdConnect Four Embedded System
This repository contains our project for the INFO2055-1 - Embedded System Project course. The goal was to build a complete embedded system able to physically play Connect Four against a human player.
The project combines several parts: mechanical design, electronics, PCB design, PIC assembly firmware, UART communication, and a C++ program used to compute the bot move.
Repository Structure
firmware/main/: main PIC assembly firmware for the PIC16F1789 microcontroller.firmware/tests/: small test programs used to validate hardware components separately.software/connect4solver/: C++ Connect Four solver and serial communication with the embedded system.hardware/kicad/: final KiCad PCB project and interactive BOM.docs/: tutorial, test PCB image and useful datasheets.
General Behavior
The human player drops a token into a column. Sensors detect the played column, then the PIC sends this information to the C++ program through UART. The solver computes the bot response and sends the column back. The embedded system then moves the mechanism and drops the bot token into the selected column.
The firmware handles, among other things:
- column detection through sensors;
- UART communication;
- stepper motor control;
- limit switch handling;
- mechanism movement logic;
- LED debug signals.
PIC Firmware
The main firmware file is:
firmware/main/main.asmIt targets the following microcontroller:
PIC16F1789The files in firmware/tests/ were used to test hardware parts separately: motor, pump, laser, servomotor, UART, sensors, etc.
Connect Four Solver
The solver is located in:
software/connect4solver/Build it with:
cd software/connect4solver
makeRun it with a serial device path:
./c4solver <device_path>Example:
./c4solver /dev/ttyUSB0The program listens for moves sent by the PIC, updates the game state, computes the best move and sends back a one-byte encoded response.
Hardware
The hardware/kicad/ folder contains the final KiCad PCB project: schematic, PCB and interactive BOM.
Useful documents are stored in docs/datasheets/, including the PIC16F1789 datasheet and PDF schematics of the PCBs.
Contributions
- Joachim Amandine: tests
- Malaise Romain: the base, state machine of the PIC assembly code and most of the work on the assembly firmware.
- Renard Baptiste: UART communication, C++ program and most of the work on the assembly firmware.
- Schins Martin: all the modeling, the mechanical design, and part of the electronics.
In addition to individual work, we regularly met in person at the lab. Several full days were spent working together on integration, testing and improving the complete system.
Note
This repository is a student project archive. It keeps the final code, intermediate hardware tests, hardware files and useful documentation needed to understand the complete system.
Parts
174| Qty | Value | Footprint | References |
|---|---|---|---|
| 12 | 10K | Resistor_SMD:R_1206_3216Metric | R20, R22, R24, R26, R28, R30, R32, R34, R40, R42, R44, R46 |
| 10 | WL-SMCW_1206 | Led SMD 1206:WL-SMCW_1206 | D1, D17, D18, D20, D21, D22, D23, D24, D25, D26 |
| 9 | 1 K | Resistor_SMD:R_1206_3216Metric | R23, R27, R31, R35, R39, R43, R47, R48, R49 |
| 8 | 1 K | PCM_4ms_Resistor:R_1206_3216Metric | R50, R51, R52, R53, R54, R55, R58, R59 |
| 8 | WL-SWTP | Led SMD 1206:WL-SMCW_1206 | D12, D13, D14, D15, D16, D19, D27, D28 |
| 7 | 180 µF | WCAP-ATG8 - 47 uF:WCAP-ATG8_6.3X11_DXL_ | C5, C7, C8, C9, C10, C11, C14 |
| 7 | 2STR1160 | 2STR1160:SOT105P242X150-3N | IC1, IC2, IC3, IC4, IC5, IC6, IC7 |
| 7 | PNP_1 | WR-MPC4-4.2mm -4 pins:64900421122 | PNP_1, PNP_2, PNP_3, PNP_4, PNP_5, PNP_6, PNP_7 |
| 6 | 100K | Resistor_SMD:R_1206_3216Metric | R21, R25, R29, R33, R41, R45 |
| 4 | 1N4007W-T | 1N4007:SODFL3818X130N | D2, D3, D4, D5 |
| 4 | 691210910003 | WR-TBL 2.54:691210910003 | J9, J10, J13, J14 |
| 3 | 10K | PCM_4ms_Resistor:R_1206_3216Metric | R9, R36, R38 |
| 2 | 0402_885012105001 | Capacitor_SMD:C_1808_4520Metric_Pad1.72x2.30mm_HandSolder | C3, C12 |
| 2 | 0402_885012105001 | Capacitor_SMD:C_1206_3216Metric | C1, C2 |
| 2 | 1 K | Resistance SMD 1206:RESC3115X64N | R56, R57 |
| 2 | 24.243.1 | 24.243.1:242431 | J3, J4 |
| 2 | 3557-2 | FUSE -35557-2:FUSE_3557-2_CHINA VERSION | F1, F2 |
| 2 | Conn_01x20 | Connector_PinHeader_2.54mm:PinHeader_1x20_P2.54mm_Vertical | J2, J6 |
| 2 | G*** | kibuzzard-69EC9204 | kibuzzard-69EC9204, kibuzzard-69EC9204 |
| 2 | G*** | kibuzzard-69EC925E | kibuzzard-69EC925E, kibuzzard-69EC925E |
| 2 | G*** | kibuzzard-69EBE619 | kibuzzard-69EBE619, kibuzzard-69EBE619 |
| 1 | 0402_885012105001 | PCM_Capacitor_SMD_AKL:C_1206_3216Metric | C13 |
| 1 | 100K | PCM_4ms_Resistor:R_1206_3216Metric | R37 |
| 1 | 1K | PCM_4ms_Resistor:R_1206_3216Metric | R1 |
| 1 | 3.0 A | Choke Filter 30uH:WE-CMB_NIZN_XS | L1 |
| 1 | 430783034816 | Tactile Switch SMD:430783034816 | S1 |
| 1 | 472123010111 | Switch_THT:SW_Wurth_WS-TOTV_472123010111 | SW1 |
| 1 | 649002127222 | Connector_THT_Wurth:J_Wurth_WR-MPC4_649002127222 | J7 |
| 1 | 649003121732 | Connector_THT_Wurth:J_Wurth_WR-MPC4_64900311122 | J11 |
| 1 | 649004121732 | Connector_THT_Wurth:J_Wurth_WR-MPC4_649004121732 | J12 |
| 1 | DRV8825_STEPPER_MOTOR_DRIVER_CARRIER | DRV8825:IC_DRV8825_STEPPER_MOTOR_DRIVER_CARRIER | U3 |
| 1 | G*** | kibuzzard-69EE3E94 | kibuzzard-69EE3E94 |
| 1 | G*** | kibuzzard-69ECAE7B | kibuzzard-69ECAE7B |
| 1 | G*** | kibuzzard-69EBDF7D | kibuzzard-69EBDF7D |
| 1 | G*** | kibuzzard-69EE007F | kibuzzard-69EE007F |
| 1 | G*** | kibuzzard-69EE00FE | kibuzzard-69EE00FE |
| 1 | G*** | kibuzzard-69EC91E1 | kibuzzard-69EC91E1 |
| 1 | G*** | kibuzzard-69EE00A0 | kibuzzard-69EE00A0 |
| 1 | G*** | kibuzzard-69EC933C | kibuzzard-69EC933C |
| 1 | G*** | kibuzzard-69EBE667 | kibuzzard-69EBE667 |
| 1 | G*** | kibuzzard-69ECC472 | kibuzzard-69ECC472 |
| 1 | G*** | kibuzzard-69EC92C1 | kibuzzard-69EC92C1 |
| 1 | G*** | kibuzzard-69EBDDA0 | kibuzzard-69EBDDA0 |
| 1 | G*** | kibuzzard-69EE1CC6 | kibuzzard-69EE1CC6 |
| 1 | G*** | kibuzzard-69EBE4F1 | kibuzzard-69EBE4F1 |
| 1 | G*** | kibuzzard-69EE0121 | kibuzzard-69EE0121 |
| 1 | G*** | kibuzzard-69EC935F | kibuzzard-69EC935F |
| 1 | G*** | kibuzzard-69EBE63B | kibuzzard-69EBE63B |
| 1 | G*** | kibuzzard-69EC92EA | kibuzzard-69EC92EA |
| 1 | G*** | kibuzzard-69EC9352 | kibuzzard-69EC9352 |
| 1 | G*** | kibuzzard-69EE0020 | kibuzzard-69EE0020 |
| 1 | G*** | kibuzzard-69ECAE6C | kibuzzard-69ECAE6C |
| 1 | G*** | kibuzzard-69EC92D6 | kibuzzard-69EC92D6 |
| 1 | G*** | kibuzzard-69EE015E | kibuzzard-69EE015E |
| 1 | G*** | kibuzzard-69EBE672 | kibuzzard-69EBE672 |
| 1 | G*** | kibuzzard-69EC92F0 | kibuzzard-69EC92F0 |
| 1 | G*** | kibuzzard-69EBE50C | kibuzzard-69EBE50C |
| 1 | G*** | kibuzzard-69EE0113 | kibuzzard-69EE0113 |
| 1 | G*** | kibuzzard-69EC9B70 | kibuzzard-69EC9B70 |
| 1 | G*** | kibuzzard-69EE3EC3 | kibuzzard-69EE3EC3 |
| 1 | G*** | kibuzzard-69EE008B | kibuzzard-69EE008B |
| 1 | G*** | kibuzzard-69ECAE3C | kibuzzard-69ECAE3C |
| 1 | G*** | kibuzzard-69EE1C16 | kibuzzard-69EE1C16 |
| 1 | G*** | kibuzzard-69EC92E3 | kibuzzard-69EC92E3 |
| 1 | G*** | kibuzzard-69EE00DF | kibuzzard-69EE00DF |
| 1 | G*** | kibuzzard-69EDFFE9 | kibuzzard-69EDFFE9 |
| 1 | G*** | kibuzzard-69EE003A | kibuzzard-69EE003A |
| 1 | G*** | kibuzzard-69EC9347 | kibuzzard-69EC9347 |
| 1 | G*** | kibuzzard-69EE3EA6 | kibuzzard-69EE3EA6 |
| 1 | G*** | kibuzzard-69EE1C04 | kibuzzard-69EE1C04 |
| 1 | G*** | kibuzzard-69EE0031 | kibuzzard-69EE0031 |
| 1 | G*** | kibuzzard-69EBE658 | kibuzzard-69EBE658 |
| 1 | G*** | kibuzzard-69EC936B | kibuzzard-69EC936B |
| 1 | G*** | kibuzzard-69EC92A9 | kibuzzard-69EC92A9 |
| 1 | G*** | kibuzzard-69EE00EF | kibuzzard-69EE00EF |
| 1 | G*** | kibuzzard-69EBDDE2 | kibuzzard-69EBDDE2 |
| 1 | G*** | kibuzzard-69ECAE84 | kibuzzard-69ECAE84 |
| 1 | G*** | kibuzzard-69EE0164 | kibuzzard-69EE0164 |
| 1 | G*** | kibuzzard-69EBDDD2 | kibuzzard-69EBDDD2 |
| 1 | G*** | kibuzzard-69EDFFD6 | kibuzzard-69EDFFD6 |
The 162 most common of 174 parts.
Similar boards
- 4 layers81.2 × 96.6 mm

- 4 layers120 × 70 mm

- 4 layers90 × 45 mm

- 4 layers127.5 × 51.5 mm

EMIsniffer
evabits/EMI_sniffer_beursgadget_WOTS_2026
Schematics. Layout and Firmware of the WOTS2026 beursgadget.
174 parts7MIT - 4 layers86.4 × 69.9 mm

- 4 layers160 × 65 mm

Capybara rocket
adam-kabbara/RSX-CANSAT-2026
This is a repository design to manage the files made by the Aerial team under the Robotics for Space eXploration design team at the University of Toronto
174 parts4 - 4 layers157 × 92.3 mm

- 4 layers70 × 116 mm

Questions
How big is the Embedded def PCB?
It measures 95 × 150 mm and has 4 copper layers, 1.6 mm thick.
What parts does the Embedded def use?
174 parts, built around the 2STR1160. 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 Embedded def KiCad files?
From the RomainMls/connect-four-embedded-system repository on GitHub, at the commit this page was made from: the board is hardware/kicad/Embedded_def.kicad_pcb and its schematic hardware/kicad/Embedded_def.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Embedded def design in my own project?
Its repository states no licence, so its author keeps all rights: ask RomainMls before reusing the design.