Skip to content

DEATHGUYJ/flashforge-creator-klipper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FlashForge Creator 1 — Klipper Dual Extrusion Build

A complete Klipper configuration for the FlashForge Creator 1 dual-nozzle printer, running on a BTT SKR Pico v1.0 mainboard controlled by a BTT Pi V1.2 single-board computer.

→ For step-by-step installation, calibration, slicer setup, and troubleshooting see SETUP_GUIDE.md.


Table of Contents

  1. Overview
  2. Bill of Materials
  3. Wiring Guide
  4. Quick Reference
  5. File Reference

1. Overview

What This Is

This repository provides a fully-commented Klipper printer configuration for the FlashForge Creator 1, a dual-nozzle, single-carriage Cartesian printer. The original MightyBoard electronics have been replaced with a BTT SKR Pico v1.0 running Klipper, managed by a BTT Pi V1.2 as the host computer.

Because the SKR Pico v1.0 has only four onboard TMC2209 driver slots (X, Y, Z, E0), the second extruder (T1) requires an external stepper driver module. This build uses a TMC2209 chip mounted on an A4988/DRV8825-compatible carrier board, operated in standalone mode. See SETUP_GUIDE.md §1 for full setup details.

Hardware Summary

Component Part Notes
Printer frame FlashForge Creator 1 Dual nozzle, single carriage, Cartesian
Build volume 225 × 145 × 150 mm X × Y × Z
Mainboard BTT SKR Pico v1.0 RP2040 MCU, 4× onboard TMC2209
Host SBC BTT Pi V1.2 CB1 image (Allwinner H616)
SBC to MCU link BTT Pi GPIO pins 8/10 → SKR Pico RPi UART header UART0 at 250,000 baud; RP2040 gpio0/gpio1
T1 driver TMC2209 on AgWenKui carrier board A4988/DRV8825 Pololu footprint
Webcam Logitech C270 USB, streamed via Crowsnest/ustreamer
X/Y motion GT2 belt, 20T pulley rotation_distance = 40
Z motion 8 mm lead screw rotation_distance = 8
T0/T1 thermistors EPCOS 100K B57560G104F
Bed thermistor ATC Semitec 104GT-2

Config Files in This Repository

File Purpose
printer.cfg Main hardware config — MCU, steppers, heaters, fans, sensors
macros.cfg G-code macros — toolchange, start/end print, filament load/unload, PID helpers, fan logic
moonraker.conf Moonraker API config — update manager, webcam, timelapse
PINOUT.md Connector and pinout reference — JST-XH types/sizes, T1 driver wiring, ADXL345 wiring, re-termination guide

2. Bill of Materials

Items marked with an asterisk (*) are original FlashForge Creator 1 hardware. Everything else must be sourced before starting.

Item Qty Notes
BTT SKR Pico v1.0 1 Main controller board
BTT Pi V1.2 1 Host SBC
MicroSD card (8 GB+, Class 10) 1 OS for BTT Pi
USB-C to USB-A cable 1 Firmware flashing only (BOOTSEL mode); the live MCU link uses UART via GPIO header
Dupont female-to-female jumper wires (20–30 cm) 4 BTT Pi GPIO header → SKR Pico RPi UART header (TX, RX, 5V, GND)
TMC2209 stepper driver module 1 T1 external driver; same Pololu footprint as A4988
AgWenKui A4988/DRV8825 carrier board 1 Hosts the TMC2209 module
Logitech C270 webcam 1 USB, plug into BTT Pi
GT2 belt, 20T pulleys 2 sets X and Y axes *
8 mm lead screw and nut 1 Z axis *
EPCOS 100K B57560G104F thermistors 2 T0 and T1 hotends *
ATC Semitec 104GT-2 thermistor 1 Heated bed *
24 V, 30 W heater cartridges 2 T0 and T1 hotends *
24 V PSU 1 *
Dupont female-female jumper wires ~10 T1 external driver signal wiring

3. Wiring Guide

3.1 SKR Pico v1.0 Pin Assignments

Every GPIO pin used in printer.cfg is listed here. Use this table as the definitive wiring reference.

Function GPIO Connector on board Notes
X step gpio11 MOT X Output
X dir gpio10 MOT X Output
X enable gpio12 MOT X Active LOW (!gpio12)
X endstop gpio4 X-STOP Pull-up enabled (^gpio4)
Y step gpio6 MOT Y Output
Y dir gpio5 MOT Y Output
Y enable gpio7 MOT Y Active LOW (!gpio7)
Y endstop gpio3 Y-STOP Pull-up enabled (^gpio3)
Z step gpio19 MOT Z Output
Z dir gpio28 MOT Z Output
Z enable gpio2 MOT Z Active LOW (!gpio2)
Z endstop gpio25 Z-STOP Pull-up enabled (^gpio25)
E0 step gpio14 MOT E Output
E0 dir gpio13 MOT E Output
E0 enable gpio15 MOT E Active LOW (!gpio15)
TMC2209 UART TX gpio8 tx_pin — all four onboard drivers, UART1 TX
TMC2209 UART RX gpio9 uart_pin — all four onboard drivers, UART1 RX
T0 heater gpio23 HE0 Dedicated heater MOSFET
T0 thermistor gpio27 TH0 ADC input
T1 heater gpio20 FAN3 Repurposed fan output (also on right-side Laser header) — see warning below
T1 thermistor gpio29 PROBE connector ADC input — no dedicated TH1 port; wire to PROBE signal pin
Bed heater gpio21 BED Dedicated heater MOSFET
Bed thermistor gpio26 THB ADC input
FAN1 (part cooling) gpio17 FAN1 M106/M107 controlled
FAN2 (board/heatsink) gpio18 FAN2 board_fan generic fan
T1 step gpio16 E0-STOP connector Free if no E0 endstop; wire to signal pin (pin 1)
T1 dir gpio24 RGB connector Free if no RGB/NeoPixel strip; wire to signal pin (pin 2)
T1 enable gpio22 P_SI pad Active LOW (!gpio22) — free if no probe; gpio9 must NOT be used here — it is the TMC2209 UART RX line

3.2 TMC2209 UART — Two-Wire Configuration

The SKR Pico v1.0 routes separate TX and RX lines to the four onboard TMC2209 drivers:

Signal GPIO RP2040 function printer.cfg key
UART TX (write to drivers) gpio8 UART1_TX tx_pin
UART RX (read from drivers) gpio9 UART1_RX uart_pin

Both pins must be specified in every [tmc2209] block — omitting tx_pin and using only uart_pin: gpio8 configures Klipper for single-wire half-duplex mode, which does not match the board's hardware. Klipper will fail the initial UART handshake and report a driver communication error on startup.

gpio9 must not be used for any other purpose (T1 enable, endstop, etc.) — it is permanently assigned as the TMC2209 UART RX line.

Driver slot Axis uart_address
Driver 1 X 0
Driver 2 Y 2
Driver 3 Z 1
Driver 4 E0 (T0 extruder) 3

The T1 external driver does not use UART. It runs in standalone mode — microstepping and current are set via jumpers and the Vref potentiometer. See SETUP_GUIDE.md §1.

3.3 Endstop Wiring

Wire each endstop microswitch between the signal pin and GND. Klipper's ^ prefix enables the RP2040's internal pull-up, so no external resistor is needed.

Axis SKR Pico connector GPIO
X X-STOP gpio4
Y Y-STOP gpio3
Z Z-STOP gpio25

If QUERY_ENDSTOPS reports an axis as TRIGGERED at rest with nothing pressed, add or remove the ! prefix on the endstop_pin in printer.cfg to invert the logic.

3.4 Heater and Thermistor Connections

Heater / Sensor SKR Pico connector GPIO Notes
T0 heater cartridge HE0 gpio23 Dedicated heater MOSFET
T0 thermistor TH0 gpio27
T1 heater cartridge FAN3 gpio20 Repurposed fan output (also on Laser header) — see warning
T1 thermistor PROBE connector gpio29 No dedicated TH1 port — wire to PROBE signal pin; see warning
Bed heater BED gpio21 Dedicated heater MOSFET
Bed thermistor THB gpio26

WARNING — T1 Heater on FAN3 (gpio20): The T1 heater uses the FAN3 output, which shares its MOSFET with the Laser header on the right side of the board. The AO3400A MOSFET (5.7A/30V) handles the current. A 30W/24V heater draws ~1.25A continuously — within the PCB trace rating for this connector. Do NOT use a 12V heater cartridge on a 24V supply through this output.

WARNING — T1 Thermistor via PROBE Connector: The SKR Pico v1.0 has only two thermistor ports: TH0 (gpio27) and THB (gpio26). There is no dedicated TH1 connector. gpio29 (ADC3) is accessible via the signal pin of the 5-pin PROBE connector on the right side of the board. Connect the T1 thermistor to the PROBE signal pin and an adjacent GND. Do NOT insert a BLTouch/probe while the thermistor is wired here — the connector carries a 4.7kΩ pull-up to 5V that will corrupt the ADC reading and cause false temperature faults.

3.5 Fan Connections

Fan SKR Pico connector GPIO Controlled by
Part cooling fan FAN1 gpio17 M106/M107; per-tool speed stored and restored on each toolchange
Board and heatsink fan FAN2 gpio18 board_fan — 100% at print start and during heating ops, 50% for 5 min after, then off
BTT Pi CPU fan BTT Pi fan header host:gpio211 raspberry_pi — PID temperature fan; target 38°C

BTT Pi CPU Fan GPIO: Confirmed from official BTT Pi V1.2 documentation. The fan GPIO is PG19 = Linux GPIO211 using H616 port numbering: [(G=7 − 1) × 32] + 19 = 211. printer.cfg uses host:gpio211.


4. Quick Reference

Essential Console Commands

STATUS                              ; Check Klipper connection state
QUERY_ENDSTOPS                      ; Read current state of all endstops
G28                                 ; Home all axes
G28 X                               ; Home X axis only
G28 Y                               ; Home Y axis only
G28 Z                               ; Home Z axis only
STEPPER_BUZZ STEPPER=stepper_x      ; Test X motor (no home required)
STEPPER_BUZZ STEPPER=stepper_y      ; Test Y motor
STEPPER_BUZZ STEPPER=stepper_z      ; Test Z motor
STEPPER_BUZZ STEPPER=extruder       ; Test T0 extruder motor
STEPPER_BUZZ STEPPER=extruder1      ; Test T1 extruder motor
BED_SCREWS_ADJUST                   ; Start manual bed tramming
FIRMWARE_RESTART                    ; Reload config without full service restart
SAVE_CONFIG                         ; Persist calibration data to printer.cfg

Verify UART Device

ls /dev/ttyS0
sudo fuser /dev/ttyS0   # Should return nothing

Service Management

sudo systemctl restart klipper
sudo systemctl restart moonraker
sudo systemctl restart crowsnest
sudo systemctl restart klipper-mcu
sudo systemctl status klipper
sudo systemctl status klipper-mcu

View Logs

tail -f ~/printer_data/logs/klippy.log
tail -f ~/printer_data/logs/moonraker.log
journalctl -u crowsnest -n 50

First Boot Checklist

  • [mcu] serial: in printer.cfg set to /dev/ttyS0 (or whichever UART device is present)
  • T1 external driver wired and [extruder1] step/dir/enable pins confirmed in printer.cfg
  • T1 PDN_UART (MS3 position) grounded on carrier board
  • T1 MS1 and MS2 jumpers installed for 16 microsteps
  • T1 heater wired to FAN3 connector (gpio20)
  • T1 thermistor wired to PROBE connector signal pin (gpio29) — no dedicated TH1 port exists
  • BTT Pi CPU fan wired to fan header; printer.cfg uses host:gpio211 (PG19, confirmed)
  • Klipper shows Ready in Mainsail
  • All five temperature sensors reading plausible values
  • QUERY_ENDSTOPS shows all axes open at rest
  • G28 homes all three axes cleanly
  • STEPPER_BUZZ confirms all five motors move
  • All three fans respond to commands
  • PID_TUNE_HOTEND run and SAVE_CONFIG saved
  • PID_TUNE_HOTEND1 run and SAVE_CONFIG saved
  • PID_TUNE_BED run and SAVE_CONFIG saved
  • Bed tramming completed with BED_SCREWS_ADJUST
  • Z offset calibrated and saved
  • T0 rotation_distance calibrated
  • T1 rotation_distance calibrated
  • T1 X offset measured and variable_t1_x_offset updated in macros.cfg
  • Slicer start/end G-code configured (SETUP_GUIDE.md §8)
  • Firmware retraction enabled in slicer and tuned (SETUP_GUIDE.md §7.8, §8.5)
  • Skew correction calibrated if needed (SETUP_GUIDE.md §7.7)
  • Input shaper calibrated — SPI enabled, ADXL345 wired, SHAPER_CALIBRATE run, SAVE_CONFIG saved (SETUP_GUIDE.md §7.6)
  • Webcam visible in Mainsail
  • Timelapse: moonraker-timelapse installed, ffmpeg present, layer change G-code configured (SETUP_GUIDE.md §9.7, §8.6)

5. File Reference

File Purpose
printer.cfg Main Klipper hardware configuration (MCU, steppers, heaters, fans)
macros.cfg G-code macros (toolchange, start/end print, load/unload, PID helpers)
moonraker.conf Moonraker API server configuration (update manager, webcam, timelapse)
PINOUT.md Connector and pinout reference — JST-XH types, T1 driver wiring, ADXL345, re-termination guide
SETUP_GUIDE.md Step-by-step installation, calibration, slicer setup, and troubleshooting
CALIBRATION.md Calibration value tracking — record measured values after each tuning session
.gitignore Excludes runtime data from version control
README.md This file

Klipper: https://www.klipper3d.org — Moonraker: https://moonraker.readthedocs.io — Mainsail: https://docs.mainsail.xyz — KIAUH: https://github.com/dw-0/kiauh

About

Klipper config for FlashForge Creator 1 dual-extruder printer — BTT SKR Pico v1.0 + BTT Pi V1.2, external T1 TMC2209 driver

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors