

System desgin project
Academic project - AGV: line following robot
- Size
- 100 × 90 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 78
- Nets
- 97
- Pads
- 344
- Tracks, vias
- 531, 61
- Pours
- 9
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 20 Jun 2026
- Updated
- 27 Sep 2026
Overview
System desgin project is an open-source printed circuit board by dquang05, from the dquang05/system_desgin_project repository on GitHub. It is a 2-layer board of 100 × 90 mm with 78 parts on 97 nets, routed with 531 tracks and 61 vias.
It is built around the CP2104EK, ESP32-WROOM-32 and HX711, with the LM2596T-12, LM2596T-3.3 and LM2596T-5.0 among its other parts. Its parts include 27 resistors, 19 capacitors, 10 ICs, 5 diodes and 3 inductors. It belongs with the robots and motor control boards and the ESP32 boards of this library.
Main components
9CP2104EK
-- USB Conversion Modules ROHSSilicon LabsUSB Conversion ModulesESP32-WROOM-32
SMD,18x25.5mm-40℃~+85℃ -98dBm 2.4GHz 2.7V~3.6V 20dBm Bluetooth4.2 ESP32-DOWDQ6 UART、SDIO、SPI、I2C、GPIO、PWM、ADC、DAC SMD,25.5x18mm WiFi Modules ROHSEspressif SystemsWiFi ModulesHX711
SOP-16-40℃~+85℃ 1.4mA 10Hz、80Hz 1MHz~20MHz、11.0592MHz 2 2.6V~5.5V 20mV、40mV、80mV 24 Built-in External、Built-in SPI Support Yes SOP-16 Analog to Digital Converters (ADC) ROHSAvia SemiconAnalog To Digital Converters (ADC)LM2596T-12
TO-220-5-40℃~+125℃@(TJ) 1 12V 150kHz 40V 5mA Buck Buck Built-in Fixed No TO-220-5 DC-DC Converters ROHSHGSEMIDC-DC ConvertersLM2596T-3.3
TO-220-5-40℃~+125℃ 1 150kHz 3.3V 3A 40V Buck Buck Fixed No TO-220-5 DC-DC Converters ROHSHGSEMIDC-DC ConvertersLM2596T-5.0
TO-220-5-40℃~+125℃@(TJ) 1 150kHz 3A 4.5V~40V 5V 5mA Buck Buck Built-in Fixed No TO-220-5 DC-DC Converters ROHSTexas InstrumentsDC-DC ConvertersAMS1117-3.3
SOT-223-40℃~+125℃ 0.003%Vout 1 1.1V@(800mA) 15V 1A 3.3V 5mA 72dB@(120Hz) Fixed Over Current Protection、Short Circuit Protection、Thermal shutdown Positive SOT-223 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSAdvanced Monolithic SystemsVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsSS8550
SOT-23-55℃~+150℃ 1 PNP 1.5A 100MHz 100nA 120 25V 300mW 500mV 5V PNP SOT-23 Bipolar (BJT) ROHShongjiachengBipolar (BJT)UMH3N
SOT-363-55℃~+150℃ 0.5uA 100 100mA 150mW 2 NPN (Pre-Biased) 250MHz 300mV 50V 5V 6.11kΩ NPN SOT-363 Digital Transistors ROHSJiangsu Changjing Electronics Technology (CJ)Digital Transistors
README
README.mdESP32 Autonomous Mobile Robot (AMR)
An advanced Autonomous Mobile Robot firmware built on the ESP-IDF v5.x framework. Designed with strict real-time constraints, thread-safety, and modular architecture, this project demonstrates professional-grade embedded systems engineering using FreeRTOS and Object-Oriented C++.
🚀 System Architecture
The firmware is designed with a strict Application-Library Separation.
lib/: Contains hardware-agnostic, non-blocking drivers (Motor Control, PID, ADC DMA, Loadcell, Wi-Fi). No FreeRTOS tasks are spawned here.src/: The Application layer orchestrating high-level state machines, task creation, and global resource management.
Key Engineering Highlights
- Deterministic Real-Time Execution: Motion control and PID loops run precisely at 100Hz in a pinned Core 1 task.
- Thread Safety: Lock-free passing where possible, combined with strict
portENTER_CRITICALSpinlocks for sharing high-frequency data (like Encoder ticks and ADC raw values) across multicore tasks. - Zero Dynamic Allocation in Critical Loops: No
mallocornewin polling loops. Memory is strictly stack-allocated or statically provisioned at startup to prevent Heap Fragmentation. - Direct Memory Access (DMA): The 5-channel Infrared Line Sensor array is sampled at 20kHz continuously via ESP32's ADC DMA hardware, entirely offloading the CPU.
🧠 Control Algorithms
1. Velocity Control (Low-Level)
- Incremental PID Controller: Controls the TB6612 H-Bridge drivers coupled with Quadrature Encoders.
- Slew Rate Limiting: Prevents sudden current spikes (Back-EMF) by artificially capping the maximum acceleration
dv/dt. - Integral Anti-Windup: Prevents overshooting when wheels are mechanically jammed or lose traction.
2. Autonomous Navigation (High-Level)
- Line Tracking: Uses Weighted Average (Centroid) calculation with Affine Calibration to determine precise offset error (
e2). - State Machine: Seamlessly transitions between
MOVING_TO_PICKUP,WAITING_FOR_PACKAGE(Loadcell integration), andDELIVERING. - Two-Phase Pivot Turn: Executes precise turning maneuvers at intersections without the need for IMU/Compass, relying purely on encoder odometry and side-sensor polling.
3. Remote Telemetry & Tuning
- Utilizes asynchronous UDP Sockets to broadcast telemetry data (RPM, Duty Cycle, Sensor Arrays) to a local network at high frequency.
- Supports Live-Tuning: Send a JSON payload via UDP to dynamically update PID gains, steering RPMs, or loadcell thresholds without recompiling or halting the robot.
🛠️ Build & Flash Instructions
This project is configured using standard ESP-IDF CMake.
- Prerequisites: Ensure ESP-IDF v5.x is installed.
- Set Target:
bash idf.py set-target esp32 - Build & Flash:
bash idf.py build idf.py -p PORT flash monitor
📁 Repository Structure
├── MCU/
│ ├── include/ # Shared structures, Configs, and Orchestrator Headers
│ ├── src/ # FreeRTOS Tasks (Motion, Telemetry, UDP) & Main
│ ├── lib/ # Independent Component Libraries
│ │ ├── adc_dma/ # Continuous DMA ADC Driver
│ │ ├── loadcell_hx711/# HX711 Weight Sensor
│ │ ├── tb6612_encoder/# Motor & Quadrature Encoder Driver
│ │ ├── velocity_pid/ # Slew-Rate Limited PID
│ │ └── wifi_manager/ # Wi-Fi Station & AP provisioning
│ └── CMakeLists.txt # Global IDF Component Registration
└── UI/ # Node.js Server & Web Dashboard for UDP TelemetryParts
78| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | 0.1uF | Capacitor_SMD:C_0805_2012Metric | C8, C9, C10, C11, C12, C14, C16, C18 |
| 6 | 1K | Resistor_SMD:R_0603_1608Metric | R1, R2, R3, R4, R5, R6 |
| 6 | 220 | Resistor_SMD:R_0603_1608Metric | R11, R12, R13, R14, R15, R16 |
| 4 | 10K | Resistor_SMD:R_0603_1608Metric | R8, R23, R26, R27 |
| 4 | 680uF | Capacitor_THT:CP_Radial_D8.0mm_P5.00mm | C1, C2, C3, C5 |
| 3 | 10uF | Capacitor_SMD:C_0805_2012Metric | C7, C15, C17 |
| 3 | 12K | Resistor_SMD:R_0603_1608Metric | R7, R17, R18 |
| 3 | 1N5822 | Diode_SMD:D_0805_2012Metric | D1, D2, D3 |
| 3 | 22uH | Inductor_SMD:L_6.3x6.3_H3 | L1, L2, L3 |
| 2 | 100 | Resistor_SMD:R_0603_1608Metric | R9, R10 |
| 2 | 470 | Resistor_SMD:R_0603_1608Metric | R24, R25 |
| 2 | 5.1K | Resistor_SMD:R_0603_1608Metric | R19, R20 |
| 2 | LED | LED_SMD:LED_0805_2012Metric | D4, D5 |
| 2 | PC837 | Package_DIP:DIP-12_W7.62mm | U1, U2 |
| 1 | 10uF | Capacitor_SMD:C_1812_4532Metric_Pad1.57x3.40mm_HandSolder | C13 |
| 1 | 22.1K | Resistor_SMD:R_0603_1608Metric | R21 |
| 1 | 4.7uF | Capacitor_SMD:C_0805_2012Metric | C19 |
| 1 | 47.5K | Resistor_SMD:R_0603_1608Metric | R22 |
| 1 | 470uF | Capacitor_THT:CP_Radial_D8.0mm_P5.00mm | C6 |
| 1 | 560uF | Capacitor_THT:CP_Radial_D8.0mm_P5.00mm | C4 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U8 |
| 1 | CP2104 | Package_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mm | U9 |
| 1 | ESP32-WROOM-32 | RF_Module:ESP32-WROOM-32 | U0 |
| 1 | Encoder1_Header | Connector_JST:JST_EH_S6B-EH_1x06_P2.50mm_Horizontal | Left_Encoder1 |
| 1 | Encoder2_Header | Connector_JST:JST_EH_S6B-EH_1x06_P2.50mm_Horizontal | Right_Encoder1 |
| 1 | HX711 | Package_SO:SOIC-16_3.9x9.9mm_P1.27mm | U7 |
| 1 | LM2596T-12 | Package_TO_SOT_THT:TO-220-5_Vertical | U4 |
| 1 | LM2596T-3.3 | Package_TO_SOT_THT:TO-220-5_Vertical | U6 |
| 1 | LM2596T-5 | Package_TO_SOT_THT:TO-220-5_Vertical | U5 |
| 1 | LineSensor_Header | Connector_JST:JST_EH_S7B-EH_1x07_P2.50mm_Horizontal | ADC1 |
| 1 | Loadcell_Header | Connector_JST:JST_EH_S4B-EH_1x04_P2.50mm_Horizontal | LOADCELL1 |
| 1 | MCU POWER | TerminalBlock:TerminalBlock_bornier-2_P5.08mm | J1 |
| 1 | MOTOR POWER | TerminalBlock:TerminalBlock_bornier-2_P5.08mm | J2 |
| 1 | SS8550 | Package_TO_SOT_SMD:SOT-23 | Q1 |
| 1 | SW_Nidec_CAS-120A1 | Button_Switch_SMD:SW_DIP_SPSTx01_Slide_6.7x4.1mm_W6.73mm_P2.54mm_LowProfile_JPin | SW1 |
| 1 | TB6612FNG | Package_SO:SSOP-24_5.3x8.2mm_P0.65mm | U3 |
| 1 | UMH3N | Package_TO_SOT_SMD:SOT-363_SC-70-6 | Q2 |
| 1 | USB_C_Receptacle_USB2.0_16P | Connector_USB:USB_C_Receptacle_GCT_USB4105-xx-A_16P_TopMnt_Horizontal | USB-C1 |
The 74 most common of 78 parts.
More from dquang05/system_desgin_project
1- 2 layers90 × 40 mm

Similar boards
- 2 layers87.1 × 81.1 mm

Puissance
Rami-Troudi/Electrique-Eurobot-IEEE-INSAT-2026
Repo for my electrical work for the Eurobot competition
40 parts1 - 2 layers40 × 60 mm

- 4 layers238 × 204 mm

BGA Steuerung 4layer
al3c00/BGA_Steuerung
Dieses Repository enthält Platine-Daten und Software zur Steuerung und Überwachung der Substratflüsse einer landwirtschaftlichen Biogasanlage.
371 parts - 2 layers100.1 × 100.1 mm

- 2 layers70.9 × 38.1 mm

- 2 layers90 × 100 mm

Robot
k6V457/maturitni_prace
GOALS: - [x] Create this repository - [ ] Create graduation thesis - [ ] Create template in $\LaTeX$ - [ ] fill in blank spaces - [ ] modify template for SPSKA purposes - [ ] Write INTRO and theoretical part - [ ] start…
12 partsMIT - 2 layers92.7 × 43.2 mm

- 2 layers45 × 85 mm

PSU
velvia-fifty/AudioThings
DIY audio-related projects of questionable quality and dubious utility; delivered in 30 minutes or less or the next one is free
67 parts1
Questions
How big is the System desgin project PCB?
It measures 100 × 90 mm and has 2 copper layers, 1.6 mm thick.
What parts does the System desgin project use?
78 parts, built around the CP2104EK, ESP32-WROOM-32, HX711 and LM2596T-12. 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 System desgin project KiCad files?
From the dquang05/system_desgin_project repository on GitHub, at the commit this page was made from: the board is hardware/main_board/main_board.kicad_pcb and its schematic hardware/LineSensor_Board/LineSensor_Board.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the System desgin project design in my own project?
Its repository states no licence, so its author keeps all rights: ask dquang05 before reusing the design.