Arduino Nano ESP32 - Carro

Uma das coisas mais legais para experimentar quando você está começando com o Arduino Nano ESP32 é fazer um carro robô. Neste guia, vamos aprender a usar o Arduino Nano ESP32 para construir um carro robô e controlá-lo com um controle remoto IR. Para controlar o carro robô pela Web (Wifi), veja o tutorial Arduino Nano ESP32 controla Carro pela Web.

Arduino Nano ESP32 IR remote control car

Sobre o Carro Robô

No contexto do Arduino Nano ESP32, o carro robô costuma ser chamado por nomes diferentes, como carro robô, carro RC, carro de controle remoto, carro inteligente ou carro DIY. Ele pode ser controlado à distância, sem fios. Você pode usar um controle remoto especial que usa luz infravermelha ou um aplicativo de celular via Bluetooth ou WiFi. O carro robô pode ir para a esquerda ou para a direita e também pode ir para frente ou para trás.

Um carro 2WD (Two-Wheel Drive, tração em duas rodas) para Arduino Nano ESP32 é um pequeno veículo robótico que você pode montar e controlar usando uma placa Arduino Nano ESP32. 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 locomoção 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 Nano ESP32 e os motores. Ela recebe sinais do Arduino Nano ESP32 e fornece a energia e o controle necessários aos motores.
  • Placa Arduino Nano ESP32: o cérebro do carro. Ela lê as entradas dos sensores e os comandos do usuário e controla os motores de acordo.
  • Fonte de Energia: o carro 2WD precisa de uma fonte de energia, geralmente pilhas e um suporte de pilhas, para alimentar os motores e a placa Arduino Nano ESP32.
  • 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 evitar obstáculos, sensores seguidores de linha) e mais.

Neste tutorial, para deixar as coisas simples, vamos usar:

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

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

Como Funciona

Arduino Nano ESP32 2WD car how it work
  • O Arduino Nano ESP32 se conecta aos motores DC do carro robô através do módulo driver de motor L9110S.
  • O Arduino Nano ESP32 se conecta a um receptor IR.
  • A bateria alimenta o ESP32, os motores DC, o driver de motor e o receptor IR.
  • Os usuários pressionam as teclas UP/DOWN/LEFT/RIGHT/OK no controle remoto IR.
  • O Arduino Nano ESP32 recebe os comandos UP/DOWN/LEFT/RIGHT/OK através do receptor IR.
  • O Arduino Nano ESP32 controla o carro para se mover para FRENTE/TRÁS/ESQUERDA/DIREITA/PARAR controlando o motor DC através do driver de motor.

Diagrama de Ligação

The wiring diagram between Arduino Nano ESP32 and 2WD car

This image is created using Fritzing. Click to enlarge image

O módulo L9110S alimenta os motores diretamente pelos pinos VCC e GND e não tem um regulador de 5V embutido. Isso significa que você pode alimentar tudo com uma única fonte de energia — 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 Nano ESP32 para alimentar o Arduino Nano ESP32 (o receptor IR é alimentado pelo pino 5V do Arduino Nano ESP32).
  • Certifique-se de que o módulo L9110S, a placa Arduino Nano ESP32 e o receptor IR compartilhem um GND comum.

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

Código Arduino Nano ESP32

/* * Este código de Arduino Nano ESP32 foi desenvolvido por pt.newbiely.com * Este código de Arduino Nano ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/arduino-nano-esp32/arduino-nano-esp32-car */ #include <DIYables_IRcontroller.h> // IR Remote Controller library #define IR_RECEIVER_PIN D11 // The Arduino Nano ESP32 pin connected to IR receiver #define MOTOR_A_IA_PIN D5 // The Arduino Nano ESP32 pin connected to the A-IA pin of the L9110S (Motor A) #define MOTOR_A_IB_PIN D6 // The Arduino Nano ESP32 pin connected to the A-IB pin of the L9110S (Motor A) #define MOTOR_B_IA_PIN D9 // The Arduino Nano ESP32 pin connected to the B-IA pin of the L9110S (Motor B) #define MOTOR_B_IB_PIN D10 // The Arduino Nano ESP32 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("CAR - MOVING FORWARD"); CAR_moveForward(); break; case Key17::KEY_DOWN: Serial.println("CAR - MOVING BACKWARD"); CAR_moveBackward(); break; case Key17::KEY_LEFT: Serial.println("CAR - TURNING LEFT"); CAR_turnLeft(); break; case Key17::KEY_RIGHT: Serial.println("CAR - TURNING RIGHT"); CAR_turnRight(); break; case Key17::KEY_OK: Serial.println("CAR - 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

  • Se esta é a primeira vez que você usa o Arduino Nano ESP32, veja como configurar o ambiente para o Arduino Nano ESP32 no Arduino IDE.
  • Instale a biblioteca DIYables_IRcontroller no Arduino IDE seguindo esta instrução
  • Faça a ligação como mostra o diagrama acima.
  • Desconecte o fio do Vin do ESP32 porque vamos alimentar o Arduino Nano ESP32 pelo cabo USB ao fazer o upload do código.
  • Vire o carro de cabeça para baixo para que as rodas fiquem em cima.
  • Conecte a placa Arduino Nano ESP32 ao seu PC por um cabo USB
  • Abra o Arduino IDE no seu PC.
  • Selecione a placa Arduino Nano ESP32 correta (por exemplo, Arduino Nano ESP32 e a porta COM.
  • Copie o código fornecido e abra no Arduino IDE.
  • Clique no botão Upload no Arduino IDE para transferir o código para o Arduino Nano ESP32.
  • Use o controle remoto IR para fazer o carro andar para frente, para trás, para a esquerda, para a direita ou parar.
  • Verifique se as rodas se movem corretamente de acordo com seus comandos.
  • Se as rodas se moverem no sentido errado, troque os fios do motor DC no módulo L9110S.
  • Você também pode ver os resultados no Serial Monitor no Arduino IDE.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Arduino Nano ESP32
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Nano ESP32' on 'COM15')
New Line
9600 baud
CAR - MOVING FORWARD CAR - MOVING BACKWARD CAR - TURNING LEFT CAR - TURNING RIGHT CAR - STOP
Ln 11, Col 1
Arduino Nano ESP32 on COM15
2
  • Se tudo estiver indo bem, desconecte o cabo USB do ESP32 e depois conecte o fio de volta ao pino Vin 5V. Isso vai alimentar o Arduino Nano ESP32 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 vendo os tutoriais a seguir:

Você pode estender 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 Nano ESP32 - Motor DC). O código fornecido controla o carro em velocidade máxima.

Vídeo

※ 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!