Skip to the content
PCBKitNew board
2 layers53 × 47 mmServo control, the printed circuit board in 3D

Code samples and ready projects based on bare-metal STM32

Size
53 × 47 mm
Copper layers
2
Thickness
1.6 mm
Parts
63
Nets
47
Pads
187
Tracks, vias
539, 22
Pours
2
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
21 Mar 2015
Updated
10 Oct 2026

Overview

Servo control is an open-source printed circuit board by eddyem, from the eddyem/stm32samples repository on GitHub. It is a 2-layer board of 53 × 47 mm with 63 parts on 47 nets, routed with 539 tracks and 22 vias.

It is built around the CH340G, LM1117-3.3 and SMAJ5.0, with the SI2300, SP0504BAHTG and SS14 among its other parts. Its parts include 17 resistors, 14 capacitors, 10 connectors, 5 diodes and 5 transistors. It belongs with the sensors and measurement and robots and motor control boards and the STM32 boards of this library.

Main components

7

README

Readme.md

Repository Overview

The stm32samples repository is a collection of low-level, bare-metal code examples and complete projects for various STM32 microcontroller series (F0, F1, F3, F4, G0). It uses CMSIS header files from modm-io/cmsis-header-stm32 for register definitions.

Project Structure by MCU Series

STM32F0 (F030, F042, F072)

  • 3steppersLB – Controls 3 stepper motors with encoders via USB/CAN bus
  • blink – Simple LED toggling
  • CANbus4BTA – CAN replacement for PEP-CAN
  • CANBUS_SSI – Works with BTA SSI azimuth encoder
  • Chiller – Basic chiller temperature controller
  • F0_testbrd – Tests STM32F0x2 on custom board
  • htu21d_nucleo – Reads HTU-21D sensor on Nucleo-F042K
  • morze – Echoes USART1 data as Morse code on TIM3CH1 (PA6)
  • NUCLEO_SPI – SSI over SPI on Nucleo-F042K
  • PL2303_ringbuffer – USB CDC ACM with ring buffers
  • QuadEncoder – Quadrature encoder via timer
  • Servo – Controls SG-90 style servos
  • Socket_fans – Manages multiple fans
  • TM1637 – Drives 7‑segment displays
  • tsys01_nucleo – Reads two TSYS01 sensors
  • uart_blink & uart_blink_dma – USART echo with DMA
  • usbcan_relay – Relay board over CAN bus
  • usbcan_ringbuffer – USB‑CAN adapter with ring buffers
  • USBHID – USB HID keyboard + mouse

STM32F1 (F103)

  • BMP180, BMP280 – I²C temperature/pressure sensors
  • Canon_managing_device – Controls Canon lenses
  • canUART – UART‑CAN bridge
  • DHT22_DHT11 – Humidity sensors using timer+DMA
  • DS18 – DS18x20 temperature sensors
  • F1_testbrd – Test board for LQFP48 packages
  • I2Cscan – I²C scanner with register R/W
  • LED_Screen – Drives 32×16 LED matrices (P10)
  • MAX7219_screen – Controls 8×8 LED matrices
  • RGB_LED_Screen – HUB75E RGB panel with 8.8.4 color
  • SevenCDCs – Seven USB‑CDC ACM instances on one MCU (joke project)
  • shutter – Bistable shutter via USB/external signal
  • Tetris – Tetris on HUB75E panel
  • USB_HID – USB HID mouse+keyboard
  • ws2815 – Rainbow effect on WS2815 strips

STM32F3 (F303)

  • ADC – Works with ADC peripheral
  • blink – Toggles LEDs on PB0/PB1
  • CANusb – USB‑CAN adapter
  • floatPrintf – Converts floats to strings
  • Multistepper – Controls up to 64 multiplexed steppers
  • NitrogenFlooding – Automatic nitrogen flooding
  • PL2303 – PL2303 emulator (old)
  • Seven_CDCs – Seven USB CDC ACM interfaces
  • usart1fullDMA – USART1 Rx/Tx DMA with match detection
  • USB_template_CDC – USB‑CDC template

STM32F4 (F401)

  • blink – Simple LED toggling

STM32G0 (G070, G0B1)

  • blink – Basic LED blink
  • RTC – Real‑time clock
  • flash – Flash memory operations
  • g0b1 – USB‑CDC working on G0B1
  • i2c – I²C operations
  • usart – USART communication

Other Directories

  • deprecated – Archive of older, no‑longer‑maintained code
  • snippets – Small reusable code fragments
  • testboard – KiCad 8 design files

Development Environment

  • Toolchain: arm-none-eabi‑gcc with -flto optimisations
  • Build: Structured Makefiles per series
  • Debug: OpenOCD configuration files provided
  • Libraries: No third‑party libraries; only CMSIS‑SVD headers

Project Maturity

  • Alpha: USB template for F303, MLX90640 all‑sky camera
  • Stable: LED blink, UART echo, sensor interfaces, USB‑CDC
  • Draft: CANbus4BTA, MLX90640multi
  • Deprecated: Older code in deprecated/

Summary

This repository is a valuable resource for learning low‑level STM32 programming without vendor libraries. It covers practical applications:

  • Industrial control: Stepper motors, CAN bus, relay boards
  • Sensor interfacing: Temperature, pressure, humidity, encoders
  • Human‑machine interfaces: LED matrices, 7‑segment displays, USB HID
  • Communication: UART, SPI, I²C, USB‑CDC, USB‑HID, CAN
  • Prototyping: Test boards for F0, F1, F3, G0

For the latest updates, check the repository on GitHub.

License

This repository is provided under the GNU General Public License v3 or later. Full text of the GPLv3 is available at https://www.gnu.org/licenses/gpl-3.0.html.

Parts

63
QtyValueFootprintReferences
90.1Capacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolderC1, C2, C3, C5, C6, C8, C10, C11, C12
610kResistor_SMD:R_0805_2012Metric_Pad1.15x1.50mm_HandSolderR1, R7, R9, R15, R16, R17
5510Resistor_SMD:R_0805_2012Metric_Pad1.15x1.50mm_HandSolderR6, R8, R12, R13, R14
4220Resistor_SMD:R_0805_2012Metric_Pad1.15x1.50mm_HandSolderR2, R3, R4, R5
42N7002Package_TO_SOT_SMD:SOT-23Q1, Q3, Q4, Q5
21kResistor_SMD:R_0805_2012Metric_Pad1.15x1.50mm_HandSolderR10, R11
222pCapacitor_SMD:C_0603_1608Metric_Pad0.84x1.00mm_HandSolderC7, C9
2SMAJ5.0Diode_SMD:D_SMA_HandsolderingD3, D4
110uCapacitor_SMD:C_1206_3216Metric_Pad1.24x1.80mm_HandSolderC14
112MHzCrystal:Crystal_HC49-U_VerticalY1
11uCapacitor_SMD:C_0805_2012Metric_Pad1.15x1.50mm_HandSolderC13
147uCapacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-A_Pad1.53x1.40mm_HandSolderC4
15VConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ10
1ADC_inConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ2
1BMBA 0.1mHInductor_SMD:L_0805_2012Metric_Pad1.15x1.50mm_HandSolderL1
1BootButton_Switch_SMD:SW_SPST_FSMSMSW2
1BuzzerBuzzer_Beeper:Buzzer_12x9.5RM7.6BZ1
1CH340GPackage_SOIC:SOIC-16_3.9x9.9mm_P1.27mmU2
1Dig_InConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ5
1Ext_LEDConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ6
1Jumper0Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ3
1Jumper1Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ4
1LM1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U1
1ResetButton_Switch_SMD:SW_SPST_FSMSMSW1
1SI2300Package_TO_SOT_SMD:SOT-23Q2
1SP0504BAHTPackage_TO_SOT_SMD:SOT-23-5D2
1SS14Diode_SMD:D_SMA_HandsolderingD5
1STM32F030F4PxPackage_SSOP:TSSOP-20_4.4x6.5mm_P0.65mmU3
1Servo1Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ7
1Servo2Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ8
1Servo3Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ9
1USB6B1Package_SOIC:SOIC-8_3.9x4.9mm_P1.27mmD1
1USB_B_MicroConnector_USB:USB_Micro-B_Wuerth-629105150521J1

The 59 most common of 63 parts.

Questions

How big is the Servo control PCB?

It measures 53 × 47 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Servo control use?

63 parts, built around the CH340G, LM1117-3.3, SMAJ5.0 and SI2300. 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 Servo control KiCad files?

From the eddyem/stm32samples repository on GitHub, at the commit this page was made from: the board is F0:F030,F042,F072/Servo/kicad/Servo_control.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Servo control design in my own project?

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

More from eddyem/stm32samples

12
  • 4 layers113.5 × 105.5 mmMultistepper, the printed circuit board in 3D

    Multistepper

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    243 parts208
  • 2 layers121.5 × 136.5 mmStm32, the printed circuit board in 3D

    Stm32

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    192 parts208
  • 2 layers121.5 × 136.5 mmStm32, the printed circuit board in 3D

    Stm32

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    155 parts208
  • 4 layers80 × 80 mmNitrogen, the printed circuit board in 3D

    Nitrogen

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    140 parts208
  • 2 layers80 × 84 mmMany485, the printed circuit board in 3D

    Many485

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    117 parts208
  • 2 layers97 × 69.5 mmStm32, the printed circuit board in 3D

    Stm32

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    103 parts208
  • 2 layers98 × 63.5 mmStm32, the printed circuit board in 3D

    Stm32

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    98 parts208
  • 2 layers58 × 71 mmMLX90640-allsky, the printed circuit board in 3D

    MLX90640-allsky

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    94 parts208
  • 2 layers97.5 × 59.5 mmChrono, the printed circuit board in 3D

    Chrono

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    90 parts208
  • 2 layers75.5 × 52.5 mmStm32, the printed circuit board in 3D

    Stm32

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    89 parts208
  • 2 layers66 × 54 mmWindshield, the printed circuit board in 3D

    Windshield

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    86 parts208
  • 2 layers65.5 × 41 mmLamps, the printed circuit board in 3D

    Lamps

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    78 parts208

Similar boards

  • 2 layers87 × 71 mmSocket, the printed circuit board in 3D

    Socket

    eddyem/STM8_samples

    Some code samples and ready projects based on STM8 (deprecated)

    89 parts80
  • 2 layers56.9 × 63.9 mmOpi hat, the printed circuit board in 3D

    Opi hat

    eddyem/ARMsingleboard

    Something for singleboard PC (Orange Pi Zero1/2 etc): I2C, SPI etc.

    53 parts2GPL-3.0
  • 2 layers87 × 47 mmNetclock, the printed circuit board in 3D

    Netclock

    dilshan/ntp-clock

    Ethernet base NTP clock panel driver

    91 parts11MIT
  • 2 layers22.2 × 24.6 mmEsp mini, the printed circuit board in 3D

    Esp mini

    tyrobee/esp_mini

    A Esp based flight controller

    45 parts
  • 2 layers100 × 100 mmIO 16 8 1, the printed circuit board in 3D

    IO 16 8 1

    PPUC/Hardware_IO_16_8_1

    Hardware for the generic I/O Board for PPUC

    227 parts5
  • 4 layers100 × 72 mmFLEADiP, the printed circuit board in 3D

    FLEADiP

    dennowiggle/FLEADiP

    FLEADiP is a compatiable add-on board for the Z80 Retro! project

    226 parts2LGPL-2.1
  • 2 layers97.6 × 67.3 mmIO 16x8 matrix, the printed circuit board in 3D

    IO 16x8 matrix

    PPUC/Hardware_IO_16x8_matrix

    Hardware for a Switch Matrix Board for PPUC

    210 parts
  • 2 layers99.7 × 67.3 mmOpto 16, the printed circuit board in 3D

    Opto 16

    PPUC/Hardware_Opto_16

    Hardware for an Opto Board for PPUC

    206 parts