En la anterior entrada dejamos la raspberry pi preparada para comunicarse con la impresora 3D por medio de Octoprint. También hicimos una breve introducción a raspivid, el programa de captura de video que viene preinstalado. En esta entrada mostraremos el manejo de Octoprint y el streaming de video desde la pi hacia el ordenador remoto (1).
A partir de ahora, la raspberry pi funcionará en modo "headless", es decir, sin teclado, ratón ni pantalla y debe estar conectada a la red local cableada. Conocemos su IP y vamos a suponer que es 12.34.56.78.
Contenidos
A partir de ahora, la raspberry pi funcionará en modo "headless", es decir, sin teclado, ratón ni pantalla y debe estar conectada a la red local cableada. Conocemos su IP y vamos a suponer que es 12.34.56.78.
La Raspberry pi con la cámara, la conexión de alimentación, el cable de red y el cable USB hacia la impresora 3D
Contenidos
- Manejo de Octoprint
- Monitorización de vídeo
MANEJO DE OCTOPRINT
Estando dentro de la raspi desde una terminal remota, ejecutamos el servidor Octoprint. Pondremos un ampersand al final para que se ejecute en segundo plano. Recuerda que el ejecutable de Octoprint está en su propio directorio, así que hay entrar antes al directorio (o, alternativamente, dar la ruta completa del ejecutable).
pi@raspberrypi:~$cd software/fuentes/Octoprint
~/software/fuentes/Octoprint$./run &
Con esto, Octoprint queda a la escucha en el puerto 5000. Así que en el ordenador remoto abrimos el navegador de internet en la dirección http://12.34.56.78:5000
Aspecto inicial de la aplicación web de Octoprint
Iremos explicando la aplicación en este orden: Login, conexión, gestión de archivos G-code e impresión, control de temperatura, control manual de desplazamientos y otros detalles.
Login
En la anterior entrada dimos un nombre de usuario y una contraseña para Octoprint. Ahora es necesario acreditarse desde el botón Login, arriba a la derecha.
Conexión
En la conexión, seleccionamos el puerto por el que se conectará la raspi (acertarás enseguida por prueba y error) y el baud rate. Este debe coincidir con el del firmware. Si no te acuerdas pero tienes un Repetier Host funcionando, lo puedes ver en la configuración de la impresora. Si no, tendrás que enterarte a través del firmware que puedes pedir a tu proveedor. Para nuestro caso el parámetro es 115200 baudios por segundo.
Diálogo de conexión y primera línea de la lista de estados, mostrando impresora no conectada
Las opciones de guardar la configuración y autoconectar al arrancar el servidor pueden ser buena idea. En nuestras pruebas no las hemos activado. Ya sólo nos falta pulsar el botón Connect.
Gestión de archivos G-Code e impresión de objetos
Para cargar un archivo G-Code pulsamos el botón Upload o lo arrastramos al panel de archivos. Para imprimirlo, contra la intuición, no pulsamos el botón grande de Print sino el pequeño icono de Impresora (Load and Print).
Panel de gestión de archivos G-Code
Control de temperaturas
Lo vemos en la pantalla principal. Establecemos la consigna (target) pulsando en Set, o bien usamos las consignas predeterminadas (con la flecha).
Monitorización y control de temperaturas
Control manual de desplazamientos
Entrando en la pestaña "Control" podemos manejar los movimientos de los ejes X, Y y Z, así como el extrusor (E). Podemos determinar la longitud del desplazamiento X/Y/Z y del extrusor.
Control manual de desplazamientos
Otros detalles
En la pestaña "GCode viewer" podemos visualizar las trayectorias del cabezal, con diferentes opciones. En la pestaña Terminal se nos muestran uno a uno los comandos GCode que se envían a la impresora y también se da la opción de enviar comandos directamente.
En la vista general, el panel de estado nos informa de cómo va la impresión, cuanto falta para terminar, etc.
Panel de estado, con la información básica del progreso de la impresión
MONITORIZACIÓN DE VIDEO
Usaremos dos programas de línea de comandos, lo cual simplifica el proceso (al menos, desde el punto de vista de las máquinas) y así resulta más robusto y con menos latencia. Estos programas son netcat y mplayer.
netcat se describe en la wikipedia como "la navaja suiza para el protocolo TCP/IP". Aquí lo usaremos en el ordenador remoto (en el que estamos ahora, por supuesto) para que éste quede a la escucha en el puerto 5001. Lo que reciba se lo pasará al reproductor mplayer. Después, en el ordenador local (la raspberry pi) ponemos en marcha raspivid y lo que graba se lo pasa a netcat, que simplemente envía el stream hacia el puerto 5001 del ordenador remoto, cerrando el ciclo.
Es necesario conocer la dirección IP del ordenador. Una forma rápida de averguarlo es fijándonos en la terminal de la raspi donde tenemos Octoprint ejecutándose. Cuando abrimos la aplicación web de Octoprint, nos debió aparecer en la terminal algo parecido a:
octoprint.server - INFO - New connection from client: 12.34.56.79
Por lo que la IP de nuestro ordenador es 12.34.56.79.
Apuntamos nuestro dato, que enseguida lo tendremos que usar. Pero antes tenemos que ejecutar netcat y mplayer en nuestro ordenador. Dependiendo del sistema operativo, será diferente.
Ordenador con Linux
Con toda seguridad netcat y mplayer están en los repos de nuestra distribución. Incluso es posible que ya los tengamos instalados. Si no, usamos el centro de software (o similar) y enseguida los tenemos. Abrimos una terminal y lanzamos el comando:
~$nc -l -p 5001 | mplayer -xy 450 -fps 15 -cache 1024 -
Ordenador con Windows
El proceso es un poco más complicado. Primero hay que descargar netcat y mplayer . Después de instalarlos, tenemos que localizar las rutas de los ejecutables, ejecutar cmd.exe para abrir una ventana de comandos y escribir lo siguiente:
>C:\ruta\hasta\netcat.exe -L -p 5001 | C:\ruta\hasta\mplayer.exe -xy 450 -fps 15 -cache 1024 -
Ordenador con Mac
Ver guía oficial.
A mplayer le hemos dicho que reescale a 450 (resolución 450x253 pixels), porque lo que envía raspivid por defecto es enorme, 1920x1080. También le decimos que pase 15 cuadros por segundo (31 en la guía original).
De vuelta en la terminal raspberry pi, ya sólo nos falta lanzar raspivid y pasarle el stream a netcat, indicando la IP del ordenador remoto. Es posible que no veamos el prompt de la terminal porque puede haber mensajes de Octoprint. No pasa nada, podemos escribir el comando directamente o podemos también volver al prompt con [Control C]. Control-C es la combinación para interrumpir un proceso, pero en este caso no interrumpe nada más que los mensajes informativos. Si hubiésemos lanzado Octoprint sin el ampersand no podríamos hacer nada más en esta terminal.
Los ejecutables instalados en el sistema se pueden lanzar desde cualquier directorio. No es necesario volver a home ni buscar su ruta completa. Si aun así prefieres volver a home, introduce "cd" antes del siguiente comando:
~$raspivid -t 0 -o | nc 12.34.56.79 5001
La opción -t 0 es para que no pare nunca de enviar video. La salida (-o) se la pasa a netcat para que la envíe al puerto 5001 de nuestro ordenador.
Un pantallazo demostrativo:
Notas
(1) Octoprint da la opción de monitorizar vídeo desde su propia aplicación pero aquí explicaremos cómo hacerlo por separado.
Créditos
http://octoprint.org/
http://www.raspbian.org/
http://www.raspberrypi.org/
... y todos los gigantes en cuyos hombros se levantan
No hay comentarios:
Publicar un comentario