Tutorial: Controlando carrinho Zumo utilizando acelerômetro do Android via Bluetooth HC-06 e o Garagino

Olá garagistas, no tutorial de hoje irei mostrar como controlar o Zumo a distância utilizando o acelerômetro do seu celular Android via Bluetooth com o módulo HC-06 e o Garagino. Esse será um tutorial muito divertido.

Material Utilizado

1x Kit Garagino Rev 1 Básico

1x Módulo Bluetooth HC-06

1x Cabo USB Mini B - 1,80 Metros

1x Zumo Chassis Kit (No Motors)

1x Dual Motor Garagino

1x Jumper Wires Premium 6 F/F - Pacote com 10 unidades

1x Barra de pinos reto

2x Micro motor com caixa de redução de metal 75:1

4x pilhas AA

1x Celular com Android

1. Módulo Bluetooth HC-06

Figura 1- Módulo Bluetooth HC-06


Com este módulo você pode inserir uma comunicação bluetooth no seu Arduino de uma maneira fácil e acessível. Nesta placa tem um regulador de tensão onde você poderá alimentar com 3.3 a 5v, bem como um LED que indica se o módulo está pareado com outro dispositivo.

Características

  • Protocolo: v2.0+EDR
  • Firmware: Linvor 1.8
  • Frequência: 2,4GHz Banda ISM
  • Segurança: Autentificação e Encriptação
  • Suporta modo Escravo (Slave) e Mestre (Master)
  • CSR chip: Bluetooth v2.0
  • Tensão: 3,3v (2,7-4.2v)
  • Corrente: Pareado 35mA; Conectado 8mA
  • Temperatura: -40 ~ +105°C
  •  Alcance: 10m

2. Conhecimentos Necessários

Para o total entendimento deste tutorial, é aconselhável anteriormente executar os tutoriais abaixo:

Como acender leds pelo Serial Monitor do Arduino

Como utilizar o Dual Motor Shield

Para entendimento sobre a montagem e funcionamento do carrinho Zumo acesse os tutoriais abaixo:

Tutorial: Seguidor de linha com plataforma Zumo e Garagino

Tutorial: Seguidor de linha com Dual Motor Garagino que remove obstáculos

Se você procura uma opção mais completa para o carrinho Zumo acesse o link abaixo:

Kit Robô seguidor de linha

3. Montagem

Nos links acima você pode se aprofundar mais em relação ao Zumo e o Dual Motor Garagino tirando todas as suas dúvidas, nesse tutorial iremos focar no Módulo Bluetooth. Abaixo temos o Dual Motor Garagino, é o controlador do motor nele controlamos dois motores, o alimentamos com 4 pilhas AA, essas pilhas ficam no compartimento interno do Zumo. Essa placa é fixada na parte superior do zumo e acima dela é inserida o Garagino.

Figura 2- Dual Motor Garagino

Nas imagens abaixo temos o Garagino e o HC-06, a ligação é bem simples lembrando que é necessário a utilização de dois resistores de 10K ohm configurados como divisor de tensão para que não ocorra a queima do módulo, pois o regulador de tensão apenas alimenta o módulo.

Figura 3 - Esquema de ligação entre o Garagino e o HC-06

4. Funcionamento

Após parear o seu dispositivo Android com o Módulo Bluetooth HC-06 que esta no Zumo, é criado um link serial via comunicação bluetooth entre ambos. O Módulo Bluetooth HC-06 vai trabalhar em modo slave, enquanto o seu dispositivo Android irá enviar comandos para o acionamento dos motores, fazendo o Zumo se mover para frente, trás, direita, esquerda ou verticalmente. Você deve baixar essa biblioteca  DualMotor.h para que o Dual motor Garagino funcione corretamente.

 

4.1) Aplicativo

Figura 4 - Arduino Bluetooth RC Car (Aplicativo)

Utilizaremos o aplicativo Arduino Bluetooth RC Car para controlar o Zumo. Ele é um aplicativo desenvolvido para Android, e possui uma interface gráfica para o envio de diversos comandos via bluetooth. Cada botão do aplicativo envia um caractere (letra) para o Arduino, através do link serial bluetooth. Neste tutorial utilizaremos apenas os comandos/botões para movimentar o Zumo.

 

 Figura 5 - Tabela de movimentos e tela do aplicativo

Ele pode ser controlado tanto por pressionamento dos botões no touch do seu celular, como pelo seu movimento através do  acelerômetro conforme pode ser visto na imagem  abaixo.

5. Comandos AT

A configuração padrão do HC-06 é essa abaixo, podendo variar, pois alguns vem de fábrica testados e a informação presente nos mesmos ser diferentes dessas. 

Slave
9600, N, 8, 1
Name linvor
Pincode 1234

Se no visor do seu terminal serial não estiver aparecendo nenhum caráter ou caracteres bagunçados é sinal de que seu Baud rate é diferente do que você definiu, então mude até ele apresentar a informação correta. Segue os comandos mais importantes para seu uso:

Teste de comando

Envia: AT
Recebe: OK

Alterar taxa de transmissão

Envia: AT+BAUD#
Recebe: OKbaud

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


Veja o exemplo abaixo:

Envia: AT+BAUD1
Recebe: OK1200

Nome do dispositivo

Envia: AT+NAMEname
Recebe: OKname

Veja o Exemplo abaixo:

Envia: AT+NAMEblue
Recebe: OKblue

Alterar código pin de segurança

Enviar: AT+PINxxxx
Receber: OKsetpin

Veja o Exemplo abaixo:

Envia: AT+PIN9999
Recebe: OKsetpin

6. Sketch de configuração

Essa primeira sketch é apenas para parametrização, você deverá abrir o monitor serial e digitar os comandos conforme suas funções descritos acima.

#include <SoftwareSerial.h>  

int bluetoothTx = 3; // TX- do HC-06
int bluetoothRx = 2; // RX- do HC-06

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

void setup()
{
  Serial.begin(9600);
  bluetooth.begin(9600); //Se não funcionar tente esses outros 57600/38400/115200
 }

void loop()
{
  if(bluetooth.available()) // If the bluetooth sent any characters
  {
    // Send any characters the bluetooth prints to the serial monitor
    Serial.print((char)bluetooth.read());
  }
  if(Serial.available()) // If stuff was typed in the serial monitor
  {
    // Send any characters the Serial monitor prints to the bluetooth
    bluetooth.print((char)Serial.read());
  }
  // and loop forever and ever!
}

7. Sketch 



#include <SoftwareSerial.h>//Inclui a biblioteca SoftwareSerial
#include span style="color: #cc6600;">DualMotor.h> //Inclui a biblioteca DualMotor.h
int bluetoothTx = 3; //
int bluetoothRx = 2; //

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx); //Cria a instância, informando os pinos de controle
DualMotor dualmotor; //Instância a DualMotor.h
void setup()
{
  bluetooth.begin(9600); // De acordo com o que foi setado
 
}

void loop()
{
 if(bluetooth.available()) // Se o bluetooth recebeu algum caracter
  {  
    char letra = bluetooth.read();//Recebe caracter via Bluetooth


  if(letra == 'F') //Se o caractere recebido for a letra 'F'
    {
      //Move o carrinho para frente
      dualmotor.M1move(255,0);
      dualmotor.M2move(255,0);
      //==================
    }
    
    else if (letra == 'B') //Se o caractere recebido for a letra 'B'
    {
      //Move o carrinho para trás
      dualmotor.M1move(255,1);
      dualmotor.M2move(255,1);
      
      //==================
    }
    
    else if(letra == 'R') //Se o caractere recebido for a letra 'R'
    {
      //Move o carrinho para direita
      dualmotor.M1move(255,1);
      dualmotor.M2parar();
      //==================
    }
    
    else if (letra == 'L') //Se o caractere recebido for a letra 'L'
    { 
      //Move o carrinho para esquerda
      dualmotor.M1parar();
      dualmotor.M2move(255,1);
      //==================
    }
    
    else if(letra == 'S') //Se o caractere recebido for a letra 'S'
    {
      //Para o carrinho
      dualmotor.M1parar();
      dualmotor.M2parar();
      //==================
    }  
    
     else if(letra == 'G') //Se o caractere recebido for a letra 'G'
    {
      //Diagonal esquerda para frente
        dualmotor.M1move(255,0);
        dualmotor.M2move(128,0);
      //==================
    }  

 else if(letra == 'I') //Se o caractere recebido for a letra 'G'
    {
      //Diagonal esquerda para frente
        dualmotor.M2move(255,0);
        dualmotor.M1move(128,0);
      //==================
    }  

  else if(letra == 'J') //Se o caractere recebido for a letra 'G'
    {
      //Diagonal direita para trás
        dualmotor.M2move(255,1);
        dualmotor.M1move(128,1);
      //==================
    }  
    
    else if(letra == 'H') //Se o caractere recebido for a letra 'G'
    {
      //Diagonal esquerda para trás
        dualmotor.M1move(255,1);
        dualmotor.M2move(128,1);
      //==================
    }  
  }
 }

Referências

http://labdegaragem.com/profiles/blogs/tutorial-controlando-plataforma-robotica-atraves-de-aplicativo-an

http://labdegaragem.com/profiles/blogs/tutorial-controlando-a-relay-board-via-bluetooth-mate-prata

http://labdegaragem.com/profiles/blogs/tutorial-seguidor-de-linha-com-plataforma-zumo

http://labdegaragem.com/profiles/blogs/tutorial-seguidor-de-linha-com-dual-motor-garagino-que-remove-obs

Exibições: 8903

Comentar

Você precisa ser um membro de Laboratorio de Garagem (arduino, eletrônica, robotica, hacking) para adicionar comentários!

Entrar em Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço