domingo, 6 de maio de 2012

Arduino Wireless parte II - via Bluetooth!

Comunicação Bluetooth entre Arduino e Android.
Esse post é uma continuação do anterior, que pode ser acessado aqui. No primeiro, mostrei o teste de um módulo que permite a comunicação sem fio entre o Arduino e o computador (ou entre outros dispositivos) usando um módulo de rádio muito interessante, da Wixel Shield.

Agora, apresento um teste simples que fiz com um módulo Bluetooth. De fato, reproduzi o teste descrito pelo professor Cássio Agnaldo Onodera numa vídeo aula que ele tem no YouTube (acesse aqui), para verificar o funcionamento do módulo de comunicação Bluetooth.

O módulo Bluetooth que testei é de muito fácil utilização com o Arduino. Trata-se do modelo JY-BT03, fabricado pela Shenzhen Jiayuan Electronic Co. Ltd. Este módulo é muito prático, pois se conecta ao Arduino através dos pinos RX e TX, comportando-se como um dispositivo serial padrão! O próprio módulo cuida de toda a parte de comunicação Bluetooth. Ou seja, do ponto de vista do Arduino, tudo o que é necessário fazer é enviar e receber caracteres pela porta serial.

Módulo Bluetooth JY-BT03.
Algumas características do módulo Bluetooth são:

  • Comunicação Bluetooth 2.0;
  • Baud rate: 2.400 a 1.382.400 bps;
  • Tensão de alimentação: 5,0 V (3,6V a 6,0V);
  • Corrente: 35mA quando realiza "pareamento"; 8mA quando conectado;
  • Antena impressa na própria placa;
  • Possui 7 pinos de entrada e saída na placa;
  • Possui LED que indica o estado da conexão Bluetooth;
  • Senha padrão: 1234
Conexão ao módulo Bluetooth.
Como já mencionei, a conexão entre o Arduino e o módulo Bluetooth é muito simples. Ligue os dois pinos de alimentação do módulo (+5,0V e GND) aos pinos correspondentes do Arduino, de maneira que o módulo seja alimentado pelo próprio Arduino.

Quanto aos pinos de comunicação, basta conectar o pino de recepção de dados (RX) do módulo ao pino de transmissão de dados (TX) do Arduino, e vice-versa.

Observação importante: para transferir o programa ao Arduino é necessário que o módulo Bluetooth não esteja alimentado, ou não esteja conectado aos pinos RX e TX. Como o programa é transferido ao Arduino usando comunicação serial, a conexão do módulo Bluetooth vai interferir na comunicação, impedindo a correta transferência do programa. Só depois de programar o Arduino você pode fazer a conexão do módulo Bluetooth como indicado.

O código utilizado para teste do módulo é este:


void setup()
{
  pinMode(13,OUTPUT);
  pinMode(12,OUTPUT);
  pinMode(11,OUTPUT);
  Serial.begin(9600);
}

void loop()
{
  char c = Serial.read();
  
  if (c=='1') digitalWrite(13,HIGH);
  if (c=='2') digitalWrite(12,HIGH);  
  if (c=='3') digitalWrite(11,HIGH);  
  
  if (c=='A') digitalWrite(13,LOW);  
  if (c=='B') digitalWrite(12,LOW);  
  if (c=='C') digitalWrite(11,LOW);  
 
  delay(1000);
}


O programa é bastante simples: apenas aguarda a chegada de um caractere pela serial e, de acordo com seu valor, coloca uma das portas digitais do Arduino em nível alto ou baixo. Especificamente, foram utilizados três LEDs ligados aos pinos 11, 12 e 13 do Arduino. Cada um dos LEDs é  ligado quando um dos caracteres "1", "2" ou "3" é recebido, e desligado com a recepção dos caracteres "A", "B" ou "C".


Você pode testar o programa usando o Serial Monitor da IDE do Arduino. Nesse caso, lembre-se de desconectar a alimentação do módulo Bluetooth para evitar interferências na comunicação. Usando o Serial Monitor, experimente enviar os caracteres "123ABC" e veja se o resultado é o acendimento e desligamento de todos os LEDs, em sequência. Se tudo funcionar como esperado, desconecte o cabo USB do Arduino e reconecte os pinos ao módulo Bluetooth.

Para evitar problemas com a comunicação, não alimente o Arduino através da conexão USB do computador. Prefira alimentar o Arduino com uma fonte externa ou com uma bateria, como mostrado na primeira foto do post.

Fiz o teste do Bluetooth com um celular Android. Usei o programa S2 Bluetooth, disponível gratuitamente na Play Store (há outros, que você pode testar). Esse programa permite o envio de caracteres através da comunicação Bluetooth. Antes de abrir o programa, ative o Bluetooth no dispositivo Android e faça o "pareamento" com o módulo. A senha padrão é 1234. Em seguida, abra o programa S2 Bluetooth, clique no menu "Conect a Device" e escolha o dispositivo "linvor", conforme mostrado a seguir.

S2 Bluetooth: realizando conexão ao módulo.

Quando a conexão for realizada com sucesso, o LED do módulo Bluetooth vai permanecer aceso. Então, escreva os caracteres "123ABC" no programa S2 Bluetooth e clique em "SEND".

S2 Bluetooth: envio de caracteres.

Se tudo deu certo, você deve ver os LEDs acendendo e apagando em sequência. Pronto! Agora, com um pouco de criatividade, você já pode controlar o seu robô a partir de seu celular ou tablet Android via Bluetooth!

----- Editado em 26/set/2012 -----

Se você estiver animado, pode fazer seu próprio programa para Android usando o AppInventor! Esta é uma ferramenta de programação desenvolvida e mantida pelo MIT. A programação é feita de forma gráfica e é bastante intuitiva.

Um tutorial bem direto está disponível no site do Laboratório de Garagem (veja aqui). Com base nesse tutorial, Joanesburgo conseguiu fazer um programa que se comunica com o Arduino via Bluetooth!

JoanesApp - o aplicativo da Joanesburgo para Android.

Divirta-se e até a próxima!


Referências:
Módulo Bluetooth no Deal Extreme: http://www.dealextreme.com/p/jy-mcu-arduino-bluetooth-wireless-serial-port-module-104299?item=1
Especificações do módulo Bluetooth: http://www.globalsources.com/gsol/I/Arduino-Bluetooth-Module/p/sm/1045071327.htm
Arduino: http://www.arduino.cc/
Vídeo-aula do professor Cássio Agnaldo Onodera: http://youtu.be/IwnofqvGKow
Tutorial do AppInventor: http://labdegaragem.com/forum/topics/tutorial-criando-aplica-o-para-android-para-controlar-o-arduino
AppInventor: http://appinventor.mit.edu/