LusoRobótica - Robótica em Português

Sistemas específicos => Arduino / AVR => Tópico iniciado por: Ricardo em 01 de Setembro de 2011, 20:12

Título: Arduino - Android
Enviado por: Ricardo em 01 de Setembro de 2011, 20:12
Boas,

Tenho estado particularmente interessado na interacção arduino-android. Vejo como um campo com futuro a utilização dos tablets (ou smartphones) como interface para os microcontroladores. Já andei a ver umas coisas sobre a placa ioio mas para já parece-me mais prático e funcional a ligação entre o android e o arduino via bluetooth.

Há tempos comprei um tablet ZTE V9 (originalmente associado à vodafone) por 120 euros, e apesar de ser um equipamento de entrada de gama, tem tudo o que existe neste tipo de equipamentos: GPS, WIFI, 3G, Bluetooth, acelerómetro, e embora traga instalada a versão android 2.1, é fácil o seu upgrade para a versão 2.2, que já permite mais algumas funcionalidades.

A programação no android é feita em Java e utilizando o editor Eclipse, já consegui programar algumas pequenas aplicações que usam o bluetooth para comunicar via serial com outros dispositivos.

O segundo passo foi arranjar um módulo bluetooth baratinho que permitisse a ligação ZTE-arduino, e pelo meio resolvi juntar uma ideia que já andava a pensar há algum tempo, que consiste no controlo de um rgb led strip.

Juntando estas ideias todas, e sem grandes embelezamentos, cheguei a este resultado provisório que me deixa bastante optimista quanto a outras ideias que gostaria de desenvolver.

O esquema actual é este:

(https://lusorobotica.com/proxy.php?request=http%3A%2F%2Fwww.iznogud.com%2Fimagens%2Fbt_led.png&hash=d963377dda6db8dc1f13e28ddbc111b71e3ad40c)

O código arduino é muito simples:

Código: [Seleccione]
#define START_COLOR_CHAR '^'
#define END_COLOR_CHAR 'c'
#define COLOR_SIZE 16

#define REDPIN 5
#define GREENPIN 6
#define BLUEPIN 3

char serialMessage[COLOR_SIZE];
char *msg="R000G000B000";

unsigned int count;
unsigned int readChar;
boolean readingSerial;

void setup() {
  readingSerial = false;
  Serial.begin(9600);
  pinMode(REDPIN, OUTPUT);
  pinMode(GREENPIN, OUTPUT);
  pinMode(BLUEPIN, OUTPUT);
  analogWrite(REDPIN, 255);
  analogWrite(GREENPIN, 255);
  analogWrite(BLUEPIN, 255);
}

void loop() {
 /*if (Serial.available() > 0 && !readingSerial) {
   
    Serial.println((char)Serial.read());
  }*/
   
  serialReadColor();
 delay(100);
}

void serialReadColor() {
  readingSerial = true;
  count = 0;
 
  iniReading:
  if (Serial.available() > 0) {
    readChar = Serial.read();
    if (readChar == END_COLOR_CHAR || count == COLOR_SIZE) {
      goto endReading;
    } else {
      serialMessage[count++] = readChar;
      goto iniReading;
    }
  }
  goto iniReading;
 
  endReading:
  readingSerial = false;
  serialMessage[count] = '\0';
//  lcd.clear();
  if(count==12)
  {
    Serial.println(serialMessage);
    cor();
  }
  else
  {
    Serial.println(count);
  }
}

void cor()
{
  msg = serialMessage; 
  char R[4]="000";
  char G[4]="000";
  char B[4]="000";
  int r, g, b;

   //strncpy(de,msg+0,1);
   strncpy(R,msg+1,3);
   //strncpy(dd,msg+4,1);
   strncpy(G,msg+5,3);
   strncpy(B,msg+9,3);
   
   Serial.print("R:");
   Serial.print(R);
   Serial.print(";G:");
   Serial.print(R);
   Serial.print(";G:");
   Serial.println(B);
         
   
   r=atoi(R);
   g=atoi(G);
   b=atoi(B);
   
   analogWrite(REDPIN, r);
   analogWrite(GREENPIN, g);
   analogWrite(BLUEPIN, b);



}

Já o código Java não é fácil de colocar aqui… mas mais tarde deixo o projecto todo (quando estiver mais limpinho…)

O resultado é isto:
P1120454 (http://www.youtube.com/watch?v=56ug5RAHHC0#)

P1120455 (http://www.youtube.com/watch?v=OwsOmeql_jM#)

P1120456 (http://www.youtube.com/watch?v=Hc7M-8-tLeA#)

Sugestões?

PS: Em principio este projecto irá ligar-se futuramente ao "exaustorino"(http://lusorobotica.com/index.php?topic=3454.msg39576#msg39576 (http://lusorobotica.com/index.php?topic=3454.msg39576#msg39576)) fazendo com que a minha cozinha assuma cada vez mais o papel de divisão mais inteligente da casa.
 ;D
Título: Re: Arduino - Android
Enviado por: GnGz em 01 de Setembro de 2011, 20:31
Gostaria era de saber como foi feita a programação para o android.
Título: Re: Arduino - Android
Enviado por: Ricardo em 02 de Setembro de 2011, 08:58
Gostaria era de saber como foi feita a programação para o android.

Como disse, só não ponho aqui todo o projecto da parte do android porque também ainda estou a dar os primeiros passos no java, e o projecto em causa é uma espécie de baú com uma série de outras experiências (GPS, SD card, Camera, SQL, etc...). Assim que limpar aquilo ou criar um projecto só para este assunto, ponho-o aqui.

Ainda assim, posso garantir que para este projecto é tudo surpreendentemente simples.
Título: Re: Arduino - Android
Enviado por: almamater em 22 de Setembro de 2011, 13:45
Muito interessante  ;)
Título: Re: Arduino - Android
Enviado por: Zav em 22 de Setembro de 2011, 14:31
Bom projecto ... tambem estou a iniciar-me num deste tipo, e tal como tu ainda ando a atinar com o java, tenho feito app para o android, agora estou a fazer uma calculadora.

A troca de duvidas ou sugestões e sempre bem vinda. Desde já fica aqui algo para dares umas vistas de olhos poder ser que ajude : http://code.google.com/p/cellbots/source/browse/#svn%2Ftrunk%2Fandroid%2Fjava%2Fcellbots%2Fsrc%2Fcom%2Fcellbots%2Fdirectcontrol (http://code.google.com/p/cellbots/source/browse/#svn%2Ftrunk%2Fandroid%2Fjava%2Fcellbots%2Fsrc%2Fcom%2Fcellbots%2Fdirectcontrol)

Bom trabalho e Obrigado ;)