Links

Klipper

Klipper es un firmware open-source creado por Kevin O´Connor en 2016 para nuestras impresoras 3D que usa la potencia de un host, normalmente una Raspberry Pi, para el control de la electrónica de tu impresora.
Mediante Klipper podemos hacer funcionar de una forma más veloz y con más precisión dependiendo del sistema y hardware que tengamos.
Algo que sí que nos va a permitir Klipper en cualquier caso es el poder tener un control a más bajo nivel de nuestra máquina, que también requerirá de un extra de conocimientos/esfuerzos, mayor velocidad a la hora de aplicar cualquier cambio, además de un control remoto de la máquina de primera clase.
En un ecosistema Klipper disponemos de diferentes componentes tal como se puede ver en el siguiente esquema:
  • Host Klipper (Klippy), es el dispositivo (SBC como una Raspberry o similar, un ordenador, en general casi cualquier sistema que pueda correr Linux) que se encarga de ejecutar Klipper y sus componentes que se encargan de realizar las siguientes tareas:
    • Procesar los ficheros de configuración (.cfg) con nuestra configuración de máquina/electrónica/sistema
    • Realiza toda la gestión del sistema
    • Lee y procesa los gcodes durante la impresión
  • MCU Klipper, es una electrónica la cual conectaremos a nuestro host para que sea controlada y gestionada (y a través de esta sus sensores y componentes) desde este:
    • Se ha de aplicar un firmware Klipper compilándolo con la versión Klipper de nuestro host y con las configuraciones adecuadas para las características de dicha MCU
    • Se conecta normalmente al host Klipper mediante una conexión serial la cual especificaremos en el printer.cfg
    • Mediante esa conexión serial recibe comandos/órdenes del host Klipper para realizar acciones de movimiento, extrusión, facilitar datos y estados de sensores, etc...
    • Se encarga de gestionar el control del hardware de nuestra impresora
  • MCU Host Klipper, al igual que el anterior, nos permite en este caso utilizar el host Klipper como una MCU más del sistema para poder gestionar/usar sus características:
    • Se ha de instalar un firmware Klipper "virtual" en el
    • Normalmente, se conecta al host Klipper utilizando /tmp/klipper_host_mcu
    • Nos permite controlar el hardware de nuestro host, como por ejemplo acelerómetros, ventiladores, etc...
  • Moonraker, es un componente del host Klipper que mediante una API hace de puente entre otros componentes y Klipper:
    • Normalmente conecta al host Klipper mediante /tmp/klippy_uds o ~/<datapath>/comms/moonraker.sock o mediante el parámetro -a usado al montar el entorno env de este
    • Se pueden especificar otros paths o configuraciones en su fichero de configuración moonraker.cfg
    • Sirve de puente como comentamos anteriormente entre otros componentes Klipper como interfaces web (Mainsail, Fluidd, etc...) y el host Klipper
  • Interfaces Klipper, permiten un uso más sencillo e intuitivo para manejar nuestro host Klipper como por ejemplo Mainsail, Fluidd, KlipperScreen, etc
    • Se conectan a Moonraker mediante el puerto http
    • Permiten monitorizar el estado y enviar comandos a Klipper
Aparte del contenido de estas guías disponemos de un grupo de Telegram que puede serte de ayuda para resolver dudas o problemas, en cualquier caso te aconsejamos leer detenidamente las guías detenidamente antes:

Klipper / Marlin

Aparte de su arquitectura y diseño y dado que Marlin es el firmware para impresoras 3D más extendido, vamos a realizar una comparativa entre ambos:
Klipper
Marlin
Arquitectura
Klipper añade un nuevo componente a la arquitectura estándar y corre sobre un host, normalmente una Raspberry Pi u similar, y usa un firmware también en C++ que se aplica a la electrónica, que pasará a ser un mero gestor de sensores y motores, siendo Klipper el que realizará todo el procesado de datos. Klipper empieza a contar soporte con muchas electrónicas y dispositivos, aumentando cada día, aunque en este aspecto, y por poco, queda un poco detrás de la compatibilidad de Marlin. En cuanto al host donde corre Klipper y sus componentes en términos generales podemos instalarlo en cualquier máquina que soporte Python bajo Linux, esto va a requerir que sea necesario unos mínimos conocimientos de este sistema operativo. En cualquier caso, normalmente se aconseja la instalación en SBCs (Single Board Computers... como Raspberry Pi o similares) a ser posible elegir una plataforma que tenga soporte por parte de Klipper. Por último, en el caso de elegir un SBC como Raspberry Pi y aunque puede correr en cualquiera de los modelos para un uso fluido, se aconseja que al menos sea una Raspberry Pi3 o superior.
Marlin usa una arquitectura tradicional basado en un código compilado en C++ compatible con gran cantidad de controladoras. Una vez compilado se "quema" en la MCU de la electrónica que es la que realiza todos los cálculos y gestiones de la máquina. Su rendimiento y funciones estarán limitadas por la potencia de cálculo y memoria de su MCU.
Configuración
Una de las grandes bondades de Klipper ya que su configuración se realiza en base a ficheros de texto y se aplican de forma sencilla con un simple reinicio de servicios no siendo necesario, normalmente, actualizar el firmware de la electrónica para cambios en configuración (si cuando se realizan ciertas mejoras en el core de Klipper). La actualización de los servicios que usa Klipper son muy fáciles ya que tenemos herramientas en la UI de gestión o terceros como Kiauh que hacen que la actualización sean unos pocos clicks.
Marlin, al ser un firmware compilado, al realizar ciertos cambios sobre todo activando/desactivando o ajustando ciertas funciones requiere un proceso más tedioso de compilar y quemar el firmware en la electrónica. Este proceso se ha simplificado bastante gracias al uso de herramientas como Visual Studio Code y Platformio, así como mejoras en los bootloaders en las electrónicas que simplemente con copiar en la SD el nuevo firmware este se aplica de forma sencilla. Por otro lado Marlin mejora versión tras versión el permitir configurar ciertas funcionalidades usando comandos gcode.
Instalación
Klipper en este aspecto necesita un poco más de trabajo al correr en un host y necesitar instalar y configurar correctamente todos sus componentes (Klipper, Moonraker (API) y una UI normalmente). En cualquier caso este proceso se ha simplificado enormemente con la aparición de distribuciones, normalmente pensadas en Raspberry Pi como host, como MainsailOS,RatOS, FluidOS. Por otro lado herramientas como Kiauh también simplifica enormemente este proceso.
Instalar Marlin es un proceso relativamente sencillo dado que básicamente es compilar nuestro firmware y aplicarlo en nuestra electrónica, normalmente copiando el firmware en la propia SD de la electrónica.
Mejoras
Klipper es un sistema modular lo que nos permite disponer de diferentes UI por ejemplo que integran en ellas diferentes mejoras en la gestión de nuestras impresoras como asistentes mejorados, soporte webcams/time-lapse, Octoprint, etc... La versatilidad que aporta Moonraker como API para interactuar con Klipper da unas posibilidades casi infinitas de gestión.
Marlin permite su gestión desde un host también siendo el más usado Octoprint que permite extender el uso de nuestra impresora enormemente y siempre lo aconsejamos usar. Gestión remota, webcam/time-lapse, asistentes ajuste, cancelación de objetos, etc... con algunos ejemplos
Funciones
  • Potencia de calculo normalmente superior ya que es realizada por el host
  • Uso de macros, now permite una enorme versatilidad y potencia para realizar ciertos procesos de forma simplificada o adaptada a nuestras necesidades
  • Pressure Advance, permite una mejora en la gestión de la extrusion mejorando principalmente el acabado en las esquinas de nuestras figuras. En este aspecto tienen un sistema similar aunque el proceso en Klipper al usarse a partir de una macro puede ser un poco más sencillo.
  • Input Shaping, es una de las grandes funciones de Klipper y que están copiando otros (Duet/Marlin). Permite limitar las resonancias provocadas en nuestra máquina para reducir así el efecto ghosting en nuestras piezas. El uso de acelerómetros y macros/scripts hacen muy potente esta funcionalidad.
  • Uso de múltiples controladoras y soporte CANbus, sin duda otra gran ventaja del sistema Klipper que nos permite expandir nuestro sistema usando varias controladoras en paralelo.
  • Potencia de cálculo limitada por la MCU de la electrónica usada, actualmente con MCUs potentes y de 32b mejoran considerablemente
  • Linear Advance, tal como explicamos en la parte Klipper la funcionalidad es muy similar aunque el proceso de ajuste quizás tenga un poco mas de complejidad que realizarlo en Klipper.
  • Input Shaping, de las grandes funciones de Klipper y ya disponibles con funciones básicas en Marlin desde la versión 2.1.2. Permite limitar las resonancias provocadas en nuestra máquina para reducir así el efecto ghosting en nuestras piezas. El uso de acelerómetros por ahora no está disponible.

¿Cuál debo utilizar?

No hay una respuesta 100% adecuada.
El uso de un sistema u otro depende de la persona, basándonos en tus conocimientos, paciencia, ganas de aprender... y de la máquina 3D que usemos o queramos montar.
Marlin con el empleo de las nuevas electrónicas, su compatibilidad y ser relativamente sencillo de compilar/instalar, si además lo combinamos con Octoprint crea un entorno sencillo de gestionar y mantener. Que normalmente no es necesario ciertos conocimientos avanzados (que Marlin tiene muchas opciones que normalmente no se utilizan por no investigar un poco) además de contar con muchísima documentación y base de usuarios.
Klipper quizás sea un poco más complejo de instalar y configurar inicialmente, requiera de ciertos conocimientos extra, más componentes en algunos casos al requerir de un host, además de nuestra electrónica que además ha de ser compatible. Por contra y sobre todo en máquinas con electrónicas antiguas o menos potente podemos obtener una gran mejora en velocidad y calidad. Además, la modularidad y versatilidad de Klipper nos permiten montar ciertas modificaciones para nuestras máquinas que en sistemas como Marlin dependemos que alguien las implemente.