Mi primer proyecto en Processing

El proyecto “serial2socket-proxy” surge de la necesidad de comunicarme con una placa Arduino desde un software de escritorio. Para comunicarse con Arduino desde un ordenador, la forma más sencilla es accediendo al puerto serie, y esto es algo que no todos los entornos de programación permiten. El problema principal es que la forma de acceder al puerto serie en sistemas Unix como Linux o MacOSX, es relativamente sencilla, pues se accede a ellos como si fuesen un archivo en la ruta “/dev/tty.puerto-serie-xxx”, pero en sistemas Windows el acceso es diferente. Cuando quieres desarrollar algo que funcione en todas ellas, la cosa se complica.

La forma más barata y extendida para poder acceder al puerto serie desde casi cualquier lenguaje, es crear una conexión virtual entre el puerto serie en cuestión y un socket TCP en la misma máquina. Esto permite comunicarse con Arduino simplemente abriendo el socket, siendo además una buena forma de acceder a Arduino desde cualquier otro ordenador en red, ya sea en la red local o desde cualquier parte del mundo a través de Internet. Existen otras soluciones por hardware como la “Ethernet Shield” o la “WiFly Shield” que permiten a Arduino conectarse directamente a una red local por cable o por wifi respectivamente, pero su coste es alto.

Ya existen varias soluciones para crear esa conexión virtual entre el puerto serie y un socket TCP, pero no encontré ninguna realmente fácil de usar para usuarios no avanzados. En todas se requiere modificar archivos de texto con la configuración para luego lanzar el “proxy” mediante linea de comandos, o requieren instalar las librerías Java RXTX o están muy pensadas para trabajar en un solo sistema operativo.

Dado que Processing permite tanto acceder al puerto serie como crear un socket, decidí ampliar este sencillo ejemplo en processing y dotarle de un entorno gráfico para facilitar su uso. El proyecto que he desarrollado es sencillo, pero con ello he querido hacer principalmente 4 cosas:

  1. Cubrir la necesidad comentada.
  2. Aprender a usar Processing con la librería ControlP5 que permite crear elementos de interface en Processing.
  3. Seguir aportando mi granito de arena al software libre.

Processing es un entorno de desarrollo muy orientado a visualización. Es realmente potente porque además de ser multiplataforma, dispone de multitud de librerías para infinidad de propósitos. Había trasteado con él anteriormente, pero nunca me había puesto a desarrollar algo en serio Aunque el lenguaje que se usa en Processing es Java,  tiene algunas peculiaridades que lo hacen más fácil que Java para desarrollar ciertas cosas. Además podemos generar desde el mismo entorno una versión binaria para las tres plataformas principales (Windows, MacOSX y Linux) que se pueden ejecutar sin necesidad de tener instalado Processing.

Enlaces:

Compártelo:

  1. Tenia un problema que me estaba volviendo loco en mi programa y pensaba que era de PHP, no había caso que pudiera leer un string desde el puerto serial y que me reconociera el carácter de fin de linea o retorno de carro, Con el Serproxy 1.1.3 tenia un problema, intente mil maneras, enviando desde el Arduino cosas como /n, /n/r, chr(13).chr(10), y nada, por eso estaba buscando alguna alternativa, ahora probé tu Proxy y me me lee la linea perfectamente!, tal cual la envió desde el Arduino, si quieres puedo ayudar a ser tester de tu software, me puedes contactar a mi correo. Saludos, César.

  2. Hola, lo estoy probando iniciando la conección tal cual como lo hacia para el Serproxy desde PHP, con:

    if(!$fp=fsockopen(‘127.0.0.1’,5333,$errstr,$errno,30)){
    trigger_error(‘Error opening socket’,E_USER_ERROR);
    }
    Le el string y luego cierro con fclose($fp);

    El problema es que solo puedo leer una sola ves después de crear socket, luego me aparecer el mensaje, “Rejecting client from 127.0.0.1”

    Estoy leyendo datos desde un Arduino, tengo la velocidad ajustada a 9600 en ambos lados, y el socket abierto en el puerto 5333, que puede estar pasando?

    Por lo demás pareciera funcionar bastante rápido.

    Saludos!!!

  3. Hola, me parece una super buena iniciativa, has podido compararlo con algún otro programa como por ejemplo Serproxy?, que tan rapido puede ser este tipo de comunicación en comparación al programar en JAVA con la libreria RXTX?, bueno mis felicitaciones lo voy a probar, saludos.

2 Trackbacks / Pingbacks

  1. Arduino Blog » Blog Archive » New SerialToSocket Proxy For Arduino
  2. New SerialToSocket Proxy For Arduino | dev.SquareCows.com

Dejar una contestacion

Tu dirección de correo electrónico no será publicada.


*