tutoriales.com

Robots ORCA: Diseño y Construcción de un Robot Submarino de Código Abierto para Exploración

Descubre cómo diseñar y construir tu propio Robot Operado Remotamente (ROV) submarino, apodado ORCA. Este tutorial te guiará a través de los componentes esenciales, el montaje mecánico, la electrónica y la programación para crear un robot capaz de explorar entornos subacuáticos. Perfecto para entusiastas de la robótica y la exploración marina.

Intermedio25 min de lectura6 views
Reportar error

Introducción al Mundo Submarino y los Robots ORCA 🌊

La exploración submarina siempre ha fascinado a la humanidad. Desde las profundidades abisales hasta los arrecifes de coral, el mundo subacuático es un vasto y misterioso reino lleno de maravillas. Tradicionalmente, acceder a estos entornos ha sido costoso y complejo, requiriendo equipos especializados y, a menudo, la intervención humana directa. Sin embargo, con el avance de la robótica y la electrónica, ahora es posible construir nuestros propios Robots Operados Remotamente (ROV) de forma asequible.

En este tutorial, nos embarcaremos en el emocionante proyecto de diseñar y construir un Robot Submarino de Código Abierto para Exploración (ORCA). Este ROV te permitirá sumergirte virtualmente, observar la vida marina, inspeccionar estructuras sumergidas o simplemente divertirte explorando tu piscina o un lago cercano. Aprenderás sobre flotabilidad, propulsión, estanqueidad y comunicación subacuática, todo mientras montas tu propio explorador.

🔥 Importante: Este tutorial asume conocimientos básicos de electrónica (soldadura, manejo de multímetro) y programación (Arduino/Python). Se recomienda precaución al trabajar con agua y electricidad.

🛠️ Materiales y Herramientas Necesarias

Antes de sumergirnos en la construcción, necesitamos reunir todos los componentes. La elección de los materiales es crucial para asegurar la durabilidad y funcionalidad de nuestro ORCA en el ambiente acuático.

Lista de Componentes Electrónicos

ComponenteCantidadDescripciónCosto EstimadoEnlace Sugerido
---------------
Placa ESP321Microcontrolador con WiFi/BluetoothModeradoESP32 DevKitC
Módulos ESC (Electronic Speed Controller)4-6Controladores para los motores brushlessModeradoESC 20A/30A
---------------
Motores Brushless (RC Submarino)4-6Para propulsión (e.g., A2212 1000KV)ModeradoMotor Submarino
Cámara USB (impermeable)1Para visión en tiempo real (e.g., webcam USB IP67)ModeradoCámara IP67
---------------
Convertidor Buck (DC-DC)1-2Para alimentar la electrónica (12V a 5V)BajoLM2596
Sensor de Profundidad (I2C)1MS5837 o BMP280 encapsuladoModeradoMS5837
---------------
Cable Tether (Ethernet o USB activo)10-50mComunicación y alimentaciónAltoCable Cat5e/USB activo
Batería LiPo (11.1V, 3S)1Para alimentación principal (sellada)ModeradoLiPo 3S
---------------
Conectores JST/XT60VariosPara conexiones eléctricasBajo
Placa de distribución de energía (PDB)1O una PCB personalizadaBajo

Materiales Estructurales y de Estanqueidad

  • Tubo de PVC/Acrílico: Para el cuerpo principal estanco (diámetro 10-15 cm, longitud 30-40 cm).
  • Tapones de PVC/Acrílico: Para sellar los extremos del tubo.
  • Juntas Tóricas (O-rings) y Asientos: Para un sellado hermético.
  • Prensaestopas o Glándulas de Cable: Para pasar el cable tether de forma estanca.
  • Planchas de Acrílico/PVC o impresión 3D: Para el chasis externo, soportes de motores, cámara, etc.
  • Lastre (Plomo/Contrapesos): Para ajustar la flotabilidad.
  • Adhesivo epoxi marino o sellador de silicona: Para sellados permanentes.
  • Tornillos, tuercas, arandelas (acero inoxidable): Para ensamblaje.

Herramientas

  • Soldador y estaño
  • Multímetro
  • Taladro y brocas
  • Pistola de pegamento caliente (opcional, para fijar componentes no críticos)
  • Juego de destornilladores y llaves
  • Cortador de tubos o sierra
  • Impresora 3D (recomendado para piezas personalizadas)
¿Por qué el ESP32? El ESP32 es ideal para este proyecto debido a su tamaño compacto, bajo consumo de energía, capacidad Wi-Fi y Bluetooth integradas, y su robusto ecosistema de desarrollo con Arduino IDE y MicroPython. La conectividad inalámbrica nos permitirá comunicarnos con el ROV desde la superficie, aunque también usaremos un cable para mayor fiabilidad y alimentación.

🏗️ Diseño Estructural y Montaje Mecánico

El diseño mecánico es fundamental para la operatividad y la resistencia al agua de nuestro ORCA. Nos centraremos en la estanqueidad y la distribución del peso.

El Cuerpo Principal Estanco (Pressure Hull) 🛡️

El corazón de nuestro ORCA es el tubo estanco que alojará toda la electrónica sensible. Un tubo de PVC o acrílico transparente de 10-15 cm de diámetro es una excelente opción. Los tapones de los extremos se sellarán con juntas tóricas y una compresión adecuada. Es vital que esta sección sea completamente impermeable.

TUBO CENTRAL (ESTANCO) ELECTRÓNICA TAPA TAPA JUNTA TÓRICA (O-RING) TORNILLOS DE COMPRESIÓN PRENSAESTOPAS TETHER
Paso 1: Corta el tubo a la longitud deseada (30-40 cm). Lija los bordes para eliminar imperfecciones.
Paso 2: Prepara los tapones. Si usas tapones de PVC, deberás mecanizar surcos para las juntas tóricas o usar una brida y un plano con junta.
Paso 3: Instala las juntas tóricas. Aplica una fina capa de grasa de silicona para facilitar el sellado.
Paso 4: Perfora uno de los tapones para instalar el prensaestopas del cable *tether*. Asegúrate de que el prensaestopas sea adecuado para el diámetro de tu cable y que esté diseñado para aplicaciones submarinas.
Paso 5: Realiza una prueba de estanqueidad inicial sumergiendo el tubo vacío y sellado en agua durante varias horas.

Chasis Externo y Soportes de Motores 🐠

El chasis externo no necesita ser estanco, pero sí resistente a la corrosión y al agua. Puedes usar planchas de acrílico, PVC o piezas impresas en 3D. El objetivo es montar los motores, la cámara y el lastre de forma segura.

La configuración de los propulsores puede variar, pero una configuración común incluye:

  • 2-4 motores horizontales: Para movimiento hacia adelante, atrás y giros.
  • 1-2 motores verticales: Para control de profundidad (subir/bajar).
💡 Consejo: Diseña tus soportes de motor de modo que los motores puedan ser reemplazados o mantenidos fácilmente. Los motores brushless suelen tener una vida útil prolongada, pero los sellos pueden necesitar atención.

Las hélices deben estar orientadas para empujar el agua eficientemente. Asegúrate de usar hélices contrarrotatorias para reducir el par de torsión en el ROV, especialmente en los motores horizontales.

Esquema del Chasis Externo ROV Estructura de Soporte Tubo Estanco Central Cámara H. Frontal H. Trasero H. Frontal H. Trasero Vertical Sup. Vertical Inf. Cable Tether Motores Horizontales (Empuje) Motores Verticales (Profundidad) Electrónica / Baterías

Flotabilidad y Lastre ⚖️

Para que el ORCA sea estable bajo el agua, necesitamos que sea ligeramente positivo o neutro en flotabilidad. Esto se logra añadiendo contrapesos (lastre) de plomo o similar al chasis. El lastre debe distribuirse de manera uniforme para evitar inclinaciones no deseadas.

Una vez ensamblado el ROV (sin sellar aún), sumérgelo en un cubo de agua y añade peso gradualmente hasta que flote justo debajo de la superficie o esté suspendido. Luego, retira el ROV, sella el compartimento electrónico y vuelve a probar.


⚡ Electrónica y Cableado

Ahora es el momento de dar vida a nuestro ORCA con la electrónica. La organización y la estanqueidad de las conexiones son primordiales.

Esquema de Conexión General

El cerebro (ESP32) controlará los ESC, que a su vez controlarán los motores. La cámara, el sensor de profundidad y el tether se conectarán al ESP32 o a través de él.

Batería LiPo PDB (Distribución) Conv. Buck (12V a 5V) 4-6 x ESC 4-6 x Motores Brushless ESP32 Sensor Profundidad (I2C) Cámara USB Cable Tether (Datos) Energía PWM 5V DC

Conexión de Componentes

  1. Placa de Distribución de Energía (PDB): Solda los conectores de la batería y las líneas de alimentación para los ESC y el convertidor Buck. Asegúrate de que todas las soldaduras sean robustas.
  2. ESC y Motores: Conecta cada motor brushless a su ESC correspondiente. Los motores brushless no tienen polaridad, pero si un motor gira en la dirección incorrecta, puedes intercambiar dos de los tres cables del motor. Cada ESC se conecta a un pin PWM del ESP32.
  3. ESP32: Alimenta el ESP32 desde el convertidor Buck (5V). Conecta el sensor de profundidad a los pines I2C (SDA, SCL). Si usas una cámara USB, necesitarás un puerto USB y, posiblemente, un hub USB autoalimentado si el ESP32 no puede manejar la corriente.
  4. Cable Tether: Este es el cable umbilical que conectará tu ORCA con la estación de control en la superficie. Puede ser un cable Ethernet Cat5e (usando pares para alimentación y datos) o un cable USB activo extendido. Es crucial que el sellado alrededor del tether en el prensaestopas sea perfecto.
⚠️ Advertencia: Una conexión defectuosa o una entrada de agua en el compartimento electrónico pueden causar cortocircuitos peligrosos y dañar irreversiblemente los componentes. Siempre revisa las conexiones y realiza pruebas de estanqueidad antes de una inmersión completa.

Manejo de la Alimentación 🔋

La batería LiPo de 11.1V (3S) alimentará directamente los ESC y, a través del convertidor Buck, el ESP32 y otros periféricos de 5V. Monitoriza el voltaje de la batería para evitar descargas profundas, que pueden dañarla. Algunos ESC tienen BEC (Battery Eliminator Circuit) integrado que puede proporcionar 5V, simplificando un poco el circuito, pero un convertidor Buck dedicado suele ser más fiable para el ESP32.


💻 Programación del ORCA (ESP32 - Arduino IDE)

El software es el cerebro que dará vida a nuestro ORCA. Usaremos el IDE de Arduino con el soporte para ESP32.

Configuración del Entorno de Desarrollo

  1. Instala el IDE de Arduino: Descárgalo desde la web oficial.
  2. Añade el soporte para ESP32: Ve a Archivo > Preferencias y añade la URL del gestor de placas para ESP32. Luego, en Herramientas > Placa > Gestor de Placas, busca e instala esp32.
  3. Instala librerías: Necesitarás librerías para el sensor de profundidad (ej. Adafruit_MS5837), y posiblemente librerías para el control de los ESC (aunque se pueden controlar con analogWrite o librerías de Servo).

Código Base para Control de Motores y Sensor

Aquí tienes un esqueleto de código para controlar los motores y leer el sensor de profundidad.

#include <WiFi.h>
#include <WiFiClient.h>
#include <WebServer.h>
#include <ESPmDNS.h>
#include <Wire.h> // Para I2C
#include "Adafruit_MS5837.h" // O la librería de tu sensor de profundidad

// Pines de control de los ESC (ejemplo, ajusta según tu ESP32)
const int MOTOR_FRONT_LEFT = 13;
const int MOTOR_FRONT_RIGHT = 12;
const int MOTOR_REAR_LEFT = 14;
const int MOTOR_REAR_RIGHT = 27;
const int MOTOR_VERTICAL_UP = 26;
const int MOTOR_VERTICAL_DOWN = 25;

// Variables para el control de los motores (PWM)
int motorSpeed[6] = {1500, 1500, 1500, 1500, 1500, 1500}; // 1000-2000, 1500 es parado

// Objeto para el sensor de profundidad
Adafruit_MS5837 depthSensor;

WebServer server(80); // Servidor web para control

void setup() {
  Serial.begin(115200);
  Wire.begin(); // Inicializa I2C

  // Inicializar sensor de profundidad
  if (!depthSensor.begin()) {
    Serial.println("Sensor de profundidad no encontrado!");
    while (1);
  }
  depthSensor.setFluidDensity(1000); // Agua dulce (1029 para agua salada)

  // Configurar pines PWM para los ESC
  // ESP32 tiene multiples canales PWM, usa ledcSetup, ledcAttachPin, ledcWrite
  // Ver ejemplos de ESP32 para PWM
  for(int i=0; i<6; i++){
    // ledcSetup(i, 50, 10); // Canal i, 50Hz, 10-bit resolución
    // ledcAttachPin(motorPin[i], i);
    // ledcWrite(i, map(1500, 1000, 2000, 0, 1023)); // Inicializa en parado
  }

  // Configurar WiFi (Modo AP para control local, o STA para unirse a una red existente)
  WiFi.softAP("ORCA_ROV", "password123"); // Crea un punto de acceso
  Serial.print("AP IP address: ");
  Serial.println(WiFi.softAPIP());

  // Rutas del servidor web
  server.on("/", handleRoot);
  server.on("/control", handleControl);
  server.begin();
  Serial.println("Servidor HTTP iniciado");
}

void loop() {
  server.handleClient();

  // Leer sensor de profundidad
  if (depthSensor.read()) {
    Serial.print("Profundidad: ");
    Serial.print(depthSensor.depth(), 2);
    Serial.println(" m");
    Serial.print("Temperatura: ");
    Serial.print(depthSensor.temperature(), 2);
    Serial.println(" *C");
  }

  // Actualizar motores (ejemplo, esto iría en la función de control)
  // for(int i=0; i<6; i++){
  //   ledcWrite(i, map(motorSpeed[i], 1000, 2000, 0, 1023));
  // }

  delay(100);
}

void handleRoot() {
  String html = "<html><body><h1>Control ORCA ROV</h1>";
  html += "<p>Profundidad: <span id='depth'>0.0</span> m</p>";
  // Añadir botones/sliders para control de motores y dirección
  html += "<button onclick='sendControl(\"forward\")'>Adelante</button>";
  html += "<script>";
  html += "function sendControl(command){ fetch('/control?cmd='+command); }";
  html += "setInterval(function(){ fetch('/data').then(response => response.json()).then(data => { document.getElementById('depth').innerText = data.depth; }); }, 1000);";
  html += "</script></body></html>";
  server.send(200, "text/html", html);
}

void handleControl() {
  String command = server.arg("cmd");
  if (command == "forward") {
    // Aumentar velocidad de motores delanteros
    motorSpeed[MOTOR_FRONT_LEFT] = 1600;
    motorSpeed[MOTOR_FRONT_RIGHT] = 1600;
  } else if (command == "stop") {
    // Parar todos los motores
    for(int i=0; i<6; i++) motorSpeed[i] = 1500;
  }
  // Implementar lógica para otros comandos (atrás, girar, subir, bajar)
  server.send(200, "text/plain", "OK");
}

// Podrías añadir un endpoint para enviar datos del sensor en formato JSON
// void handleData(){
//   String json = "{\"depth\": " + String(depthSensor.depth(), 2) + ", \"temp\": " + String(depthSensor.temperature(), 2) + "}";
//   server.send(200, "application/json", json);
// }

Intermedio Este código es un punto de partida. Necesitarás expandirlo para incluir un control más sofisticado, estabilización (PID, si lo deseas) y una interfaz de usuario más completa para el control remoto. El control de los ESC con ESP32 requiere el uso de las funciones ledc para PWM, ya que analogWrite solo funciona en pines limitados.

Interfaz de Control Remoto 🎮

Dado que el ESP32 tiene Wi-Fi, podemos crear una interfaz web simple para controlar el ORCA desde un navegador en una laptop o smartphone. La función handleRoot sirve la página HTML con botones para controlar el movimiento. La función handleControl procesa los comandos enviados por el navegador.

Para una experiencia más robusta, podrías considerar:

  • Joystick USB conectado a la computadora: Y un programa en Python en la superficie que se comunique con el ESP32 vía Wi-Fi o serial (a través del tether).
  • Telemetría en tiempo real: Envío de datos del sensor de profundidad, temperatura, voltaje de batería, etc., de vuelta a la superficie.

🌊 Pruebas y Calibración

Una vez que el ORCA está ensamblado y programado, es hora de las pruebas. ¡La precaución es clave!

Pruebas en Superficie (Sin Agua) 🧪

  1. Prueba de encendido: Asegúrate de que todos los componentes electrónicos enciendan correctamente. Verifica los voltajes con un multímetro.
  2. Calibración de ESC: La mayoría de los ESC requieren una calibración de los límites de PWM. Consulta el manual de tus ESC. Generalmente, esto implica encender el ESC con el PWM al máximo, luego bajarlo al mínimo y volver a subir. Importante Haz esto ANTES de montar las hélices.
  3. Prueba de motores: Verifica que los motores giren en la dirección correcta y respondan a los comandos. Ajusta el código o intercambia cables si es necesario.

Pruebas de Estanqueidad (Seco y Húmedo) 💧

  1. Prueba en seco: Antes de sellar completamente, rocía agua sobre el ROV para buscar cualquier filtración. Usa papel absorbente dentro para detectar humedad.
  2. Prueba en piscina poco profunda: Con el compartimento electrónico sellado y SIN encender los sistemas, sumerge el ORCA. Busca burbujas que indiquen fugas. Mantén la inmersión por un tiempo para verificar si entra agua.
  3. Prueba de flotabilidad: Ajusta el lastre para lograr la flotabilidad deseada. Es mejor que sea ligeramente positivo al principio.

Primeras Inmersiones Controladas ✅

Una vez que estés seguro de la estanqueidad, puedes realizar la primera inmersión con el sistema encendido. Empieza en un entorno controlado como una piscina o un estanque poco profundo.

  • Verifica la comunicación: Asegúrate de que el control remoto funcione y que la telemetría se reciba correctamente.
  • Prueba de profundidad: Observa cómo se comporta el ROV al cambiar de profundidad. Calibra el sensor de profundidad si es necesario.
  • Maniobrabilidad: Evalúa la facilidad para mover el ORCA en todas las direcciones. Ajusta la potencia de los motores en el software si algunos son más fuertes que otros o si el ROV tiende a girar.

🚀 Mejoras y Futuras Expansiones

El ORCA que has construido es una plataforma robusta, pero siempre hay espacio para mejoras y nuevas funcionalidades.

Estabilización Avanzada ⚙️

  • Control PID (Proporcional-Integral-Derivativo): Implementar un controlador PID para mantener automáticamente la profundidad o la orientación. Requiere un IMU (Unidad de Medición Inercial) como un giroscopio/acelerómetro (muchos ESP32 ya lo tienen integrado, o puedes añadir un MPU6050/MPU9250).
  • Cámaras Múltiples: Añadir cámaras adicionales para una visión de 360 grados o para manipulación.

Sensores Adicionales 🔬

  • Sonar/Lidar Submarino: Para evitar obstáculos o mapear el entorno.
  • Sensores de Calidad del Agua: pH, temperatura, turbidez, conductividad para aplicaciones científicas.
  • Manipulador Robótico: Un pequeño brazo robótico para recolectar muestras o interactuar con el entorno.

Comunicación y Autonomía 📡

  • Comunicación de largo alcance: Si el tether no es suficiente, se pueden explorar soluciones acústicas o de fibra óptica (más complejas).
  • Navegación Autónoma: Programar el ORCA para seguir waypoints, realizar patrones de búsqueda o mantener una posición sin intervención constante.
90% Completado: ¡Tu ORCA está casi listo para explorar!

Conclusión ✨

Construir tu propio robot submarino ORCA es un proyecto desafiante pero increíblemente gratificante. Has pasado por el diseño mecánico, la integración electrónica y la programación, creando una máquina capaz de explorar el fascinante mundo subacuático. Este proyecto no solo te proporciona una herramienta de exploración, sino que también te brinda un profundo conocimiento en robótica, electrónica y programación.

¡Felicidades, explorador! Ahora tienes las habilidades para seguir innovando y descubriendo los secretos ocultos bajo la superficie. ¿Quién sabe qué maravillas te esperan en tu próxima inmersión con ORCA?

Tutoriales relacionados

Comentarios (0)

Aún no hay comentarios. ¡Sé el primero!