Como Controlar Carro Robotico 4 Llantas Turbobot con Control Remoto Infrarrojo
Bienvenidos al curso de control del Turbobot, un carro robótico con mando a distancia basado en Arduino. Este curso está diseñado para que los estudiantes aprendan sobre robótica, programación y control remoto utilizando el kit Turbobot. Este kit es ideal para aprender los principios básicos de la robótica móvil y el uso de tecnologías STEM (Ciencia, Tecnología, Ingeniería y Matemáticas). Aquí exploraremos desde la estructura básica del kit hasta la programación y control del carro mediante un control infrarrojo (IR).
Materiales necesarios
Metodología STEM
La metodología STEM se centra en aplicar la teoría a proyectos prácticos, como la creación de un vehículo robótico controlado a distancia. Este enfoque permite a los estudiantes desarrollar habilidades en:
- Ciencia: Conocimiento de los componentes electrónicos.
- Tecnología: Uso de software como Arduino IDE para programar.
- Ingeniería: Diseño y montaje del carro.
- Matemáticas: Lógica y cálculo para control de motores.
Pasos a Seguir:
Conexión del Hardware
Conexion Sistema Traccion
Primero vamos a realizar la siguiente conexion electronica en nuestro carro robotico, si necesita descargar el codigo completo por favor dar clic en la imagen para iniciar la descarga (Es necesario estar loggeado en la pagina web para proceder con la descarga)
Conexion Sistema de Comunicacion
Segundo vamos a realizar la conexion del sensor IR RECIEVE, a continuacion observaras su conexion electronica, la cual es muy sencilla:
- GND: Protoboard
- VCC: Pin +5V Arduino
- Señal: Pin Digital 11 Arduino
Librerías Necesarias:
El desarrollo de proyectos de robótica y automatización con Arduino requiere del uso de ciertas librerías especializadas que facilitan la programación y control de dispositivos. Algunas de las librerías necesarias en este proyecto son:
- IRremote: Esta librería permite la recepción y decodificación de señales infrarrojas, lo cual es fundamental para interactuar con controles remotos infrarrojos y otros dispositivos de entrada. Descárgala AQUI (Recomendamos la version 2.0.1)
Codigo a cargar
A continuacion deberas cargar el siguiente codigo a tu arduino
/* Movimiento Control Carro Robotico remoto Desarrollado por RDC - Robotica de Colombia Visitanos: www.facebook.com/roboticadecolombia www.youtube.com/@RoboticadeColombia www.instagram.com/roboticadecolombia/ Mercadolibre: www.mercadolibre.com.co/perfil/ROBOTICADECOLOMBIA */ #include <IRremote.h> int RECV_PIN = 11; // Pin donde el receptor infrarrojo está conectado IRrecv irrecv(RECV_PIN); IRsend irsend; decode_results results; unsigned long codeValue; // Código recibido int codeType; // Tipo de código recibido int rawCodes[RAWBUF]; // Buffer para códigos crudos int codeLen; // Longitud del código int STATUS_PIN = 13; // Pines de los motores int motorDerecho1 = 5; int motorDerecho2 = 6; int motorIzquierdo1 = 9; int motorIzquierdo2 = 10; void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Inicializa la recepción de IR pinMode(STATUS_PIN, OUTPUT); // Configura los pines de los motores como salidas pinMode(motorDerecho1, OUTPUT); pinMode(motorDerecho2, OUTPUT); pinMode(motorIzquierdo1, OUTPUT); pinMode(motorIzquierdo2, OUTPUT); } void storeCode(decode_results *results) { codeValue = results->value; codeType = results->decode_type; if (codeType == UNKNOWN) { for (int i = 0; i < results->rawlen; i++) { rawCodes[i] = results->rawbuf[i]; } codeLen = results->rawlen; } else { codeLen = results->bits; } } void sendCode(int repeat) { if (codeType == NEC) { if (repeat) { irsend.sendNEC(REPEAT, codeLen); } else { irsend.sendNEC(codeValue, codeLen); } } else if (codeType == UNKNOWN) { irsend.sendRaw(rawCodes, codeLen, 38); // Envía el código crudo Serial.println("Código crudo enviado"); } } https://roboticadecolombia.com/download/24756/?tmstv=1727830940 // Funciones para controlar el movimiento void moverAdelante() { digitalWrite(motorDerecho1, HIGH); digitalWrite(motorDerecho2, LOW); digitalWrite(motorIzquierdo1, HIGH); digitalWrite(motorIzquierdo2, LOW); } void moverAtras() { digitalWrite(motorDerecho1, LOW); digitalWrite(motorDerecho2, HIGH); digitalWrite(motorIzquierdo1, LOW); digitalWrite(motorIzquierdo2, HIGH); } void moverIzquierda() { digitalWrite(motorDerecho1, HIGH); digitalWrite(motorDerecho2, LOW); digitalWrite(motorIzquierdo1, LOW); digitalWrite(motorIzquierdo2, HIGH); } void moverDerecha() { digitalWrite(motorDerecho1, LOW); digitalWrite(motorDerecho2, HIGH); digitalWrite(motorIzquierdo1, HIGH); digitalWrite(motorIzquierdo2, LOW); } void detener() { digitalWrite(motorDerecho1, LOW); digitalWrite(motorDerecho2, LOW); digitalWrite(motorIzquierdo1, LOW); digitalWrite(motorIzquierdo2, LOW); } void loop() { if (irrecv.decode(&results)) { digitalWrite(STATUS_PIN, HIGH); storeCode(&results); // Control de movimiento según el código recibido switch (results.value) { case 0xFFA25D: // Código para mover adelante moverAdelante(); break; case 0xFF629D: // Código para mover atrás moverAtras(); break; case 0xFF22DD: // Código para mover izquierda moverIzquierda(); break; case 0xFFC23D: // Código para mover derecha moverDerecha(); break; case 0xFFE21D: // Código para detener detener(); break; default: detener(); // Si no se reconoce el código, detener el carro break; } sendCode(0); // Envía el código recibido irrecv.resume(); // Prepara el receptor para recibir el próximo código digitalWrite(STATUS_PIN, LOW); } }
Comandos de Control Remoto Infrarrojo
Utilizando un control remoto infrarrojo, es posible controlar el movimiento de un vehículo robóticontrol remoto infrarrojoco con las siguientes acciones programadas. Cada botón del control está vinculado a una función específica:
- Flecha Arriba: Mover Adelante
- Flecha Abajo: Mover Atrás
- Flecha Izquierda: Mover a la Izquierda
- Flecha Derecha: Mover a la Derecha
Este sistema permite controlar la dirección del robot de manera sencilla y efectiva mediante señales infrarrojas.