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 L9110S
  • 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 L9110S.
  • 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

El módulo L9110S alimenta los motores directamente desde sus pines VCC y GND y no tiene un regulador de 5 V integrado. Esto significa que puedes alimentar todo desde una sola fuente de energía: cuatro pilas AA de 1,5 V (que suman 6 V en total). Así es como podemos hacerlo:

  • Conecta la batería de 6 V a los pines VCC y GND del módulo L9110S para alimentar los motores.
  • Conecta la misma batería de 6 V a los pines Vin y GND de la placa Arduino para alimentarla (el receptor IR se alimenta desde el pin de 5 V del Arduino).
  • Asegúrate de que el módulo L9110S, la placa Arduino y el receptor IR compartan un GND común.

A diferencia del L298N, el L9110S no tiene puentes de habilitación ENA/ENB ni una terminal de tornillo de 12 V, por lo que el cableado es más sencillo.

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 3 // The Arduino pin connected to IR receiver #define MOTOR_A_IA_PIN 5 // The Arduino pin connected to the A-IA pin of the L9110S (Motor A) #define MOTOR_A_IB_PIN 6 // The Arduino pin connected to the A-IB pin of the L9110S (Motor A) #define MOTOR_B_IA_PIN 9 // The Arduino pin connected to the B-IA pin of the L9110S (Motor B) #define MOTOR_B_IB_PIN 10 // The Arduino 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); }

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 L9110S.
  • También puedes ver los resultados en el Monitor Serial del IDE de Arduino.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
MOVING FORWARD MOVING BACKWARD TURNING LEFT TURNING RIGHT STOP
Ln 11, Col 1
Arduino Uno on COM15
2
  • 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!