Post

Migracion de Marlin a Klipper de varias impresoras 3D

Migracion de Marlin a Klipper de varias impresoras 3D

Introducción: El arrebato del domingo por la noche(El Problema)

No os voy a engañar: en los últimos años han pasado por mis manos un gran número de impresoras 3D. Actualmente tengo dos, una Ender 3 V3 SE y una Geeetech Prusa i3.

Desde hace un tiempo le he dado vueltas al tema de centralizar la gestión de estas máquinas, y un domingo por la noche aleatorio, en un arrebato de frustración, me decidí por pasar estas máquinas a Klipper. ¿Por qué tomé esta decisión? Es incontable el número de problemas que dan las impresoras cuando no las miras, y conviene tener un par de cámaras para vigilarlas. Por otra parte, un sistema centralizado me permite controlar todo desde un solo lugar, con mucha más potencia que las placas simples con el Marlin de fábrica con las que cuentan las impresoras.

Además, estas máquinas no son de las mejores que existen, y con un sistema así pueden obtener un rendimiento mayor y unos resultados bastante mejores que de serie.

Klipper (la solución)

En la introducción lo he mencionado, pero la solución a gran parte de estos problemas es Klipper. Pero claro, ¿qué es Klipper? Klipper es un firmware de código abierto de buen rendimiento para impresoras 3D (y otras máquinas cartesianas) que mejora drásticamente valores como velocidad, precisión y calidad de impresión al delegar los cálculos complejos sobre un equipo externo —en mi caso, un portátil antiguo—, en lugar de que todo el trabajo lo tenga que hacer la propia placa de la impresora, lo que deja a esta solo como un esclavo que sigue órdenes.

Tiene grandes puntos a favor, como la gestión que tienes del software, del hardware, la configuración sencilla, y de las mejores cosas: una interfaz web para controlar de forma remota la impresión. También permite controlar varias máquinas, que es el factor que fue decisivo en mi caso. Todo este tinglado necesita para funcionar un ordenador que controla todo:

klipper-logo

Lenovo X240 como líder (El cerebro de la operación)

En este punto os presento al voluntario de turno: un Lenovo ThinkPad X240 con la pantalla reventada. Lleva guardado desde que se me cayó de un segundo piso por las escaleras y usa la pantalla de decoración, porque en términos de funcionamiento, no funciona.

portatil

Lo que sí que va como un tiro es su i5 y sus cortos 4GB de RAM, que para lo que lo vamos a usar da de sobra. A este pequeño voluntario le he instalado un sistema operativo Debian 12 sin interfaz gráfica, ya que es una opción muy ligera y estable, que para nuestro uso viene perfecto. Además, como en el rincón donde tengo puestas las impresoras no tengo toma de red, la interfaz WiFi configurada con una IP estática va de locos.

Teniendo el host ya funcionando, era momento de instalarle KIAUH, que es un script que facilita la instalación, actualización y gestión de Klipper, Moonraker, Mainsail y demás funcionalidades (sé que son un chorro de palabras nuevas, luego explicaré qué es cada cosa).

No lo he aclarado, pero todas estas configuraciones se hacen a través de SSH, por lo que conviene tener una IP estática bien configurada (Spoiler: no fue mi caso, pero la aventura continúa). Realmente existen 3 programas que hacen funcionar todo esto:

1
2
3
4
5
+ Klipper: El que hace los cálculos.

+ Moonraker: El programa que hace de puente entre Klipper y la parte de red.

+ Mainsail: La página web bonita desde donde se controla todo.

No os voy a explicar cómo se instala toda esta montaña, porque ya está explicado en el repositorio de KIAUH, pero sí que voy a hacer un pequeño inciso mencionando las instancias.

En mi caso, voy a controlar 3 máquinas: las 2 impresoras 3D y, en el futuro, una modesta cortadora láser K40 (tranqui, que tendrá su propio reporte), por lo que me van a hacer falta instalar 3 instancias de Klipper, 3 instancias de Moonraker y una sola instancia de Mainsail. Para que nos entendamos: 3 fábricas, 3 puentes (uno por fábrica) y un almacén. Una vez tenemos todo esto instalado (nos tenemos que asegurar de que están las 3 instancias de Moonraker, hay veces que el script falla y solo instala 1), nos vamos al siguiente paso: Mainsail (la interfaz web).

Mainsail: La cara bonita del tinglado

Bueno, ya os he contado qué es Mainsail y qué hace (o debería hacer, porque hay que configurarlo). Lo primero que va a pedir nada más entrar por primera vez en la web que levanta en el puerto 80 es: cuántas máquinas hay (instancias). A esta pregunta se responde solo con IP y puerto. Por esto es importante tener bien configurada la IP, porque si no, las instancias desaparecen y hacen cosas raras. En cuanto al puerto, es una parte que ha declarado el script de KIAUH; al instalar Moonraker, nos debería decir a qué puerto corresponde cada máquina. En mi caso tenemos los puertos: 7125, 7126 y 7127. Fácil.

Una vez tenemos esto creado, nos podemos meter en cada una de las máquinas a configurarlas. Pero claro, de momento las impresoras no se hablan con Klipper, así que lo siguiente que hay que hacer es cargarles los firmwares de Klipper a cada una de ellas:

Un 2015 - 2026: Klipper en la Prusa I3

Vale, se viene una de las partes más interesantes en mi opinión (creo que no lo es). Para que Klipper se entienda con la impresora, tienen que hablar el mismo idioma, y de momento la placa base que tiene instalada la Prusa i3 es un ATMEGA2560 (Arduino Mega) con una placa de desarrollo RAMPS 1.3 encima.

Esta fue la más sencilla de las dos, ya que si volvemos al script de KIAUH, tiene una opción de BUILD y otra de FLASH. La gente de KIAUH pensó en todo para facilitar el trabajo a gente como yo, que ya bastantes cosas nos están saliendo mal como para tener más, por lo que decidieron meter unas opciones para, según el hardware, poder compilar el software correspondiente.

prusai3

Simplemente hay que seleccionar el tipo de microcontrolador, la placa, la velocidad y un par de detalles más, y con esas chorradas te crea el firmware a medida para la placa. Luego sigues las instrucciones para flashear y listo, el ATMEGA2560 ya habla en Klipper. Ni que decir tiene que le quité la pantalla RepRapDiscount Controller, ya que a partir de ahora se controla todo desde la web. A lo mejor en un futuro se la enchufo para ver algún parámetro, pero ya veremos. Vamos con el reto real: la Ender 3 V3 SE:

Pantalla sí, pantalla no: Klipper en la ENDER 3 V3 SE

El título habla por sí solo, ¿eh? ¿A que no sabéis cuál ha sido el problema de la Ender? Efectivamente: la pantalla.

También os digo que es culpa mía. Esta impresora trae de serie una preciosa pantalla con un increíble encoder rotatorio monísimo, y claro, teniendo ese hardware ahí, ¿quién lo quiere desperdiciar? Pues exactamente todo el mundo, porque la configuración es un dolor de cabeza. Bueno, en casos normales podremos utilizar el método que hemos usado en la Prusa i3, y funciona perfectamente. Pero como yo quería utilizar la pantalla para “ver cosas”, pues me decanté por usar la propia “versión de KIAUH” de un genio que encontré por GitHub: JPcurli.

Esta máquina ha desarrollado la parte que hace KIAUH de build para adaptar la Ender y que, si la configuramos bien, pueda utilizar la pantalla. Después de más tiempo del que me gustaría admitir, conseguí crear el firmware para la Ender. Flashearla fue un proceso muy sencillo: simplemente copias el archivo de firmware en una SD formateada en FAT32, la enchufas a la impresora, la enciendes y flap, listo (bueno, después de unos minutos).

El problema vino después. La pantalla se quedó tostada, y resulta que el fantástico código necesitaba también cambiar esa instancia de Klipper del portátil host para que funcionase. En principio esto no es un problema si solo tuvieses una instancia, pero como tengo mucha configuración hecha, no sé si es compatible este repositorio modificado con el resto del Klipper de la otra impresora. Así que he preferido no jugármela y dejar para un futuro el detallito de arreglar la pantalla. Resumen: la Ender ya habla Klipper, pero no habla pantalla (mi gozo en un pozo).

Ender

Ya solo nos queda la configuración de cada máquina:

El printer.cfg tendría que ser un derecho universal

Estaréis diciendo: ¿qué dice este tío? Pues os lo explico: el último paso en nuestra pequeña aventura reside en la configuración de cada máquina. Klipper simplifica muchísimo este paso, haciendo que solo tengas que cargar y/o modificar unos archivos concretos, como el llamado printer.cfg.

Este archivo tiene toda la configuración que puedes querer cambiarle a la impresora: los motores, los pines, las resistencias, las velocidades máximas, las aceleraciones máximas, los datos de PID de las resistencias, los periféricos conectados a la placa… (puedo seguir, eh, hay mucha info). Por lo general, muchos usuarios utilizan las configuraciones estándar que vienen por defecto en una carpeta de Mainsail para cada tipo de impresora.

Eso es exactamente lo que hice con la Prusa i3. Como es hardware antiguo, he preferido ir a lo seguro y modificar el archivo base para cartesianas, configurando los pines de los motores, resistencias, termistores y demás (madre mía, qué guerra dieron los termistores). Todo el pinout estaba referenciado a la RAMPS 1.3, está toda la info de esta placa en internet.

Lo que fue más complicado resultó ser encontrar la configuración exacta para la Ender. Me explico: no hice el procedimiento anterior como con la Prusa, sino que, ya que es una impresora relativamente moderna, casi un pepino (bueno, no es una Bambu Lab), pues no me la quería jugar. Así que busqué los mejores perfiles de impresoras por GitHub, ya que ya había gente que había hecho lo mismo que yo y había decidido subir los archivos para que la comunidad se beneficie de ello. Muchas gracias a gente como 0xD34D o bootuz-dinamon (del que acabé usando los archivos).

Ender

Esto necesitó echar tiempo probando cada perfil, ya que no todas las impresoras son iguales. Pero me interesaba que el perfil soportara el sensor Z de la Ender 3 V3 SE, ya que este hace un mapeo de la cama y sabe perfectamente a qué distancia está y las irregularidades de la misma. Y puestos a decidir, me llevo el pack completo (pero sin pantalla, no te olvides). Y aquí acaba nuestra historia de configuraciones.

Conclusiones y usos

Bueno, la verdad es que este cambio es un antes y un después. La implementación de Klipper hace que todo el proceso sea más fácil. Para imprimir solo tengo que encender la máquina, encender el host y enganchar el filamento (de momento eso no lo hace Klipper, y no tiene pinta de que quiera hacerlo) y listo, a imprimir. Tanto es así que he configurado dentro de mi slicer de confianza (PrusaSlicer) las impresoras como impresoras físicas, con su IP y puerto, por lo que para imprimir no tengo ni siquiera que descargar los archivos .gcode y subirlos a Mainsail; PrusaSlicer los manda solo.

Además, el resto de controles son súper intuitivos, las máquinas imprimen más rápido y con mejores acabados. Klipper tiene muy buenas implementaciones y se nota. Dejo para un futuro varias cosas: la configuración y pruebas para sacarle el máximo provecho a cada impresora, resolver un problema de filamento quebradizo (estoy en ello) y pasar a Klipper la última máquina que me queda por meter en este ecosistema: la cortadora láser CNC K40. Mi recomendación personal es que, si tenéis la opción de pasaros a Klipper, lo hagáis. Es un cambio brutal que se nota, sobre todo con impresoras más antiguas.

Bibliografía

Algunos sitios web de donde he sacado la información: Debian , klipper , moonraker, mainsail , KIAUH , JPcurli , 0xD34D , bootuz-dinamon , Ctrl 3D

This post is licensed under CC BY 4.0 by the author.