jueves, 6 de febrero de 2014

Impresión 3D desde una raspberry pi por control remoto. Segunda parte: Manejo y monitorización

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.


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

Básicamente, seguiremos las instrucciones oficiales del uso de la cámara desde el título "How to stream video from the raspberry pi camera over a network"

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