Академический Документы
Профессиональный Документы
Культура Документы
11
9601
Veamos 10 aspectos que necesitamos comprender para crear proyectos de alto nivel
combinando estas dos grandes tecnologías.
Hay personas que han dedicado su tiempo a crear máquinas virtuales especiales para
microcontroladores. Uno de estos proyectos es HaikuVM, el cual permite
efectivamente programar Arduino en lenguaje Java. Sin embargo, el espacio de
memoria con el que contamos para programar se ve drásticamente reducido y según
la opinión de algunos usuarios, el performance no es muy bueno que digamos.
Programar Arduino en lenguaje Java sí es posible, pero no es eficiente.
Sin embargo esto no significa que no podamos crear programas en Java que le
envíen instrucciones a Arduino entregándonos el control de circuitos electrónicos
desde una interfaz en la computadora.
Uno de los primeros aportes que escribí para este blog fue como establecer
comunicación entre la computadora y Arduino por medio de comunicación serial.
Resulta que para poder comunicar nuestras aplicaciones en Java con Arduino
debemos aprovechar la comunicación serial, lo cual es perfectamente posible si se
implementan las librerías adecuadas.
3. Para permitirle a Java establecer comunicación con el Puerto Serie
se requiere instalar los drivers de la librería RXTX
La librería RXTX es una compilación de código que le permite a los programadores
en Java establecer comunicación con el Puerto Serie. Alguna vez escribí un post que
hace referencia a los requisitos para comunicar Arduino con Java.
Desde dicho post es posible descargar los Archivos JAR para 32 y 64 bits
(Windows) que se deben importar a los proyectos Java para hacer posible lo que
deseamos hacer. Algunas personas presentan problemas a la hora de instalar estos
archivos en sus computadoras, por lo que en algún momento decidí crear un post
exclusivo para resolver estas dificultades.
Para lograr el mismo resultado con un programa en Java, pues se crea una interfaz
con dos botones, uno para encender y otro para apagar. Cuando se presiona el botón
de encender, se le indica a Java que envíe un “1” a Arduino. La librería Arduino
cuenta con un método, SendData(), con el cual es posible hacer esto. En el botón de
apagado, se envía un “0” o cualquier otro caracter. Al presionar cualquiera de los
dos botones, estamos emulando lo que haríamos con el Monitor Serial, enviando un
1 o un 0 para encender o apagar.
¿La ventaja de las interfaces? Tenemos botones gráficos estilizados, lo que hace
nuestros proyectos más interesantes, interactivos y profesionales. Un ejemplo de
esto lo mostré en el post Arduino y Java: Encendiendo LEDs desde un programa en
nuestra PC.
Los tres métodos tienen parámetros que se deben establecer a la hora de utilizarlos.
En todos hay que establecer el puerto COM al que está conectado Arduino (ejemplo:
“COM6”), el baudRate (que debe ser igual al establecido en el Serial.begin() en
Arduino), un timeOut (tiempo de espera entre el inicio de la conexión y el
envío/recepción de datos) y en algunos casos un SerialPortEventListener para
detectar cuando se han enviado datos de Arduino a Java.
El SerialEvent() se ejecuta cada vez que se recibe un dato en el Puerto Serie. Los
datos en el Puerto Serie se reciben caracter por caracter, lo que significaría un
problema ya que si enviamos un mensaje de texto, recibiremos el mensaje letra a
letra. Usando el método ReceiveData() obtenemos estos caracteres. Sin embargo,
también existe el método MessageAvailable() que devuelve un valor true cuando se
haya finalizado la recepción de cualquier mensaje enviado desde Arduino con el
método Serial.println().
Existe la librería JFreeCharts. Podemos crear una interfaz que recibe, procesa y
grafica los datos en tiempo real, como ya mostramos en el post “gráficas de sensores
en tiempo real con Arduino, Java y JFreeChart“.
1 int input;
2
3 void setup(){
4
5 pinMode(13, OUTPUT); // Declaramos que utilizaremos el pin 13 como salida
6
7 Serial.begin(9600);
8 }
9
10 void loop(){
11 if (Serial.available()>0){
12
13 input=Serial.read();
14
15 if (input=='1'){
16
17 digitalWrite(13, HIGH); //Si el valor de input es 1, se enciende el led
18
19 }
20
21 else
22
23 {
24
25 digitalWrite(13, LOW); //Si el valor de input es diferente de 1, se apaga el LED
26
27 }
28
29 }
30 }
Con esto estamos listos para ejecutar. En el siguiente video (el que publiqué en la
versión original, viejo y sin mucha calidad) se muestra la pequeña interfaz que
hemos hecho funcionando con un LED. Los archivos de este proyecto se
encuentran disponibles en el siguiente
enlace: http://docs.google.com/file/d/0B0hsUkhqWH97a1BDUU02MlB4WXM Esp
ero que toda la información suministrada sea de su completo agrado. Saludos.
Referencias
http://panamahitek.com/encender-un-led-desde-un-programa-en-la-pc/
http://panamahitek.com/10-cosas-que-necesitas-saber-para-utilizar-arduino-desde-java/