MakerBot + RaspberryPi + Google Chrome = HappyMaker! - 💡 Fix My Ideas

MakerBot + RaspberryPi + Google Chrome = HappyMaker!

MakerBot + RaspberryPi + Google Chrome = HappyMaker!


Autor: Ethan Holmes, 2019

Recientemente adquirimos una MakerBot Replicator 2 aquí en Truth Labs. Se le conoce cariñosamente como Arnold de Villanova II (Arnold para abreviar). En el espíritu del fabricante, hicimos rodar nuestra propia extensión de cromo para hacernos saber en qué anda Arnold. Usamos algunas tecnologías geniales: el Protocolo s3g, Raspberry Pi, Node.js y, por supuesto, las extensiones de Google Chrome. Así es como lo hicimos.

El problema: Ubicación Ubicación Ubicación

Arnold no tiene una ubicación central, lo que nos obliga a realizar un viaje para verificar el estado de los trabajos de impresión, y muchas veces, para nuestra consternación, encontramos que Arnold cometió un error en una pila de su propio filamento. Los trabajos de impresión duran desde 30 minutos para modelos simples hasta un par de horas para trabajos complejos, por lo que la caminata hacia y desde Arnold en el transcurso de un día se vuelve aburrida.

La solución: Self-Aware MakerBots

Bueno, no es exactamente un MakerBots autoconsciente, pero es un comienzo. Una MakerBot Replicator 2 convencional no tiene la capacidad de conectarse a Internet, pero con un poco de ayuda de una Raspberry Pi, todo es posible. Tomando una página del libro de Internet de las Cosas, me puse a conectar Arnold a Internet y ejecuté un sistema de notificación simple. Hay un par de piezas en el rompecabezas, explicaré cómo encajan a continuación. También puede consultar el repositorio de estado de makerbot para obtener un código de ejemplo para comenzar. El repositorio le muestra cómo usar el protocolo s3g para consultar información de un MakerBot conectado a través de USB.

Piezas del puzzle

MakerBot Replicator 2 - Ejecución de firmware capaz de comunicación en serie a través del conector USB.

Raspberry Pi - Ejecutar una aplicación simple Node.js responsable de comunicarse con MakerBot a través del protocolo s3g.

Pidora 18 (Raspberry Pi Fedora Remix) - Un Distro de Linux disponible para Pi. Se basa en Fedora, mi distro de elección.

Node.js (compilado desde la fuente): compile Node.js desde la fuente para asegurarse de que node-gyp funcionó correctamente en la Raspberry Pi, y funcionó bien con el paquete node-serialport.

Windows Azure: creó un punto final basado en la nube para que Arnold le enviara información. El sitio web de Azure también alberga un servidor Bayeux para administrar a los clientes que escuchan información nueva.

Google Chrome (Extensiones): Chrome, a través de sus Extensiones, se enlaza fácilmente a las notificaciones de escritorio.

Los aspectos interesantes

Esta combinación particular de tecnología ofreció algunos desafíos únicos. Aquí están los aspectos más destacados:

Construyendo Node.js desde la fuente en Raspberry Pi

Debido a la necesidad de node-gyp y las comunicaciones de bajo nivel a través de controladores en serie, tuve que construir un nodo desde el origen en la Raspberry Pi. Es un proceso sencillo siempre que su entorno esté configurado correctamente. Primero necesitará instalar una distribución de Linux, puede encontrarlos en el sitio web de Raspberry Pi. También tenga en cuenta que las instrucciones enumeradas a continuación se completaron con Pidora. Milaje puede variar.

Crear configuración de entorno

Hay un par de cosas que debes hacer antes de construir Node.js desde la fuente. También tenga en cuenta que algunos comandos requieren privilegios elevados y, dependiendo de su distribución, es posible que deba usar los comandos su o sudo.

Lo primero que haremos es configurar el reloj del sistema. Algunos errores de compilación extraños ocurren cuando el reloj del sistema es incorrecto.

$ date --set = "18 NOV 2013 18:00:00"

Una vez que la fecha y la hora sean correctas, también deberá actualizar el administrador de paquetes, y todos los paquetes instalados, Yum Package Manager es el administrador de paquetes instalado en Pidora. Se puede realizar una actualización completa del sistema ejecutando lo siguiente:

$ yum actualización

Una vez que su sistema esté actualizado, debemos asegurarnos de que Python (2.6 o 2.7), GCC 4.2 o más reciente y GNU Make 3.81 o más reciente estén instalados. Python ya debería estar instalado, para instalar gcc y ejecutar los comandos a continuación:

$ yum instala gcc-c ++. armv6hl $ yum instala make.armv6hl

Descargar y construir Node.js

Ahora que tenemos nuestro entorno de compilación listo para funcionar, debemos descargar, compilar e instalar Node.js. Siga los pasos a continuación:

  1. Descargue los archivos fuente de node-v0.10.18.tar.gz o equivalente
  2. Extraiga los archivos a un directorio, luego cambie el directorio al directorio extraído

    $ tar xvfz node-v0.10.18.tar.gz $ cd node-v0.10.18

  3. Ejecutar ./configure script

    $ ./configura

  4. Ejecutar comando make (esto tomará un tiempo)

    $ hacer

  5. Ejecutar el comando make install (esto también tomará un tiempo)

    $ hacer instalar

  6. Terminado: si todo va bien, deberías poder ejecutar el siguiente comando:

    $ nodo --version

Hablando con Arnold sobre el protocolo s3g usando Node.js

El protocolo s3g es un protocolo en serie utilizado por MakerWare y un software similar para comunicarse con MakerBots. MakerBot Industries proporciona una implementación Python del protocolo aquí. Usando el protocolo Python como referencia, implementé un pequeño subconjunto del protocolo en Node.js, puede encontrar la fuente en github.

Consultas de protocolo s3g Usando objetos ArrayBuffer y Buffer, implementé un generador de consultas simple que crea paquetes s3g bien formados para enviar a MakerBot a través del puerto serie. La interfaz actualmente soporta tres consultas s3g:

  • Obtener nombre de compilación
  • Obtener estadísticas de construcción
  • Obtener la temperatura de Toolhead

Comunicación en serie a través de node-serialport El paquete node-serialport proporciona una interfaz en serie simple para comunicarse con MakerBot. Escribí una envoltura alrededor de la interfaz serial para admitir el análisis de comando / respuesta.

Estado de difusión a Azure

La aplicación de nodo en la Raspberry Pi consulta el MakerBot cada 20 segundos. Cuando se detecta un cambio en el estado, se realiza una POST a un servicio de Windows Azure Node.js. Windows Azure se usa para evitar tener que proporcionar una dirección IP accesible externamente para la Raspberry Pi y para descargar la responsabilidad de atender a los clientes.

Extensiones de cromo y notificaciones

Chrome es compatible con partes del borrador estándar de notificaciones web del W3C. Inicialmente miré la implementación de notificaciones utilizando el estándar, pero sentí que todavía hay deficiencias. Específicamente, el usuario debe dar permiso para recibir notificaciones, y usted tendría que navegar al sitio para recibir notificaciones. Para evitar estas limitaciones, decidí implementar una extensión de Chrome. Creé una ventana emergente simple que muestra el estado actual de MakerBot, la Figura 5 es la ventana emergente de extensión en acción. Para permitir notificaciones cuando la ventana emergente estaba inactiva, utilicé una página de fondo, que se explicará a continuación.

Páginas de fondo Una página de fondo es una colección de secuencias de comandos que tienen un ciclo de vida más largo que la ventana emergente que se muestra al hacer clic en el icono de una extensión. Esto permite recibir actualizaciones y mostrar notificaciones una vez que se inicie Chrome. Para definir una página en segundo plano, debe agregar una entrada al archivo de manifiesto de su extensión. También debe incluir las dependencias que utilizará su página de fondo.

"background": {"scripts": ["jquery.min.1.10.2.js", "faye-browser-min.js", "background.js"]}, "content_security_policy": "script-src 'self 'https://makerstatus.azurewebsites.net; object-src' self '"

Sistema de mensajería Faye Publish-Subscribe Notará que la entrada de la página de fondo en el manifiesto incluye faye-browser-min.js. Usamos Faye para establecer una conexión con el servicio Windows Azure Node.js. Faye está acostumbrada a transmitir actualizaciones de Arnold. Para que Faye funcione en el recinto de seguridad de la extensión, debemos agregar una entrada para aflojar la Política de seguridad de contenido de la extensión. Esto permite el sondeo de devolución de llamada JSON-P, que es un mecanismo de transporte utilizado por Faye. Es necesario aquí porque la extensión y el servicio de Azure no están en el mismo dominio.

Notificaciones Para habilitar las notificaciones, es necesario incluir una línea en la sección de permisos del archivo de manifiesto. Como utilizamos un icono con nuestra notificación, también debemos agregarlo como un recurso accesible a través de la web.

"permisos": ["notificaciones"], "web_accessible_resources": ["makerbot.logo.notify.png"]

Una vez que todos los scripts están en su lugar, y el resto del archivo de manifiesto se inicia, cuando recibimos una actualización, creamos una notificación simple como la que se muestra a continuación.

Envolviéndolo todo

En este post, realizamos algunos de los pasos para conectar un MakerBot a las interwebs. Ahora que tenemos la base implementada, algunas adiciones interesantes pueden incluir agregar un porcentaje de compilación completa, o incluso una transmisión en vivo del progreso de la compilación a través de WebRTC.

Hacer feliz!

@aowola



Puede Que Le Interesen

Revisión de herramientas: DOMA Pro PCI Open Computer Case

Revisión de herramientas: DOMA Pro PCI Open Computer Case


MAKE Entrevistas Indie Lego Molder BrickForge

MAKE Entrevistas Indie Lego Molder BrickForge


Hacer: Live is Tonight! Episodio 18: Juguetes y Juegos

Hacer: Live is Tonight! Episodio 18: Juguetes y Juegos


Simplicidad Halloween Trims 2011

Simplicidad Halloween Trims 2011