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.

Chassi Robô Tipo Tanque Esteira Para Arduino - ARDUO ELETROLembre-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:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/*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;
}
}
}
}
/*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; } } } }
/*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.

 

Painel e funções.

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:

Menu 1 com informações.

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:

  • Abra o Aplicativo;
  • Configure de acordo com seu móculo;
  • Acione a função Bluetooth de seu celular;
  • Siga as Imagens abaixo:

Menu 2

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

Conectado

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

Módulo conectado

 

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…

    
1.00 avg. rating (43% score) - 2 votes