3D Printer
An engineered-from-scratch 3D printer powered by a 32-bit STM32 board, featuring custom hand-wired electronics, silent motor operation, and robust thermal management.
Author: Bârsan Clara Maria
GitHub Project Link: link_to_github
Description
This project is a custom-built Cartesian 3D printer based on the classic Prusa i3 architecture. Its main purpose is to manufacture physical 3D objects by melting and depositing plastic filament layer by layer. The end-user interacts with the device by providing a digital 3D model that has been sliced into a "G-code" file. Once started, the machine autonomously coordinates its three axes (X, Y, and Z) and regulates high temperatures to print the object. It solves the problem of needing an affordable, highly customizable, and easily repairable manufacturing tool for personal DIY projects and prototyping.
Motivation
My primary motivation for building this 3D printer is to create a personal manufacturing hub at home. I want the independence to design, prototype, and print highly customized components for my other DIY endeavors. Having a tailor-made machine will give me the freedom to bring complex ideas to life, ensuring my future projects are never limited by off-the-shelf parts.
Architecture

The architecture of this custom 3D printer controller is designed as a standalone, state-machine-driven embedded system. To ensure safety, signal integrity, and a strict separation of concerns, the system is logically divided into distinct architectural subsystems. This design isolates low-voltage processing logic from high-voltage mechanical and thermal actuation.
Core Processing Unit (MCU): The central "brain" of the system is the STM32 Nucleo microcontroller. It is responsible for parsing G-code, executing the internal state machine, and orchestrating asynchronous tasks (Motion, Thermal, and I/O management).
Data Storage Subsystem: A Micro SD Card Module acts as the local repository for G-code files, allowing the printer to operate fully standalone.
Sensory & Feedback Subsystem: The input layer continuously gathers physical data from the machine's environment (temperatures and physical axis limits) and feeds it back to the processing unit to close the control loop.
Motion Subsystem: The kinematic layer translates digital movement commands into physical steps, driving the printer's axes and the extruder mechanism.
Thermal Subsystem: The high-current heating layer manages the rapid heating of the print bed and the hotend nozzle based on PWM duty cycles received from the Core Processing Unit.
Cooling Subsystem: The thermal management layer provides continuous hotend heatsink ventilation — powered permanently by the direct 24V supply — to prevent heat creep and maintain hardware integrity.
Log
Weeks 23 March - 12 April
Chose the project idea, researched components, and ordered hardware.
Week 13 - 26 April
Assembled the frame and the Y axis.
Week 27 April - 10 May
Finished the Z axis and parts of the X axis.
Week 11 - 17 May
Structured and organized the hardware schematic in EasyEDA and soldered the physical hardware components using a soldering iron.
Hardware
This custom 3D printer utilizes an STM32 Nucleo-U545RE-Q microcontroller as the core processing unit. The motion system features NEMA 17 stepper motors driven by ultra-silent TMC2209 modules, with axis limits detected by reliable SS-5GL2 mechanical endstops. Thermal actuation for the MK3 heated bed and MK8 extruder is safely managed by optoisolated external MOSFETs and continuously monitored by NTC 100k thermistors. To ensure signal integrity, the system employs a dual-isolated power architecture—a 5V power bank for logic circuits and a 24V 20A PSU for high-current loads. The entire setup operates independently of a PC using an SPI Micro SD Card module, with all custom signal routing soldered onto a double-sided FR4 prototype PCB.
Schematics
Bill of Materials
| Device | Usage | Price |
|---|---|---|
| STM32 NUCLEO-U545RE-Q | Main microcontroller processing G-code and controlling the entire system | 105 RON |
| NEMA 17 Stepper Motor | Stepper motor driving the physical movement of the axes and the extruder | 218 RON |
| TMC2209 Motor Driver | Ultra-silent stepper driver translating MCU logic signals into motor movement | 157 RON |
| NTC 100k Thermistor | Temperature sensor used to continuously monitor the hotend and heated bed | 9,7 RON |
| SS-5GL2 Mechanical Endstop | Physical microswitch used to detect the 0-position (home) of the printer's axes | 15,7 RON |
| Micro SD Card Module | SPI storage module allowing the printer to read G-code and work standalone | 4,7 RON |
| External MOSFET Module | High-current solid-state switch used to safely route 24V power to the heaters | 41,2 RON |
| MK3 Heated Print Bed | Aluminum build plate that heats up to ensure first-layer print adhesion | 54 RON |
| 24V 20A Power Supply | Main power supply unit providing high-current 24V for heaters and motors | 111 RON |
| FR4 Prototype PCB (7x9cm) | Double-sided board used to solder and route the custom electronic circuits | 5,8 RON |
| MK8 Extruder Components | Mechanical assembly responsible for feeding, melting, and depositing the filament | 211 RON |
Software
| Library | Description | Usage |
|---|---|---|
| st7789 | Display driver for ST7789 | Used for the display for the Pico Explorer Base |
| embedded-graphics | 2D graphics library | Used for drawing to the display |