Enviando datos de Galileo a Processing

 

 

Introducción:

 

En este pequeño tutorial podrás aprender a enviar datos utilizando comunicación serial, desde la tarjeta Galileo hasta la interfaz de Processing, es decir, realizaremos en tipo de “hola mundo”.

Para este primer ejemplo lo que haremos será enviar la información del estado de un push button conectado a la tarjeta Galileo, a una interfaz diseñada en Processing:

 

interfaz_tutorial01.png

 

Equipo requerido:

 

  • Tarjeta Intel® Galileo
  • Fuente de poder para Galileo.
  • Cable microUSB
  • Placa de pruebas
  • Cable
  • Resistor
  • Push Button

 

Diagrama Esquemático:

 

Es necesario armar el siguiente diagrama esquemático, auxiliándote de una placa de pruebas:

 

Tutorial01_bb.png

 

Código para la tarjeta Galileo:

 

El siguiente código debe de ser escrito en el IDE de Arduino.

 

Lo primero que tenemos que configurar en la función “setup” es el pin que utilizaremos como entrada, que para este ejemplo será el número 2. Después es necesario configurar el puerto serial con la velocidad deseada, que en este caso será de 9600 baudios:

 

 

  pinMode(2, INPUT);

  Serial.begin(9600);

 

 

En la función “loop” lo único que tenemos que hacer es leer el estado digital del pin 2 y transmitirlo por el puerto serial, por lo que utilizaremos la siguiente línea de código:

 

  Serial.print(digitalRead(2));

 

El código completo se muestra a continuación:

 

void setup() {

  pinMode(2, INPUT); // Configuración del pin 2 como entrada

  Serial.begin(9600); //Inicialización de comunicación serial a 9600 baudios

}

 

void loop() {

  // Transfiere a través del puerto serial el estado digital del pin 2

  Serial.print(digitalRead(2));

  delay(100); //retardo de 100 milisegundos

}

 

Se puede observar que después de trasmitir el estado del push button a través del puerto serial, se incluyó un pequeño retardo, el cual sirve para dos cosas:

 

• Para no transmitir datos muy rápido, ya que no es necesario para esta aplicación.

• Para amortiguar el estado del push button en caso de presentarse el efecto rebote de éste.

 

Probando el Código para la tarjeta Galileo

 

Para comprobar que la información del estado del push button se está transmitiendo a través del puerto serial, abrimos el monitor serial del IDE de Arduino y deberemos observar que efectivamente se transmite el estado del botón:

 

monitorSerial.png

 

Una vez que se comprobó el funcionamiento de nuestro código, pasaremos al código de Processing.

 

Código para Processing

 

La programación en Processing es muy similar a la de Arduino, ya que también se cuenta con dos funciones principales: "setup" y "draw". Dentro de la función "setup" se escribe todo código que solamente se desea ejecutar una sola vez al arranque del sistema. La función "draw" hace las veces de la función "loop" (para el caso de la programación en Arduino), en la cual se escribe el código que se desea que se esté ejecutando de manera cíclica.

 

A continuación se muestra el código para Processing:

 

import processing.serial.*; //Libreria para utilizar el puerto serial

 

Serial miPuerto; //definición del puerto a utilizar

int inByte;     //definición del byte recibido serialmente

 

void setup() {

  size(400, 400);     //creación de la ventana para el diseño de la interfaz

  background(200);    //fondo de la ventana

  textSize(20);       //tamaño del texto para la interfaz

//inicialización del puerto serial, configurado a 9600 baudios

  miPuerto = new Serial(this, "COM6", 9600); // Cambiar el número de puerto COM según tu caso

}

 

void draw(){

background(200);    

if(inByte=='1')

{

    stroke(0,255,0);

    fill(0,255,0);

    ellipse(width/2, height/2, 100,100);

    fill(0);

    textAlign(CENTER);

    text("EL PUSH BUTTON NO ESTÁ PRESIONADO",width/2,100);

}

else

{

  stroke(255,0,0);

  fill(255,0,0);

  ellipse(width/2, height/2, 80,80);

  fill(0);

  textAlign(CENTER);

  text("EL PUSH BUTTON ESTÁ PRESIONADO",width/2,100);

}

}

 

//Función que detecta que se presenta un dato en el buffer del puerto serial

void serialEvent(Serial miPuerto) {    

  inByte = miPuerto.read();     //Lectura del dato de entrada en el puerto serial

}

 

Se puede observar que al inicio del código se está importando la biblioteca “serial” la cual permite el acceso al puerto serial de la computadora para enviar y transmitir datos entre Processing y hardware externo (que en este caso es la tarjeta Galileo) mediante el protocolo de comunicación RS-232.

 

Video

 

 

En resumen

 

En este pequeño tutorial podemos darnos cuenta de las ventajas que podría representarnos el tener una interfaz gráfica para nuestros proyectos, la cual no es muy compleja de diseñar. Processing nos permite tener una plataforma desde la cual poder controlar nuestro proyecto, ya sea monitoreando información o dando instrucciones a nuestra tarjeta Galileo para que realice ciertas tareas.

 

En el siguiente tutorial de esta serie (Comunicando Galileo con Processing) veremos la forma inversa de comunicación, es decir, enviaremos información desde Processing hacia la tarjeta Galileo.