Skip to the content
PCBKitNew board
4 layers50 × 50 mmBoard v1, the printed circuit board in 3D

Bachelor Thesis - Design and implementation of a cooperative robotic platform with simple communication

Size
50 × 50 mm
Copper layers
4
Thickness
1.6 mm
Parts
79
Nets
65
Pads
252
Tracks, vias
351, 61
Pours
3
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
22 May 2025
Updated
28 Jan 2026

Overview

Board v1 is an open-source printed circuit board by ductomn, from the ductomn/Swarm-robot repository on GitHub. It is a 4-layer board of 50 × 50 mm with 79 parts on 65 nets, routed with 351 tracks and 61 vias.

It is built around the ESP32-WROOM-32UE-N4, MT3608 and AMS1117-3.3, with the TP4056, TEFT4300 and OED-EL-1L2 among its other parts. Its parts include 27 resistors, 11 capacitors, 10 transistors, 6 diodes and 4 ICs. It belongs with the ESP32 boards of this library.

Main components

12

README

README.md

Swarm Robot Platform

A low-cost, scalable swarm robotic platform designed for research and educational purposes, capable of infrared (IR)-based communication and basic cooperative behaviors.

Playlist of videos showcasing robots and algorithms: https://www.youtube.com/playlist?list=PLNTM9zCJujTltedypfpow2rPiPkVAqfGI

Swarm Robot


🧠 About the Project

This project focuses on the design of a cooperative robotic platform built around the ESP32 microcontroller. The primary goal is to enable simple, local communication and decentralized coordination among identical robots, forming a swarm.

Key design constraints:

  • Minimal production cost (~24 EUR/robot, parts only)
  • Compact and robust mechanical design
  • Infrared-based full-duplex communication (360°)
  • Modular and scalable C firmware using ESP-IDF
  • Developed as part of a Bachelor’s Thesis at Brno University of Technology

Thesis Title:
Návrh a realizace kooperativní robotické platformy s jednoduchou komunikací
(Design and Implementation of a Cooperative Robotic Platform with Simple Communication)


⚙️ Features

🔁 360° IR Communication

6 pairs of IR LEDs and phototransistors evenly placed around the robot enable full directional communication.

🚧 Obstacle Detection

2 front-facing IR LED + phototransistor pairs detect obstacles.

🤖 Cooperative Algorithms

With Leader
  • Simulates a robot "calling" others to complete a task.

  • Modified CSMA/CA protocol ensures robots check for ongoing transmissions before broadcasting.

  • Robots walk randomly looking for signals:

    • If signal is found in a randomly chosen time window → the robot becomes a follower.
    • If not → the robot becomes a leader.
  • Leader can be pre-set (WITH_LEADER 1)

  • Flowchart of system with leader:

Flowchart

  • Implemented algorithms:

    • Follow
      Followers track the leader, who moves randomly.
      Follow

    • Spread Out
      Leader stays in place and acts as a beacon. Followers spread and return.
      Spread

Without Leader
  • No signal detection or leader election.

  • Algorithms run immediately after power-on.

  • Implemented algorithms:

    • Follow Chain
      Robots follow each other in a line. First robot walks randomly. Predefined or dynamic ID (order) assignment.
      Follow Chain

    • Chain
      Robots stay still in a line. The last robot moves forward to the front.
      Chain

🧠 FSM-Controlled Behavior

Each robot uses a finite state machine (FSM) for autonomous control and decision-making. The diagram shows the flow of states of algorithms with leader.

FSM Diagram

🔧 Firmware Modules

  • io_define – I/O pin mappings, robot ID
  • servo_driver – movement (servo) control
  • led_driver – IR LED driver
  • hwtimer – Hardware timer driver
  • adc_lib – ADC driver
  • dm_comm – IR communication (Manchester encoding, CSMA/CA)
  • coop – Cooperative algorithm logic
  • state_machine – FSM and behavior transitions

🛠️ Setting Up

Requirements

  • ESP-IDF
  • PlatformIO (recommended; VS Code plugin)
    Target board: ESP32DOIT-DEVKIT-V1
  • USB-to-UART bridge (e.g. CP2102)

🔧 Calibration

  • Movement Calibration
    The robot doesn’t use encoders, so the motors may spin at different speeds, causing drift.
    Adjust SERVO_FORWARD_LEFT_MOD and SERVO_BACKWARDS_RIGHT_MOD in io_define.h to straighten movement.

  • IR Signal Thresholds
    Tune SIG_THRESHOLD in dm_comm.h and DIS_THRESHOLD in coop.h to adjust signal sensitivity.

  • Algorithm Selection
    Some algorithms (like Chain or Follow Chain) should start immediately on power-up.
    Define the startup behavior by setting flags to "1" (CHAIN or FOLLOW_CHAIN).

⚡ Flashing Instructions

  1. Connect the robot to your computer via USB.
  2. Open io_define.h and set:
    • ROBOT_ID – unique number per robot
    • WITH_LEADER – 1 (for pre-set leader - ID1) or 0
    • CHAIN or FOLLOW_CHAIN – chosen algorithm
  3. Build and flash the firmware

Parts

79
QtyValueFootprintReferences
839Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR3, R4, R7, R8, R9, R10, R11, R12
84k7Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R2, R15, R16, R17, R18, R19, R20
8TEFT4300LED_THT:LED_D1.8mm_W3.3mm_H2.4mmQ1, Q2, Q5, Q6, Q7, Q8, Q9, Q10
6OED-EL-1L2LED_THT:LED_D1.8mm_W3.3mm_H2.4mmIR3, IR4, IR5, IR6, IR7, IR8
40.1uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC7, C8, C9, C11
4MountingHole_PadMountingHole:MountingHole_2.2mm_M2_PadH1, H2, H3, H4
2100Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR5, R13
210uFCapacitor_SMD:C_1210_3225Metric_Pad1.33x2.70mm_HandSolderC3, C4
210uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC5, C6
21kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR24, R25
222uFCapacitor_SMD:C_1210_3225Metric_Pad1.33x2.70mm_HandSolderC1, C2
247kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR6, R14
2SFH4544LED_THT:LED_D1.8mm_W3.3mm_H2.4mmIR1, IR2
2SG90Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalM1, M2
2SI2312CDSPackage_TO_SOT_SMD:SOT-23Q3, Q4
2TS-1088R-020260_Custom_Footprints:SW_Tactile_TS-1088R-02026BOOT, EN
110kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR27
116kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR21
11N5819HW-7-FDiode_SMD:D_SOD-123D5
11k2Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR23
122uFCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC10
12k2Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR22
14.7uHInductor_SMD:L_Chilisin_BMRx00060630L1
15k1Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR26
1AMS1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U3
1D_SchottkyDiode_SMD:D_SMCD1
1ESD5Z5.0T1GDiode_SMD:D_SOD-523D6
1ESP32-WROOM-32UERF_Module:ESP32-WROOM-32UEU4
1LEDLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD4
1LED_GREENLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD3
1LED_REDLED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolderD2
1Li-Po 3.7VConnector_JST:JST_PH_S2B-PH-SM4-TB_1x02-1MP_P2.00mm_HorizontalJ1
1MT3608Package_TO_SOT_SMD:SOT-23-6U1
1SLW-864574-5A-RA-N-DButton_Switch_THT:SW_Slide_SPDT_Straight_CK_OS102011MS2QSW1
1TP4056Package_SO:SOP-8_3.9x4.9mm_P1.27mmU2
1USB_B_MicroConnector_USB:USB_Micro-B_Amphenol_10118194_HorizontalJ2
1~Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalComms1

Questions

How big is the Board v1 PCB?

It measures 50 × 50 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Board v1 use?

79 parts, built around the ESP32-WROOM-32UE-N4, MT3608, AMS1117-3.3 and TP4056. 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 Board v1 KiCad files?

From the ductomn/Swarm-robot repository on GitHub, at the commit this page was made from: the board is PCB/DPS/Board_v1/Board/Board.kicad_pcb and its schematic PCB/DPS/Board_v1/Board/Board.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Board v1 design in my own project?

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

Similar boards

  • 2 layers75 × 23.9 mmEEE3088F MHMZAM005 Sensing, the printed circuit board in 3D

    EEE3088F MHMZAM005 Sensing

    Zamoe/EEE3088F-2024-VLLMUH015-MHMZAM005

    GIt Repo for EEE3088F 2024 at UCT

    43 partsGPL-3.0
  • 4 layers102 × 100 mmZelvicka, the printed circuit board in 3D

    Zelvicka

    RoboticsBrno/Robutek

    Robůtek je robotická platforma založená na čipu ESP32-S3. Je velice rozšitiřelný, ale ze základu umí jezdit, kreslit fixou, jezdit po čáře, pohybovat se bludištěm. Programování je přes Jaculus.

    214 parts12
  • 2 layers50 × 50 mmFilmolino, the printed circuit board in 3D

    Filmolino

    filmolino/SlideScanner

    The Filmolino SlideScanner is a device that makes it easy to scan slides in magazines fully automated using a modified slide projector and a digital camera.

    37 parts28GPL-3.0
  • 2 layers191.3 × 181.7 mmIO Card G3, the printed circuit board in 3D

    IO Card G3

    PerMalmberg/IO-Card-G3

    This is my custom I/O card, third generation. Main purpose is to serve as an alarm system.

    400 parts7MIT
  • 2 layers72.3 × 36.1 mmMultichannel led driver, the printed circuit board in 3D

    Multichannel led driver

    rossuthoff/multichannel_led_driver

    LED driver for up to nine LED strings

    340 parts1GPL-3.0
  • 2 layers75.6 × 75.6 mmMaxMan, the printed circuit board in 3D

    MaxMan

    Matthias-Hess/MaxMan

    15 parts
  • 2 layers88.9 × 76.2 mmCHRP400, the printed circuit board in 3D

    CHRP400

    mirobotech/CHRP400

    CHRP4 (Common Hardware Robotics Project 4, rev. 0) KiCad schematic and PCB design files.

    78 partsMIT
  • 2 layers88.9 × 38.1 mmUBMP430, the printed circuit board in 3D

    UBMP430

    mirobotech/UBMP430

    UBMP430 KiCad files

    64 partsMIT