Controla Tu Carro Robótico Turbobot con Arduino y Bluetooth

Controla Tu Carro Robótico Turbobot con Arduino y Bluetooth

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 el control del carro mediante un módulo Bluetooth.

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

Conexión Sistema Tracción

Primero, conectaremos los motores del Turbobot a los pines de control del Arduino a través de un puente H (como el L298N). Esto nos permitirá controlar la dirección de los motores.

  • Motor Derecho: Pines 2 y 4 del Arduino
  • Motor Izquierdo: Pines 5 y 6 del Arduino

Conexión del Módulo Bluetooth

Ahora, conectaremos el módulo Bluetooth HC-05/HC-06 al Arduino a través de la librería SoftwareSerial para utilizar los pines 12 y 13:

  • VCC: Pin de 5V del Arduino
  • GND: GND del Arduino
  • TX: Pin 12 del Arduino (configurado con SoftwareSerial)
  • RX: Pin 13 del Arduino (configurado con SoftwareSerial)

Asegúrate de que las conexiones sean firmes y correctas, ya que esto permitirá la comunicación entre el Arduino y tu teléfono.

Librerías Necesarias:

Para este proyecto, utilizaremos la librería SoftwareSerial, que nos permitirá establecer comunicación con el módulo Bluetooth. Esta librería ya viene incluida en el entorno Arduino IDE, por lo que no es necesario descargar nada extra.

Cargar el Código al Arduino

A continuación deberás cargar el siguiente código a tu Arduino

/* Control Bluetooth Turbobot
   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 <SoftwareSerial.h>

// Definición de pines del Bluetooth
SoftwareSerial Bluetooth(12, 13);  // RX, TX

// Pines de los motores
int motorDerecho1 = 5;
int motorDerecho2 = 6;
int motorIzquierdo1 = 9;
int motorIzquierdo2 = 10;

void setup() {
  // Inicializar los pines de los motores como salidas
  pinMode(motorDerecho1, OUTPUT);
  pinMode(motorDerecho2, OUTPUT);
  pinMode(motorIzquierdo1, OUTPUT);
  pinMode(motorIzquierdo2, OUTPUT);
  
  // Iniciar comunicación Bluetooth
  Bluetooth.begin(9600);
  Serial.begin(9600);

  // Mensaje de inicio del sistema
  Serial.println("Iniciando sistema...");
  delay(2000);
  mostrarMenu();
}

void loop() {
  if (Serial.available() > 0) {
    char opcion = Serial.read();
    switch (opcion) {
      case '1':
        controlBluetooth();
        break;
      case '2':
        controlManual();
        break;
      case 'x':
      case 'X':
        mostrarMenu();
        break;
      default:
        Serial.println("Opción no válida. Por favor, selecciona 1, 2 o x para volver al menú.");
        break;
    }
  }
}

void mostrarMenu() {
  Serial.println("\n--- MENÚ PRINCIPAL ---");
  Serial.println("1: Control por Bluetooth");
  Serial.println("2: Control Manual");
  Serial.println("x: Volver al Menú Principal");
  Serial.print("Selecciona una opción: ");
}

void controlBluetooth() {
  Serial.println("\n--- CONTROL BLUETOOTH ACTIVADO ---");
  Serial.println("Usa la aplicación Bluetooth para controlar el Turbobot.");
  while (true) {
    if (Bluetooth.available() > 0) {
      char comando = Bluetooth.read();
      if (comando == 'x' || comando == 'X') {
        mostrarMenu();
        break;
      }
      ejecutarComando(comando);
    }
  }
}

void controlManual() {
  Serial.println("\n--- CONTROL MANUAL ACTIVADO ---");
  Serial.println("F: Adelante, B: Atrás, L: Izquierda, R: Derecha, S: Detener, X: Volver al Menú");
  while (true) {
    if (Serial.available() > 0) {
      char comando = Serial.read();
      if (comando == 'x' || comando == 'X') {
        mostrarMenu();
        break;
      }
      ejecutarComando(comando);
    }
  }
}

void ejecutarComando(char comando) {
  switch (comando) {
    case 'F':
      moverAdelante();
      Serial.println("Moviendo adelante");
      break;
    case 'B':
      moverAtras();
      Serial.println("Moviendo atrás");
      break;
    case 'L':
      moverIzquierda();
      Serial.println("Moviendo a la izquierda");
      break;
    case 'R':
      moverDerecha();
      Serial.println("Moviendo a la derecha");
      break;
    case 'S':
      detener();
      Serial.println("Detenido");
      break;
    default:
      Serial.println("Comando no válido");
      detener();
      break;
  }
}

// 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);
}

Comandos de Control Remoto Infrarrojo

Configuración de la App Bluetooth

Para controlar el Turbobot desde tu smartphone, utiliza una aplicación como Bluetooth Electronics o Arduino Bluetooth Controller. Configura botones con los siguientes comandos:

  • X: Volver al Menú
  • F: Adelante
  • B: Atrás
  • L: Izquierda
  • R: Derecha
  • S: Detener

Prueba y Ajuste

Una vez que todo esté conectado y el código cargado, enciende el Turbobot y empareja tu teléfono con el módulo Bluetooth. Utiliza la aplicación para controlar el movimiento y verifica que todo funcione correctamente. Si notas que el robot no responde como se espera, revisa las conexiones y asegúrate de que el código se haya cargado sin errores.

¡Felicitaciones! Ahora has aprendido a controlar tu Turbobot usando un módulo Bluetooth. Esto es solo el comienzo: puedes agregar sensores y mejorar el proyecto para que el Turbobot sea más autónomo y divertido.