Revisar el estado de tu impresora 3D es algo más que recomendable si sueles dedicar mucho tiempo a imprimir piezas. Así que en 3DWork hoy deseamos mostraros una curiosa forma de Monitorizar tu impresora 3D con un display OLED, una placa de desarrollo Wemos D1 Mini y Octoprint.
Si eres asiduo a nuestro blog y echaste un ojo a nuestro reciente artículo Como instalar Octoprint en tu impresora 3D sabrás que es posible controlar tu impresora 3D remotamente, simplemente accediendo desde una IP o la dirección URL por defecto (http://octopi.local)
Vale, me dirás que con Octoprint puedes controlarla vía web, pero… ¿Qué te parecería poder monitorizar el tiempo de impresión actual, el que resta para su finalización y las temperaturas de cama y Nozzle con un display OLED que puedas llevarte a cualquier lugar de tu casa?
Y como extra, cuando tu impresora no se encuentre en pleno funcionamiento, el display OLED mostrará la hora actual y temperatura en tu ciudad, ¿Qué más puedes pedir?
Introducción al Monitor OLED
Esta aplicación la desarrolló y publicó David Payne (también conocido como Qrome) en su cuenta de GitHub para todos los Makers que la desearan utilizar. Además no solo publicó el código, sino que añadió los ficheros de impresión en Thingiverse donde puedes descargarlos fácilmente.
Si eres un trastornado de la impresión 3D como nosotros y te encanta cacharrear con electrónica estás de enhorabuena. Continúa leyendo este artículo hasta el final y descubrirás cómo hacerlo muy fácilmente. Y por supuesto, no olvides dejarnos tus comentarios al final del mismo. ¡Vamos a ello!
Componentes necesarios
Antes de comenzar este proyecto debo informarte que precisas tener ya instalado en tu impresora un servidor de Octoprint. De esta manera, nuestro display OLED (con su placa Wemos D1 Mini) conectará al servidor Octoprint, extraerá los datos en tiempo real y nos los mostrará en pantalla.
Si no sabes lo que es un servidor Octoprint para una impresora 3D, te recomiendo encarecidamente que eches un vistazo al artículo Como instalar Octoprint en tu impresora 3D. Allí encontrarás instrucciones muy detalladas de todo el proceso de instalación y configuración.
Precisamos de los siguientes componentes para desarrollar nuestro monitor OLED:
Raspberry Pi 3 | ||
Raspberry Pi 4 | ||
Wemos D1 Mini ESP8266 | ||
Display Oled LCD 0,96 I2C 128×64 | ||
Tarjeta MicroSD + Lector |
Conexión Display OLED al Wemos D1
Las placas Wemos D1 Mini no llevan de serie ningún tipo de display integrado, así que deberemos conectarle (o mejor dicho soldar) uno propio para nuestro propósito. Wemos D1 Mini soporta dos tipos de display I2C (SSD1306 y SSH1106).
La forma de conectarlos es muy fácil, así que no te preocupes. Solamente has de soldar los cables tal y como puedes comprobar en la imagen superior.
En nuestro ejemplo hemos utilizado un display SSD1306, que viene por defecto en el software ya configurado. Si desearas utilizar un display SH1106, simplemente debes descomentar la siguiente línea en el código del firmware:
//#define DISPLAY_SH1106 // Uncomment this line to use the SH1106 display -- SSD1306 is used by default and is most common
IMPORTANTE!! Según el fabricante puedes encontrarte con pantallas OLED donde la posición de SDA, SCL, GND y VCC es diferente. Verificar siempre cómo se encuentran dispuestas en tu LCD y guíate por los nombres. Después verificalo completamente para evitar imprevistos desagradables.
Piezas impresión 3D (Thingiverse)
Los enlaces de las piezas en formato STL para impresión están disponibles como siempre en la plataforma Thingiverse.
- 0,96″ SSD1306 Display OLED (Thingiverse)
- 0,96″ SSD1306 Display OLED (Thingiverse)
- 1,3″ SSD1306 Display OLED (Thingiverse)
Software necesario (Arduino IDE + drivers)
Para instalar el firmware del Monitor OLED en la placa Wemos D1 Mini precisamos como es lógico de un compilador. Utilizaremos el Arduino IDE que ya es conocido por muchos de nosotros si has compilado Marlin previamente. Es completamente gratuito.
Se puede descargar de la web oficial de arduino. Accede a la sección Software -> Downloads, selecciona Windows Installer y apreta Just Download para hacerte con él.
Por último, necesitaremos instalar unos drivers USB necesarios para conectar con nuestro ordenador. Descárgalo del siguiente enlace: http://sparks.gogo.co.nz/ch340.html
Configurando nuestro compilador
Por defecto nuestro compilador no soporta las placas Wemos D1 Mini, así que deberemos configurar el Arduino IDE para que pueda reconocer este tipo de electrónica. Es tan sencillo como ir al menú principal Archivo -> Preferencias y buscar la opción Gestor de URLs adicionales de tarjetas.
Allí buscaremos Gestor de URLs Adicionales de Tarjetas e incluiremos la siguiente URL:
https://arduino.esp8266.com/stable/package_esp8266com_index.json
De esta forma añadiremos soporte para las placas Wemos D1 Mini y muchas otras ESP82xx existentes en el mercado. Después tenemos que ir al menú Herramientas y en la opción Placa seleccionaremos «LOLIN(WEMOS) D1 R2 & Mini«.
Ya teniendo la placa seleccionada, configuraremos el tamaño de la flash. Usando otras opciones yo obtuve pantallazo negro en el display, así que os recomiendo utilizar el tamaño de 1MB seleccionando esta opción -> 4MB (FS:1MB OTA:~1019KB)
Con esto nuestro compilador ya está listo. Ahora tocan las librerías que debemos instalar ahora para poder habilitar la compilación del firmware sin errores.
Librerías necesarias
El código fuente de David precisa de 3 librerías para poder compilarse correctamente, así que previamente procederemos a instalarlas. Podremos obtenerlas online desde el mismo compilador fácilmente. Busca la sección Herramientas y después haz clic en Administrar bibliotecas.
Introduce ahora el nombre de todas y cada una de ellas (son 3 en total) y presiona el botón INTRO de tu teclado. Ahora deberían aparecer las librerías online disponibles con este parámetro de búsqueda.
Asegúrate de que las librerías que vas a instalar son las correctas. Aveces salen por un mismo parámetro de búsqueda varias con nombre similares. Compara el nombre y el autor antes de instalarlas, aquí tenéis las librerías en cuestión:
- WiFiManager (by Tzapu)
- Arduino OTA Library
- ESP8266 and ESP32 OLED driver for SSD1306 displays (by ThingPulse)
Descargando el Firmware (Monitor OLED)
El firmware para el Monitor OLED lo podemos descargar directamente desde su repositorio en GitHub. Simplemente debemos hacer clic en el siguiente enlace: https://github.com/Qrome/printer-monitor
Ahora buscar un botón llamado Clone or download (ubicado arriba a la izquierda), pincha en él, y selecciona la opción Download ZIP. Una vez descargado, descomprimelo en tu escritorio.
Se creará una carpeta llamada /printer-monitor-master, donde se encontrarán todos los archivos disponibles del proyecto, y dentro de ella otra denominada /printermonitor.
Accede a esta última carpeta y haz clic dos veces encima del nombre del proyecto, denominado printermonitor.ino
Compilando y subiendo el Firmware
Una vez abierto nuestro proyecto habiendo efectuado dos veces clic en el archivo printermonitor.ino, tendremos que seleccionar el puerto correcto. Iremos a Herramientas -> Puerto y seleccionaremos el que se ha creado automáticamente al conectar nuestro Wemos D1 Mini.
Previamente a la compilación, existe un archivo llamado Settings.h donde configuraremos todos los parámetros del firmware. Os dejo por aquí las líneas que modifiqué para configurarlo correctamente.
// OctoPrint Monitoring -- Monitor your 3D printer OctoPrint Server String OctoPrintApiKey = "5C0A62FE1A7122469530A15E7C555172"; // ApiKey from your User Account on OctoPrint String OctoPrintHostName = "octopi";// Default 'octopi' -- or hostname if different (optional if your IP changes) String OctoPrintServer = "octopi.local"; // IP or Address of your OctoPrint Server (DO NOT include http://) int OctoPrintPort = 80; // the port you are running your OctoPrint server on (usually 80); String OctoAuthUser = "3dwork"; // only used if you have haproxy or basic athentintication turned on (not default) String OctoAuthPass = "12345678"; // only used with haproxy or basic auth (only needed if you must authenticate) // Weather Configuration boolean DISPLAYWEATHER = true; // true = show weather when not printing / false = no weather String WeatherApiKey = "323d748925849b0895f6ac3df946686d"; // Your API Key from http://openweathermap.org/ // Default City Location (use http://openweathermap.org/find to find city ID) int CityIDs[] = { 3117735 }; //Only USE ONE for weather marquee boolean IS_METRIC = true; // false = Imperial and true = Metric // Languages: ar, bg, ca, cz, de, el, en, fa, fi, fr, gl, hr, hu, it, ja, kr, la, lt, mk, nl, pl, pt, ro, ru, se, sk, sl, es, tr, ua, vi, zh_cn, zh_tw String WeatherLanguage = "es"; //Default (en) English
En la primera sección «OctoPrint Monitoring» hemos rellenado el parámetro OctoPrintApiKey con la key que hemos extraído de nuestro servidor. Con esta Key y con el usuario y contraseña (OctoAuthUser y OctoAuthPass) dotaremos al Monitor OLED de acceso para consultar los parámetros de nuestra impresora desde OctoPrint. No olvides también configurar la IP o la dirección (address) de tu servidor OctoPrint, en este caso sería «octopi.local».
En la segunda sección «Weather Configuration» configuraremos el parámetro WeatherApiKey con una Key que debemos obtener en la página web https://openweathermap.org. Para ello, tendrás que acceder a su web y efectuar el registro correspondiente. Después en el panel de control de usuario la Key te aparecerá disponible.
Además, también necesitarás indicar el ID de tu ciudad en el parámetro CityIDs[]. Abre la siguiente URL https://openweathermap.org/find, introduce el nombre de tu ciudad y haz clic en ella. Cuando te aparezcan los datos de la misma, en la URL de tu navegador podrás ver el ID (será un número de 7 cifras). Por último, configuraremos el lenguaje en WeatherLanguage, en nuestro caso introduciremos simplemente «es«.
Pues ya debería estar todo listo, así que vamos a proceder a la compilación. Si todo va bien, el proceso de compilado finalizará rápidamente y lo subirá a la Wemos D1 Mini.
Para ello, iremos al menú Programa y después presionaremos la opción Verificar/Compilar (control+R). De esta forma compilará el firmware y verificaremos que está correcto. Si el proceso finaliza sin problema alguno, presionaremos Subir (control+U) y listo. Cuando el compilador acabe de subir el firmware a nuestra placa automáticamente la reiniciará.
Tras este reinicio, el módulo Wemos D1 Mini habrá creado un Access Point (AP). Deberás acceder a él vía WiFi con tu móvil y proceder a su configuración para que conecte a tu red WiFi local.
Una vez accedido mediante su Access Point, busca la opción de configurar la WiFi, selecciona el nombre de tu red (SSID) e introduce la contraseña correcta para que pueda conectar al Router sin problema alguno.
Una vez configurado, el mismo detectará las estadísticas disponibles (siempre y cuando nuestro servidor OctoPrint esté correctamente instalado y en funcionamiento). Y en el caso de que nuestro servidor no lo esté (impresora parada), nos mostrará datos sobre la hora y temperatura local.
Observaciones finales
En principio todo esto sería más que necesario para configurar tu Monitor OLED. Creo que no me he dejado nada en el tintero pero si así fuera, no dudes en indicarlo en los comentarios al final del artículo.
Espero que el artículo haya sido de tu agrado y que despierte vuestro interés por este tipo de placas de desarrollo tan de moda últimamente que son las Wemos D1 Mini.
Para finalizar os recordamos que podéis encontrarnos en nuestro canal de Telegram. No dudéis en uniros a nosotros en el siguiente enlace, seréis bienvenidos a nuestra comunidad 🙂
Otros artículos que pueden interesarte en 3DWork.io:
- Warping : Guía para eliminarlo definitivamente de tus impresiones 3D
- Fabrica tu propio cambio de marchas impreso en 3D para tu simulador de carreras favorito
- 6 Razones por las que deberías usar cama de vidrio en tu impresora 3D
- Los 10 plugins de Octoprint más interesantes (y como instalarlos)
- Octoprint: Gestiona tu impresora 3D remotamente con Raspberry Pi y Octopi
- Imprime en 3D tu propio monitor de red con Wemos D1 Mini y Pi-Hole
- Impresoras 3D de resina baratas: Las 5 mejores opciones para el 2020
- Convierte tu tornillo de banco en una plegadora con impresión 3D
- Guía completa: Configurar Marlin 2.0.x desde cero y no morir en el intento
Como se cambia la pantalla para que deje de mostrar la dirección IP.
Si has efectuado el proceso de configuración y compilación correctamente, no debería mostrarte la IP. Una vez que subes el firmware el dispositivo reiniciará, conectas vía móvil al access point que te genera y configura la WiFi local. En principio no deberías hacer nada más. Un saludo!
I can’t get my OLED screen to work. I know its operational as it turns on when I run the sample software. Any advice you can give me to get this screen working?