Conectando Klipper a un VPN para usarlo desde el telefono (gratis)

Desde hace unos días estoy intentando acceder a una conexión remota de mi impresora, pero de manera segura. He dado con un tutorial en un canal de Youtube Que configura una VPN gratis y de esta manera podemos acceder a nuetra impresora de forma remota y le voy a agregar una info extra que a alguno le puede servir. Vamos primero a hacer lo pasos del tuto, luego agregaré lo que falta


Configuración de Tailscale en la Web

Visita la web de Tailscale (tailscale.com) y crea una nueva cuenta.  

 

Configuración de Tailscale en la Raspberry Pi

Accede a tu Raspberry Pi usando PuTTY o tu cliente SSH preferido. 

Instala Tailscale con el siguiente comando:


curl -fsSL https://tailscale.com/install.sh | sh

Luego de instalado, ejecuta el vpn en la RP:


sudo tailscale up

 

 

Esto te dará una dirección URL para vincular tu dispositivo. 

Copia y pega la URL en tu navegador y inicia sesión con tu cuenta de Google.

 

Visita https://login.tailscale.com/admin/machines para verificar que tu Raspberry Pi esté en línea.

 


Configuración en tu teléfono Android

Descarga la app de Tailscale desde https://tailscale.com/download/android  

Instala la app y inicia sesión con la cuenta que creaste anteriormente.

Acepta la conexión en tu teléfono.

Conexión Remota  - Configurando Klipper (Moonrak)

En la página de dispositivos de Tailscale (https://login.tailscale.com/admin/machines), verás tus dos dispositivos conectados (Raspberry Pi y teléfono).

Copia las direcciones IP de ambos dispositivos y los agregas en trusted_clients



Ahora puedes acceder a tu impresora 3D remotamente ingresando la dirección IP de la Raspberry Pi en tu navegador. 

 

Bonus (Atenti, ver al fondo)

Uso una aplicación (3D Cost Calculator) para cotizar mis piezas, me deja tomar los gcodes y hacerme mas facil la tarea de cotizar, esto se reuelve así:






 [Actualización]

Cuando hice esto, anduvo sin problemas, quise replicarlo en otro telefono y me hizo parir la obtención del API de moonraker. Así que bien bien, no se que funcionó.

Primera medida: activar en mainsail -> maquina -> moonraker.cfg

 

[authorization] 
enable_api_key: True

luego, conectado a putty, busque con el comando

sudo find / -name "*api*key*" 2>/dev/null

di con la direccion: /home/pi/moonraker/scripts/fetch-apikey.sh

por lo que procedí a hacerle estos dos comandos:

sudo chmod +x /home/pi/moonraker/scripts/fetch-apikey.sh
/home/pi/moonraker/scripts/fetch-apikey.sh

y ahí, al fin, obtuve mi API, con la que pude conectar el teléfono a moonraker




 

Por fin dando en la tecla con OrcaSlicer y el desfase de la impresión

 


No puedo explicar la cantidad de tinta que he derramado en la configuración de Orcalicer, hasta que pude dar en la tecla de la configuración, y había varias coas que e me escapaban, hasta que, mediante inteligencia artificial lo pude solucionar: Oh, dato no menor, al parecer, Claude no conoce Orca.


El enfoque del problema siempre era erróneo, y voy a tratar de ser mas o menos sintético, y trataré de tomar un par de capturas de pantalla sin mandarme cagadas:

MAL ENFOQUE

Primero que nada, estaba cometiendo un error al lanzar el Gcode inicial intentando salvar el offset negativo, Claude me habia dicho que esto eventualmente me traería problema y lo hizo:

G28; Home en todos los ejes

G1 X-55 Y-10 Z0.0; Mover al nuevo origen, que ahora sera la esquina de la cama

G90; Asegurar el posicionamiento absoluto

G92; Posicionamiento relativo

G1 X0 Y0 z0.2; Mover al nuevo origen, que ahora sera la esquina de la cama


Esto traía como problemas, desfajes en la cama de impresión. Mi problema es que estaba acudiendo a números negativos en los offset, no importaba que intentara resetear con G90 y G92, siempre me terminaba desplazando, debía eliminar esa línea. 

 

ACEPTANDO SUGERENCIAS

 Hablando con Chat-GPT, luego de sugerirme que usara macros (Que no se pueden invocar en un Gcode), me sugirió que modificara el comando G28 con otro tipo de comando en Klipper: Reemplazar [safe_z_home] por [homing_override], lo que me permitió hacer un mini-macro:

[homing_override]
axes: xyz
gcode:
    G90
    G1 Z10 F5000 # Levanta el eje Z
    G28 X Y     # Home X e Y
    G1 X10 Y10 F7000 # Mueve a la posición segura para el homing de Z
    G28 Z       # Home Z
    G1 X-55.6 Y-10 Z0 F5000 # Mueve al punto (0,0) real
set_position_z: 0

 

RESULTADO 



 Esto fue una genialidad, ya que me permitió eliminar esa posición negativa, quedando el Gcode de inicio de esta manera:

G21 ; Establecer unidades a milimetros

G28; Home all axes

G90; Asegurar el posicionamiento absoluto

G92

G1 X0 Y0 z0.2; Mover al nuevo origen, que ahora sera la esquina de la cama

G1 Z2.0 F3000 ; Elevar el eje Z para evitar rayar la cama


Y ha así al fin pude acomodar la camucha. Se puede notar que es una solución muy simple y elegante, y solucionó de cuajo el problema. Ya se, para la próxima, que no es buena idea usar números negativos para configurar una impresora. Espero acordarme para la próxima.

[IMPORTANTE]

Klipper no te permite tener las dos opciones activadas, asi que comenté toda mi línea de [safe_z_home], por si en algún momento la vuelvo a necesitar, y de paso, ver si tengo que solucionar algunas configuraciones en Cura, que quedará para otra entrada.



 


[Actualizado] Solucionando Error mounting [Dispositivo]: wrong fs type, bad option, bad superblock on....

 

Ayer tuve un apagado inesperado en la Laptop, usando Kubuntu, y luego de eso, noté que ya no podía acceder a mi disco de uso común con Windows (digamos, la tercera partición donde van los archivos que no son de sistema, si no los de usuario: música, documentos, etc). Luego de trastear un rato, tocando aquí y allá, y habiéndome asegurado que en Windows funcionaba sin problemas, me canse y fui directamente con Claude, quien no tardó en darme la solución. Lo que debemos hacer primero, en mi caso, que es de uso común, es decir, ntsf (si es fat, no se como sería), el comando seria el siguiente:

sudo ntfsfix /dev/sda6

Una vez que sabemos que la integridad del disco esta ok, toca montar, en mi caso, quedó asi:

sudo mount -t ntfs /dev/sda6 /media/efrain/COMUN

Donde ntfs es el tipo de partición, /sda6 ya se que es la partición COMUN y en mi caso tuve que hacer previamente un mkdir para crear la carpeta, por alguna razon, antes no estaba

sudo mkdir /media/efrain/COMUN

Y ya, eso es todo, espero que haya sido la solución para alguno.

PD: linux, dejá de hacerla dificil, para que me manda a hacer algo manual que se puede hacer automaticamente.

 [ACTUALIZACION]

Al parecer el problema viene por una hibernación del SO de Windows que genera ese problema. Claude me ha ofrecido una solución de fuerza bruta, cuando una partición no se quiere montar, podríamos hacer lo siguiente:

sudo mount -t ntfs-3g -o remove_hiberfile /dev/sda3 /mount/point

donde /mount/point es el punto de montaje, en mi caso

sudo mount -t ntfs-3g -o remove_hiberfile /dev/sda3 /media/efrain/Windows

Y ya con eso, anduvo pues. Así que bueno, a tenerlo presente


Mi experiencia día 1 con la Tevo con Klipper

He notado un buen sabor de boca una vez que ya he dejado configurada la máquina corriendo Klipper. También que algunas de las impresiones realmente han bajado dramáticamente la velocidad de impresión. He visto que levanta velocidades vertiginosas los ejes X y Y. Debería poder hacer algún tipo de ajuste a la ventilación para que no haga tanto ruido, al igual que la velocidad de ventiladores, que con un 70% podría andar mas que bien. Debería hacer una prueba de flujo para saber si directamente va a la boquilla o se puede por ahí.

En fin, las imágenes de velocidades en el slicer, hablan por si solas:


Previsualización en Creality Ender 3 v2


Previsualización en Hellbot Magna 1
 
 Previsualización en Tevo Tarantula Pro

Claramente, la diferencia principal es que la Creality trabaja con un Extrusor bowden y un nozzle corto, lo que provoca que el flujo de material derretido disponible para la deposición sea poco, mientras que las Magnas fueron modificadas, montando unas extrusiones directas volcano, pero montadas sobre ruedas V-slot, mientras la Tevo, a parte de la extrusión directa volcano, están los ejes X y Y montadas en guías lineales, lo que hace que esto sea superior.

La tortura de afinar Klipper

 Klipper: Instalación, Configuración y Pruebas

Hace 3 días terminé de instalar Klipper, y dos días, prácticamente, me llevó
terminar de configurarlo. Me he encontrado muchos problemas entre medio de Cura, que de repente es mas amigable con las configuraciones de lo que puede ser Orcaslicer, que a pesar que tiene muchas mas opciones, se me hizo tortuoso, y al final terminé desistiendo, debido a que en realidad no me daba tantas ventajas.

 

 

 

 

  1. Resonance Compensation (Compensación de resonancia): El INPUT SHAPPER

Lo primero que tenemos para domar es el control de vibraciones de Klipper, denominado Input Shaper. Este tiene la particularidad de enviar vibraciones contrarias al eje que esta vibrando para así anularlas. Es como cuando te escuchas a vos mismo con un delay de unos mili segundos. Simplemente no podes seguir hablando.

Esta documentación se encuentra en Klipper, pero medio que lo explican como el culo, y uno tiene que ir a un youtuber (JC3Desing) que la maneja muy bien, y se toma el trabajo de documentarse. Comete un par de errores mientras hace el video, pero el tipo se explica y lo hace muy bien, agregando información a lo que esta faltando. La cosa es que después de ponerme a contra ondulaciones, calibre en mano, y revisar otras cositas mas que se pueden ver, termine decantándome por el modo MVZ y no por el EI, que noté que quita muchos detalles a la impresión.

Es de notar que en el reverso de la prueba, están los ejes invertidos. En cada uno de ellos hay que poner el valor de resultado luego de una ecuación muy simple. Tengo que destacar que tuve que hacer 6 pruebas para poder determinar bien cual era la medición de las vibraciones y lograr que se disimulen mejor. Pero lo logré.

  1. El MAX_ACCEL

Con la misma prueba se puede hacer la determinación de la aceleración máxima de la máquina, muy útil antes que estar acelerando de 500 en 500.

  1. PRESSURE ADVANCE

Esta prueba fue mucho mas facil, solo que hay que echar bien el ojo. Ya para esta me había comprado un marcador de mapa y con regla milimétrica en mano, me puse a contra cada 5 milímetros que es el cambio de velocidad, así pude sacar la mejor configuración. A tener en cuenta que hay que revisar los 4 lados del cubo, ya que hay que ver las aceleraciones, la desaceleración y como anda la subextrusión.

Las conclusiones de Las Pruebas

Luego de hacer las dos pruebas, que me llevaron todo el día, pues, que decir. Hay que tener paciencia y estar dispuesto a invertir todo un día al lado e la impresora para hacer el trabajo, y no tener pendientes. El estar de vacaciones ayudó muchísimo a concentrarme sólo en esto. Pero pude sacar varias cosas en positivo:

  • Determinar la velocidad real de la impresora
  • Determinar hasta que velocidad puede extruir el extrusor
  • Poder tener bien definidos los corner de las impresiones
  • Quitar las vibraciones

Lo que mas me sorprendió es la velocidad en la que puede correr la Tevo, el cambió con guías lineales se siente, también la extrusión directa, que junto con un nozzle volcano, hacen un buen dúo.

SOBRE LOS CONFLICTOS CON LOS SLICERS

Hay cosas que andan mejor cura que Orca, y viceversa, eso es una realidad. Como en Cura ya tenia un profile para la Tarantula, quería usar esa y ya. Pero luego de tocar y trastear un poco y ver que en Cura no podía conectar la impresora en línea y en Orca si, pues, me puse a jugar un rato con los valores.

Noté que todos los offset que había colocado en el Gcode de inicio de Cura, aquí no servían, debía tocar un poco, lo que no pude hacer andar nunca fue el desfase del eje Z. Quise compensarlo con el Gcode de inicio, quise tocar la configuración de la impresora, usar un Macro de inicio de impresión y nada me funcionó, fue frustrante. Por el momento, se quedará en la nada. Ni con Claude pude solucionarlo. Pasé de imprimir en el aire, a casi reventar la cama de la impresora. El Offset en Klipper no funciona en vivo, como lo hace en las Ender, Aquí al final de la capa se hace la compensación. La cosa es que, al final, todo ese potencial que parece tener Orca, con esa compatibilidad nativa con Klipper, al momento, no es tan así. pero estamos en 8/08/2024, Klipper, todavía sigue caminando y Orca hace poco ha salido, o se ha masificado. Tienen un trecho para seguir desarrollándose.

CONCLUSION FINAL

Bueno, que decir, por el momento, aunque fue tortuoso, me voy llevando un buen sabor de boca con los resultado, sobre todo porque es una victoria ganarle a la impresora y verla en este momento hacer unas impresiones al lado mío. He notado que una impresión que llevó 12 horas en la Creality Ender 3, en esta Tevo Reformada, puede bajar a apenas unas 6, me gustaría hacer esa prueba a ver que tal va, me tiene entusiasmado. Por el momento, las cosas que he sacado, prometen. Tengo muchas ilusiones de encarar otros proyectos, como el AMS de código abierto, pero por el momento, temo no encontrar la parte de la electrónica, también tengo que ponerme a trabajar con material técnico para hacer piezas buenas y de calidad, solo así me puedo garantizar la victoria.

Voy a agregar un carrusel de fotos para mostrar la evolución de las impresiones, y este documento, capaz que lo pase por Claude, para pegarle una acomodada. Mi próximo proyecto? la verdad que no se, no me quedan muchas vacaciones para seguir jugando, así que por el momento, será que todas sigan funcionando.

 





 

Resolviendo el Misterio del Desfase en Impresión 3D: Una Colaboración Humano-IA

Otra vez Claude hizo esta entrada, solucionando un problema que nos volvió loco durante toda una tarde.


 

En el mundo de la impresión 3D, a veces nos encontramos con problemas que parecen desafiar la lógica. Recientemente, me enfrenté a uno de estos rompecabezas: un misterioso desfase en mis impresiones que parecía surgir de la nada. Lo que siguió fue un viaje de descubrimiento y solución de problemas, facilitado por una colaboración única con un asistente de IA. Esta es nuestra historia.

El Problema

Todo comenzó cuando noté que mis impresiones estaban consistentemente desplazadas unos 5.6 cm hacia el centro de la cama. A pesar de que la configuración en Klipper parecía correcta, incluyendo los offsets del BLTouch y los límites de los ejes, las impresiones se obstinaban en comenzar en el lugar equivocado.

Las Primeras Hipótesis

Inicialmente, exploramos varias posibilidades:

  1. Configuración del Mesh Bed Leveling: Revisamos la configuración del bed_mesh en Klipper, ajustando los valores de mesh_min y mesh_max.
  2. Offset del BLTouch: Verificamos que los offsets del sensor estuvieran correctamente configurados.
  3. G-code de Inicio: Examinamos el G-code de inicio en busca de comandos que pudieran estar causando el desfase.

El asistente de IA fue particularmente útil en este punto, sugiriendo varias configuraciones potenciales y explicando detalladamente el propósito de cada comando en el G-code de inicio.

El Descubrimiento Clave

La revelación llegó cuando notamos que la impresora estaba interpretando el punto de homing (donde el carro toca el endstop) como el punto cero de la cama, cuando en realidad estaba a 56.6 mm del verdadero borde de la cama.

El asistente de IA sugirió una solución elegante: modificar la configuración de Klipper para informar sobre esta discrepancia. Sin embargo, a pesar de que esta información ya estaba correctamente configurada en Klipper, el problema persistía.

La Solución Práctica

Finalmente, llegamos a una solución práctica e ingeniosa. Modificamos el G-code de inicio para incluir los siguientes comandos:

 

G28 ; Home all axes
G1 X-55 Y0 Z10 F3000 ; Move to true zero of the bed
G92 X0 Y0 Z10 ; Set current position as new zero

 

Esta secuencia de comandos hace lo siguiente:

  1. Realiza el homing de todos los ejes.
  2. Mueve el nozzle al verdadero punto cero de la cama.
  3. Resetea las coordenadas para que esta posición sea reconocida como el nuevo punto cero.

El Resultado

¡Éxito! Con esta modificación, las impresiones comenzaron a posicionarse correctamente en la cama. El misterioso desfase de 5.6 cm se había resuelto.

Lecciones Aprendidas

Este proceso nos enseñó varias lecciones valiosas:

  1. La importancia de entender la geometría de la impresora: El desfase entre el endstop y el borde real de la cama es un detalle crucial que puede afectar significativamente la impresión.
  2. La flexibilidad del G-code: A veces, una solución simple a nivel de G-code puede resolver problemas complejos sin necesidad de modificar la configuración del firmware.
  3. El valor de la colaboración humano-IA: La combinación de mi conocimiento práctico de la impresora y las sugerencias sistemáticas y bien informadas del asistente de IA nos permitió explorar múltiples ángulos y llegar a una solución efectiva.
  4. La importancia de la persistencia: Resolver problemas en impresión 3D a menudo requiere paciencia y la voluntad de probar múltiples enfoques.

Conclusión

Este viaje de solución de problemas demuestra el poder de combinar el conocimiento humano con la asistencia de IA. Mientras que yo aportaba el contexto específico y la capacidad de implementar y probar soluciones en el mundo real, el asistente de IA proporcionaba un amplio conocimiento técnico y la capacidad de sugerir múltiples enfoques de manera sistemática.

Para aquellos que se enfrenten a problemas similares, recuerden: no tengan miedo de pensar fuera de la caja y de aprovechar todas las herramientas a su disposición, incluyendo la asistencia de IA. A veces, la solución perfecta es una combinación de conocimiento técnico, creatividad y un poco de ingenio en el G-code.

¡Feliz impresión a todos!