Arduino - Coche

Uno de los proyectos más emocionantes para los principiantes de Arduino es crear un coche robot de Arduino. En este tutorial, descubriremos cómo usar Arduino para construir un coche robot y controlarlo con un mando a distancia por infrarrojos. También exploraremos otro tutorial en el que aprenderemos a transformarlo en un coche controlado por Bluetooth.

Coche de Arduino con control remoto IR

Acerca de Robot Car

En el contexto de Arduino, el coche robótico se conoce comúnmente como coche robótico, coche RC, coche de control remoto, coche inteligente o coche DIY. Puede ser controlado de forma remota e inalámbrica utilizando ya sea un mando a distancia IR o una aplicación para teléfono inteligente a través de Bluetooth o WiFi... El coche robótico puede girar a la izquierda o a la derecha y avanzar o retroceder.

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

  • Chasis: La base o el 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 de corriente continua.
  • Motores: Se utilizan dos motores de corriente continua para impulsar las dos ruedas.
  • Controlador de motores: La placa controladora de motores es un componente esencial que actúa como interfaz entre el Arduino y los motores. Recibe las señales del Arduino y proporciona la energía y el control necesarios a los motores.
  • Placa Arduino: El cerebro del coche. Lee las entradas de sensores y de comandos del usuario y controla los motores en consecuencia.
  • Fuente de alimentación: El coche de dos ruedas motrices requiere una fuente de alimentación, normalmente baterías y un portabaterías, para alimentar los motores y la placa Arduino.
  • Receptor inalámbrico: un módulo infrarrojo, Bluetooth o WiFi para la comunicación inalámbrica con un control remoto o un 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 y soporte de batería)
  • Controlador de motor L298N
  • Kit infrarrojo (incluye mando IR y receptor IR)

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

Cómo funciona

Cómo funciona un coche Arduino de dos ruedas motrices
  • Arduino se conecta a los motores DC del coche robot mediante el módulo controlador de motor L298N.
  • Arduino se conecta a un receptor IR.
  • La batería alimenta al Arduino, los motores DC, el módulo controlador de motor y el receptor IR.
  • Los usuarios presionan las teclas ARRIBA/ABAJO/IZQUIERDA/DERECHA/OK en el mando a distancia IR.
  • Arduino recibe los comandos ARRIBA/ABAJO/IZQUIERDA/DERECHA/OK a través del receptor IR.
  • Arduino controla el coche para moverse DELANTE/ATRÁS/IZQUIERDA/DERECHA o DETENERSE, mediante el control del motor DC a través del módulo controlador de motor.

Diagrama de Cableado

Diagrama de cableado de un coche Arduino con tracción en dos ruedas

This image is created using Fritzing. Click to enlarge image

Normalmente, necesitamos dos fuentes de energía:

  • Una fuente de alimentación para el motor (indirectamente a través del módulo L298N).
  • La otra fuente de alimentación para la placa Arduino, el módulo L298N y el receptor IR.

Sin embargo, hay una forma de usar una sola fuente de energía para todo. Puedes usar cuatro pilas de 1,5 V (que suman 6 V) para este fin. Así es como podemos hacerlo:

  • Conecta las baterías al módulo L298N siguiendo el diagrama anterior.
  • Quita dos conectores pequeños (jumpers) que enlazan los pines ENA y ENB a 5 voltios en el módulo L298N.
  • Coloca un conector especial (puente) etiquetado 5VEN, marcado con un círculo amarillo en el diagrama anterior.
  • Conecta el pin 12V en la terminal de tornillo del módulo L298N al pin Vin de la placa Arduino. Esto alimenta al Arduino directamente desde la batería (6 V en total).

Por favor, tenga en cuenta que durante el período de desarrollo, cuando necesite conectar el cable USB al Arduino para programarlo, DEBE desconectar la alimentación entre la batería y la placa Arduino quitando un cable del pin Vin. La placa Arduino no debe ser alimentada por dos fuentes de energía al mismo tiempo.

Código de Arduino

/* * Este código de Arduino fue desarrollado por es.newbiely.com * Este código de Arduino se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/arduino/arduino-car */ #include <DIYables_IRcontroller.h> // DIYables_IRcontroller library #define IR_RECEIVER_PIN 9 // The Arduino pin connected to IR receiver #define ENA_PIN 7 // The Arduino pin connected to the ENA pin L298N #define IN1_PIN 6 // The Arduino pin connected to the IN1 pin L298N #define IN2_PIN 5 // The Arduino pin connected to the IN2 pin L298N #define IN3_PIN 4 // The Arduino pin connected to the IN3 pin L298N #define IN4_PIN 3 // The Arduino pin connected to the IN4 pin L298N #define ENB_PIN 2 // The Arduino pin 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("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; } } } vvoid 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

  • Instala la biblioteca DIYables_IRcontroller en el IDE de Arduino siguiendo esta instrucción
  • Realiza el cableado según el diagrama mostrado arriba.
  • Desconecta el cable del pin Vin en el Arduino porque alimentaremos el Arduino mediante un cable USB al subir el código.
  • Voltea el coche boca abajo para que las ruedas queden en la parte superior.
  • Conecta el Arduino a tu computadora usando el cable USB.
  • 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 Arduino.
  • Usa el control remoto IR para hacer que el coche vaya hacia adelante, hacia atrás, a la izquierda, 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
MOVING FORWARD MOVING BACKWARD TURNING LEFT TURNING RIGHT STOP
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  
  • Si todo funciona correctamente, desconecta el cable USB del Arduino, y conecta de nuevo el cable al pin Vin para alimentar el Arduino con la batería.
  • Da la vuelta al coche para dejarlo en 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 Arduino anterior.

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

Puedes ampliar este proyecto de las siguientes maneras:

  • Añadir sensores de evitación de obstáculos para detener el coche de forma inmediata si se detecta un obstáculo.
  • Añadir una función para controlar la velocidad del coche (ver el tutorial Arduino - motor de corriente continua). 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!