¿Cómo uso Arduino y node.js?

9

Soy nuevo en Arduino, sin embargo, tengo experiencia en desarrollo web, últimamente he estado usando, meteor js y el stack medio para diferentes proyectos. Sin embargo, estoy abierto a probar cualquier lenguaje para el desarrollo.

Lo que intento hacer es crear una aplicación simple para controlar el LED en el Arduino a través de la web.

Estoy trabajando con otra persona, y el Arduino estará detrás de un firewall, así que no estoy seguro de cómo acceder a través de Internet. Tengo acceso a un Arduino Uun que puedo usar para probar en casa que tiene linio conectado a través del puente, que no entiendo muy bien lo que hace.

También he oído hablar de esto , pero me gustaría alejarme lo más posible de las compilaciones de terceros si puedo hacerlo yo mismo.

¿Cuál es la forma común de hacer esto con un Arduino detrás de un firewall? ¿Cómo hago esto con un Arduino Yun? ¿Es más fácil con un Yun?

Anders Kitson
fuente

Respuestas:

9

Estoy trabajando en un proyecto similar que usa internet para comunicarse con un dispositivo externo (móvil). Estoy leyendo datos de sensores y pasándolos por la web con tomas web. Estoy usando Arduino Yun para este proyecto y Spacebrew (para la comunicación de sockets web). Es un enfoque muy interesante pero todo un desafío en algunos casos. Probablemente se encuentre con un problema asincrónico / síncrono, que en mi caso me llevó a ejecutar algunos scripts de Python en Yun activados desde el código de procesamiento. Actualmente estoy ejecutando el servidor Spacebrew en mi VPN, por lo que puedo conectar mi Yun dejado en casa y usar mi iPhone desde todas partes para obtener las lecturas.

También vale la pena mencionar que Yun viene con la biblioteca Temboo preinstalada, que es un excelente punto de partida para la comunicación web. La configuración es realmente fácil y rápida. También encontrará documentación oficial muy útil y fácil de entender. Es un excelente punto de partida para experimentar con aplicaciones web integradas con Arduino Yun.

Spacebrew

  • http://docs.spacebrew.cc/

    Spacebrew es un kit de herramientas de software abierto y dinámicamente redirigible para coreografiar espacios interactivos. O, en otras palabras, una forma simple de conectar cosas interactivas entre sí. Cada elemento que conecta al sistema puede suscribirse y publicar feeds de datos.

  • http://github.com/Spacebrew/pySpacebrew

    Este repositorio contiene la Biblioteca Spacebrew para Python junto con documentación y ejemplos de aplicaciones.

  • http://github.com/julioterra/yunSpacebrew

    La biblioteca Spacebrew Yun presenta dos componentes principales: un conjunto de scripts de python que se ejecutan en el linino y una biblioteca que se ejecuta en el chip atmel. Allí encontrará información sobre cómo instalar ambos componentes para poder conectarse a Spacebrew desde un boceto de Arduino.

Temboo

Yun también ha construido en la biblioteca Temboo, es una excelente manera de comenzar a experimentar, una vez que demuestre el concepto, puede comenzar a reducir su entorno y alejarse si no desea utilizar software de terceros.

  • http://www.temboo.com/arduino

    La Biblioteca Temboo facilita la conexión a más de 100 recursos y servicios basados ​​en la web con Processing. Actualmente puede encontrar bibliotecas para Android, Arduino, iOS, Java, Node.js, PHP, Processing, Python, REST API, Ruby, Twyla

Node.js

También puede ejecutar node.js en el propio Yun, aquí hay un buen artículo y algunos paquetes listos para instalar:

¿Qué es la biblioteca Bridge para Arduino Yun?

También preguntaste sobre la biblioteca Bridge. Como sabes, Yun tiene dos procesadores a bordo, uno está ejecutando tu código de procesamiento y el otro tiene Linux (Linino). Básicamente, el puente simplifica la comunicación entre ellos para que puedan "hablar" entre sí, más información aquí:

  • http://arduino.cc/en/Reference/YunBridgeLibrary

    (Tomado de la documentación de arduino.cc :)

    El Arduino Yún tiene dos procesadores a bordo. Uno es un ATmega32U4 como en el Arduino Leonardo. El otro es un Atheros 9331, que ejecuta Linux y la pila inalámbrica OpenWRT, que permite que la placa se conecte a redes WiFi y Ethernet. Es posible llamar a programas o scripts personalizados en el sistema Linux a través de Arduino para conectarse con varios servicios de Internet.

    La biblioteca Bridge simplifica la comunicación entre el ATmega32U4 y el AR9331. Hereda de Stream, y muchos de los métodos deberían ser familiares de Serial y otros derivados de Stream.

    Python interpreta los comandos de puente del 32U4 en el AR9331. Su función es ejecutar programas en el lado de GNU / Linux cuando Arduino se lo solicite, proporcionar un espacio de almacenamiento compartido para compartir datos como lecturas de sensores entre Arduino e Internet, y recibir comandos de Internet y pasarlos directamente al Arduino.

    Bridge permite la comunicación en ambas direcciones, actuando como una interfaz para la línea de comando de Linino.

¿Donde empezar?

Comenzaría con Temboo si fuera tú, es una gran curva de aprendizaje y un paso bastante simple para comenzar. También aprenderá y comprenderá cómo funciona el tablero y cómo puede comunicarse con el "mundo externo". Una vez que tenga una prueba de concepto, comience a experimentar con diferentes bibliotecas y mejore el enfoque. Quizás encuentre Spacebrew más útil más tarde o incluso descubra diferentes soluciones.

lokers
fuente
¡Bienvenido a Arduino Stack Exchange! ¿Puedes agregar más detalles a tu respuesta? Las respuestas que son todos o en su mayoría enlaces no son aceptables en Stack Exchange porque la respuesta es inútil si el sitio deja de funcionar. Los enlaces a las bibliotecas están bien, ya que la biblioteca es inútil si el sitio se cae; Los artículos y tutoriales deben ser parafraseados. ¿Quizás solo cite algunas oraciones y agregue un código de ejemplo? ¡Gracias!
Anonymous Penguin
1

En primer lugar, debe tener claro lo que debe hacer. Arduino UNO es solo un microcontrolador con una conexión en serie (a través de USB). Para que su arduino sea accesible desde Internet, debe estar conectado a Internet o tener algo que actúe como un puente. Puede usar un escudo de ethernet, un wifi activado o un brujo de YUN es un arduino UNO + un micro linux con ethernet y wifi (programable en phyton, o el chip puede mandar el comando de envío de linux a bash shell usando la biblioteca de puente especial ) Incluso puede conectar arduin en la PC mediante usb y crear un programa puente, o, si su firewall / enrutador es un linux / similar desbloqueado, puede usarlo.

Cuántas opciones, y comenzamos a decidir cómo hablar con él. Como desea usar node.sj, puede usar socket o get / post. Usar socket es más rápido, más liviano y puede crear una conexión de extracción, y js será un requisito. Con get / post ni siquiera necesita js, el formulario html puro lo hará.

luego, después de que haya decidido qué sistema le gusta (arduino como servidor http o socket simple), puede abrir el puerto correspondiente en el firewall / nat. pero es solo la última parte

Lesto
fuente
Tengo un yun, así que lo usaré. Me he conectado al yun a través de wifi y ssh. ¿Cómo configuro el servidor Linux y cómo abro un puerto?
Anders Kitson el
vea el tutorial oficial, ya tiene un servidor webv, solo necesita agregar su propia página :) scuola.arduino.cc/lesson/b4EoRkV/…
Lesto