Robótica com Android e Arduino

Nesse artigo, pretendo descrever o processo de criação de um robô baseado na plataforma Arduino e integrado ao Android, através da camada de script SL4A.

[ Hits: 88.510 ]

Por: João Victor em 16/04/2014


Bluetooth



Para a comunicação entre o Arduino e o Android, utilizaremos um módulo Bluetooth HC-06, ou HC-05. O módulo já vem pronto para o uso, porém, com as configurações padrões, então, vamos alterar o nome do dispositivo, a senha para conexão e o Baud Rate. Com as configurações já prontas, criaremos uma pequena aplicação, apenas para testes.

Primeiramente, devemos conectar o Bluetooth no Arduino da seguinte forma:
Linux: Robótica com Android e Arduino

Nessa montagem, usamos as portas 10 e 11 para comunicação, uma vez que as portas 0 e 1 RX e TX padrões, serão usadas para comunicação USB com o Arduino, devemos criar uma nova comunicação serial para o módulo Bluetooth.

Segue o código para a comunicação:

#include <SoftwareSerial.h>
SoftwareSerial Bluetooth(10,11);//(RX/TX)
void setup()
{
 Bluetooth.begin(9600);
 Serial.begin(9600);
}
void loop()
{
 if(Bluetooth.available())
 {
  byte a=Bluetooth.read();
  Serial.write(a);
 }

 if(Serial.available())
 {
  byte a=Serial.read();
  Bluetooth.write(a);
 }

O código acima, simplesmente, pega o que é escrito na porta serial USB e escreve na porta serial Bluetooth e vice-versa. A biblioteca SoftwareSerial permite a criação de uma segunda porta serial, passando os pinos (RX,TX) desejados.

Após o upload para o Arduino, abrimos o Serial Monitor. Definimos a velocidade em 9600 e definimos a quebra de linha como nenhuma, em caso do módulo HC-06 e ambos para o HC-05. E usamos o comando AT para testar a comunicação, se tudo estiver correto deverá retornar OK.
Linux: Robótica com Android e Arduino

A sintaxe dos comandos AT, basicamente, é AT+COMANDOparametro, caso tudo esteja correto, o programa retornará OK em todos os comandos, caso tudo ocorra corretamente.

1. Alterar o nome do dispositivo:

AT+NAMESteve
OKsetname

2. Alterar a senha:

AT+PIN4242
OKsetpin

3. Alterar o Baud Rate:

AT+BAUD7
OK57600

1---------1200
2---------2400
3---------4800
4---------9600
5---------19200
6---------38400
7---------57600
8---------115200

Para comunicação do Android com o robô, nós devemos, simplesmente, escrever os dados de um lado e ler do outro. A camada de script facilita muito a comunicação, pois, não e necessário manipular sockets diretamente. O código abaixo é um "Hello World", bem simples, que apenas envia uma mensagem e espera uma resposta:

import android
droid = android.Android()
droid.toggleBluetoothState(True)
droid.bluetoothConnect('00001101-0000-1000-8000-00805F9B34FB')
droid.bluetoothWrite("Hello blue world")
msg = droid.bluetoothReadLine().result
print msg

Primeiramente, importamos a biblioteca Android, que fornece o acesso a todos os recursos necessários para a interação da camada de script com o sistema.

O primeiro, passo é ativar o Bluetooth toggleBluetoothState, logo após iniciamos a conexão com a função bluetoothConnect. Essa função recebe dois parâmetros, o primeiro é o UUID para a comunicação serial, e o segundo, o MAC do dispositivo ao qual queremos nos conectar; se omitirmos o MAC, é aberta uma lista para seleção do dispositivo.

A função bluetoothWrite, escreve os dados na linha de comunicação e a função bluetoothReadLine.result, lê os dados. Antes de iniciarmos a comunicação, pareamos o módulo Bluetooth como um dispositivo normal, com a senha que definimos.

No lado do Arduino, o programa funciona com o mesmo princípio. O código é baseado no que foi usado para configurar o módulo:

#include <SoftwareSerial.h>
SoftwareSerial Bluetooth(10,11);//(RX/TX)
String msg;

void setup() {
Bluetooth.begin(57600);
Serial.begin(57600);

}

void loop()
{
 if(Bluetooth.available() > 0)
 {
  msg = Bluetooth.readString();
  Serial.println(msg);
  Bluetooth.flush();
 }

 if(Serial.available())
 {
  byte a = Serial.read();
  Bluetooth.write(a);
 }

}

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Montagem do robô
   3. Programando
   4. Bluetooth
   5. Integrando recursos
   6. Aplicação de controle
   7. Conclusão
Outros artigos deste autor

Python com SL4A - A camada de script do Android

Leitura recomendada

Varredura de PING Utilizando o Python

Download de Arquivos com Verificação do Hash SHA 256

Port Scanner com Python

Como baixar fotos e vídeos do Instagram com Python

Monitorando produtos no ML com Python 3 via BeautifulSoup

  
Comentários
[1] Comentário enviado por albfneto em 16/04/2014 - 19:46h

Muito bom isso! favoritado

[2] Comentário enviado por vikitor566 em 16/04/2014 - 23:02h

Muito obrigado albfneto

[3] Comentário enviado por Lisandro em 16/04/2014 - 23:18h

Excelente! Parabéns pelo artigo e pela paciência. Por várias vezes pensei em fazer um artigo semelhante e sei bem o trabalho que dá.
Já está nos meus favoritos.

[4] Comentário enviado por mcnd2 em 17/04/2014 - 13:19h

Muito interessante.

Artigo muito bem explicado e de fácil entendimento.

10!

[5] Comentário enviado por vikitor566 em 17/04/2014 - 14:03h

Muito obrigado a todos, o trabalho é recompensado quando o artigo consegue compartilhar a idéia pelo qual foi feito.

[6] Comentário enviado por Sandro1 em 17/04/2014 - 21:24h

Excelente artigo e como já disseram está muito bem explicado, qualquer pessoa vai conseguir fazer esse robô!

[7] Comentário enviado por k_cesar em 20/04/2014 - 13:52h

Parabéns pelo artigo.
Excelente!

[8] Comentário enviado por matiasalexsandro em 22/04/2014 - 23:56h

excelente artigo favoritado pra projetos futuros

[9] Comentário enviado por vikitor566 em 23/04/2014 - 09:59h

Muito obrigado a todos

[10] Comentário enviado por JFurio em 19/05/2014 - 09:14h

Realmente, nota 10 mesmo ! Cheguei até a estudar um orçamento e ligar em umas lojas para ver uns orçamentos, e realmente não é tão caro ! Vou tentar montar um dia, e independente do resultado, posto aqui ! Vlw !


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts