ESP8266 - Carro

Uma das coisas mais legais para experimentar quando você está começando com o ESP8266 é fazer um carro robô. Neste guia, vamos aprender a usar o ESP8266 para construir um carro robô e controlá-lo com um controle remoto IR. Vamos aprender a fazer um carro robô Bluetooth em outro tutorial.

Carro controlado por controle remoto IR

Sobre o Carro Robô

No contexto do ESP8266, 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 (tração em duas rodas) para ESP8266 é um pequeno veículo robótico que você pode montar e controlar usando uma placa ESP8266. 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 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 ESP8266 e os motores. Ela recebe os sinais do ESP8266 e fornece a energia e o controle necessários aos motores.
  • Placa ESP8266: 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 ESP8266.
  • 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 simplificar, 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

Como o carro 2WD com ESP8266 NodeMCU funciona
  • O ESP8266 se conecta aos motores DC do carro robô por meio do módulo driver de motor L9110S.
  • O ESP8266 se conecta a um receptor IR.
  • A bateria alimenta o ESP8266, 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 ESP8266 recebe os comandos UP/DOWN/LEFT/RIGHT/OK por meio do receptor IR.
  • O ESP8266 controla o carro para se mover para FRENTE/TRÁS/ESQUERDA/DIREITA/PARAR controlando o motor DC por meio do driver de motor.

Diagrama de Ligação

Diagrama de ligação do carro 2WD com ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.

O módulo L9110S alimenta os motores diretamente a partir dos seus pinos VCC e GND e não tem um regulador de 5V na placa. Isso significa que você pode alimentar tudo com uma única fonte de energia — 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 do ESP8266 para alimentar a placa ESP8266 (o receptor IR é alimentado pela própria fonte da placa).
  • Certifique-se de que o módulo L9110S, o ESP8266 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 12V, então a ligação é mais simples.

Código ESP8266

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp8266/esp8266-car */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN D1 // The ESP8266 pin connected to IR receiver #define MOTOR_A_IA_PIN D2 // The ESP8266 pin connected to the A-IA pin of the L9110S (Motor A) #define MOTOR_A_IB_PIN D5 // The ESP8266 pin connected to the A-IB pin of the L9110S (Motor A) #define MOTOR_B_IA_PIN D6 // The ESP8266 pin connected to the B-IA pin of the L9110S (Motor B) #define MOTOR_B_IB_PIN D7 // The ESP8266 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

Para começar com o ESP8266 no Arduino IDE, siga estes passos:

  • Veja o tutorial como configurar o ambiente para o ESP8266 no Arduino IDE se esta for a sua primeira vez usando o ESP8266.
  • Conecte a placa ESP8266 ao seu computador usando um cabo USB.
  • Abra o Arduino IDE no seu computador.
  • Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a porta COM correspondente.
  • Instale a biblioteca DIYables_IRcontroller no Arduino IDE seguindo esta instrução
  • Faça a ligação como mostrado no diagrama acima.
  • Desconecte o fio do Vin do ESP8266 porque vamos alimentar o ESP8266 pelo cabo USB ao carregar o código.
  • Vire o carro de cabeça para baixo para que as rodas fiquem para cima.
  • Copie o código fornecido e abra-o no Arduino IDE.
  • Clique no botão Upload no Arduino IDE para transferir o código ao ESP8266.
  • 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 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 do Arduino IDE.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
Nodemcu 1.0 (ESP-12E Module)
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Nodemcu 1.0 (ESP-12E 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
Nodemcu 1.0 (ESP-12E Module) on COM15
2
  • Se tudo estiver indo bem, desconecte o cabo USB do ESP8266 e depois conecte o fio de volta ao pino Vin 5V. Isso vai alimentar o ESP8266 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 tutoriais a seguir:

Você pode ampliar este projeto:

  • Adicionando sensores de prevenção 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 ESP8266 - 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!