¿Qué es Klipper y cómo instalarlo?

Preámbulo

En este artículo se habla sobre el firmware Klipper, es una estupenda alternativa a Marlin, sin desmerecer el trabajo que hacen, sin embargo, la alternativa se hace necesaria cuando se trata de placas basadas en Arduino con controladores de 8 bits. La placa Trigorilla (las que usan oficialmente las impresoras Anycubic Kossel) tiene una capacidad de cálculo muy pobre, son incapaces de calcular curvas y hacer correcciones a causa de los desajustes de los finales de carrera o los ángulos de las torres de forma fluida.

Ahí entra Klipper en acción, pues es un firmware que trabaja con un procesador y no con un microcontrolador. Una sencilla analogía para comprender sus diferencias sería:

  • Arduino (microcontrolador) es un autómata programable.
  • Raspberry Pi (procesador) es un ordenador.

Nota: antes de borrar la memoria de la Trigorilla con Marlin, si hicimos la calibración PID del fusor y de la base caliente y estamos contentos con los valores, copiadlo en un papel para escribirlo en el nuevo firmware Klipper, los PID de Marlin se encuentra en el archivo configuration.h y así ahorrarnos el proceso de calibrar. Podemos verlos a través de Pronterface con el comando M503.

Material necesario

  • Tener una Raspberry Pi
  • Tener instalado Octopi
  • Putty
  • WinSCP o cualquier cliente FTP (opcional, pero facilitaría mucho la vida)

Preparando Octopi

Contando con que tienes Octopi instalado en la Raspberry Pi, de hecho, es necesario que sea versión 0.14.0 o posterior. Y una vez que todo funciona correctamente, e incluso habiendo hecho alguna que otra impresión con Marlin o cualquier otro firmware procedemos a la instalacción de Klipper mediante un cliente ssh. Puede ser PuTTY, que es el que recomiendo, o bien si eres usuario Linux o Mac, puedes hacerlo directamente desde la terminal.

Para conectarnos a la Raspberry y usar la interfaz de comandos, abrimos PuTTY y escribimos la IP de la Raspberry, le damos a Open, nos saldrá una ventana de aviso, aceptamos y estamos dentro.

PuTTY
  • Usuario: pi
  • Contraseña: raspberry

Lo primero sería actualizar cualquier cosa que se nos quede atrás en OctoPi o en Octoprint para resolver cualquier problema de seguridad o incidencia:

  • ~/oprint/bin/pip install https://get.octoprint.org/latest
  • sudo service octoprint restart

Nota: puedes copiar el código y con el clic derecho sobre PuTTY se pega.

Instalacción de Klipper:

  • git clone https://github.com/KevinOConnor/klipper
  • ./klipper/scripts/install-octopi.sh

Llevará unos mintos y con ello ya tenemos Klipper instalado en nuestra Raspbery Pi. Es un simple programa que se ejecuta sobre Octopi. Para que entendáis: Octopi es igual a Windows 10. OctoPrint y Klipper es igual a Word y Excel.

Preparando y reprogramando la controladora

En el caso de la guía, es con la Trigorilla, aunque si se da el caso de que es otra controladora basada en Arduino Mega, no debería de haber cambios. El proceso es el mismo.

  • cd ~/klipper/
  • make menuconfig

Lo que hace es ir al directorio donde está instalado Klipper y ejecuta el menú de configuración. Empecemos:

Configuración de Klipper

Mucha atención con esto, toda la configuración por defecto está diseñada para placas Arduino Mega, que incluye Trigorilla, por lo que no hay que tocar nada. En caso de que tengas otra placa debéis de ajustar los valores a la placa adecuada. Si no sabes lo que poner, no dudes en contactar conmigo.

Nos desplazamos hacia < Save >, < Ok > y < Exit >. Y para salir del menu, < Exit > otra vez.

Tecleamos:

  • make

Y se empezará a compilar con los ajustes que le hemos dado. Ahora para reprogramar, conocido también como flashear la placa, tecleamos lo siguiente:

Antes que nada, debemos de asegurarnos que OctoPrint no está conectada a la impresora. Si lo está, desconectar.

  • sudo service klipper stop
  • make flash FLASH_DEVICE=/dev/ttyUSB0
  • sudo service klipper start

Puntualizo: en la segunda línea, en este caso es por /dev/ttyUSB pero hay otras posibilidades como /dev/ttyACM0. Consultar aquí.

Felicidades, ya tenemos Octopi y la impresora preparada para funcionar con Klipper. Ahora toca configurar OctoPrint para conectarse a la impresora.

OctoPrint y Klipper

El servidor OctoPrint necesita ser configurado para comunicarse con Klipper. Esta vez, vamos al navegador e iniciamos sesión en la página de OctoPrint. El primer paso sería abrir la configuración (llavecita situado en la parte superior derecha).

En Serial Connection, vamos al cuadro Additional serial ports y escribimos:
/tmp/printer. Le damos a Save.

Volvemos otra vez a configuración y en Serial Port seleccionamos /tmp/printer. Nos debería de quedar tal que así:

Configuración

Nos dirigimos a la pestaña Behaviour y marcamos Cancel any ongoing prints but stay connected to te printer. Le damos a Save.

Pestaña Behaviour

En la página principal, a la izquierda veremos el panel Connection. Nos aseguramos de que está seleccionado en Serial Port la opción /tmp/printer. Nos debería de quedar como la siguiente imagen. Le damos a Connect.

Conexión

Una vez conectado, nos vamos a la pestaña Terminal y escribimos lo siguiente: status. Si nos responde el siguiente mensaje:

Recv: // Unable to open config file /home/pi/printer.cfg
Recv: // Once the underlying issue is corrected, use the "RESTART"
Recv: // command to reload the config and restart the host software.
Recv: // Printer is halted
Recv: // Klipper state: Not ready
Recv: !! Unable to open config file /home/pi/printer.cfg
Recv: ok

Significa que está conectado correctamente, sin embargo nos pide el archivo printer.cfg que será esencial para su correcto funcionamiento, pues es el documento que le dice a Klipper cómo tiene que trabajar con la máquina. Similar a Configuration.h y Configuration_adv.h de Marlin.

Añadiendo el complemento OctoKlipper

Es un complemento que se instala en OctoPrint y nos facilitaría mucho el trabajo para hacer algunos cambios rápidos. En OctoPrint, le damos a la llave mecánica que está arriba a la derecha y en el panel que se nos abre, a la izquierda encontraremos el apartado Plugin Manager.

Administrador de complementos

Le damos al botón Get More…, se nos abrirá una nueva ventana, en el buscador basta con poner OctoKlipper y se nos saldrá, le damos a Install.

OctoKlipper

Una vez instalado, reiniciamos. Esperamos y nos conectamos.

Nos daremos cuenta que se ha cambiado un poco la interfaz, sobre todo el panel izquierdo de conexión y ha aparecido una nueva pestaña llamada Klipper.

Si acaso la pantalla se nos queda así:

Pantalla DEP

Y no conseguimos conectarnos a ella, hacer lo siguiente:

  • Apagar la impresora y la Raspberry Pi
  • Encender primero la impresora, esperar un par de segundos
  • Encender segundo la Raspberry

Con eso, debería de haberse resuelto.

Trabajando con printer.cfg

Antes que nada, vamos a copiar el de ejemplo al directorio principal, no nos va a servir sin haberlo configurado antes, pero nos hará una idea de dónde debe estar el archivo printer.cfg

  • cp ~/klipper/config/example.cfg ~/printer.cfg

Ahora con el programa WinSCP establecemos una conexión con la Raspberry, introduciendo la IP, el usuario y contraseña y aceptando la conexión. En otros clientes FTP como Filezilla la configuración será similar.

Inicio en WinSCP

Se nos mostrará la siguiente ventana:

Ventana principal WinSCP

Nos fijaremos que está el archivo printer.cfg en el directorio /home/pi/. Bien, pues ahí es donde debe estar el archivo de configuración, importaremos uno que ha hecho @correos, de hecho, tiene dos: uno para la Kossel de fábrica y otro con la modificación TMC. Para otras impresoras, consultar con el grupo.

Para usar el archivo printer.cfg en GitHub, le damos con el botón derecho del ratón sobre el documento y le damos a Guardar como…, de nombre pondremos printer.cfg y en Tipo: Todos los archivos.

Guardando printer.cfg

Con ello ya tenemos el archivo listo para copiarlo a nuestra Raspberry. En WinSCP funciona como el explorador de Windows, con arrastrar y soltar debería funcionar. Ilustro:

Copiando printer.cfg a la Raspberry

Abrimos desde WinSCP el archivo printer.cfg, tiene un editor integrado en el que podemos editar y guardar directamente sobre la Raspberry. Revisemos las líneas que son mas susceptibles a ser modificadas:

  • En[extruder] y en [heater_bed] es posible que haya que poner nuestro pid. Dicho valores lo podemos coger directamente de Marlin, si es que lo copiamos antes. Si no, tocará hacer el proceso de calibración.
  • En[probe], miramos el valor z-offset: x.xx, si usamos la sonda de espuma, dejamos el valor en 0.25. Es que es la más precisa y recomendada. De lo contrario, colocar el desfase apropiado de cada sonda. Pueden ser 19.0 o 16.8, de todas formas no os preocupéis de la precisión, se puede ajustar el desfase desde Octoprint.

Cualquier cambio que le hagamos al documento, lo guardamos, se cambia en la Raspberry directamente por lo que no tendremos que volverlo a subir ni actualizar. Se recomienda no tocar mucho o al menos saber qué se está tocando.

Comprobando printer.cfg

Una vez que esté subido e implementado en Klipper, toca comprobar si todo está correctamente instalado y configurado. Para comenzar, vamos a la pestaña terminal y escribimos primero restart, una vez reiniciada, probamos con el comando status, si la respuesta es:

Recv: // Klipper state: Ready
Recv: ok

Significa que está todo correctamente instalado, pero ahora comprobamos si está bien configurado, empecemos:

Comprobación de la temperatura:

Lo primero es ver si la lectura de los sensores es correcta, tanto del fusor como el de la base caliente.

Temperatura.

En caso de temperatura inestable o valores incorrectos, es probable que tengas que modificar las líneas que ponen sensor_type y sensor_pin. Todo eso dentro de printer.cfg.

Comprobación del comando M112

Es un comando que realiza una parada de emergencia. Para ello, basta con ir a la pestaña Terminal y escribir M112, saldrá una serie de mensaje, en el que la última línea dice que cambió de Operational a Offline. Significa que se ha cortado todas las comunicaciones por el puerto USB.

Para volver a conectarse, basta con darle a Connect en el panel izquierdo de OctoKlipper, sin embargo nos replicará que la impresora está inactiva, para activarla hay que escribir en Terminal el comando: FIRMWARE_RESTART, con ello, se volverá totalmente operativa.

Comprobación de los calefactores

Es una prueba sencilla, sirve para comprobar si los calefactores están correctamente conectados y funcionando. Para ello vamos a la pestaña Temperature y le asignamos una temperatura deseada en el cuadro Target y esperamos, si vemos que están calientes y no reporta ningún error significa que todo está correcto.

De lo contrario, si no hace nada, toca revisar la línea heater_pin.

Comprobación de los motores

Se realiza con el comando STEPPER_BUZZ, para comenzar la prueba, tecleamos lo siguiente:

  • STEPPER_BUZZ STEPPER=stepper_a
  • STEPPER_BUZZ STEPPER=stepper_b
  • STEPPER_BUZZ STEPPER=stepper_c

Uno por cada motor.

Comprobación de finales de carrera y sonda

Es un paso importante, pues debemos saber si los finales de carrera están correctamente configurados. Para ello usamos los comandos:

  • QUERY_ENDSTOPS
  • QUERY_PROBE

Deben de responder, en caso de que esté la jaula en el aire, sin tocar nada, en open.

En caso contrario debemos de ir a las líneas:

  • endstop_pin: ^ar2
  • endstop_pin: ^ar15
  • endstop_pin: ^ar19
  • pin: ^ar18

Para que entendáis, esas lineas son los pines de los finales de carrera y de la sonda. Si se ha reportado un valor incorrecto, es tan fácil como poner una exclamación: ! al principio para invertir el estado. Ejemplo:

  • endstop_pin: ^ar2, invertido: endstop_pin: ^!ar2
  • pin: ^ar18, invertido: pin: ^!ar18

Borrar o añadir según proceda.

Calibración PID

Omitir si cogemos los valores copiados de Marlin, si no, proceder:

En la pestaña Terminal, es similar en Marlin, basta con escribir el siguiente comando:

  • PID_CALIBRATE HEATER=extruder TARGET=170

Para el de la base caliente:

  • HEATER=heater_bed TARGET=60

Donde TARGET es la temperatura deseada, poned vuestro valor, si normalmente imprimís a 200 grados, poned 200.

Calibración Delta

Nota: no aplicable a impresoras NO deltas.

El proceso de calibración de una impresora delta con Klipper es aun más sencillo que con Marlin. Una vez revisados todos los finales de carrera, sonda incluido, motores, podemos hacer el calibrado. Es suficiente con lanzar el comando, desde la terminal:

  • G28 para restablecer la posición.
  • DELTA_CALIBRATE

Y esperar. Una vez terminada la calibración, lo guardamos con el comando:

  • SAVE_CONFIG

Para ajustar con más precisión el desfase (offset), hacemos la prueba del folio:

Bajamos a una distancia segura:

  • G0 F2000 Z0.5

Seguimos bajando:

  • G0 F2000 Z0.5

Hasta que roce con el folio. El valor que nos de, lo tenemos que aplicar en la pestaña Klipper, botón Coordinate Offset. Si por ejemplo, el folio está en la posición óptima en Z-0.1, debemos de poner -0.1 en el recuadro Z y con el cuadro Add to existing offset desenmarcado, aceptamos los cambios.

Ajuste de desfase.

Actualizar Klipper

Klipper es un firmware que está en constante desarrollo por lo que todas las semanas hay novedades, cambios y mejoras. Para actualizar Klipper a la última versión se hace lo siguiente.

Nota: usar con precaución, si la versión que estás usando funciona correctamente y no quieres arriesgarte a tirar la tarde por arreglar un problema que no debería, mejor dejar como está y actualizar bajo nuestras recomendaciones. Lo puedes consultar en el grupo de Telegram Anycubic y en el grupo Telegram Klipper.

Comencemos, lo primero es abrir el cliente SSH, puede ser PuTTY o la terminal si estás en un ordenador Linux/Mac y teclear los siguientes comandos, de uno en uno:

  • cd ~/klipper
  • git pull
  • ~/klipper/scripts/install-octopi.sh

Volver a compilar la actualización, como al principio de la guía:

  • make menuconfig
  • make clean
  • make
  • sudo service klipper stop
  • make flash FLASH_DEVICE=/dev/ttyUSB0
  • sudo service klipper start

Una vez actualizado y aplicado todos los cambios, reiniciar Klipper:

  • cd ~/klipper
  • git pull
  • sudo service klipper restart

Listo, ya tienes Klipper actualizado a la última versión.

Fuentes:

GitHub de maketo3d (@correos)

GitHub de KevinOConnor (Klipper)

El grupo Telegram Klipper y Telegram Anycubic

Agradecimientos:

A todos los usuarios del grupo de Telegram, que sin la colaboración de ellos, esta guía no sería posible. En especial mención a @correos, que gracias a el, se me allanó mucho el camino cuando empecé mi andadura con Klipper, a @Yakandu por ser mi inspiración para escribir estas guías y @Anycubic_J por fundar el grupo. Y a ceci, por ser ceci.

La guía es libre de ser difundida y modificada para siempre mejorar, estoy abierto a todas las sugerencias de cambio, y todas las dudas las puedes contactar conmigo.

1 comment

  • Gracias Zepyr por tu guia, pero he de comentar unos problemas que me he encontrado que no comentas.

    Los printer.cfg que compartes de @correos tienen un fallo en la sección [delta_calibrate], la linea samples: 3 hay que comentarla o si no no carga la configuracion de la impresora y esta no queda en estado Ready.

    Los que tengais Drivers TMC que no sean los 2130 en cada seccion de los motores [stepper_a] , b y c la linea dir_pin: !ar55, hay que quitarle la exclamacion ya que esta la direccion invertida y hay que dejarla asi dir_pin: ar55, este es el ejemplo de a.

    Los que tengais un BMG en el Extrusor en la seccion [extruder] en la linea step_distance: 0.002409 hay que indicar 0.002409 que son la traduccion de los steps del bmg que son 415 al sistema de klipper, esta cifra sale del calculo 1/415 = 0.002409 , 415 son los steps de un bmg.

    En la calibracion delta se me ha parado a medio camino porque en la seccion [probe] pin: ^!ar18 he tenido que quitar la exclamacion pin: ^ar18 ya que mi sensor de nivel de cama el ZProbe que viene con la Kossel esta abierto y solo cierra al tocar la cama y la exclamacion es para invertir el resultado.

    En Calibración Delta, cuando obtengo el Z Offset, en mi caso -14.9 como indicas tu no me funciona, lo que hecho ha sido editar el printer.cfg y en la seccion [probe] en la linea z_offset: 14.9 he indicado mi Offset en positivo. Despues he reiniciado la impresora:
    Seguidamente he hecho un G28
    he vuelto a colocar el sensor de calibracion
    y he realizado un DELTA_CALIBRATE
    despues un SAVE_CONFIG
    y he quitado el sensor y le he enviado por terminal un G0 F2000 Z0 para ver si quedava perfecto y asi ha sido.

    Espero que si alguien mas le pasa le sea de ayuda.

    Gracias.

Deja un comentario

Your email address will not be published. Required fields are marked *

Introduzca tus palabras claves y pulsa Intro

Usamos cookies para brindarle la mejor experiencia en línea. Al aceptar que acepta el uso de cookies de acuerdo con nuestra política de cookies.