ESP32 - Carrinho

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

Carrinho com controle remoto IR e ESP32

Sobre o Carrinho Robô

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

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

  • Chassi: a base ou estrutura do carrinho, onde todos os outros componentes são montados.
  • Rodas: as duas rodas que fazem o carrinho se locomover. Elas são acopladas 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 ESP32 e os motores. Ela recebe sinais do ESP32 e fornece a energia e o controle necessários aos motores.
  • Placa ESP32: o cérebro do carrinho. Ela lê as entradas dos sensores e os comandos do usuário e controla os motores de acordo.
  • Fonte de Alimentação: o carrinho 2WD precisa de uma fonte de alimentação, geralmente pilhas e um suporte de pilhas, para alimentar os motores e a placa ESP32.
  • Receptor sem fio: um módulo infravermelho, Bluetooth ou WiFi para comunicação sem fio com um controle remoto ou smartphone.
  • 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 carrinho 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 carrinho 2WD com ESP32
  • O ESP32 se conecta aos motores DC do carrinho robô por meio do módulo driver de motor L9110S.
  • O ESP32 se conecta a um receptor IR.
  • A bateria alimenta o ESP32, 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 ESP32 recebe os comandos UP/DOWN/LEFT/RIGHT/OK por meio do receptor IR.
  • O ESP32 faz o carrinho se mover para FRENTE/TRÁS/ESQUERDA/DIREITA/PARAR controlando os motores DC por meio do driver de motor.

Diagrama de Ligação

O diagrama abaixo mostra como conectar o ESP32, o driver de motor L9110S, os dois motores DC e o receptor IR, usando uma protoboard para compartilhar as linhas comuns de alimentação e terra:

Diagrama de ligação do carrinho robô 2WD com ESP32 em uma protoboard

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Observação: o diagrama acima mostra a ligação correta. Na prática, encaixar vários fios (como as linhas compartilhadas de VCC e GND) no mesmo furo do conector de pinos do ESP32 não é fácil. Uma solução prática é usar uma placa breakout com bornes de parafuso para ESP32 — vários fios podem ser presos no mesmo borne de parafuso, ou um fio no parafuso e outro no pino do conector ao lado.

Diagrama de ligação do carrinho robô 2WD com ESP32 usando bornes de parafuso

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 embutido. 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 fazer:

  • 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 ESP32 para alimentar o ESP32 (o receptor IR é alimentado pelo pino 5V do ESP32).
  • Certifique-se de que o módulo L9110S, a placa ESP32 e o receptor IR compartilhem um GND comum.

Ao contrário do L298N, o L9110S não tem jumpers de habilitação ENA/ENB nem borne de parafuso de 12V, então a ligação é mais simples.

Código ESP32

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-car */ #include <DIYables_IRcontroller.h> // IR Remote Controller library #define IR_RECEIVER_PIN 13 // The ESP32 pin GPIO13 connected to IR receiver #define MOTOR_A_IA_PIN 14 // The ESP32 pin GPIO14 connected to the A-IA pin of the L9110S (Motor A) #define MOTOR_A_IB_PIN 27 // The ESP32 pin GPIO27 connected to the A-IB pin of the L9110S (Motor A) #define MOTOR_B_IA_PIN 33 // The ESP32 pin GPIO33 connected to the B-IA pin of the L9110S (Motor B) #define MOTOR_B_IB_PIN 32 // The ESP32 pin GPIO32 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 ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.
  • 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 ESP32, porque vamos alimentar o ESP32 pelo cabo USB durante o upload do código.
  • Vire o carrinho de cabeça para baixo, de modo que as rodas fiquem para cima.
  • Conecte a placa ESP32 ao seu PC por meio de um cabo USB Type-C
  • Abra a Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (ex.: ESP32 Dev Module) e a porta COM.
  • 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 ESP32.
  • Use o controle remoto IR para fazer o carrinho 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 para o lado 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
ESP32 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32 Dev Module' on 'COM15')
New Line
9600 baud
CAR - MOVING FORWARD CAR - MOVING BACKWARD CAR - TURNING LEFT CAR - TURNING RIGHT CAR - STOP
Ln 11, Col 1
ESP32 Dev Module on COM15
2
  • Se tudo estiver funcionando bem, desconecte o cabo USB do ESP32 e, em seguida, conecte o fio de volta ao pino Vin. Isso vai fornecer energia ao ESP32 a partir da bateria.
  • Vire o carrinho de volta à posição normal, com as rodas no chão.
  • Divirta-se controlando o carrinho!

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 ampliar este projeto:

  • Adicionando sensores para desviar de obstáculos, que param o carrinho imediatamente se um obstáculo for detectado.
  • Adicionando uma função para controlar a velocidade do carrinho (veja o tutorial ESP32 - Motor DC). O código fornecido controla o carrinho na 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!