Arduino - Carro

Um dos projetos mais empolgantes para iniciantes no Arduino é criar um carro robô com Arduino. Neste tutorial, vamos descobrir como usar o Arduino para construir um carro robô e controlá-lo com um controle remoto IR. Também vamos conhecer outro tutorial, onde aprenderemos a transformá-lo em um carro controlado por Bluetooth.

Carro com controle remoto IR e Arduino

Sobre o Carro Robô

No contexto do Arduino, o carro robô é geralmente chamado de carro robô, carro RC, carro de controle remoto, carro inteligente ou carro DIY. Ele pode ser controlado à distância e sem fio usando um controle remoto IR ou um aplicativo de celular via Bluetooth/WiFi... O carro robô pode virar à esquerda ou à direita e se mover para frente ou para trás.

Um carro 2WD (tração em duas rodas) para Arduino é um pequeno veículo robótico que você pode montar e controlar usando uma placa Arduino. Ele normalmente é composto pelos seguintes componentes:

  • Chassi: a base ou estrutura do carro, onde todos os outros componentes são montados.
  • Rodas: as duas rodas que dão movimento ao carro. Elas são presas a dois motores DC.
  • Motores: dois motores DC são usados para acionar as duas rodas.
  • Driver de Motor: a placa driver de motor é um componente essencial que faz a interface entre o Arduino e os motores. Ela recebe sinais do Arduino e fornece a energia e o controle necessários aos motores.
  • Placa Arduino: o cérebro do carro. Ela lê as entradas dos sensores e os comandos do usuário e controla os motores de acordo com eles.
  • Fonte de Alimentação: o carro 2WD precisa de uma fonte de alimentação, geralmente pilhas e um suporte de pilhas, para alimentar os motores e a placa Arduino.
  • Receptor sem fio: um módulo infravermelho, Bluetooth ou WiFi para comunicação sem fio com um controle remoto ou celular.
  • Componentes Opcionais: dependendo da complexidade do seu projeto, você pode adicionar vários componentes opcionais, como sensores (por exemplo, sensores ultrassônicos para desviar de obstáculos, sensores seguidores de linha) e muito mais.

Neste tutorial, para simplificar, vamos usar:

  • Kit de carro 2WD (incluindo chassi, rodas, motores e suporte de pilhas)
  • Driver de Motor L9110S
  • Kit infravermelho IR (incluindo controle IR e receptor IR)

Confira a lista de hardware no topo desta página.

Como Funciona

Como funciona o carro 2WD com Arduino
  • O Arduino se conecta aos motores DC do carro robô através do módulo driver de motor L9110S.
  • O Arduino se conecta a um receptor IR.
  • A bateria alimenta o Arduino, os motores DC, o driver de motor e o receptor IR.
  • O usuário pressiona as teclas UP/DOWN/LEFT/RIGHT/OK no controle remoto IR.
  • O Arduino recebe os comandos UP/DOWN/LEFT/RIGHT/OK através do receptor IR.
  • O Arduino faz o carro ir para FRENTE/TRÁS/ESQUERDA/DIREITA/PARAR controlando os motores DC através do driver de motor.

Diagrama de Ligação

Diagrama de Ligação do carro 2WD com Arduino

This image is created using Fritzing. Click to enlarge image

O módulo L9110S alimenta os motores diretamente pelos seus pinos VCC e GND e não possui um regulador de 5V na placa. Isso significa que você pode alimentar tudo a partir de uma única fonte de alimentação — quatro pilhas AA de 1,5V (totalizando 6V). Veja como podemos fazer isso:

  • Conecte a bateria de 6V aos pinos VCC e GND do módulo L9110S para alimentar os motores.
  • Conecte a mesma bateria de 6V aos pinos Vin e GND da placa Arduino para alimentar o Arduino (o receptor IR é alimentado pelo pino 5V do Arduino).
  • Certifique-se de que o módulo L9110S, a placa Arduino e o receptor IR compartilham um GND comum.

Diferente do L298N, o L9110S não tem jumpers de habilitação ENA/ENB nem bornes de parafuso de 12V, então a ligação é mais simples.

Observe que, durante o período de desenvolvimento, quando você precisar conectar o cabo USB ao Arduino para programá-lo, você DEVE desconectar a alimentação entre a bateria e a placa Arduino, removendo um fio do pino Vin. A placa Arduino não deve ser alimentada por duas fontes de alimentação ao mesmo tempo.

Código Arduino

/* * Este código de Arduino foi desenvolvido por pt.newbiely.com * Este código de Arduino é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino/arduino-car */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN 3 // The Arduino pin connected to IR receiver #define MOTOR_A_IA_PIN 5 // The Arduino pin connected to the A-IA pin of the L9110S (Motor A) #define MOTOR_A_IB_PIN 6 // The Arduino pin connected to the A-IB pin of the L9110S (Motor A) #define MOTOR_B_IA_PIN 9 // The Arduino pin connected to the B-IA pin of the L9110S (Motor B) #define MOTOR_B_IB_PIN 10 // The Arduino pin connected to the B-IB pin of the L9110S (Motor B) DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms void setup() { Serial.begin(9600); irController.begin(); pinMode(MOTOR_A_IA_PIN, OUTPUT); pinMode(MOTOR_A_IB_PIN, OUTPUT); pinMode(MOTOR_B_IA_PIN, OUTPUT); pinMode(MOTOR_B_IB_PIN, OUTPUT); } void loop() { Key17 key = irController.getKey(); if (key != Key17::NONE) { switch (key) { case Key17::KEY_UP: Serial.println("MOVING FORWARD"); CAR_moveForward(); break; case Key17::KEY_DOWN: Serial.println("MOVING BACKWARD"); CAR_moveBackward(); break; case Key17::KEY_LEFT: Serial.println("TURNING LEFT"); CAR_turnLeft(); break; case Key17::KEY_RIGHT: Serial.println("TURNING RIGHT"); CAR_turnRight(); break; case Key17::KEY_OK: Serial.println("STOP"); CAR_stop(); break; default: Serial.println("WARNING: unused key:"); break; } } } void CAR_moveForward() { digitalWrite(MOTOR_A_IA_PIN, HIGH); digitalWrite(MOTOR_A_IB_PIN, LOW); digitalWrite(MOTOR_B_IA_PIN, HIGH); digitalWrite(MOTOR_B_IB_PIN, LOW); } void CAR_moveBackward() { digitalWrite(MOTOR_A_IA_PIN, LOW); digitalWrite(MOTOR_A_IB_PIN, HIGH); digitalWrite(MOTOR_B_IA_PIN, LOW); digitalWrite(MOTOR_B_IB_PIN, HIGH); } void CAR_turnLeft() { digitalWrite(MOTOR_A_IA_PIN, HIGH); digitalWrite(MOTOR_A_IB_PIN, LOW); digitalWrite(MOTOR_B_IA_PIN, LOW); digitalWrite(MOTOR_B_IB_PIN, LOW); } void CAR_turnRight() { digitalWrite(MOTOR_A_IA_PIN, LOW); digitalWrite(MOTOR_A_IB_PIN, LOW); digitalWrite(MOTOR_B_IA_PIN, HIGH); digitalWrite(MOTOR_B_IB_PIN, LOW); } void CAR_stop() { digitalWrite(MOTOR_A_IA_PIN, LOW); digitalWrite(MOTOR_A_IB_PIN, LOW); digitalWrite(MOTOR_B_IA_PIN, LOW); digitalWrite(MOTOR_B_IB_PIN, LOW); }

Passos Rápidos

  • Instale a biblioteca DIYables_IRcontroller na Arduino IDE seguindo esta instrução
  • Faça a ligação conforme o diagrama mostrado acima.
  • Desconecte o fio do pino Vin do Arduino, porque vamos alimentar o Arduino pelo cabo USB ao carregar o código.
  • Vire o carro de cabeça para baixo, de modo que as rodas fiquem para cima.
  • Conecte o Arduino ao seu computador usando o cabo USB.
  • Copie o código fornecido e abra-o na Arduino IDE.
  • Clique no botão Upload na Arduino IDE para transferir o código para o Arduino.
  • Use o controle remoto IR para fazer o carro ir para frente, para trás, para a esquerda, para a direita ou parar.
  • Verifique se as rodas se movem corretamente de acordo com os seus comandos.
  • Se as rodas girarem no sentido errado, inverta os fios do motor DC no módulo L9110S.
  • Você também pode ver os resultados no Serial Monitor da Arduino IDE.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
MOVING FORWARD MOVING BACKWARD TURNING LEFT TURNING RIGHT STOP
Ln 11, Col 1
Arduino Uno on COM15
2
  • Se tudo estiver funcionando bem, desconecte o cabo USB do Arduino e conecte novamente o fio ao pino Vin para alimentar o Arduino pela bateria.
  • Vire o carro de volta à posição normal, com as rodas no chão.
  • Divirta-se controlando o carro!

Explicação do Código

Leia a explicação linha por linha nas linhas de comentário do código!

Você pode aprender mais sobre o código consultando os seguintes tutoriais:

Você pode expandir este projeto:

  • Adicionando sensores de desvio de obstáculos para parar o carro imediatamente se um obstáculo for detectado.
  • Adicionando uma função para controlar a velocidade do carro (veja o tutorial Arduino - Motor DC). O código fornecido controla o carro em velocidade máxima.

Vídeo

Tutoriais Relacionados

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!