Pre-Order Kelboy 2.1 Kit

Tienes 3 kits a elegir, aprovecha antes de agotar stock, las primeras unidades tienen envío rápido.

Agrega nuevas funcionalidades a tu impresora 3d

Es común iniciarse en el mundo de la impresión 3D con impresoras baratas que nos permiten imprimir con funciones básicas.

En este tutorial instalaremos y configuraremos un ESP32 con firmware ESP3D en la controladora Creality V. 1.1.4 de una Ender 3 para controlarla a través de nuestra red local e Internet.

Expert
6

Materials

Material's description


¿Cómo funciona?

Dicho de una manera rápida y muy sencilla, una impresora 3D tradicional es un conjunto de componentes que hacen mover motores a través de los ejes X, Y y Z, extruyendo material en unas coordenadas por capas, controlando temperaturas y ventiladores tanto de extrusores como de camas, y traduciendo todas esas instrucciones que vienen definidas en un archivo interpretado por la controladora principal.

Todos sabemos que las controladoras más extendidas en el mundo maker son las basadas en arquitecturas opensource compatibles con Arduino.

Estas controladoras usan de serie un CMOS de 8 bits y suelen tener un procesador  ATmega1284P a 16 MHz, que por su bajo coste, extensión, documentación y consumo, hacen que sea idóneo correr una serie de rutinas o instrucciones de manera suficientemente rápida.

Con ello, la impresora que vamos a upgradear hasta donde nos permite su hardware de serie, puede correr Marlin. De fábrica tiene programada una versión configurada y modificada de éste, que es quien controla el hardware y permite realizar las impresiones desde los archivos ubicados en la SD.

En este pequeño tutorial nos encargaremos de explicar y mejorar:

  • Cómo instalar el bootloader que nos permite instalar una versión más nueva y configurable del software compatible con la controladora.
  • Como flashear e instalar un ESP8266 o ESP32 con el firmware ESP3D.
  • Cómo configurar e instalar Marlin 2.0.8 en su versión más reciente para la Creality V.1.1.4 y poder exprimir mejor el controlador ESP3D.
  • Configurar el ESP3D al gusto, gestionar el estado remotamente de la impresora y envío de impresiones desde un dispositivo inalámbrico.

En el futuro tener esto preparado nos puede permitir avanzar en otros temas, como gestionar el encendido y apagado remoto de la impresora con enchufes/relés inteligentes existentes en el mercado de manera económica y automatizar tareas.


Instalación del bootloader

Las controladoras de las impresoras por defecto suelen venir sin el bootloader instalado. Esto significa que no podremos acceder a las funciones de programación por el dispositivo USB que tiene integrado la gran mayoría de controladoras. Por ello es necesario instalarlo.

Para empezar tendremos que acceder a la controladora físicamente para poder instalar nuestro bootloader.

Image

Para instalar y poder flashear Marlin en su última versión primero la placa controladora debe de admitirlo. El USB está controlado por un CH340x que trae de fábrica, una de sus labores es comunicar el puerto USB con el serial del ATMEGA1284p y permitir ser controlado vía USB por un ordenador o un dispositivo móvil autónomo. Pero sin bootloader no podremos reprogramar ningún firmware ni habilitar las funcionalidades que deseáramos. Si no deseas habilitar ninguna función puedes saltarte este paso, ya que la controladora trae una versión modificada y antigua de Marlin que permite imprimir con normalidad.

Expuesta la necesidad, empezaremos por lo básico, desconectar la corriente de la fuente de alimentación y acceder físicamente a la controladora. 


Procedemos a la apertura y desmontaje, con lo que necesitarás una llave de las que vienen incluidas en la propia impresora. Recomendamos encarecidamente documentar y etiquetar cada uno de los cables que se encuentran conectados a la placa, aunque ya vienen casi todos etiquetados.

En este caso nos encontramos con que los conectores son de mala calidad y que están pegados con un poco de silicona, por lo que es preferible que con unas pinzas lo retires por completo antes de intentar desconectarlos de la placa. Este paso te proporcionará mejor área de trabajo.

Una vez terminado procedemos a identificar el puerto que utilizaremos para programar el bootloader. Si no estás familiarizado con este tipo de procesos te animamos a que echeis un vistazo a un artículo que puede arrojar luz en las dudas que tengas sobre en qué consiste este proceso y cómo se realiza de manera más detallada.

Image

Aquí te resumimos el proceso en que cablees la interfaz a un Arduino para realizar una programación ISP e instalar el bootloader de esta placa (familia de placas Sanguino)

Image

El cableado debe de ir de la siguiente manera:

  • MISO - MISO
  • 5V - 5V
  • SCK - SCK
  • MOSI - MOSI
  • RESET - D10 (o el que configures en el sketch de Arduino IDE)
  • GND - GND

Image

Si te fijas, todos los cables, menos el RESET que irá al D10, están posicionados en el mismo orden que la placa controladora de Arduino UNO. Con ello, podremos utilizar una placa Arduino con interfaz ISP como programador, para ello:

1) Instalamos Sanguino como tarjeta a programar, la cual no viene de serie y ha de ser agregada:

Image

  • Instalamos la tarjeta (Herramientas - Placa - Gestor de Tarjetas, escribir Sanguino e instalar):

Image

2) Cargamos el ejemplo de programador en el Arduino UNO desde:

Archivo -> Ejemplos -> ArduinoISP -> ArduinoISP

Una vez allí seleccionamos:

  • Placa - Arduino UNO
  • Puerto - /dev/ttyUSB0 (o el que tengas en tu caso, si estás en WIndows será COM y un número)
  • Programador - AVRISP mkll

Y le damos a subir sketch. Una vez terminado nuestro Arduino UNO estará listo para ser usado como programdor ISP.

3) Seleccionamos las opciones de configuración para quemar el bootloader desde el menú Herramientas:

  • Placa - Sanguino
  • Procesador - ATMEGA1284p (16 MHz)
  • Puerto - /dev/ttyUSB0 (o el que tengas en tu caso, si estás en WIndows será COM y un número)
  • Programador - Arduino as ISP

Flasheamos el bootloader desde el menú de Herramientas -> Quemar Bootloader.

Una vez finalizado el proceso la placa controladora de Creality es capaz de ser programada con el firmware que deseemos, en este caso queremos instalar la última versión de Marlin disponible 2.0.8 a esta fecha y habilitarla alguna que otra funcionalidad para exprimir el ESP32 con el firmware ESP3D.


Instalación y programación del módulo Wifi

Ahora toca ponerse con la parte que se encarga de dar esta nueva funcionalidad a nuestra impresora, el controlador wifi.

Nosotros vamos a utilizar un ESP32 WROOM de 4MB, pero cualquier ESP8265/6 puede funcionarte ya que el firmware que utiliza es 100% compatible entre su familia. Si que existe una peculiaridad, si usas un ESP8266 o un ESP01 tendrás un problema con el tamaño de las últimas versiones del ESP3D, ya que el firmware compilado supera el tamaño de la memoria interna, y te tocará comprimir el firmware, por eso es preferible que uses un ESP32. También si te crees menos hábil puedes utilizar un módulo MCU que ya traen integrados un programador, los conectores y ahorrarte soldar y usar un programador externo.

El primer paso es preparar el controlador para su programación.

Podéis utilizar para programar varias soluciones hardware, la primera propuesta requiere que reduzcáis el voltaje de 5v a 3.3v, y requiere además de un programador externo. Nos parece la opción más pequeña, pero requiere o de la placa Arduino o cualquier otro programador del que dispongáis:

Image

También podréis utilizar directamente placas que traen el programador embebido, no son mucho más grandes, y os permiten simplemente usar el puerto USB que llevan para programarlas y traen el reductor del voltaje integrado:

Image

Image

El software que utilizas se encuentra en GitHub, con lo que puedes hacer un clone en tu workspace:

git clone https://github.com/luc-github/ESP3D

Como se puede ver es muy sencillo, como software de programación vamos a usar el editor Atom con la extensión PlatformIO (acá platformio-ide), pero no está de más mentar que el IDE Visual Studio Code de Microsoft más el plugin de PlatformIO son suficientes y están muy extendidos entre la comunidad.

Una vez descargado procedemos a compilar y programar el ESP32, que será nuestra plataforma hardware que nos dará la conectividad y control mediante WiFi. Para cambiarla hay que abrir el fichero platformio.ini y editar la variable "default_envs" por esp32dev (en caso de usar un esp8266 mantenerla tal cual).

Image


El siguiente paso es preparar todo, para ello existe un botón de compilar con forma de "tick" (lo añade el addon de PlatformIO) que compilará nuestro código con la rutina por defecto. Una vez obtenido el "success" en consola lo siguiente es subir el código en el dispositivo.

Para ello debemos usar el programador y pulsar sobre la flecha (subir código al dispositivo). Una vez terminado podremos ver en el monitor serial la siguiente pantalla:

Image

Si todo ha ido correctamente, el código subirá y al resetearse automáticamente el ESP32 podremos observar que tenemos una nueva red inalámbrica lista para ser utlizada.

Image

Ésta será nuestra interfaz de entrada a la configuración de la impresora vía web que haremos más adelante, por el momento con saber que funciona es suficiente, ahora es tiempo de instalar nuestro controlador wifi a la controladora de la impresora.

Como en todos los "hacks", hay que encontrar la interfaz en la propia placa. Para ello el fabricante no ha querido integrar en este caso (como era de esperar) acceso directo al RX y TX pero sí que disponemos de GND y 5v, por lo que sólo necesitaremos soldar 2 cables a la placa. Si vas a hacer algún tipo de upgrade sería recomendable que usaras cables Dupont por su facilidad de conexión, si no es el caso puedes soldar sin miedo, son puntos pequeños pero con un poco de flux se sueldan solos.

Bien, nuestra placa ya dispone del hardware necesario para gestionar vía WiFi la impresora.


Actualización de Marlin a 2.0.8

Para ello también vamos a utilizar Atom con PlatformIO integrado. Empezaremos descargando los fuentes en el workspace:

git clone https://github.com/MarlinFirmware/Marlin

Una vez terminado necesitaremos las configuraciones para la impresora, en este caso es una Ender 3 con una Creality V.1.1.4 llamada "melzi".

Estas configuraciones deben de colocarse en la carpeta Marlin del código descargado.

Image

Hay multitud de configuraciones ya hechas para esta impresora por diversas plataformas, en mi caso hemos utilizado unas propias y añadido un logo al inicio, pero siempre podéis usar las configuraciones que hay en github en el repositorio oficial y seleccionar las de este modelo en específico:

Image

Una vez puestas las configuraciones deseadas, sólo queda indicar para qué modelo vamos a compilar (melzi), si no lo hacemos nos dará un error de que el microcontrolador (Sanguino) no corresponde con el arduino2560 que viene marcado por defecto, y nos sugerirá varias opciones, nosotros hemos seleccionado melzi_optimized y la hemos agregado en el fichero platformio.ini:

Image

Una vez terminado este proceso, sólo queda programar la placa con el último Marlin, así que le damos a compilar y subir código, es el tercer icono de la izquierda, la flecha.

Image

En la pantalla veremos el nuevo firmware arrancar:

Image


Instalación del ESP32 y puesta en marcha

Bien, llegados a este punto ya tenemos todo lo necesario para poder unir las piezas. Ahora lo que necesitamos es soldar nuestras pistas/conectores a la Creality V.1.1.4.

Primero debemos localizar los puntos que nos interesan:

Image

Una vez localizados pensaremos en qué solución queremos aportar, ya que podemos soldar a los puntos que unen a la pista, o podemos soldar directamente sobre el microcontrolador en las dos patillas necesarias.

Image

Esta solución requiere aplicar Flux y calor hasta que suelde, ya que la placa de Creality es de muy baja calidad y el cobre abunda por su escasez. También conviene llegados a este punto decidir si queremos una solución fija o una solución desmontable. En el caso que hemos decidido hemos soldado en la parte superior e inferior un par de conectores femeninos Dupont para poder quitar y poner fácilmente en el futuro la placa, pero es un paso totalmente opcional.

Parte superior:

Image

Parte inferior:

Image

Esto me permitirá llegar a este contexto sin soldar:

Image

Ahora conectaremos la Creality con el MCU del ESP32, es decir:

  • (Creality) Rx -> (ESP32) Tx
  • (Creality) Tx -> (ESP32) Rx
  • (Creality) 5v -> (ESP32) 5v
  • (Creality) GND -> (ESP32) GND

Y en mi caso he colocado en la parte de atrás en el hueco que quedaba el módulo MCU del ESP32 pudiendo cerrar la caja sin ningún tipo de problema y sin ningún cable saliente. Es en nuestra opinión la solución más limpia posible.

Bien, ahora una vez cerrado y comprobado todo queda encender la impresora y continuar con la configuración:

Configuración del ESP3D

Nos tendremos que unir a la red "ESP3D" que se crea cuando el dispositivo está encendido sin configurar, y acceder al panel en la dirección web http://192.168.0.1.

Llegados a este punto nos pedirá que subamos la interfaz web que no está instalada en el filesystem del ESP3D:

Image

El fichero necesario podemos descargarlo en nuestro workspace.

git clone https://github.com/luc-github/ESP3D-WEBUI/

Si no lo encontramos podemos descargarlo desde su enlace en github:

wget https://github.com/luc-github/ESP3D-WEBUI/raw/2.1/index.html.gz

Con el fichero disponible nos proponemos subirlo en el panel web anteriormente mostrado, y una vez concluida la subida podremos acceder a la configuración.

Una vez allí se nos abrirá una web optando por seleccionar las configuraciones necesarias:

Selección de idioma:

Image

Configurar el firmware instalado en la impresora y cómo hablar con ella:

Image

Configurar de qué manera se conectará a nuestra red wifi (si lo deseamos, en el caso seleccionado hará de cliente en la red wifi ya existente):

Image

Finalizar la configuración:

Image

Una vez pulsado Cerrar procedemos a ver el dashboard del esp3d o panel de control de nuestra impresora:

Image

Bien, una vez todo configurado como cliente en nuestra red, la impresora se conectará a la red existente y nosotros nos conectaremos a ella a través de su ip. Ésta aparecerá en la pantalla de la Ender 3:

Image

Podemos acceder a todas las configuraciones desde la pestaña Impresora y ESP3D del panel:

Image

Image

Bien, tan sólo nos queda hacer una pequeña prueba, podemos subir un gcode y mandarlo imprimir. En la parte inferior del panel web se pueden ver los ficheros existentes en la SD, para poder verlos necesitamos pulsar sobre actualizar, aunque se actualizará después de subir nuestro gcode:

Image

Cuando termine el proceso de subida estará disponible el fichero en la sección de Archivos de tarjeta SD, para mandar imprimir tan sencillo como pulsar sobre el icono de la impresora.

Todo listo.