Controlando tarjeta Arduino directamente desde Processing
May 09
Algunas veces necesitamos controlar la tarjeta Arduino desde algún programa externo lo cual requiere que se desarrollen programas para las dos plataformas y un esquema de comunicación entre las dos para realizar el intercambio de datos lo cual puede ser difícil de acuerdo al grado de complejidad de la aplicación, otra opción es utilizar un programa multi propósito que expone las funcionalidades básicas de lectura y escritura de las tarjetas Arduino y que puede ser controlada desde una aplicación gracias a librerías que permiten enviar ordenes y recibir datos de la tarjeta logrando que solo se necesite programar la aplicación y no la tarjeta. Esto es lo que precisamente hace Firmata una serie de protocolos y aplicaciones que simplifican la comunicación con la tarjeta desde varios lenguajes de programación (http://firmata.org/wiki/Main_Page)
Pros :
- Simplifica la programación de las aplicaciones al estar todo el código de control desde la aplicación y no dentro de la tarjeta donde solo se instala el programa Firmata
- Una vez programada la tarjeta esta puede ser usada en diferentes aplicaciones sin necesidad de re programar la tarjeta.
- Gran cantidad de librerías que implementan el protocolo Firmata que permite controlar la tarjeta desde diferentes ambientes de programación como Processing, Python, C++, ActionScript, PureData, Perl, C# (http://firmata.org/wiki/Download)
- Viene incluida en el ambiente oficial de desarrollo de Arduino
Contras :
- Solo permite el acceso restringido a algunas de las funcionalidades de Arduino como :
- Cambiar los modos de los pines (pinMode)
- Activar o desactivar lo pines digitales (digitalWrite)
- Leer el estado de los pines digitales (digitalRead)
- Leer el estado de los pines análogos (analogRead)
- Usar PWM
- No permite el acceso a librerías de Arduino con el Firmata Standard
- Se debe modificar el Firmata y las librería de acceso para adicionar el acceso a librerías de Arduino
- No hay soporte para interrupciones
- El intercambio de datos puede causar demoras en la respuesta de la aplicación o de la tarjeta
Como se puede observar, aunque Firmata simplifica el desarrollo de aplicaciones con interfaces de hardware basadas en Arduino la funcionalidad es restringida y debe ser usada en aplicaciones sencillas que no dependan mucho del tiempo y manipulen hardware muy sencillo pero siempre esta la puerta abierta a desarrollos mas complejos gracias a que todo es software libre.
Ahora veremos como controlar la Tarjeta Arduino desde Processing
Pulse el botón para continuar leyendo
Configurar la Tarjeta Arduino :
- Descargar el ambiente de desarrollo de Arduino para nuestro sistema operativo
http://arduino.cc/en/Main/Software - Descomprimir y ejecutar el Arduino
- Conectar nuestra tarjeta Arduino al puerto USB
(recuerde instalar los drivers, necesita reiniciar la aplicacion) - Abrir el ejemplo StandarFirmata
(File -> Examples -> Firmata -> StandardFirmata) - Compilar el ejemplo y descargarlo a la tarjeta
- Ya tenemos nuestra tarjeta lista para ser controlada desde una aplicación externa
Instalar Libreria de Arduino para Processing
- Descargar el Processing para nuestro sistema operativo
http://processing.org/download/ - Descomprimir
- Descargar la libreria de Arduino para Processing
http://www.arduino.cc/playground/Interfacing/Processing
Enlace Directo :
http://arduino.cc/playground/uploads/Interfacing/processing-arduino.zip - Descomprimir y copiar el directorio de librerias, por ejemplo en Processing 1.5.1
processing-1.5.1/modes/java/libraries - Si esta en Linux o MacOSX
Cambiar el nombre del archivo arduino/library/Arduino,jar a arduino,jar - Ejecutar el Processing
- Abrir el ejemplo de control de salidas de Arduino
(File -> Examples -> Contributed Libraries -> arduino -> arduino_output ) - Ejecutar el Sketch
- Verifique en la lista de puertos si aparece el puerto donde esta conectada la Arduino
- Cambie el indice del arreglo por el indice del puerto donde esta la Arduino
ejemplo : Arduino.list()[1] - Ahora puede encender el LED conectado al pin 13 de la Arduino pulsando el primer botón en la pantalla
Programar el Blink desde Processing :
- Crear un nuevo sketch
- Importar la libreria Serial
- Importar la libreria Arduino
- Crear el objeto Arduino, use el nombre del puerto donde esta conectada la Arduino
- Exriba el codigo para encender y apagar el led en el pin 13
- Como se puede observar el codigo queda algo parecido al de la Arduino
import processing.serial.*;
import cc.arduino.*;
int pinLed = 13;
Arduino arduino;
void setup() {
size(640,480);
arduino = new Arduino(this, Arduino.list()[0], 57600);
arduino.pinMode(pinLed,Arduino.OUTPUT);
}
void draw() {
arduino.digitalWrite(pinLed,Arduino.HIGH);
delay(1000);
arduino.digitalWrite(pinLed,Arduino.LOW);
delay(1000);
}
Explore ejemplos mas complejos en los ejemplos de la libreria, para leer el estado de los pines analogos y digitales, el uso de PWM.
Enlaces :
- Pagina Oficial de Firmata
http://firmata.org - Pagina Oficial de la Libreria de Arduino para Processing
http://www.arduino.cc/playground/Interfacing/Processing - Pagina Oficial Processing
http://www.processing.org - Pagina Oficial de Arduino
http://www,arduino.cc



