niubit dev

Un espacio de contenidos "tech" dedicado a los desarrolladores más inquietos.

Si tienes una impresora 3D y quieres mejorar la gestión de las impresiones, OctoPrint es una de las mejores opciones.

Introducción

Aunque el mercado de la impresión 3D ha madurado mucho, y existen soluciones comerciales muy evolucionadas, en el ambiente maker continúan siendo habituales las impresoras basadas en microcontroladores que tienen una capacidad de gestión bastante limitada. En esa situación hay que realizar gran parte del trabajo de impresión en el PC, quedando para la impresora lo único que sabe hacer, es decir la impresión propiamente dicha, con escasas capacidades de seguimiento o control. Aunque en general no hay nada malo en este enfoque, en algunas situaciones nos puede interesar transferir a la impresora parte de las funciones que realizamos en el PC, o ampliar las capacidades de seguimiento y control de ésta, para por ejemplo poder vigilar o gestionar la impresión en remoto.

Para esto existe OctoPrint, que se ha convertido en el estándar de facto en este terreno. Básicamente OctoPrint le otorga a la impresora de conectividad y de un interfaz web de gestión de las impresiones. Podríamos decir que convierte tu impresora 3D en una smartprinter.

En este artículo vamos a ver cómo instalarlo en una Raspberry Pi Zero que conectaremos a nuestra impresora 3D y veremos algunas de las capacidades nuevas que le aportará.

Comentar que OctoPrint es un proyecto de software libre, dirigido por la alemana Gina Häußge a la que te animamos a apoyar si encuentras de utilidad su trabajo.

Instalación hardware

El firmware que se ejecuta en el microcontrolador de las impresoras 3D, básicamente es un intérprete de G-code, el lenguaje utilizado en las máquinas de control numérico, que es básicamente lo que es una impresora 3D. Normalmente el fichero gcode con las órdenes necesarias para imprimir una pieza, le llega a la impresora desde una tarjeta SD para la que suele haber un lector en la placa base de la misma, o se le envía por puerto serie desde un ordenador. Va a ser esto último lo que vamos a aprovechar para comunicar la impresora con OctoPrint.

Es casi seguro que nuestra impresora va a tener un puerto serie apto para recibir comandos G-code, pero nos va a tocar buscarlo. Normalmente se encuentra en forma de puerto USB de tipo B que internamente, mediante un chip adaptador USB-serie, conecta con el puerto serie del microcontrolador:

También es posible que exista sobre la PCB de la placa una forma de acceder directamente al puerto serie, salvando el adaptador USB-serie, lo que nos puede simplificar el montaje al evitar los aparatosos conectores y cables USB tanto en la impresora como en la Raspberry Pi donde instalaremos OctoPrint. Por ejemplo en este artículo se dan detalles sobre cómo realizar esta conexión directa al puerto serie en la PCB de la impresora Anet A8. Para ilustrar este artículo, nosotros vamos a trabajar sobre una impresora Infitary o Alunar M508. La placa base de esta impresora es una HY_BASE_L 1.0 que desafortunadamente (como puede leerse en este enlace) no proporciona acceso a la línea serie del microcontrolador ATmega 2560 que utiliza. Por tanto, si no queremos modificar la placa, no nos quedará otro remedio que utilizar el puerto USB tipo B (es precisamente el que se veía en la última foto).

Aunque en general OctoPrint va a poderse utilizar en casi cualquier impresora, en éste enlace tenemos una lista de impresoras testeadas por la comunidad de usuarios, por si queremos tener ciertas garantías antes de empezar.

Como hemos adelantado hace poco, OctoPrint se va a ejecutar sobre una Raspberry Pi. El modelo recomendado es una Raspberry Pi 3 o superior. Nosotros vamos a utilizar una Raspberry Pi Zero W que tiene bajos requerimientos de potencia, para así poderla alimentar directamente desde la fuente de alimentación de la propia impresora, pero este modelo según la documentación oficial, puede afectar a la calidad de las impresiones, al sufrir de ralentizaciones ejecutando OctoPrint. Seguramente el modelo más equilibrado es el nuevo Raspberry Pi Zero 2 W. De hecho, el autor de este artículo ya ha actualizado su instalación con este modelo y el rendimiento ha mejorado claramente.

Para conectar la Raspberry Pi con OctoPrint a la impresora tenemos que resolver dos cuestiones:

  • Alimentación de Raspberry Pi.
  • Conexión serie entre Raspberry Pi e impresora.

La alimentación nos interesa obtenerla de la propia impresora, para evitar tener que incorporar una fuente de alimentación al montaje. En principio pensamos que conectando la Raspberry Pi Zero por el puerto USB que vemos señalado en la siguiente foto (no el PWR IN situado a su derecha que se utiliza únicamente para alimentar), lograríamos alimentarla a la vez que tendríamos acceso a la conexión serie, pero el puerto USB tipo B de la impresora es de tipo cliente, no host, por lo que no suministra potencia, más bien la demanda.

Por tanto nos toca estudiar la PCB de la impresora para encontrar algún punto de donde podamos extraer los 5V necesarios para alimentar la Raspberry Pi. En la placa HY_BASE_L de nuestra impresora encontramos los 5V en los dos conectores ICSP que hay.

El ICSP que hay en el centro de la foto es el que se utiliza para programar el microcontrolador principal de la placa (el ATmega2560). El ICSP2 que hay arriba a la izquierda se utiliza para programar el ATmega secundario que actúa como adaptador USB-serie en esta placa así como en la mayoría de las placas Arduino (esta placa está claramente derivada de un Arduino Mega). Nos sirve cualquiera de los dos conectores ICSP, pero resulta más cómodo utilizar el segundo por estar más cerca del puerto USB donde también tendremos que hacer una conexión.

Así pues ya tenemos decidido dónde obtener conexión para los dos puntos que habíamos identificado al principio (alimentación y conexión serie). Toca fabricar un cable a medida que tome una y otra conexión desde la PCB de la impresora y la conduzca a los pines correctos del conector microUSB macho que terminaremos conectando a la Raspberry Pi Zero (al puerto etiquetado como USB como habíamos comentado antes). Aprovecharemos para introducir un interruptor en el cable que conduce los 5V para así poder controlar si usaremos OctoPrint con la impresora o no sin tener que hacer modificaciones en la instalación. El esquema del cable que construimos es el siguiente (coloreamos el cable que transmite la señal D- en amarillo aunque el color que encontraremos en los cables es blanco, porque de otro modo no se vería en el esquema):

Para alojar el interruptor y las conexiones entre los distintos tramos de cables, diseñamos una pequeña caja. El resultado final es el siguiente:

A la impresora conectaremos los dos conectores del tramo inferior de la foto anterior:

En el otro tramo del cable sólo queda el conector microUSB que conectaremos a la toma USB de la Raspberry Pi Zero W que a su vez protegeremos con esta caja.

Instalación software

La instalación de OctoPrint en la tarjeta de la Raspberry Pi es muy sencilla desde que se incorporó a las imágenes que soporta oficialmente la utilidad Raspberry Pi Imager. Vamos a detallar los pasos que seguiremos utilizando dicha utilidad:

  1. Instalamos Raspberry Pi Imager.
  2. Abrimos Raspberry Pi Imager.
  3. Pulsamos la combinación de teclas Ctrl+Mays+X para abrir las opciones avanzadas. En la ventana que aparece hacemos los siguientes ajustes. Terminamos pulsando Save (no sale en la foto):
  4. En la ventana principal pulsamos CHOOSE OS y elegimos el sistema de la siguiente ruta: Other specific purpose OS > OctoPi > OctoPi (stable).
  5. Insertamos una tarjeta microSD de al menos 4GB en el PC con un lector adecuado.
  6. De nuevo en la ventana principal de Raspberry Pi Imager pulsamos CHOOSE STORAGE y seleccionamos la entrada correspondiente a la microSD.
  7. Una vez seleccionado el origen y el destino, grabamos finalmente la tarjeta microSD pulsando el botón WRITE.

En esta página se encuentran las instrucciones oficiales sobre el proceso de instalación con esta utilidad, por si se encuentra algún problema. Alternativamente, si se tiene experiencia instalando imágenes Linux en Raspberry Pi, se puede optar por bajar la imagen normal e instalarla por nuestros medios.

Configuración

Una vez instalado el sistema en la tarjeta hay que configurar la conexión serie entre Raspberry Pi y la impresora. El puerto serie físico que hay en el GPIO de Raspberry Pi Zero está en uso por el adaptador Bluetooth integrado. Hay que desactivar este adaptador y la consola serie que se asocia al mismo que nos da la posibilidad de iniciar sesión por el puerto serie. Para ello hacemos lo siguiente:

  1. Volver a montar la microSD en el PC.
  2. Editar el fichero config.txt que hay en la partición boot.
  3. Añadir al final las lineas siguientes:
    dtoverlay=pi3-miniuart-bt
    enable_uart=1
  4. Volver a poner la microSD en la Raspberry y arrancar el sistema. La primera vez tarda bastante porque se redimensiona la partición principal de la microSD y se ejecutan unos scripts de puesta a punto del sistema.
  5. Iniciar sesión por SSH (usuario: pi; host: octoprint.local) y ejecutar la utilidad raspi-config con sudo.
  6. Acudir a la sección Interfacing options > Serial y responder de la siguiente forma a las dos preguntas que se harán:
    · Would you like a login shell to be accessible over serial? -> No
    · Would you like the serial port hardware to be enabled? -> Yes
  7. Reiniciar.

El resto de la configuración la realizaremos sobre el interfaz web de OctoPrint. Para acceder a él abriremos un navegador y apuntaremos a la dirección http://octoprint.local (también podemos utilizar la IP de la Raspberry que podemos averiguar con un escáner de red si nuestro ordenador no es capaz de resolver el nombre octoprint.local). La primera vez se ejecutará el asistente de configuración inicial. Señalamos a continuación los parámetros que necesitamos o conviene cambiar:

  1. Access Control > Username | Password | Create Account
  2. Online Connectivity Check > Host IP: 1.1.1.1 | Enable Connectivity Check
  3. Anonymous Usage Tracking > [A nuestra elección]
  4. Plugin Blacklist > Enable Plugin Blacklist Processing
  5. Default Printer Profile > Estos ajustes sólo son imprescindibles si queremos hacer slicing en el propio OctoPrint. En ese caso habrá que introducir los parámetros de dimensiones y velocidades soportadas por nuestra impresora. En nuestro caso para la impresora Infitary M508 los parámetros introducidos son:
    · Form Factor: Rectangular
    · Heated Bed: ON
    · Heated Chamber: OFF
    · Width (X): 200 mm
    · Depth (Y): 200 mm
    · Height (Z): 180 mm
    · Custom bounding box: OFF
    · X speed: 7980 mm/min
    · Y speed: 7980 mm/min
    · Z speed: 240 mm/min
    · E speed: 300 mm/min
    · Nozzle Diameter: 0,3 mm
    · Number of Extruders: 1

Tras terminar con el asistente aparecerá el interfaz completo de OctoPrint. Sólo nos falta establecer la conexión serie con la impresora, para lo cual debemos indicar el puerto y la velocidad del mismo. Por defecto ambos parámetros aparecen en modo AUTO. Podemos tratar de conectar de este modo:

Si tenemos suerte empezaremos a recibir datos de la impresora como por ejemplo las temperaturas del extrusor y la cama caliente:

Si no conseguimos conexión automática, tocará investigar la placa controladora de nuestra impresora para averiguar la dirección y velocidad de su puerto serie. En nuestro caso los valores resultaron ser:

  • Serial Port: /dev/ttyACM0
  • Baudrate: 250000

Utilización

En estos momentos OctoPrint estaría operativo y ya podríamos enviar una pieza a imprimir. Para ello subiremos el fichero .gcode al apartado Files. Si tenemos una tarjeta SD en la impresora, inicialmente estaremos viendo los ficheros que allí hay. Nosotros preferimos gestionar los ficheros en el sistema de archivo de la propia Raspberry Pi, por lo que desactivamos la visualización de la tarjeta desplegando el menú que hay tras el icono con forma de llave y marcando la opción Only show files stored locally:

Subimos un archivo con el botón Upload y una vez que aparezca en el listado hacemos clic sobre él para que se cargue en el apartado State. Sólo queda pulsar el botón Print. Al hacerlo veremos como la cama caliente y el extrusor se ajustan a la temperatura definida en la pieza y cuando se alcanza la consigna, comienza la impresión. Si seleccionamos la pestaña GCode Viewer, podremos ver una representación de los movimientos que hace la impresora en cada capa:

Uno de los usos que habitualmente se da a OctoPrint es conectar una webcam a la Raspberry Pi para poder visualizar la impresión a distancia. También para realizar videos stop-motion de las impresiones.

Por último, dependiendo de cómo tengamos montada nuestra red, podremos controlar nuestras impresiones desde cualquier lugar a través de internet. Para esta situación se recomienda asegurar el acceso utilizando servicios tipo VPN, por el peligro que tiene el que desconocidos tomen el control de nuestra impresora, al ser ésta un aparato que puede alcanzar elevadas temperaturas. Existen también clientes del servicio OctoPrint para móviles Android para poder vigilar la impresora desde nuestro teléfono.

Esto es todo. Si os animáis a realizar el montaje esperamos que toda esta información os resulte útil.

Esta página web utiliza cookies para que sea posible mejorar tu experiencia de navegación.