Recientemente tuve que actualizar una placa de 32bits (MKS Robin Nano de MakerBase) para instalarle un firmware de Marlin, concretamente la versión 2.0.1. Normalmente suelo utilizar sublime y el IDE de arduino, pero esta vez me dispuse a hacerlo con Visual Studio Code y su genial extensión Platform.io IDE.
Había oído hablar previamente de él en nuestro canal de Telegram, pero no había tenido la ocasión de utilizarlo nunca. Y ciertamente, me ha parecido una forma genial de editar y compilar los archivos de Marlin.
Así que os dejo por aquí una breve y rápida guía de como empezar a utilizarlo. Espero como siempre que pueda serviros de utilidad.
Visual Studio Code
Visual Studio Code es un fabuloso editor freeware de código muy ligero y potente. Esta orientado a lenguajes de programación de todo tipo (JS, TypeScript, C++, C#, Python, PHP, etc.). Además, incluye numerosas funciones como depuración de código, resaltado de sintaxis, finalización inteligente de código, refactorización y muchas cosas más.
Se encuentra disponible en las 3 plataformas más importantes que existen actualmente: Windows (7, 8 y 10), Linux (formatos .deb .rpm y .tar.gz), y como no Mac (macOS 10.10+).
No es mi función, ni la de esta mini-guía, el explicar todas las bonanzas de este gran editor de código en profundidad. No obstante, si deseas conocerlo más a fondo y obtener toda la información al respecto, no dudes en visitar la página web oficial del proyecto en este enlace.
Pues bien, lo primero que deberás efectuar es instalar este software. Aquí tienes el enlace de descarga para todas y cada una las plataformas disponibles: Descargar Visual Studio Code
Instalando la extensión PlatformIO IDE
Una vez que hayamos instalado correctamente Visual Studio Code, ejecutaremos el programa y buscaremos en la barra lateral izquierda, un icono con una especie de Puzzle (como puedes ver en la imagen superior)
Con esto accederemos a la sección donde se administran las Extensiones. Allí iremos al cuadro de búsqueda, introduciremos el nombre «PlatformIO IDE» y esperaremos a que aparezca en el listado. Después lo seleccionaremos y pulsaremos el botón «Install” para comenzar el proceso de instalación del mismo.
El tiempo de instalación dependerá de tu ordenador y del sistema operativo que tengas. Tardara un poquito, así que ten paciencia y espera a que termine completamente. Una vez finalizado, el propio software te avisará con un mensaje en la parte derecha inferior «PlatformIO IDE has been successfully installed! Please reload window«.
En el caso de que no tengas Python instalado, Visual Studio Code te pedirá que lo instales, ya que es completamente necesario para esta extensión. Te debería aparecer un mensaje tal como este «PlatformIO: Can not find working Python 2.7 or 3.5+ Interpreter. Please install the latest Python 3 and restart VSCode«. Y te ofrecerá la posibilidad de descargarlo pulsando un botón, picha en él, descargas el software y lo instalas, nada más simple.
Cargando nuestro Firmware Marlin
Ya con Visual Studio Code y la extensión Platform.io IDE completamente instalados y funcionales, podremos empezar a trastear con nuestros firmware Marlin. Para ello arrancaremos la aplicación, y en la parte superior buscaremos una pestaña llamada PIO Home (justo a la derecha del Welcome).
Si pulsamos en esta pestaña, PlatformIO nos dará la bienvenida y nos mostrará varios botones de acceso rápido (Quick Access). Entre ellos localizaremos uno que dice «Open Project» y lo pulsaremos para buscar nuestro proyecto, que en este caso será un firmware de Marlin para editar y/o compilar.
Recuerda haber descomprimido el firmware Marlin, en caso de que sea recién descargado, ya que lo que vamos a seleccionar aquí es la carpeta contenedora, y no el archivo del proyecto como hacíamos con el compilador oficial de Arduino (Arduino IDE).
Configurando nuestro proyecto
Ahora llega la hora de configurar nuestro firmware Marlin para la mecánica de nuestra impresora, y con las opciones que deseemos obviamente.
Para ello, te animamos a que te leas nuestro artículo Guía completa: Configurar Marlin 2.0.x desde cero y no morir en el intento, que escribí unas semanas atrás y que te será de gran ayuda si careces de experiencia previa compilando Marlin.
Si ya tienes el firmware configurado a tu gusto (y al de la exigente impresora), solo resta seleccionar el microprocesador sobre el que vamos a trabajar, pudiendo ser de 8 bits o de 32 bits. Para ello, dentro de la carpeta del proyecto Marlin, buscaremos y editaremos un archivo que se denomina «platformio.ini».
En este archivo le indicaremos que tipo de microprocesador tiene nuestra electrónica, así el compilador podrá preparar el firmware para que funcione en ella sin ningún problema. Para ello buscaremos las siguientes líneas:
[platformio] src_dir = Marlin boards_dir = buildroot/share/PlatformIO/boards default_envs = megaatmega2560 include_dir = Marlin
Donde aparece default_envs deberás indicar el microcontrolador de tu electrónica. En este caso particular yo dispongo de una MKS Gen v1.4 de Makerbase, y por eso está configurado el valor «megaatmega2560».
Deberás descubrir cuál es el valor a poner en default_envs y rellenarlo, si no te mostrará error durante el proceso de compilación.
Os dejo aquí un listado con algunos de los microprocesadores más comunes y el valor a indicar en esa variable. Existen más, así que consulta el archivo «platformio.ini» si el tuyo no aparece aquí.
ELECTRÓNICA DISPONIBLE | ENV_DEFAULT |
Arduino Mega 2560 (8-bit) | megaatmega2560 |
Arduino Mega 1280 (32-bit) | megaatmega1280 |
Arduino Due | DUE |
SKR v1.4 Re-ARM Board MKS SBASE 1.3 |
LPC1768 |
SKR v1.4 Turbo Panucatt Azteeg X5 Smoothieboard 4x |
LPC1769 |
MKS Robin | mks_robin |
MKS Robin Nano | mks_robin_nano |
RAMBO (8-bit) | rambo |
Melzi y clones | melzi |
Sanguinololu (ATmega644p) | sanguino_atmega644p |
Sanguinololu (ATmega1284p) | sanguino_atmega1284p |
FYSETC S6 (STM32F446) | FYSETC_S6 |
Compilando y subiendo el firmware a nuestra impresora
Y para acabar, llegamos a la parte más sencilla del artículo, compilar y subir nuestro firmware personalizado a la impresora 3D. Así que vamos a ello!
Electrónicas de 8 bits
En las placas de 8 bits debemos de hacer clic en el icono del «marcianito» o «libélula» (no tengo ni idea de que narices es). Este se encuentra en una barra de iconos a nuestra izquierda, y está posicionado debajo del icono que utilizamos anteriormente para instalar la extensión «PlatformIO IDE«.
Una vez hayamos efectuado el clic nos aparecerá otra barra (algo más ancha) a su derecha con las diferentes opciones del compilador. En la sección PROJECT TASKS, pulsaremos la opción «Build» para compilar el firmware.
El compilador empezará a trabajar, y ya solo tendremos que esperar a que finalice. En mi ordenador con Windows 10 y microprocesador i7 (de primera generación) suele tardar poco más de un minuto. Sobra decir, que si tenemos algo mal configurado, el compilador y el «SanityCheck.h» de Marlin, nos darán error de compilación e información exhaustiva del problema.
Ya para finalizar, si deseamos subir el firmware compilado a nuestra impresora pulsaremos la opción «Upload«. Recuerda haber pinchado tu placa al ordenador vía USB, sino no podrá conectar y finalizar el proceso.
Electrónicas de 32 bits
Para las placas de 32 bits, seguiremos el mismo proceso para compilar. Clic en el «marcianito», y después en la opción «Build» de igual manera que hacíamos en las de 8 bits.
Pero en este caso no usaremos la opción «Upload» para subir el archivo a la placa, ya que normalmente en las electrónicas de 32 bits se suele copiar el archivo generado (Firmware) en una SDCard. Después introduces la SDCard en su ranura correspondiente y tras alimentar la placa, el mismo detectara un nuevo firmware y se actualizará automáticamente durante el proceso de encendido.
Para que esto suceda, copiaremos nuestro firmware generado a la tarjeta, y lo encontraremos en la siguiente ruta de nuestro proyecto Marlin: \.pio\build\mks_robin_nano\firmware.bin
Y bueno, esto es todo por ahora. No quisiera alargarme más ya que os prometí que era solamente una mini-guía sobre cómo utilizar Visual Studio Code y Platform.io. Como siempre, si tenéis alguna duda, no dudéis en uniros a nuestro canal de Telegram.
Puedes encontrar más artículos interesantes dentro de 3DWork.io:
- MKS Robin Nano v1.2: Analizando las nuevas placas de 32bits de MakerBase
- Marlin Builder: Configurar Marlin online y de forma sencilla ya es posible en 3DWork.io
- Visualizar malla en 3D de nuestra superficie de impresión con Marlin 2.x (y sin Octoprint)
- Extrusor HEMERA: Analizando uno de los mejores extrusores del mercado
- Instalar y configurar BLTouch / 3DTouch en Marlin 2.0.3 (MKS Gen v1.4 y RAMPS)
- Taladro de columna impreso en 3D para herramienta Dremel
- Fabrica tu propio PCB Tester utilizando agujas de acupuntura y tu impresora 3D
- Monitoriza tu impresora 3D con un display OLED, Wemos D1 y Octoprint
- Warping : Guía para eliminarlo definitivamente de tus impresiones 3D
Gracias por los tutoriales.
Gracias a ti, por tu comentario.
Un saludo!
Muy útil muy buen tutorial.muy budn trabajo para gente como yo que no tengo mucha idea y tutos así da gusto.
Gracias a ti por tu comentario Iván,
Un saludo!
Obrigado! excelente explicação.
Gracias Edgar, Un saludo!
Gracias por el tutorial, muy facil de ponerlo en marcha.
hola tengo un problema al poder crear este archivo para mi impresora y es que visual estudio no me arroja un archivo firmware.bin sino que me lo arroja en firmware.hex si me pueden ayudar se los agradeceria mucho
excelente tutorial, funciona a la perfección, solo tengo una duda con un problema que estoy presentando.
actualicé mi firmeware de la impresora, el firmeware anterior tenía recuperación de impresión «Recovery_Power_Loss», al actualizar el firmeware, se quedó comentado «\\#define Recovery_Power_Loss», por lo cual perdí una impresión.
He intentado arreglarlo modificando nuevamente el código en VSCode compilarlo y volver a insertar la tarjeta de memoria, sin embargo no se actualiza el firmeware con esta modificación, he intentado con el cambio de nombre del archivo con «Firmeware.bin», he formateado la tarjeta al formato adecuado antes de introducirla a la impresora y nada me funciona.
ojalá me pudieras escribir para saber si hay algo que esté haciendo mal o algo adicional que deba realizar.
de antemano muchas gracias
Por desgracia el proceso de arranque del bootloader es bastante limitado en la compatibilidad con tarjetas tanto por el tipo, tamaño y formato.
Las ideales son las más sencillas, menores de 2Gb y formato FAT32/4096.
Prueba con varias, a no ser que esté el lector SD estropeado te debe coger alguna.