Skip to the content
PCBKitNew board
4 layers100 × 70.8 mmKia Arm Ctrl, the printed circuit board in 3D

Kia Arm Ctrl

OLYPTEA/Kia1

Bras Robotique Open Source

Size
100 × 70.8 mm
Copper layers
4
Thickness
1.6 mm
Parts
137
Nets
102
Pads
495
Tracks, vias
1,295, 235
Pours
6
Routed
Yes
KiCad
KiCad 10.0 (file 20260206)
Created
2 Jun 2026
Updated
2 Jun 2026

Overview

Kia Arm Ctrl is an open-source printed circuit board by OLYPTEA, from the OLYPTEA/Kia repository on GitHub, published under the MIT licence. It is a 4-layer board of 100 × 70.8 mm with 137 parts on 102 nets, routed with 1,295 tracks and 235 vias.

It is built around the 74AHCT244D, ESP32-S3-WROOM-1-N8 and LM1117LD-5.0, with the BAT54J, MBRS340 and 1N4148W among its other parts. Its parts include 11 diodes, 8 connectors, 6 ICs, 5 resistors and 5 transistors. It belongs with the ESP32 boards of this library.

Main components

8

README

README.md

Kia Arm Controller (ESP32-S3) By OlypTea

(Baser sur : https://www.youtube.com/watch?v=AIsVlgopqJc )

CarteKia Kia-Arm-Ctrl22 KiaStudio

https://github.com/user-attachments/assets/333e42ec-3789-4127-9b2e-19c26ccea488

Refonte complète (Hardware, Firmware & Software) d'un bras robotique imprimé en 3D (4 axes + pince), inspirée initialement du projet de la chaîne Build Some Stuff.

Cette version abandonne le combo limité Arduino Uno + PCA9685 au profit d'une carte sur mesure basée sur l'ESP32-S3, capable de gérer la cinématique et l'alimentation de puissance de manière autonome.


Améliorations majeures

  • Calcul haute performance : ESP32-S3 (Dual-core 240MHz, FPU, 16MB Flash + 8MB PSRAM Octal). Gère la cinématique directe/inverse (FK/IK) et l'interpolation par spline cubique directement en local.
  • Alimentation intégrée (6V/10A) : Régulateur Buck synchrone TI TPS56C215 (pic à 15A) capable d'alimenter directement les servos de forte puissance (Miuzei 15 à 35kg).
  • Sécurité matérielle : Surveillance de la puissance via INA219 et circuit d'arrêt d'urgence physique (E-STOP par MOSFETs) coupant la puissance sans affecter la logique du MCU.
  • Signal propre : Abandon du PCA9685. Utilisation du périphérique natif MCPWM de l'ESP32-S3 avec conversion de niveau logique 3.3V vers 5V (SN74AHCT244).
  • Interface PC dédiée (Kia Studio) : Application de contrôle et calibration 3D temps réel développée en Python (PySide6 + PyOpenGL).

Spécifications du Hardware & PCB

  • Dimensions : 100 × 70 mm (conçu pour s'intégrer parfaitement dans l'espace de 113.5 × 80.7 mm de la base du bras / plaque MB2).
  • Stackup : PCB 4 couches avec couches internes en cuivre épais de 2 oz (70 µm).
  • Routage : Pistes d'alimentation VSERVO $\ge$ 3 mm et isolation stricte des masses (Star Ground) : connexions séparées pour le GND logique, puissance et analogique reliées en un seul point (Net tie) sous l'INA219.
  • Conception : Réalisé sous KiCad 10 (Schémas divisés en modules : Power, MCU, IO, Connectors).

Piège de routage évité : Les GPIO 26 à 37 sont réservés à la PSRAM Octal de l'ESP32-S3 et sont strictement inutilisables.


Architecture du Firmware (Dual-Core)

Développé directement sous ESP-IDF + FreeRTOS pour maximiser les performances en temps réel.

  • Core 0 (PRO_CPU) : Gestion & Comms
    • Parser USB CDC & Serveur BLE GATT (futurs services WiFi/HTTP).
    • Machine d'état principale de tout le système.
  • Core 1 (APP_CPU) : Temps Réel Strict
    • Tâche ADC (100 Hz) : Suréchantillonnage x64, filtre EMA et hystérésis pour les 5 potentiomètres.
    • Solveur cinématique (FK/IK) et interpolation de trajectoire (Spline cubique) pour des mouvements fluides sans à-coups.
    • Driver MCPWM (50 Hz) pour le signal précis des servos (impulsions de 1 à 2 ms).
    • Supervision de sécurité (Lecture I2C en temps réel de l'INA219 & gestion de l'interruption E-STOP).

Logiciel PC : Kia Studio

Interface 3D légère basée sur une architecture hexagonale en Python 3.11 + PySide6 et un rendu graphique de bas niveau (pyqtgraph + PyOpenGL).

  • proto/ : Protocole de communication USB CDC partagé à 100 % avec le contrôleur.
  • core/ : Modèle cinématique pur Python et chargement des fichiers STL.
  • ui/ : Vue Qt, panneau de calibration 3D avec manipulation des axes XYZ (Pivot Gizmo) et sauvegarde des offsets dans un fichier de configuration JSON.

(Note : L'application est générique. Il suffit de remplacer les modèles 3D et de rebuild l'app pour l'adapter à un autre bras possédant la même architecture).


Modes de Fonctionnement

ModeDéclencheurLogique principaleUtilisation
ManualInterrupteur physiqueLecture potentiomètres $\rightarrow$ Filtre ADC $\rightarrow$ Angles $\rightarrow$ MCPWMTest initial de chaque articulation et manipulation simple sans PC.
AppCommande PCCible via USB/BLE $\rightarrow$ Solveur IK $\rightarrow$ Spline cubique $\rightarrow$ MCPWMContrôle spatial complexe via Kia Studio, exécution de trajectoires.
CalibrationCommande / BoutonDésactivation spline $\rightarrow$ Ajustement fin des neutres (largeur d'impulsion) $\rightarrow$ Sauvegarde NVSPremier assemblage, remplacement de servo ou recentrage suite à un saut de dent.
FaultE-STOP / INA219Coupure matérielle immédiate des servos + LED Alerte jaune & WS2812 rougeProtection en cas de collision, blocage mécanique ou court-circuit.

Remerciements & Références

  • Build Some Stuff Fondateur du projet initiale
  • Espressif ESP-IDF - Framework.
  • KiCad EDA - Suite de conception électronique open-source.
  • PySide / Qt - Framework UI pour Kia Studio.
  • Merci aux membres de la communauté open-source pour les inspirations structurelles des bras robotiques 3D.

Parts

137
QtyValueFootprintReferences
18100nFCapacitor_SMD:C_0603_1608MetricC_1, C_2, C_decap_1, C_decap_3, C_decap_4, C_decap_5, C_decap_led4, C_estop1, C_pot_1, C_pot_2, C_pot_3, C_pot_4, C_pot_5, C_servo_1a2, C_servo_2a1, C_servo_3a1 +2
91kResistor_SMD:R_0603_1608MetricR_bz1, R_led1, R_led2, R_led3, R_pot_1, R_pot_2, R_pot_3, R_pot_4, R_pot_5
810µFCapacitor_SMD:C_0805_2012MetricC_decap_2, C_ld_in1, C_ld_out1, C_servo_1b2, C_servo_2b1, C_servo_3b1, C_servo_4b1, Cout_2b1
710kResistor_SMD:R_0603_1608MetricR_1, R_base_drv1, R_boot1, R_estop1, R_mode1, R9, Rc1
6100nFCapacitor_SMD:C_0805_2012Metricc_decap1, C_servo_5a1, C3, C4, Cf_ina1, Cf_ina2
5Conn_01x03Connector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_VerticalConnPot1, ConnPot2, ConnPot3, ConnPot4, ConnPot5
4MountingHoleMountingHole:MountingHole_3.2mm_M3_Pad_TopBottomM1, M2, M3, M4
310kResistor_SMD:R_0805_2012MetricR1, R2, Rq2_pu1
310µF/25VCapacitor_SMD:C_0805_2012MetricCin_1, Cin_2, Cin_3
322µF/16VCapacitor_SMD:C_0805_2012MetricCout1, Cout2, Cout3
34.7kResistor_SMD:R_0603_1608MetricR_i2c_scl1, R_i2c_sda1, Rfb2
3LEDLED_SMD:LED_0805_2012MetricLED1, LED2, LED3
2100µF/16VCapacitor_THT:CP_Radial_D10.0mm_P5.00mmCout4, Cout5
222Resistor_SMD:R_0603_1608MetricRdm1, Rdp1
222nFCapacitor_SMD:C_0805_2012MetricCss/tr1, Css1
222pFCapacitor_SMD:C_0603_1608MetricCff_2, Cff1
25.1kResistor_SMD:R_0603_1608MetricRcc1, Rcc2
2BAT54JDiode_SMD:D_SOD-323FD5, D7
2MBRS340Diode_SMD:D_SMCD3, D4
2NetTie_2NetTie:NetTie-2_SMD_Pad0.5mmNT1, NT2
2Q_NPN_BECPackage_TO_SOT_SMD:SOT-23Q3, Q4
2Q_PMOS_GSDcustom:MOSFET_P_SO-8_GSDQ1, Q2
2SW_PushButton_Switch_SMD:SW_SPST_FSMSMSW2, SW3
110Resistor_SMD:R_0603_1608MetricRsh_filt1
1100pFCapacitor_SMD:C_0603_1608MetricCp1
110µFCapacitor_SMD:C_0603_1608MetricC_servo_4b2
1156kResistor_SMD:R_0603_1608MetricRfb1_2
11N4148WDiode_SMD:D_SOD-123D8
11nFCapacitor_SMD:C_0603_1608MetricC_boot1
11µFCapacitor_SMD:C_0805_2012MetricC5
12.2µH/15AInductor_SMD:L_12x12mm_H6mmL1
12.2µH/3AInductor_SMD:L_6.3x6.3_H3L2
122kResistor_SMD:R_0603_1608MetricRrt1
122µF/10VCapacitor_SMD:C_0805_2012MetricCout_2a1
14,7nFCapacitor_SMD:C_0805_2012MetricCc1
142.2kResistor_SMD:R_0603_1608MetricRfb1
1470µFCapacitor_THT:CP_Radial_D10.0mm_P5.00mmC2
1470µF25VCapacitor_THT:CP_Radial_D10.0mm_P5.00mmC1
149.9kResistor_SMD:R_0603_1608MetricRfb2_2
174AHCT244Package_SO:TSSOP-20_4.4x6.5mm_P0.65mmU6
1Barrel_JackConnector_BarrelJack:BarrelJack_HorizontalJ1
1BuzzerBuzzer_Beeper:Buzzer_12x9.5RM7.6BZ1
1Conn_02x06_Odd_EvenConnector_PinHeader_2.54mm:PinHeader_2x06_P2.54mm_VerticalJ15
1D_TVSDiode_SMD:D_SMBD1
1D_ZenerPackage_TO_SOT_SMD:SOT-23_HandsolderingD2
1ESP32-S3-WROOM-1RF_Module:ESP32-S3-WROOM-1U4
1FerriteBeadInductor_SMD:L_0603_1608MetricFB1
1INA219AxDCNPackage_TO_SOT_SMD:SOT-23-8U5
1LM1117LD-5.0Package_SON:WSON-8-1EP_4x4mm_P0.8mm_EP2.2x3mmU3
1PolyfuseFuse:Fuse_Bourns_MF-RG300F1
1PolyfuseFuse:Fuse_1206_3216MetricF_vbus1
1RResistor_SMD:R_2512_6332MetricR7
1R_filt2Resistor_SMD:R_0603_1608MetricR11
1SW_PushButton_Switch_THT:SW_Tactile_SPST_Angled_PTS645Vx39-2LFSSW1
1SW_SPDTButton_Switch_SMD:SW_SPDT_PCM12SW4
1Servo BaseConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ4
1Servo CoudeConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ6
1Servo PinceConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ8
1Servo PoignetConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ7
1Servo ÉpauleConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ5
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6ESDprot1
1USB_C_Receptacle_USB2.0_16PConnector_USB:USB_C_Receptacle_HRO_TYPE-C-31-M-12J3
1WS2812BLED_SMD:LED_WS2812B_PLCC4_5.0x5.0mm_P3.2mmD6
1XT60_YELLOWXT60_YELLOW:AMASS_XT60PB-MQ5
1~Package_SO:HTSSOP-20-1EP_4.4x6.5mm_P0.65mm_EP3.4x6.5mmU1
1~Package_DFN_QFN:VQFN-16-1EP_3x3mm_P0.5mm_EP1.6x1.6mm_ThermalViasU2

Questions

How big is the Kia Arm Ctrl PCB?

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

What parts does the Kia Arm Ctrl use?

137 parts, built around the 74AHCT244D, ESP32-S3-WROOM-1-N8, LM1117LD-5.0 and BAT54J. 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 Kia Arm Ctrl KiCad files?

From the OLYPTEA/Kia repository on GitHub, at the commit this page was made from: the board is 1-Hardware/Kia-Arm-Ctrl.kicad_pcb and its schematic 1-Hardware/Kia-Arm-Ctrl.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Kia Arm Ctrl design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers68.2 × 52.2 mmForward Ignition PCB, the printed circuit board in 3D

    Forward Ignition PCB

    aditgoyal5/Forward_Ignition_PCB

    This repository is about a printed circuit board I built for Team Sammard.

    135 parts
  • 4 layers60 × 60 mmRocket payload, the printed circuit board in 3D

    Rocket payload

    Gupatron/Gupsfirstpcb

    This is the first pcb that I will manufacture and intend to use for teleop usecases in my personal projects.

    138 parts
  • 6 layers304.8 × 243.8 mmAmigaPCI MainBoard, the printed circuit board in 3D

    AmigaPCI MainBoard

    AmigaPCI/AmigaPCI-MainBoard

    Amiga with Native PCI Bus

    748 parts135
  • 4 layers244 × 142.3 mmLED DriverPCB, the printed circuit board in 3D

    LED DriverPCB

    nicholasshort/LED-Driver

    A USB-controlled addressable LED strip driver built to illuminate a model car display cabinet. The cabinet houses 500+ 1/43rd scale model cars across 4 vertical sections, each lit by two 120-LED strips (960 LEDs total).

    72 parts
  • 6 layers56.1 × 88 mmBldc&foc motor controller, the printed circuit board in 3D

    Bldc&foc motor controller

    bejaouihamza/bldc-foc-pcb

    This open-source hardware project is a compact, single-board FOC (Field-Oriented Control) motor driver designed for precision robotics, drones, CNC machines, and automation systems.

    108 parts16
  • 2 layers100.6 × 131 mmHabitat V5, the printed circuit board in 3D

    Habitat V5

    machadoleonardo94/HabitatControl-hardware

    Hardware files for HabitatControl, designed on DipTrace

    161 parts1
  • 2 layers85 × 67 mmGaggimate, the printed circuit board in 3D

    Gaggimate

    dulerabbit/GaggiBre-legacy

    This is GaggiBre! a fork of Gaggimate with Manual Brew Control and Adaptive Mode. Made by Dule Rabbit

    113 parts8
  • 4 layers70.9 × 75 mmFlagshep Audio Player V1, the printed circuit board in 3D

    Flagshep Audio Player V1

    HYLDAIC/Flagshep-V1_Audio-Player

    A high fidelity semi-portable audio player student project with provided PCB files, 3D files and Code

    77 parts1CERN-OHL-P-2.0