Skip to the content
PCBKitNew board
2 layers66 × 54 mmWindshield, the printed circuit board in 3D

Code samples and ready projects based on bare-metal STM32

Size
66 × 54 mm
Copper layers
2
Thickness
1.6 mm
Parts
86
Nets
73
Pads
255
Tracks, vias
510, 23
Pours
1
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
21 Mar 2015
Updated
10 Oct 2026

Overview

Windshield is an open-source printed circuit board by eddyem, from the eddyem/stm32samples repository on GitHub. It is a 2-layer board of 66 × 54 mm with 86 parts on 73 nets, routed with 510 tracks and 23 vias.

It is built around the MT1470, ZXCT1009FTA and TJA1050, with the AOD4185, IRLR7807Z and MM3Z3V3 among its other parts. Its parts include 27 resistors, 13 capacitors, 13 diodes, 8 connectors and 6 transistors. It belongs with the sensors and measurement and computers and single-board computers boards and the STM32 boards of this library.

Main components

8

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

86
QtyValueFootprintReferences
7100Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR4, R5, R8, R9, R15, R16, R25
710kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR11, R17, R19, R22, R23, R26, R27
60.1Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C7, C9, C11, C12, C13
61N4007Diode_SMD:D_SMA_HandsolderingD4, D5, D9, D10, D11, D12
31N5819Diode_SMD:D_SOD-323_HandSolderingD1, D2, D8
3GndTestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP1, TP6, TP7
2100kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR2, R7
21kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR12, R13
2220Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR18, R24
22N7002Package_TO_SOT_SMD:SOT-23_HandsolderingQ1, Q6
26Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC8, C10
2AOD4185Package_TO_SOT_SMD:TO-252-3_TabPin2Q2, Q4
2IRLR7807Package_TO_SOT_SMD:TO-252-3_TabPin2Q3, Q5
2MM3Z3V3Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolderD6, D7
10.05Resistor_THT:R_Box_L14.0mm_W5.0mm_P9.00mmR20
110uCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC2
110ukicad:cd43L1
1120Resistor_SMD:R_1210_3225Metric_Pad1.30x2.65mm_HandSolderR21
112VTestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP3
119kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR6
11uCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC3
122Capacitor_SMD:C_0805_2012Metric_Pad1.18x1.45mm_HandSolderC6
1300kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1
1330Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR14
13V3TestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP5
147Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR3
147uCapacitor_SMD:C_1206_3216MetricC4
147uCapacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolderC5
15VTestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP4
16.8Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR10
1ButtonsConnector_JST:JST_PH_B3B-PH-K_1x03_P2.00mm_VerticalJ3
1CANConnector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ8
1EXT_MOTConnector_JST:JST_PH_B2B-PH-K_1x02_P2.00mm_VerticalJ6
1HallConnector_JST:JST_PH_B4B-PH-K_1x04_P2.00mm_VerticalJ2
1L+TestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP8
1L-TestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP9
1MT1470Package_TO_SOT_SMD:SOT-23-6_HandsolderingU2
1MotorTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ7
1NX5032GA-8MHzCrystal:Crystal_SMD_5032-2Pin_5.0x3.2mmY1
1PESD1CANPackage_TO_SOT_SMD:SOT-23D13
1PowerTerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-3-5.08_1x03_P5.08mm_HorizontalJ1
1ProgConnector_PinSocket_1.27mm:PinSocket_1x06_P1.27mm_VerticalJ5
1R+TestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP10
1R-TestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP11
1SMBJ18ADiode_SMD:D_SMB_HandsolderingD3
1STM32F103C6TxPackage_QFP:LQFP-48_7x7mm_P0.5mmU3
1TJA1050Package_SO:SOIC-8_3.9x4.9mm_P1.27mmU5
1TermJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP1
1UARTConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ4
1VenTestPoint:TestPoint_Loop_D1.80mm_Drill1.0mm_BeadedTP2
1XC6206PxxxMRPackage_TO_SOT_SMD:SOT-23-3U1
1ZXCT1009Package_TO_SOT_SMD:SOT-23_HandsolderingU4

Questions

How big is the Windshield PCB?

It measures 66 × 54 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Windshield use?

86 parts, built around the MT1470, ZXCT1009FTA, TJA1050 and AOD4185. 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 Windshield KiCad files?

From the eddyem/stm32samples repository on GitHub, at the commit this page was made from: the board is F1:F103/CAR_CANbus/WindShield/kicad/windshield.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Windshield 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 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
  • 2 layers62 × 60.5 mmChiller control, the printed circuit board in 3D

    Chiller control

    eddyem/stm32samples

    Code samples and ready projects based on bare-metal STM32

    73 parts208

Similar boards

  • 4 layers99 × 53.3 mmPSLab, the printed circuit board in 3D

    PSLab

    fossasia/pslab-hardware

    PSLab Hardware Design and Schematics https://pslab.io

    199 parts1.7kApache-2.0
  • 2 layers64.8 × 41 mmOkayCAN, the printed circuit board in 3D

    OkayCAN

    jglim/OkayCAN

    The okayest ESP32-S2 CAN development board

    52 parts24MIT
  • 2 layers290 × 280 mmCm5-guard A, the printed circuit board in 3D

    Cm5-guard A

    Brico-Hams/antenaSatCommrotor

    DUPLEXER 145 / 435 MHz — BNC — 25 W TARGET — REV A

    158 parts
  • 4 layers92 × 95 mmESP32-CAN, the printed circuit board in 3D

    ESP32-CAN

    Eric-2012/ESP32-CAN

    251 parts5
  • 2 layers45 × 55 mmDongleALIVEv2.0, the printed circuit board in 3D

    DongleALIVEv2.0

    joaogabrielsantosD/Dongle-eaLIVE-PCB

    PCB of the DongleEALIVE for reading data from the vehicle's CAN bus with telemetry via BLE, supporting GPS and accelerometer.

    77 parts1
  • 2 layers37 × 70.9 mmOpendiag, the printed circuit board in 3D

    Opendiag

    maximus64/opendiag-hardware

    OpenDIAG - Open Source OBD2 Interface (Hardware)

    148 parts5CERN-OHL-S-2.0
  • 2 layers121.1 × 136.9 mmCTRL, the printed circuit board in 3D

    CTRL

    krish-iitbhu/Single-Motor-PCB-CONTROLLER-

    146 parts