Como Controlar Carro Robotico 4 Llantas Turbobot con Control Remoto Infrarrojo

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.