Páginas

miércoles, 9 de abril de 2014

IOIO + Arduino UART


 

 

 

IOIO + Arduino UART

Después de investigar y mirar mucho en Internet he podido avanzar en la comunicación entre el Arduino y el IOIO. Para hacer estas pruebas he utilizado un IOIO OTG y un Arduino Mega 2560.

Para establecer la comunicación utilizamos el puerto serie mediante UART, el Arduino Mega dispone de 3 puertos series aunque podríamos utilizar otros pines.

Lo primero que tenemos que hacer en nuestro Arduino es definir los puertos de comunicaciones 1 para la conexión con el PC y otro con el IOIO a 38.400 Baudios.

void setup() {
  Serial.begin(38400);  //Comunicacion con el PC
  Serial2.begin(38400); //Comunicacion con el IOIO
}

Ya en el código tenemos que comprobar si la comunicación está disponible y si es así leer lo que nos envíen:

If (Serial2.available()){
         // Recibir comunicacion desde el IOIO
   ValorRecibido=Serial2.read();
   if (ValorRecibido > 0)  {
      Serial.println(ValorRecibido);
    }
}

Hasta aquí lo que tenemos que hacer en Arduino, en el IOIO lo que hay que hacer es lo siguiente:

Definir en el MainActivity.java en la clase looper las siguientes variable:

private Uart uart_;
      private OutputStream out_;
      private InputStream in_;

Y en el método setup:

@Override
      protected void setup() throws ConnectionLostException {
  uart_ = ioio_.openUart(5, 6,38400,Uart.Parity.NONE,Uart.StopBits.ONE);
        //rx patilla 5 del IOIO
        //tx patilla 6 del IOIO
        out_ = uart_.getOutputStream();
        in_ = uart_.getInputStream();
      }

Dentro del método loop hacemos un envio de la información, que yo he utilizado un contador que es un entero (int) que va avanzando hasta 255.

int contador;
contador++;
     
try {
         // Enviamos datos
         out_.write(contador);
}
catch (IOException e) {
         e.printStackTrace();
      }
      if (contador==255){
        contador =0;
      }


En este sentido desde el IOIO al Arduino la comunicación funciona correctamente y sin problema. Ahora queda la comunicación en el sentido Arduino -> IOIO. Para hacer esta comunicación estoy probando algunos métodos pero por ahora no he conseguido que funcione correctamente ninguna.