
Stm32-io extend
hardenedlinux/cheap-pcb
Cheap PCB: Better understanding the current status of hardware supply chain

STM32-based development board designed using KiCad, featuring schematic design, PCB layout and routing, power regulation, clock circuitry, USB connectivity, and manufacturing file generation.
STM32 pcd is an open-source printed circuit board by dishasingla5, from the dishasingla5/STM32-PCB-Design repository on GitHub. It is a 2-layer board of 42.5 × 38.5 mm with 32 parts on 50 nets, routed with 260 tracks and 6 vias.
It is built around the STM32F103C8T6 and AMS1117-3.3. Its parts include 13 capacitors, 5 resistors, 4 connectors, 2 ICs and 1 diode. It belongs with the microcontroller boards boards and the STM32 boards of this library.
This project involves the schematic design, PCB layout, routing, and manufacturing preparation of an STM32-based development board using KiCad. The design follows a structured hardware development workflow, from selecting electronic components to generating fabrication files for PCB manufacturing.
The project focuses on understanding microcontroller hardware design, power regulation, clock circuitry, USB connectivity, PCB routing, and design verification.
The STM32 microcontroller acts as the central processing unit of the board. It executes firmware and provides interfaces for communication, debugging, and peripheral control.
The surrounding circuitry must provide stable power, a suitable clock source, correct boot configuration, and access to programming and debugging interfaces.
The board uses an AMS1117-3.3 linear voltage regulator to convert a 5 V USB supply into a nominal 3.3 V supply for the microcontroller and other circuitry.
Input and output capacitors support regulator stability and help reduce supply-voltage fluctuations. The regulator's current capacity and power dissipation must be checked against the total circuit load.
The approximate power dissipated as heat by a linear regulator is:
[ P_{\text{loss}}=(V_{\text{in}}-V_{\text{out}})I_{\text{load}} ]
This power dissipation must be considered when evaluating thermal performance.
Decoupling capacitors are placed close to the microcontroller's power pins to provide local charge during rapid changes in current demand. They also help reduce high-frequency noise on the supply rails.
Small ceramic capacitors are commonly used for high-frequency decoupling, while larger bulk capacitors support slower changes in load current.
Short connections between the power pins, capacitors, and ground help minimize parasitic inductance and improve power integrity.
The crystal circuit provides an external clock reference for the microcontroller. The crystal and its associated load capacitors must be selected according to the microcontroller requirements and the crystal manufacturer's specifications.
The crystal and its load capacitors should be placed close to the relevant oscillator pins. Their traces should be short, and unnecessary routing near noisy signals should be avoided to reduce interference.
The USB interface provides a connection for communication and, where supported by the design, power input.
USB data lines connect the USB connector to the microcontroller's USB peripheral. For full-speed USB, the differential data pair should be routed together with consistent geometry and minimal unnecessary stubs.
The connector, protection components where required, and signal routing should follow the applicable microcontroller and USB hardware guidelines.
The reset circuit allows the microcontroller to restart reliably. Boot configuration determines the source from which the microcontroller starts executing code.
A boot-selection switch can provide control over the boot configuration. A Serial Wire Debug (SWD) interface provides access for programming and debugging firmware using compatible tools.
Unused pins should be handled according to the microcontroller datasheet and circuit requirements.
The schematic represents the electrical connections between components before PCB layout begins.
The schematic design workflow includes:
ERC helps identify electrical connectivity and pin-type issues. Its warnings must be reviewed in the context of the actual circuit.
Component placement affects signal integrity, power distribution, thermal performance, and manufacturability.
Decoupling capacitors should be placed close to the relevant power pins. Crystal components should be positioned near the oscillator pins. Connectors should be accessible, and components should be arranged to support short, practical routing paths.
A two-layer PCB typically uses front copper (F.Cu) and back copper (B.Cu) for signal and power connections.
A continuous ground plane, where practical, provides low-impedance return paths and helps reduce electromagnetic interference. Ground connections and vias should be arranged to preserve return-current paths.
Signal routing connects components according to the schematic nets. Critical signals should have short, direct paths where practical.
Power traces must be sized for their expected current, temperature rise, and manufacturing constraints. USB differential signals require particular attention to routing geometry and continuity.
Routing should respect the manufacturer's minimum trace widths, clearances, drill sizes, and other fabrication limits.
KiCad's Design Rules Checker (DRC) checks the PCB against configured electrical and physical constraints.
Typical checks include:
DRC results should be reviewed rather than blindly accepted or ignored. The schematic and PCB should also be checked for consistency before manufacturing.
After finalizing the layout, manufacturing outputs are generated for fabrication and assembly.
Before submitting the files, verify that the board outline is correct, the required layers are exported, the drill files match the design, and the outputs correspond to the final saved PCB revision.
This project provides practical experience in:
The KiCad schematic and PCB design files, along with the generated manufacturing outputs, are organized in the project repository.
Generating manufacturing files does not by itself establish that the PCB is electrically correct or has been validated through physical testing. The design should be reviewed for electrical and layout errors before fabrication and tested after assembly.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 100n | Capacitor_SMD:C_0402_1005Metric | C4, C5, C6, C7, C11 |
| 4 | 1k5 | Resistor_SMD:R_0402_1005Metric | R1, R3, R4, R5 |
| 4 | MountingHole | MountingHole:MountingHole_2.2mm_M2 | H1, H2, H3, H4 |
| 3 | Conn_01x04_Pin | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical_SMD_Pin1Right | J1, J2, J3 |
| 2 | 10p | Capacitor_SMD:C_0402_1005Metric | C12, C13 |
| 2 | 1u | Capacitor_SMD:C_0402_1005Metric | C9, C10 |
| 2 | 22u | Capacitor_SMD:C_0805_2012Metric | C1, C2 |
| 1 | 10k | Resistor_SMD:R_0402_1005Metric | R2 |
| 1 | 10n | Capacitor_SMD:C_0402_1005Metric | C8 |
| 1 | 10u | Capacitor_SMD:C_0603_1608Metric | C3 |
| 1 | 16MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm | Y1 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U1 |
| 1 | FerriteBead | Inductor_SMD:L_0603_1608Metric | FB1 |
| 1 | STM32F103C8T6 | Package_QFP:LQFP-48_7x7mm_P0.5mm | U2 |
| 1 | SW_SPDT | Button_Switch_SMD:SW_SPDT_PCM12 | SW1 |
| 1 | USB_B_Micro | Connector_USB:USB_Micro-B_Wuerth_629105150521 | J4 |
| 1 | red | LED_SMD:LED_0603_1608Metric | D1 |
It measures 42.5 × 38.5 mm and has 2 copper layers, 1.6 mm thick.
32 parts, built around the STM32F103C8T6 and AMS1117-3.3. 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.
From the dishasingla5/STM32-PCB-Design repository on GitHub, at the commit this page was made from: the board is STM32_PCB/STM32 pcd.kicad_pcb and its schematic STM32_PCB/STM32 pcd.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask dishasingla5 before reusing the design.

hardenedlinux/cheap-pcb
Cheap PCB: Better understanding the current status of hardware supply chain

milar111/HEAT
An open-source STM32 SMD assembly station for precision soldering. Uses a custom Smart Pulse & Coast algorithm to drive 400W mains heaters via SSR. Features OLED UI, NTC feedback, and safety cooling.


minhle4397/Line-Follower-Robot-v2
Improved Hardware and Firmware for Line Follower Robot

mupfdev/TrackMAG
An open hardware development board primarily intended for the development of accessible input devices.

RaduAndre/DeskMixer
DeskMixer is a software that allows control of application volumes with real sliders, and action mapping on buttons using arduino like platforms. The project was inspired originally by deej.

abda-s/STM32-Phill-s-Lab-PCB-Course
A beginner-friendly introduction to STM32 hardware design and KiCad
