Skip to the content
PCBKitNew board
4 layers80 × 80 mmNitrogen, the printed circuit board in 3D

Code samples and ready projects based on bare-metal STM32

Size
80 × 80 mm
Copper layers
4
Thickness
1.66 mm
Parts
140
Nets
166
Pads
520
Tracks, vias
1,254, 255
Pours
9
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
21 Mar 2015
Updated
10 Oct 2026

Overview

Nitrogen is an open-source printed circuit board by eddyem, from the eddyem/stm32samples repository on GitHub. It is a 4-layer board of 80 × 80 mm with 140 parts on 166 nets, routed with 1,254 tracks and 255 vias.

It is built around the MAX3485ED, MCP2551-I/SN-HG and BME280, with the LM2576HVS-5, LM1117-3.3 and USBLC6-2SC6 among its other parts. Its parts include 48 resistors, 22 capacitors, 17 connectors, 13 diodes and 8 ICs. It belongs with the sensors and measurement and computers and single-board computers boards and the STM32 boards of this library.

Main components

12

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

140
QtyValueFootprintReferences
120.1Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC5, C6, C7, C8, C10, C11, C13, C14, C16, C19, C20, C22
126.8Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR14, R16, R17, R20, R26, R27, R40, R42, R43, R45, R46, R47
101k 0.1%Resistor_SMD:R_0805_2012Metric_Pad1.20x1.40mm_HandSolderR28, R29, R30, R31, R32, R33, R34, R35, R36, R37
810kResistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR3, R5, R7, R9, R11, R12, R39, R41
6330Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR1, R10, R21, R22, R24, R54
5330Resistor_SMD:R_Array_Convex_4x0603RN1, RN2, RN3, RN4, RN5
41uCapacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC1, C4, C9, C12
44k7Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR23, R25, R38, R44
4510Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR2, R4, R6, R8
4AOD4184Package_TO_SOT_SMD:TO-252-2Q1, Q2, Q3, Q4
4MountingHoleMountingHole:MountingHole_3.2mm_M3_DIN965_PadH1, H2, H3, H4
4SS14Diode_SMD:D_SMA_HandsolderingD1, D2, D3, D4
3IDC2.54_02x05Connector_IDC:IDC-Header_2x05_P2.54mm_VerticalJ4, J10, J11
3SP0505BAHTPackage_TO_SOT_SMD:SOT-23-6D9, D10, D13
3Screw_Terminal_01x02TerminalBlock_Phoenix:TerminalBlock_Phoenix_MKDS-1,5-2_1x02_P5.00mm_HorizontalJ2, J3, J13
222Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR15, R18
247u 6VCapacitor_Tantalum_SMD:CP_EIA-3216-18_Kemet-A_Pad1.58x1.35mm_HandSolderC17, C21
26Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolderC2, C3
2LM1117-3.3Package_TO_SOT_SMD:SOT-223-3_TabPin2U7, U8
2PESD1CANPackage_TO_SOT_SMD:SOT-23D6, D7
2PowerConnector_JST:JST_EH_B3B-EH-A_1x03_P2.50mm_VerticalJ5, J12
1100uInductor_THT:L_Toroid_Horizontal_D6.5mm_P10.00mm_Diameter7-5mm_Amidon-T25L1
1120Resistor_SMD:R_1210_3225Metric_Pad1.30x2.65mm_HandSolderR19
11N5822Diode_THT:D_DO-201_P3.81mm_Vertical_AnodeUpD12
11k5Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolderR13
12.5k@100MHzInductor_SMD:L_0805_2012Metric_Pad1.15x1.40mm_HandSolderL2
13.3VTestPoint:TestPoint_THTPad_1.5x1.5mm_Drill0.7mmTP5
13v3Jumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP4
147u 10VCapacitor_Tantalum_SMD:CP_EIA-6032-28_Kemet-C_Pad2.25x2.35mm_HandSolderC18
147u 35VCapacitor_Tantalum_SMD:CP_EIA-6032-28_Kemet-C_Pad2.25x2.35mm_HandSolderC15
1485/CANConnector_JST:JST_EH_B5B-EH-A_1x05_P2.50mm_VerticalJ9
15VTestPoint:TestPoint_THTPad_1.5x1.5mm_Drill0.7mmTP4
15VusbTestPoint:TestPoint_THTPad_1.5x1.5mm_Drill0.7mmTP1
1ADC8,9Connector_JST:JST_EH_B3B-EH-A_1x03_P2.50mm_VerticalJ1
1ADCextConnector_JST:JST_EH_B4B-EH-A_1x04_P2.50mm_VerticalJ6
1BME280Package_LGA:Bosch_LGA-8_2.5x2.5mm_P0.65mm_ClockwisePinNumberingU5
1CANJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP1
1CESD3v3Diode_SMD:D_SOD-523D8
1DTA114YPackage_TO_SOT_SMD:SOT-323_SC-70_HandsolderingQ5
1GndTestPoint:TestPoint_THTPad_1.5x1.5mm_Drill0.7mmTP3
1I2C/U1Connector_JST:JST_EH_B3B-EH-A_1x03_P2.50mm_VerticalJ15
1IRF9310Package_SO:SO-8_3.9x4.9mm_P1.27mmQ8
1LEDsConnector_JST:JST_EH_B5B-EH-A_1x05_P2.50mm_VerticalJ18
1LM2576HVS-5Package_TO_SOT_SMD:TO-263-5_TabPin3U6
1MAX3485Package_SO:SO-8_3.9x4.9mm_P1.27mmU3
1MBRS130LDiode_SMD:D_SMB_HandsolderingD5
1MCP2551-I-SNPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU1
1MCUJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP3
1MM3Z7V5Diode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolderD11
1NX5032GA-8MHzCrystal:Crystal_SMD_5032-2Pin_5.0x3.2mmY1
1ProgConnector_PinSocket_1.27mm:PinSocket_1x06_P1.27mm_VerticalJ7
1RS-485Jumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP6
1SI2300Package_TO_SOT_SMD:SOT-23_HandsolderingQ6
1SI2305Package_TO_SOT_SMD:SOT-23_HandsolderingQ9
1STM32F302VBTxPackage_QFP:LQFP-100_14x14mm_P0.5mmU4
1U3/U4Connector_JST:JST_EH_B3B-EH-A_1x03_P2.50mm_VerticalJ14
1USB5VJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP2
1USBLC6-2SC6Package_TO_SOT_SMD:SOT-23-6U2
1USB_BConnector_USB:USB_B_TE_5787834_VerticalJ8
1VadcJumper:SolderJumper-2_P1.3mm_Open_TrianglePad1.0x1.5mmJP5
1VadcTestPoint:TestPoint_THTPad_1.5x1.5mm_Drill0.7mmTP6
1VinTestPoint:TestPoint_THTPad_1.5x1.5mm_Drill0.7mmTP2
1buzzerConnector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_VerticalJ16

Questions

How big is the Nitrogen PCB?

It measures 80 × 80 mm and has 4 copper layers, 1.66 mm thick.

What parts does the Nitrogen use?

140 parts, built around the MAX3485ED, MCP2551-I/SN-HG, BME280 and LM2576HVS-5. 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 Nitrogen KiCad files?

From the eddyem/stm32samples repository on GitHub, at the commit this page was made from: the board is F3:F303/NitrogenFlooding/kicad/nitrogen/nitrogen.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Nitrogen 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
  • 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
  • 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

  • 2 layers109 × 74 mmStm32, the printed circuit board in 3D

    Stm32

    eddyem/tsys01

    BTA primary mirror thermal monitoring using STM32 and TSYS01

    92 parts4GPL-3.0
  • 2 layers72.6 × 30.6 mmEsp20A80V, the printed circuit board in 3D

    Esp20A80V

    RoboDurden/Esp32_20A_80V_dcdc

    20A 80V dcdc/mppt with Esp32 and touch display

    31 parts2MIT
  • 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
  • 4 layers30 × 30 mmReCamera 2002 POE Board, the printed circuit board in 3D

    ReCamera 2002 POE Board

    Seeed-Studio/OSHW-reCamera-Series

    reCamera is a series of open-source AI cameras.

    75 parts495Apache-2.0
  • 4 layers200.5 × 70.9 mmALL, the printed circuit board in 3D

    ALL

    eddyem/IR-controller

    Clone of same project from sourceforge

    138 parts6GPL-3.0
  • 2 layers51 × 44 mmCh552g devbrd, the printed circuit board in 3D

    Ch552g devbrd

    eddyem/ch55x

    Some usefull things for working with ch55x chips

    19 parts5GPL-3.0
  • 2 layers34.9 × 15.2 mmTuronet, the printed circuit board in 3D

    Turonet

    javifercep/Turonet

    USB to SPI (MCB protocol) adapter

    30 parts