Projeto 004 – Veiculo Arduino Controlado por Bluetooth

100_2225

Bom dia galera.
Aproveitando o tempo livre,fiz um novo projeto com Arduino,dessa vez fiz umas adaptaçõess no chassi que usei no ultimo projeto(Link) .
Trata-se de um veiculo controlado por bluetooth, minha placa já tem o modulo de bluetooth embutido,caso o seu não tenha pode utilizar um Bluetooth-Shield.
Nesse projeto vou fazer uso de PWM,e vou usar um circuito simples de um driver feito aqui no Sucata(link).

100_2226

Código:

// Sucata.Tec – Projeto 004: Veiculo Arduino Controlado via Bluetooth
// Acessem: sucatapontotec.netai.net

int motor1Pin = 10; // Pino de saí­da digital
int motor2Pin = 9; //…
int vel = 0; //variavel velocidade

void setup(){
pinMode(motor1Pin, OUTPUT); // Pino definido como sai­da
pinMode(motor2Pin, OUTPUT); // …
Serial.begin(9600); // Velocidade de comunicaçãoo padrãoo
Serial.print(“Sucata.Tec :VeiculoArduino – Seja bem vindo!\r\n\n”);
Serial.print(“Escolha a velocidade: 1 ou 2\r\n\n”);
Serial.print(“Controles:\r\n\n”);
Serial.print(“W:frente – A:esquerda – D:direita – P:freio – U:esquerda 90 – I:direita 90 \r\n”);
delay(1000);
}

void loop(){

if(Serial.read()== ’1′)// se tecla “1″ pressionada velocidade em 200
vel = 200;

if(Serial.read()== ’2′)//…
vel = 255;

if (Serial.read()== ‘p’ ) // Se tecla “p” presionada motor 2 em nivel baixo e 1 em alto
{analogWrite(motor1Pin, 0);
analogWrite(motor2Pin, 0);}

if (Serial.read()== ‘w’ ) // Se tecla “w” pressionada motor 1 e 2 em nivel alto
{analogWrite(motor1Pin, vel);
analogWrite(motor2Pin, vel);
}

if (Serial.read()== ‘a’ ) // Se tecla “a” presionada motor 1 em nivel baixo e 2 em alto
{analogWrite(motor2Pin, vel);
analogWrite(motor1Pin, (vel/2));
}

if (Serial.read()== ‘d’ ) // Se tecla “d” presionada motor 2 em nivel baixo e 1 em alto
{analogWrite(motor1Pin, vel);
analogWrite(motor2Pin, (vel/2));
}

if (Serial.read()== ‘u’ ) // Se tecla “u” presionada motor 1 em nivel baixo e 2 em alto
{analogWrite(motor2Pin, vel);
analogWrite(motor1Pin, 0);}

if (Serial.read()== ‘i’ ) // Se tecla “i” presionada motor 2 em nivel baixo e 1 em alto
{analogWrite(motor1Pin, vel);
analogWrite(motor2Pin, 0);}

}
// FIM

Esquema Elétrico:

Veiculo Bluetooth Arduino_bb

Os capacitores cerâmicos em paralelo com os motores são importantes pois eles filtram a interferência eletro-magnéticas proveniente deles,na primeira versão do veiculo eu nãoo usei nenhum meio para filtrar esses interferências,e por causa disso a conexão bluettooth era reiniciada várias vezes.Caso seu projeto ainda esteja sofrendo com essa interferência,tente diminuir um pouco o valor dos capacitores.

Comunicação:

O controle do veiculo se baseia em mandar carateres para a porta serial do bluetooth,portanto qualquer terminal serve como controle.No meu caso usei o HyperTerminal do Windows.O HyperTerminal deixou de fazer parte do Windows a partir da versão Seven,mas não se preocupe,a solução é super simples,nesse link em um tutorial ensinando como copiar o HyperTermianl do WinXP para o Seven.
Nesse (link) tem um tutorial ensinando a configurar a comunicação do HyperTerminal com o Arduino,no momento que for escolher a porta,escolha a porta serial usada pelo bluetooth.
Uma outra opção interessante é controlar pelo celular,na internet existe vários tutoriais para controlar o Arduino pelo Android.Usei um celular com WinMobile,então nesse caso uso o MobileTerminal.

ATUALIZAÇÂO:

Um dos nosso leitores fez um projeto semelhante usando o App: S2 bluetooth para Android, em um tablet.
No seu caso,ele usou servo motores em vez de simples motores DC.
Queria agradece-lo pelo código cedido,não foi testado por mim,mas de acordo com ele funciona perfeitamente:

#include

Servo servoLeft; // Define left servo
Servo servoRight; // Define right servo
int ledfrente = 3; // Define led da frente
int ledre = 12; // Define led da re
int rele = 13; // Define 5v no rele
int ledre = 6; // reserva
int rele =7; //reserva
void setup()
{

Serial.begin(9600); // velocidade de comunicação
servoLeft.attach(10); // servo motor na porta 10
servoRight.attach(11); // servo motor na porta 11
pinMode(rele, OUTPUT);
pinMode(7, OUTPUT);
pinMode(6, OUTPUT);
pinMode(ledfrente, OUTPUT);
pinMode(ledre, OUTPUT);
digitalWrite(ledfrente, LOW);
digitalWrite(ledre, LOW);

}

void loop()
{
if(Serial.available() > 0)
{
int entrada = Serial.read();

switch (entrada)
{
case ‘f’:
frente();
break;

case ‘r’:
re();
break;

case ‘p’:
parar();

case ‘c’:
centro();
break;

case ‘d’:
direita();
break;

case ‘e’:
esquerda();
break;
}
}
}

void frente()
{
digitalWrite(rele, HIGH);
servoLeft.write(360);
servoRight.write(360);
digitalWrite(ledre, LOW);
digitalWrite(ledfrente, HIGH);
}

void re()
{
digitalWrite(rele, HIGH);
servoLeft.write(-360);
servoRight.write(-360);
digitalWrite(ledre, HIGH);
digitalWrite(ledfrente,LOW);
}

void parar()
{

digitalWrite(rele, LOW);
servoLeft.write(0);
servoRight.write(0);
digitalWrite(ledre, LOW);
digitalWrite(ledfrente, LOW);
}

void direita()
{
servoLeft.write(360);
servoRight.write(0);
digitalWrite(rele, HIGH);
digitalWrite(7, HIGH);
digitalWrite(6, LOW);
digitalWrite(ledre, LOW);
digitalWrite(ledfrente,LOW);
}

void esquerda()
{
servoLeft.write(0);
servoRight.write(360);
digitalWrite(rele, HIGH);
digitalWrite(7, LOW);
digitalWrite(6, HIGH);
digitalWrite(ledre, LOW);
digitalWrite(ledfrente,LOW);
}

void centro()
{
servoLeft.write(0);
servoRight.write(0);
digitalWrite(7, LOW);
digitalWrite(6, LOW);
}

Boa sorte!

16 ideias sobre “Projeto 004 – Veiculo Arduino Controlado por Bluetooth

    • A estrutura foi feita com réguas de acrílico e peças de brinquedos.
      O restante foi:
      1 Arduino Duemilanove (pode ser o uno também),
      2 capacitores cerâmicos de 10nF,
      2 motores DC de 6 volts,
      1 shield bluetooth,
      1 CI ULN2003

  1. cara o meu esta dando erro preciso de ajuda

    sketch_nov05a.ino:1:9: error: #include expects “FILENAME” or
    sketch_nov05a:34: error: stray ‘\’ in program
    sketch_nov05a:34: error: stray ‘\’ in program
    sketch_nov05a:38: error: stray ‘\’ in program
    sketch_nov05a:38: error: stray ‘\’ in program
    sketch_nov05a:42: error: stray ‘\’ in program
    sketch_nov05a:42: error: stray ‘\’ in program
    sketch_nov05a:45: error: stray ‘\’ in program
    sketch_nov05a:45: error: stray ‘\’ in program
    sketch_nov05a:49: error: stray ‘\’ in program
    sketch_nov05a:49: error: stray ‘\’ in program
    sketch_nov05a:53: error: stray ‘\’ in program
    sketch_nov05a:53: error: stray ‘\’ in program
    sketch_nov05a:6: error: variable or field ‘frente’ declared void
    sketch_nov05a:6: error: ‘f’ was not declared in this scope
    sketch_nov05a:7: error: variable or field ‘re’ declared void
    sketch_nov05a:7: error: ‘r’ was not declared in this scope
    sketch_nov05a:3: error: ‘Servo’ does not name a type
    sketch_nov05a:4: error: ‘Servo’ does not name a type
    sketch_nov05a:8: error: redefinition of ‘int ledre’
    sketch_nov05a:6: error: ‘int ledre’ previously defined here
    sketch_nov05a:9: error: redefinition of ‘int rele’
    sketch_nov05a:7: error: ‘int rele’ previously defined here
    sketch_nov05a.ino: In function ‘void setup()’:
    sketch_nov05a:14: error: ‘servoLeft’ was not declared in this scope
    sketch_nov05a:15: error: ‘servoRight’ was not declared in this scope
    sketch_nov05a.ino: In function ‘void loop()’:
    sketch_nov05a:34: error: ‘u2018f’ was not declared in this scope
    sketch_nov05a:34: error: expected `:’ before ‘u2019′
    sketch_nov05a:35: error: ‘frente’ was not declared in this scope
    sketch_nov05a:38: error: ‘u2018r’ was not declared in this scope
    sketch_nov05a:38: error: expected `:’ before ‘u2019′
    sketch_nov05a:38: error: duplicate label ‘u2019′
    sketch_nov05a:39: error: ‘re’ was not declared in this scope
    sketch_nov05a:42: error: ‘u2018p’ was not declared in this scope
    sketch_nov05a:42: error: expected `:’ before ‘u2019′
    sketch_nov05a:42: error: duplicate label ‘u2019′
    sketch_nov05a:45: error: ‘u2018c’ was not declared in this scope
    sketch_nov05a:45: error: expected `:’ before ‘u2019′
    sketch_nov05a:45: error: duplicate label ‘u2019′
    sketch_nov05a:49: error: ‘u2018d’ was not declared in this scope
    sketch_nov05a:49: error: expected `:’ before ‘u2019′
    sketch_nov05a:49: error: duplicate label ‘u2019′
    sketch_nov05a:53: error: ‘u2018e’ was not declared in this scope
    sketch_nov05a:53: error: expected `:’ before ‘u2019′
    sketch_nov05a:53: error: duplicate label ‘u2019′
    sketch_nov05a.ino: At global scope:
    sketch_nov05a:60: error: variable or field ‘frente’ declared void
    sketch_nov05a:60: error: ‘f’ was not declared in this scope
    sketch_nov05a:69: error: variable or field ‘re’ declared void
    sketch_nov05a:69: error: ‘r’ was not declared in this scope
    sketch_nov05a.ino: In function ‘void parar()’:
    sketch_nov05a:82: error: ‘servoLeft’ was not declared in this scope
    sketch_nov05a:83: error: ‘servoRight’ was not declared in this scope
    sketch_nov05a.ino: In function ‘void direita()’:
    sketch_nov05a:90: error: ‘servoLeft’ was not declared in this scope
    sketch_nov05a:91: error: ‘servoRight’ was not declared in this scope
    sketch_nov05a.ino: In function ‘void esquerda()’:
    sketch_nov05a:101: error: ‘servoLeft’ was not declared in this scope
    sketch_nov05a:102: error: ‘servoRight’ was not declared in this scope
    sketch_nov05a.ino: In function ‘void centro()’:
    sketch_nov05a:112: error: ‘servoLeft’ was not declared in this scope
    sketch_nov05a:113: error: ‘servoRight’ was not declared in this scope

    • Boa noite, obrigado pelo comentário, e me desculpe pela demora em responder, o site está sendo reativado.

      André, poste o código por favor.
      Aparentemente vc esqueceu de declarar um monte de variável e tem alguns erros de sintaxe também.

    • Boa noite, obrigado pelo comentário e desculpe pela demora, o site está sendo reativado.

      Olá Valeska, pelo tempo que passou, provavelmente vc já terminou seu curso.
      Como foi o projeto? Deu tudo certo?

  2. Bom dia, estou usando modulo drive com 4 motores e arduino UNO R3 ou MEGA e precisava saber como o modulo bluetooth daria o comando pro carrinho andar.
    vc tem o codigo para essa instalação?
    aguardo sua ajuda. Obrigado

    • Boa noite,obrigado pelo comentário e desculpe pela demora, o site está sendo reativado.

      Alexandre, esse carrinho tem 4 rodas, e cada roda terá um motor, é isso?
      Se sim, vc pode usar o código desse post, porém os motores de cada lado terão que estar ligados em paralelo, e verifique a corrente de cada motor, pois nesse caso ela será duas vezes maior (provavelmente os relés aguentarão)

    • Olá ,obrigado pelo comentário e desculpe a demora, o site está sendo reativado.

      Primeiramente vc pode utilizar o princípio desse projeto para mandar as informações de posição dos motores por serial(bluetooth), porém terá que armazenar as informações vindas em um string pelo fato de precisar de mais informação para controlar tudo, essa string receberá o valor do ângulo de pelo menos 3 servos motores, isso resulta em uma string de no mínimo 9 posições.
      As juntas desse braço terá que usar servo motores, por ser mais prático de controlar com Arduino, então estude a fundo a biblioteca “Servo.”
      Projete uma boa estrutura mecânica que fixe bem os servo motores, e arranje uma fonte extra destinada aos servo motores, pois eles irão puxar mais corrente do que o Arduino é capaz de fornecer.

    • Obrigado pelo comentário. Desculpe pela demora em responder, o site está sendo reativado agora.
      Uma boa opção para seu projeto é usar um aplicativo para Android chamado: RCCarBluetooth.
      Ele envia caracteres para o Arduino por serial: onde frente=1, parar=3, direita= 4 e esquerda =2.

    • Obrigado pela visita.
      Muito interessante,não sabia que isso existia.gostei do seus videos,principalmente do reconhecimento de voz usando o bluetooth.Isso já poupa muito hardware ao aproveitar o celular para processar a voz.
      Até mais ver!

Deixe um Comentário

O seu endereço de email não será publicado

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>