Como fazer um carrinho de controle remoto simples com Bluetooth

Como fazer um carrinho de controle remoto simples com Bluetooth 53

O controle de dispositivos usando a tecnologia Bluetooth é sem dúvida uma das habilidades mais legais que todo o maker deseja dominar! Hoje nós daremos um passo além e ainda voltando a ser criança criando um incrível carrinho por controle remoto fazendo uso do módulo Bluetooth RS232 HC-05! Vamos lá?

Passo a passo para criar um carrinho de controle remoto

Você vai precisar de:

Como fazer um carrinho de controle remoto simples com Bluetooth

Comecemos então montando a parte mecânica. Encaixe primeiro os motores e, em seguida, as rodas no chassi. Finalmente, o conector para as pilhas. Certifique-se de que tudo ficou bem preso para evitar que algo acabe se soltando durante a utilização do carrinho, provocando danos aos componentes sem necessidade. Feito isso, efetue a solda dos fios a chave liga/desliga, assim podemos desligar facilmente o carrinho.

Com o último ponto feito, posicione os componentes eletrônicos no chassi, passando a fiação dos motores por dentro dos furos existentes no mesmo para evitar que os fios acabem, eventualmente, se enroscando nas rodas – tornando a operação muito mais segura e a montagem mais limpa!

Como fazer um carrinho de controle remoto simples com Bluetooth

Antes de colocar os parafusos ou prendedores adequados ao chassi, vamos ligar para ver se está tudo certo!

Mas, antes, vamos passar o programa do carrinho para a nossa placa Compatível Arduino Uno. Estando tudo em seu lugar, a placa e o módulo irão piscar mostrando que estão prontos para uso.

Como fazer um carrinho de controle remoto simples com Bluetooth

Circuito: Carrinho de controle remoto simples

Para facilitar a montagem, abaixo temos o esquema para ligação da fiação do nosso carrinho. Veja que a ponte H é fundamental para alimentar corretamente os motores sem precisarmos recorrer a protoboard.

Ao ligar os motores, atente-se para não deixar os bornes com folga, pois os fios podem acabar saindo ou gerando mal contato. Atenção também com o posicionamento na hora de jumpear a nossa plaquinha, garantindo que os mesmos entrem até o final.

Código: Carrinho de controle remoto simples

Para que o nosso conjunto possa funcionar, vamos passar o programa do nosso carrinho para a placa compatível Arduino Uno. Para o código vamos precisar instalar a biblioteca Dabble.

Dito isso, vamos à gravação! Abra a IDE do Arduino e conecte a placa colocando o código a seguir:

#define CUSTOM_SETTINGS
#define INCLUDE_GAMEPAD_MODULE
#include <Dabble.h>
  
#define INT1 2
#define INT2 3
#define INT3 4
#define INT4 5
  
void setup()
{
  Serial.begin(250000);
  Dabble.begin(9600,7,6);  
  pinMode(INT1,OUTPUT);
  pinMode(INT2,OUTPUT);
  pinMode(INT3,OUTPUT);                                                                    
  pinMode(INT4,OUTPUT);
  Stop();
}
  
  
void loop() {
  
  
Dabble.processInput();          
  
if(GamePad.isUpPressed())
{
 forward(); 
}
else if(GamePad.isDownPressed())
{
 backward(); 
}
else if(GamePad.isLeftPressed())
{
 left(); 
}
else if(GamePad.isRightPressed())
{
 right(); 
}
else
{
 Stop(); 
}
  
}
void forward() {
  digitalWrite(INT1,LOW);
  digitalWrite(INT2,HIGH);
  digitalWrite(INT3,HIGH);
  digitalWrite(INT4,LOW);
}
     
void backward() {
  digitalWrite(INT1,HIGH);
  digitalWrite(INT2,LOW);
  digitalWrite(INT3,LOW);
  digitalWrite(INT4,HIGH);
}
     
void left() {
  digitalWrite(INT1,HIGH);
  digitalWrite(INT2,LOW);
  digitalWrite(INT3,HIGH);
  digitalWrite(INT4,LOW);    
}
     
void right() {
  digitalWrite(INT1,LOW);
  digitalWrite(INT2,HIGH);
  digitalWrite(INT3,LOW);
  digitalWrite(INT4,HIGH);  
}
     
void Stop() {
  digitalWrite(INT1,LOW);
  digitalWrite(INT2,LOW);
  digitalWrite(INT3,LOW);
  digitalWrite(INT4,LOW);  
}

Uma vez compilado e gravado o programa na nossa placa, basta agora baixar um aplicativo para controlarmos o nosso carrinho direto pelo celular. Eu, particularmente, gosto bastante do Dabble que serve para as plataformas mais populares!

Como fazer um carrinho de controle remoto simples com Bluetooth

Gostou de aprender a construir esse incrível carrinho por controle remoto? Então continue acompanhando o blog da Filipe Flop!

Faça seu comentário

Acesse sua conta e participe

53 Comentários

  1. Boa tarde. Por favor, sou iniciante nesta área, este mesmo código também funciona para esp32? Ou é preciso alguma modificação? Muito grato.

    1. Olá,

      O código não funciona com o ESP32, ele usa uma biblioteca diferente para comunicação com o Dabble, a DabbleESP32.
      E assim o código vai ser diferente também.

      Abraços!
      Vinícius – Equipe FilipeFlop

  2. B dia,
    Fiz esse carrinho usando tds os componentes, compilei a Steck para o arduíno n deu erro nenhum, porém o Dabble não consegue se conectar ao bluetooth, aparece na lista para select device com i nome no bluetooth, mas n conecta aparece a mensagem de(Selected device no suporte).
    O que posso fazer?

    1. Olá,

      Essa mensagem aparece no menu de configuração do bluetooth?
      Se sim, ele não irá conectar por esse menu, é preciso ir até a conexão dentro do Dabble, selecionar o dispositivo e fazer a conexão por lá.

      Abraços!
      Vinícius – Equipe FilipeFlop

    2. Olá,

      Essa mensagem aparece na configuração de bluetooth no celular, ou na hora de conectar no Dabble?

      A conexão precisa ser feita dentro do Dabble.

      Abraços!
      Vinícius – Equipe FilipeFlop

  3. Tem outro lugar que podíamos conversar melhor?

  4. Sketch uses 2322 bytes (7%) of program storage space. Maximum is 32256 bytes.
    Global variables use 126 bytes (6%) of dynamic memory, leaving 1922 bytes for local variables. Maximum is 2048 bytes.
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x64
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x64
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x64
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x64
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x64
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x64
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x64
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x64
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x64
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x64
    Failed uploading: uploading error: exit status 1

    está aparecendo esse erro qual o problema?

    1. Olá Pedro,

      Esse erro é que o gravador não está conseguindo se comunicar à placa, não tem a ver com o código do carrinho.

      Qual placa você está utilizando?

      Você pode conferir aqui os primeiros passos e verificar se está tudo configurado: https://www.filipeflop.com/blog/primeiros-passos-com-arduino/

      Abraços!
      Vinícius – Equipe FilipeFlop

      1. Estou usando a placa arduino uno, eu já selecionei a placa arduino uno
        Mas tem diferença Arduino Uno para ARDUINO genuíno/uno?
        No meu só aparece arduino Uno apenas não tem esse genuíno

        1. Pedro, possivelmente você está utilizando uma versão mais antiga da IDE>

          Tente utilizar a 1.8.19 ou a versão 2.0.0, ambas devem ter a placa Arduino Uno, mas não era para ter diferença para Arduino genuíno/uno

          Veja se você consegue carregar um exemplo simples como o Blink. Caso não consiga, é algum problema de configuração da IDE ou com a placa.

          Abraços!
          Vinícius – Equipe FilipeFlop

  5. Qual o programador?

  6. A porta COM não está aparecendo, não consigo nem selecionar nenhum qual o problema?

    1. Olá Pedro,

      Confira se o Arduino está sendo detectado pelo sistema operacional adequadamente, pode ser que esteja faltando o driver e por isso a porta COM não esteja aparecendo.

      Abraços!
      Vinícius – Equipe FilipeFlop

  7. O fio que ta ligado pilhas e no arduíno, e depois vai pro negócio vermelho, está ligado os dois juntos soldados?

    1. Olá Pedro,

      Corrigimos a imagem para incluir a chave.

      Abraços!
      Vinícius – Equipe FilipeFlop

    2. Olá Pedro,

      Pode ser encaixado no mesmo terminal e apertado junto, não precisa soldar.

      Abraços!
      Vinícius – Equipe FilipeFlop

  8. No caso o botão liga e desliga está ligado no que?

  9. Ola. No caso da chave liga-desliga é conectada ao que?

    1. Olá Vitor,

      Corrigimos a imagem para incluir a chave.

      Abraços!
      Vinícius – Equipe FilipeFlop

  10. Olá, o código funciona para 4 motores também?

    1. Olá Eri,

      Funciona se você ligar os motores aos pares e comandar os dois motores do mesmo lado com o mesmo par de pinos do Arduino.

      Abraços!
      Vinícius – Equipe FilipeFlop

  11. Quando vou colocar a sua programação no arduino aparece este erro: Platform ‘arduino:avr’ not found: platform not installed Compilation error: Platform ‘arduino:avr’ not found: platform not installed, oq faço?

    1. Olá,

      Pelo erro parece algum problema da IDE com o compilador, você consegue carregar algum outro código de exemplo como o Blink?

      Abraços!
      Vinícius – Equipe FilipeFlop

  12. Quando ligo o Arduino e a ponte h o motor fica ligado indefinidamente. Seria um erro de código ou de jumper ?

    1. Olá João,

      Provavelmente é algum erro de código. Tente este tutorial mais simples e veja se funciona normal: https://www.filipeflop.com/blog/motor-dc-arduino-ponte-h-l298n/

      Abraços!
      Vinícius – Equipe FilipeFlop

  13. Boa tarde. Não consegui entender qual humor devo tirar da ponte

  14. Guilherme, me tira uma dúvida, por favor!
    Sempre que tento conectar ao APP da erro, aí fiquei me perguntando se é pq não tem uma divisão de tensão pra tx e rx. Vi em vários lugares que precisa fazer.

    Realmente conseguimos montar sem a divisão de tensão?

    1. Olá Amanda,

      As tensões máxima de entrada do HC-05 e mínima de saída do arduino são próximas, por isso as vezes é usado sem divisor e não causa problemas, mas o mais indicado é que se utilize o divisor no RX do HC-05. Agora no TX do HC-05 não deve ter divisor, pois a saída dele mínima de nível alto é 3,1 V, e a mínima para detecção de nível alto no arduino é 3V. Caso coloque o divisor resistivo irá ficar menor a tensão e terá erro de comunicação.

      Abraços!
      Vinícius – Equipe FilipeFlop

  15. Ola, sobre o carrinho de controle remoto eu consigo deixa-lo Robô autônomo , ou seja ele para nos obstaculos, teria que ter sensor isso? Vcs possuem para vender ?

    1. Olá,

      Temos este post aqui que mostra como fazer um robô que desvia de obstáculos, mas que poderia ser configurado também para parar em frete à obstáculos:
      https://www.filipeflop.com/blog/construa-seu-robo-que-desvia-de-obstaculos-com-arduino/

      Abraços!
      Vinícius – Equipe FilipeFlop

  16. Boa noite, por favor ao de consigo todos os itens do carrinho de controle para comprar? Menos o arduino Uno que já tenho.

    1. Olá,

      Estamos em falta de alguns itens no momento, mas você pode ver a lista de materiais necessários a direita no topo do post.

      Abraços!
      Vinícius – Equipe FilipeFlop

  17. gostaria de saber qual simulador de Arduino e utilizado nessa apresentação?????

    1. Olá Jefferson,

      A ilustração vem do software Fritzing, mas ele não realiza simulação, apenas o esquemático.

      Abraços!
      Vinícius – Equipe FilipeFlop

  18. Bom dia.
    Não tá faltando a biblioteca pro módulo bluetooth?

    1. Olá Natan!

      Não é preciso nesse caso pois esse módulo realiza comunicação serial, ele está conectado nos pinos Tx e Rx do Arduino e o Serial faz a leitura ou escrita nesses pinos.

      Abraços!
      Vinícius – Equipe FilipeFlop

  19. Você pode me ajudar a corrigir esse erro?

    “Stop” was not declared in this scope

    1. Olá!

      Verifique se você copiou todas as linhas do código.

      Stop é declarado nas últimas linhas, da 71 em diante.

      Abraços!
      Vinícius – Equipe FilipeFlop

  20. Não consigo desconectar o arduino do computador, quando eu desconecto tudo desliga e só a ponte fica ligada. Também, não estou conseguindo controlar pelo aplicativo, mesmo tudo estando conectado certo.

    O que faço?

  21. Boa noite , nao estou conseguindo controlar pelo dabble, copiei o codigo acima e mandei pelo controlador uno deu ok mas na hora de controlar no controle dabble nao vai . pode me ajudar ?

    1. Olá Evandro,

      Estou verificando a situação do HC-05 conforme conversamos via telefone.

      Abraços!
      Vinícius – Equipe FilipeFlop

      1. boa tarde , conseguiu verificar a comunicacao com dabble ? ate agora nao conseguir funcionar nada. no monitor serial aparece monte caractere quando clico no comando dabble.

        1. Olá Evandro,

          Estamos seguindo a avaliação por e-mail.

          Abraços!
          Vinícius – Equipe FilipeFlop

  22. boa noite guilherme ganhei de um cliente um carrinho de controle remoto só que o carrinho não tem mais o controle remoto como eu posso fazer um controle remoto para o meu carrinho vc me ajudaria ?

    1. Olá Alexandre,

      É difícil saber que tipo de comunicação e frequência que o carrinho utiliza para fazer um novo controle.

      Acredito que seria mais fácil fazer um novo controlador e adaptá-lo no carrinho, baseado nesse post aqui, por exemplo.

      Abraços!
      Vinícius – Equipe FilipeFlop

  23. ola amigao, fiz tudo direitinho, arduino, fonte, ponte h, bluetooth tudo funcionando, quando passo o codigo, infelizente não funciona, testei outros codigo pra testar e funciona normal os motores e tudo. revise seu codigo, um abraço

    1. Olá Altemar,

      O que ocorre com o código do post?

      O problema é no funcionamento do carrinho, ou não consegue carregar o código?

      Abraços!
      Vinícius – Equipe FilipeFlop

  24. Os códigos dos comandos left e right estão errados. o código correto provável é:
    void left()
    {
    motor1.run(BACKWARD);
    motor2.run(FORWARD);
    }
    void right()
    {
    motor1.run(FORWARD);
    motor2.run(BACKWARD);
    }

    1. Bom dia , tudo bom ? vc pode me ajudar a corrigir o erro que aparece

      :1:10: fatal error: AFMotor.h: No such file or directory

      #include

      1. Olá Evandro,

        Você precisa instalar a biblioteca Adafruit Motor Shield Library pelo gerenciador de bibliotecas na IDE do Arduino.

        Isso irá resolver o erro.

        Abraços!
        Vinícius – Equipe FilipeFlop

  25. como estou tentando montar esse seu projeto, so quer nos pneus da frente gostaria de implantar um servo motor para controlar direçao, e codigo direcional,poderia mim ajudar?

    1. Olá Carlos,

      Você pode lançar a sua ideia e dúvidas na nossa comunidade do Facebook, por lá o pessoal Maker está compartilhando conhecimento e projetos. Veja só: https://www.facebook.com/groups/272908123918982

      Abraços!
      Vinícius – Equipe FilipeFlop