ESP32 - Coche

Una de las cosas más geniales que puedes probar si recién empiezas con ESP32 es hacer un coche robótico. En esta guía, aprenderemos a usar ESP32 para construir un coche robótico y controlarlo con un mando a distancia por infrarrojos. Para controlar el coche robótico a través de la Web (Wi‑Fi), consulta el tutorial ESP32 controla el coche vía Web.

Coche de control remoto por infrarrojos con ESP32

Acerca de Robot Car

En el contexto del ESP32, el coche robot suele llamarse por diferentes nombres, como coche robot, coche RC, coche de control remoto, coche inteligente o coche DIY. Se puede controlar a distancia sin cables. Puede usarse ya sea un control remoto especial que use luz infrarroja o una aplicación para teléfonos inteligentes mediante Bluetooth o WiFi. El coche robot puede ir hacia la izquierda o hacia la derecha y también avanzar o retroceder.

Un coche con tracción en dos ruedas (2WD) para ESP32 es un pequeño vehículo robótico que puedes construir y controlar usando una placa ESP32. Generalmente consta de los siguientes componentes:

  • Chasis: la base o marco del coche, donde se montan todos los demás componentes.
  • Ruedas: Las dos ruedas que proporcionan locomoción al coche. Están conectadas a dos motores DC.
  • Motores: Dos motores DC se utilizan para impulsar las dos ruedas.
  • Controlador de motores: La placa controladora de motores es un componente esencial que hace de interfaz entre el ESP32 y los motores. Toma señales del ESP32 y proporciona la potencia y el control necesarios a los motores.
  • Placa ESP32: El cerebro del coche. Lee las entradas de los sensores y los comandos del usuario y controla los motores en consecuencia.
  • Fuente de alimentación: El coche de tracción en dos ruedas (2WD) requiere una fuente de alimentación, usualmente baterías y un portabaterías, para alimentar los motores y la placa ESP32.
  • Receptor inalámbrico: Un módulo infrarrojo, Bluetooth o WiFi para comunicación inalámbrica con un control remoto o teléfono inteligente.
  • Componentes opcionales: Dependiendo de la complejidad de tu proyecto, puedes añadir varios componentes opcionales como sensores (p. ej., sensores ultrasónicos para evitar obstáculos, sensores de seguimiento de línea), y más.

En este tutorial, para simplificarlo, usaremos:

  • Kit de coche 2WD (incluye chasis, ruedas, motores, soporte para batería)
  • Controlador de motor L298N
  • Kit infrarrojo (incluye controlador IR y receptor IR)

Revisa la lista de hardware en la parte superior de esta página.

Cómo funciona

Coche 2WD con ESP32, ¿cómo funciona?
  • ESP32 se conecta a los motores de corriente continua del robot a través del módulo controlador de motor L298N.
  • ESP32 se conecta a un receptor IR.
  • La batería alimenta al ESP32, a los motores de corriente continua, al módulo controlador de motor y al receptor IR.
  • Los usuarios presionan las teclas ARRIBA/ABAJO/IZQUIERDA/DERECHA/OK en el control remoto IR.
  • ESP32 recibe los comandos ARRIBA/ABAJO/IZQUIERDA/DERECHA/OK a través del receptor IR.
  • El ESP32 controla el coche para avanzar/retroceder/girar a la izquierda/girar a la derecha/detenerse mediante el control de los motores de corriente continua a través del módulo controlador de motor.

Diagrama de Cableado

Diagrama de cableado de coche 2WD para ESP32

This image is created using Fritzing. Click to enlarge image

Si no sabe c\u00f3mo alimentar ESP32 y otros componentes, encuentre instrucciones en el siguiente tutorial: C\u00f3mo alimentar ESP32.

Diagrama de cableado de coche ESP32 2WD

Normalmente, se requieren dos fuentes de energía:

  • Uno para el motor (indirectamente a través del módulo L298N).
  • Otro para la placa ESP32, el módulo L298N y el receptor IR.

Sin embargo, hay un método para simplificar esto usando únicamente una fuente de energía para todo. Puedes lograrlo utilizando cuatro baterías de 1,5 V (un total de 6 V). Así es como puedes hacerlo:

  • Conecta las baterías al módulo L298N como se muestra en el diagrama.
  • Retira dos jumpers que conectan los pines ENA y ENB a 5 voltios en el módulo L298N.
  • Coloca un jumper etiquetado 5VEN, que está marcado con un círculo amarillo en el diagrama.
  • Conecta el pin 12V en la terminal de tornillo del módulo L298N al pin Vin de la placa ESP32. Esto proporciona energía al ESP32 directamente de las baterías (6V).

Código ESP32

/* * Este código de ESP32 fue desarrollado por es.newbiely.com * Este código de ESP32 se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.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 ENA_PIN 14 // The ESP32 pin GPIO14 connected to the ENA pin L298N #define IN1_PIN 27 // The ESP32 pin GPIO27 connected to the IN1 pin L298N #define IN2_PIN 26 // The ESP32 pin GPIO26 connected to the IN2 pin L298N #define IN3_PIN 25 // The ESP32 pin GPIO25 connected to the IN3 pin L298N #define IN4_PIN 33 // The ESP32 pin GPIO33 connected to the IN4 pin L298N #define ENB_PIN 32 // The ESP32 pin GPIO32 connected to the ENB pin L298N DIYables_IRcontroller_17 irController(IR_RECEIVER_PIN, 200); // debounce time is 200ms void setup() { Serial.begin(9600); irController.begin(); pinMode(ENA_PIN, OUTPUT); pinMode(IN1_PIN, OUTPUT); pinMode(IN2_PIN, OUTPUT); pinMode(IN3_PIN, OUTPUT); pinMode(IN4_PIN, OUTPUT); pinMode(ENB_PIN, OUTPUT); digitalWrite(ENA_PIN, HIGH); // set full speed digitalWrite(ENB_PIN, HIGH); // set full speed } 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(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW); digitalWrite(IN3_PIN, HIGH); digitalWrite(IN4_PIN, LOW); } void CAR_moveBackward() { digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, HIGH); digitalWrite(IN3_PIN, LOW); digitalWrite(IN4_PIN, HIGH); } void CAR_turnLeft() { digitalWrite(IN1_PIN, HIGH); digitalWrite(IN2_PIN, LOW); digitalWrite(IN3_PIN, LOW); digitalWrite(IN4_PIN, LOW); } void CAR_turnRight() { digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW); digitalWrite(IN3_PIN, HIGH); digitalWrite(IN4_PIN, LOW); } void CAR_stop() { digitalWrite(IN1_PIN, LOW); digitalWrite(IN2_PIN, LOW); digitalWrite(IN3_PIN, LOW); digitalWrite(IN4_PIN, LOW); }

Pasos R\u00e1pidos

  • Si es la primera vez que usas ESP32, consulta cómo configurar el entorno para ESP32 en Arduino IDE.
  • Instala la biblioteca DIYables_IRcontroller en el IDE de Arduino siguiendo esta instrucción.
  • Realiza el cableado tal como se muestra en el diagrama de arriba.
  • Desconecta el cable del Vin en el ESP32 porque alimentaremos el ESP32 a través del cable USB cuando carguemos el código.
  • Da la vuelta al coche para que las ruedas queden en la parte superior.
  • Conecta la placa ESP32 a tu PC mediante un cable micro USB.
  • Abre el IDE de Arduino en tu PC.
  • Selecciona la placa ESP32 correcta (p. ej. ESP32 Dev Module) y el puerto COM.
  • Copia el código proporcionado y ábrelo en el IDE de Arduino.
  • Haz clic en el botón Subir en el IDE de Arduino para transferir el código al ESP32.
  • Utiliza el control remoto IR para hacer que el coche avance, retroceda, gire a la izquierda, gire a la derecha o se detenga.
  • Verifica si las ruedas se mueven correctamente de acuerdo con tus comandos.
  • Si las ruedas se mueven en la dirección incorrecta, intercambia los cables del motor DC en el módulo L298N.
  • También puedes ver los resultados en el Monitor Serial del IDE de Arduino.
COM6
Send
CAR - MOVING FORWARD CAR - MOVING BACKWARD CAR - TURNING LEFT CAR - TURNING RIGHT CAR - STOP
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Si todo va bien, desconecta el cable USB del ESP32 y luego conecta de nuevo el cable al pin Vin 5V. Esto dará energía al ESP32 desde la batería.
  • Haz que el coche vuelva a su posición normal con las ruedas en el suelo.
  • ¡Diviértete controlando el coche!

Explicación del código

Puedes encontrar la explicación en la línea de comentarios del código de Arduino anterior.

Puede aprender más sobre el código consultando los siguientes tutoriales:

Puedes ampliar este proyecto mediante:

  • Agregar sensores de evitación de obstáculos para detener el coche inmediatamente si se detecta un obstáculo.
  • Agregar una función para controlar la velocidad del coche (ver el tutorial ESP32 - motor DC). El código proporcionado controla el coche a máxima velocidad.

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Tutoriales Relacionados

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!