Tanque Esteira Bluetooth com Arduino

Font Size

E aí makers como andam os projetos?

No post de hoje vamos lhe ensinar a controlar seu tanque esteira via Bluetooth com arduino utilizando seu smartphone.

Lembre-se que o céu é o limite, você pode acrescentar novos componentes ao projeto de maneira fácil com uma simples alteração no código.

Prepare suas ferramentas e vamos para mais um projeto.

Materiais necessários para montagem:

Segue a lista do material que será utilizado no tanque esteira, todos esses são encontrados na Loja virtual da Autocore Robótica.

1Chassi Robô Tanque com Esteira Lagarta;

1Módulo Bluetooth RS232 HC-05;

Driver Motor Ponte H L298N;

1Cabos Dupont Jumper FXM;

1Buzzer 5V 12MM;

2 – Led Alto Brilho 5mm Branco;

2 –Led Difuso Vermelho 5mm;

1 – Resistor de 150 Ohm;

1 – Resistor de 100 Ohm;

Montagem:

Preste bastante atenção na montagem de seu projeto, pois se ocorrer erro pode ocasionar danos aos seus componentes.

Para montar seu veículo siga o esquema abaixo:

Para  maiores detalhes sobre a utilização do módulo bluetooth, acesse o link abaixo:

Utilizando Módulo Bluetooth no Arduino

No exemplo estamos utilizando o modelo Uno, mas pode ser utilizada outra placa como o Nano, Leonardo ou Mega.

Pinos utilizados da Ponte H:

N1 = 10;

N2 = 9;

ENA = 11;

N3 = 6;

N4 = 5;

ENB = 3;

Para mais informações sobre a Ponte H acesse este link:

Aprenda a utilizar a ponte H L293D com Arduino

 

OBSERVAÇÕES:

> Atenção para não inverter a polaridade pois pode ocorre danos ao regulador de tensão de seu ARDUINO;

>Ao realizar a gravação do Arduino desconectar os pinos de conexão RX e TX;

 

Programa:

/*Projeto tanque esteira Bluetooth, controlado pelo app arduino my car
*/

//     /\      //      \\  ////\\\\\   \\\\\\////// ////////   \\\\////    \\\\////    ///////       
//     /\      //      \\     /\       //      \\   //         //     \\   //    \\    //                
      //\\     //      \\     /\       //      \\   //         //     \\   //    \\    //                
     //  \\    //      \\     /\       //      \\   //         //     \\   ////\\\\    ///////        
    ////\\\\   //      \\     /\       //      \\   //         //     \\   // \\       //
   //      \\  //      \\     /\       //      \\   //         //     \\   //  \\      //
  //        \\ /////\\\\\     /\       /////\\\\\   ////////   ////\\//   //   \\      ///////

// Pinos do motor direito:
int N1 = 10;
int N2 = 9;
int ENA = 11; //Pino para regulagem de velocidade

// Pinos do Motor esquerdo:
int N3 = 6;
int N4 = 5;
int ENB = 3; //Pino para regulagem de velocidade.


// Definição de pinos dos periféricos:
const int ledF = 12 ;     //  Led's frontais.
const int ledT = 13 ;    //   Led's traseiros.
const int buzina = 4 ; // Buzzer.
const int BTState = 2; // Comunicação do Bluetooth.

// Variáveis.
int i = 0;
int j = 0;
int state_rec;
char state;

void setup() {  //Funções que são executadas apenas quando inicia-se o programa.
  // Definição de portas OUTPUT= Saída ----INPUT= Entrada.
  pinMode(N1, OUTPUT);
  pinMode(N2, OUTPUT);
  pinMode(N3, OUTPUT);
  pinMode(N4, OUTPUT);
  pinMode(BTState, INPUT);

  // Inicializa a comunicação serial.
  // Na comunicação serial você pode ve os comandos enviados pelo smartphone.
  Serial.begin(9600);
}

void loop() { // Funções que são executadas infinitamente.

  if (digitalRead(BTState) == LOW) {  // O carro para ao ser desconectado do Bluetooth.
    state_rec = 'S';
  }

  if (state != 'S') {
    Serial.print(state);
  }

  if (Serial.available() > 0) { // Salva os valores da variável 'state'
    state_rec = Serial.read();
    state = state_rec;
  }

  //Definições de direções do Veículo:

  if (state == 'F') {  // Ao receber o comando 'F' desloca-se para frente.
    digitalWrite(N1, LOW);
    digitalWrite(N2, HIGH);
    analogWrite(ENA, 255);//Define velocidade do motor em 255.
    //ESQUERDO
    digitalWrite(N3, LOW);
    digitalWrite(N4, HIGH);
    analogWrite(ENB, 255);//Define velocidade do motor em 255.
  }

  else if (state == 'G') {  // Ao receber o comando 'L' desloca-se para frente e direita.
    digitalWrite(N1, HIGH );
    digitalWrite(N2, LOW );
    analogWrite(ENA, 255 );//Define velocidade do motor em 255.
    //ESQUERDO
    digitalWrite(N3, LOW);
    digitalWrite(N4, HIGH);
    analogWrite(ENB, 255);//Define velocidade do motor em 255.
  }
  else if (state == 'I') {  // Ao receber o comando 'I' desloca-se para frente e esquerda.
    digitalWrite(N1, LOW );
    digitalWrite(N2,  HIGH);
    analogWrite(ENA, 255 );//Define velocidade do motor em 255.
    //ESQUERDO
    digitalWrite(N3, HIGH);
    digitalWrite(N4, LOW);
    analogWrite(ENB, 255);//Define velocidade do motor em 255.
  }

  else if (state == 'R') {   // Ao receber o comando 'R' desloca-se para direita.
    digitalWrite(N1, LOW );
    digitalWrite(N2, HIGH );
    analogWrite(ENA, 255 );//Define velocidade do motor em 255.
    //ESQUERDO
    digitalWrite(N3, HIGH);
    digitalWrite(N4, LOW);
    analogWrite(ENB, 255);//Define velocidade do motor em 255.
  }

  else if (state == 'L') {   // Ao receber o comando 'G' desloca-se para esquerda.
    digitalWrite(N1, HIGH );
    digitalWrite(N2, LOW );
    analogWrite(ENA, 255 );//Define velocidade do motor em 255.
    //ESQUERDO
    digitalWrite(N3, LOW);
    digitalWrite(N4, HIGH);
    analogWrite(ENB, 255);//Define velocidade do motor em 255.
  }

  else if (state == 'B') { // Ao receber o comando 'B' desloca-se para trás.
    digitalWrite(N1, HIGH);
    digitalWrite(N2,  LOW);
    analogWrite(ENA, 255 );
    //ESQUERDO
    digitalWrite(N3,  HIGH);
    digitalWrite(N4, LOW );
    analogWrite(ENB, 255);
  }

  else if (state == 'S') {   // Ao receber o comando 'S' não realiza movimentos.
    digitalWrite(N1, LOW);
    digitalWrite(N2, LOW);
    //ESQUERDO
    digitalWrite(N3, LOW );
    digitalWrite(N4, LOW );
  }

  else if (state == 'V') {// Ao receber o comando 'V' aciona a buzina.
    if (j == 0) {
      tone(buzina, 1000);
      j = 1;
    }
    else if (j == 1) {
      noTone(buzina);
      j = 0;
    }
    state = 'n';
  }

  else if (state == 'W') {  // Ao receber o comando 'W' acende os leds frontais.
    if (j == 0) {
      tone(ledF, 1000);
      j = 1;
    }
    else if (j == 1) {
      noTone(ledF);
      j = 0;
    }

    else if (state == 'U') {  // Ao receber o comando 'U' acende os leds Traseiros.
      if (j == 0) {
        tone(ledT, 1000);
        j = 1;
      }
      else if (j == 1) {
        noTone(ledT);
        j = 0;
      }
  }
 }
}

 

Utilização do aplicativo:

O controle do tanque é feito por meio do App “Arduino Bluetooth RC Car”.

Download do app para smartphone com sistema Android

Ao iniciar o aplicativo será apresentada esta tela, nela você encontra os comandos para seu Tanque esteira.

 

1=Acender luz frontal;

2=Acender luz traseira;

3=Acionar buzina;

4=Ligar pisca alerta;

5=Menu;

6=Frente;

7=Trás;

8=Esquerda;

9=Direita;

10=Controlador de velocidade;

Menu:

Connect to car: Conectar ao veículo;

Accelerometer control: Esta função você controla o carro por meio dos movimentos de seu telefone;

Settings: Configurações

Close app: Fechar app;

Conectando o Tanque esteira ao aplicativo:

Primeiramente  Clique em “Connect to car” e siga os passos abaixo:

Nessa aba escolha seu módulo Bluetooth que está interligado ao arduino:

Se todo procedimento estiver correto vai aparecer conectado no canto superior:

 

Por fim, este foi mais um projeto elaborado pela Autocore Robótica, qualquer dúvida, sugestões e erros deixe seu comentário logo Abaixo…

Posts relacionados

Braço robótico com Módulo Controlador PWM PCA9685

por Marcos Pena
1 mês ago

Automation GO: Arduino e realidade virtual com o Unity- parte 1

por Fábio Timbó
3 anos ago

Plataforma de hardware compacta para projetos de microcontroladores PIC com IoT integrado

por Fábio Timbó
3 anos ago
Sair da versão mobile