Pular para o conteúdo

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.
João Victor vikitor566
Hits: 91.689 Categoria: Python Subcategoria: Outros
  • Indicar
  • Impressora
  • Denunciar

Parte 4: 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);
 }

}

   1. Introdução
   2. Montagem do robô
   3. Programando
   4. Bluetooth
   5. Integrando recursos
   6. Aplicação de controle
   7. Conclusão

Python com SL4A - A camada de script do Android

Threads - Importância dentro de um software

OAK: Câmera Open Source de Visão Computacional com AI

Sockets em Python

Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante

Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado

#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

Entre na sua conta para comentar.