Construye tu Propia Réplica del Rover Mars Perseverance con Arduino – Guía Paso a Paso
En este tutorial te muestro cómo construí una réplica del Rover Mars Perseverance. Inspirado en el rover real explorando Marte, lo diseñé para que cualquiera —estudiantes, makers, entusiastas de mecatrónica/robótica— pueda seguir las instrucciones y construir el suyo. Video o tutorial escrito a continuación. Características principales: suspensión rocker-bogie que permite rodar suave en terreno irregular y superar obstáculos hasta el doble del diámetro de la rueda, manteniendo las seis ruedas en contacto constante. Cada rueda tiene motor DC independiente para avance/retroceso. Las cuatro ruedas de esquina tienen servos de dirección individuales. Para dirigir eficientemente y evitar deslizamiento en curvas, implementamos geometría de dirección Ackermann. Con ella calculamos velocidad y ángulo de cada rueda según radio de giro. Al girar, ruedas interiores tienen mayor ángulo y menor velocidad que las exteriores. Control: mando RC comercial barato que envía órdenes al rover. En el rover, receptor RC recibe y envía a Arduino. Cerebro: Arduino MEGA + PCB custom que encaja encima. Incluye cámara FPV en la unidad de cámaras, controlada por motor paso a paso y servo, con vídeo en tiempo real en smartphone. Muchas piezas son solo estéticas (imitan al rover real). Falta el brazo robótico, pero planeo añadirlo y más funciones en futuros videos. Recorreremos: diseño, electrónica y programación. ¡Empecemos! Diseñado con 3DEXPERIENCE Solidworks (patrocinador). 3DEXPERIENCE Solidworks = Solidworks con capacidades cloud vía plataforma 3DEXPERIENCE. Acceso a datos/modelos desde cualquier lugar/equipo. Incluye apps de productividad y gestión. Ej.: app Project Planning para organizar tareas, plazos, progreso. App 3D Markup para ver, explorar y anotar modelos desde portátil, tablet, móvil. También hay SOLIDWORKS xDesign, modelador 3D cloud que corre en navegador, usable solo o con Solidworks, genial para modelar en cualquier dispositivo. Desde 2ª mitad de año habrá versión Maker de 3DEXPERIENCE Solidworks por $99/año. ¡Gracias Solidworks por patrocinar contenido educativo! Si quieres saber si te sirve, revisa enlaces: Prueba 3DEXPERIENCE gratis: www.solidworks.com/HTMTryNow Más sobre 3DEXPERIENCE SOLIDWORKS: www.solidworks.com/HTMLearnMore 3DEXPERIENCE SOLIDWORKS for Makers: www.solidworks.com/htm Volvamos al modelo. Objetivo: parecerse lo máximo al Perseverance real. En web NASA hay modelo 3D del rover; lo descargué y abrí en Blender. Tomé 3 vistas (frontal, superior, lateral) e importé a Solidworks. Quería ruedas de 130 mm diámetro, así que escalé las imágenes según esa cota. De ahí saqué cotas clave: ancho, largo, alto, distancia entre ruedas, dimensiones rocker-bogie, etc. Según esas cotas y los motores/servos previstos, diseñé piezas para impresión 3D fácil y montaje sencillo, manteniendo la estética original. Para rocker-bogie: perfiles redondos aluminio 20 mm. Para bastidor base: perfiles T-slot 20 mm. Modelo 3D en Thangs (descarga y exploración en navegador): Archivos STL para impresión 3D: Usé mi vieja Creality CR-10 y la nueva CR-10 V3. Para ruedas en filamento flexible necesitas extrusora directa (como la CR-10 V3). Ambas imprimen con gran calidad y precio asequible. Enlaces: Ver también: Mejores Osciloscopios Económicos para Principiantes y Makers – Actualización 2021 Al imprimir, usar Horizontal Expansion en el slicer. Usé -0,1 mm. Compensa expansión del filamento. Sin ello, un agujero de 20 mm saldría ~19,8 mm y no encajaría. Todas las piezas impresas: Es mucha impresión, pero es la única forma de lograr la estética única. Puedes reducir tiempo a la mitad imprimiendo solo piezas funcionales. Componentes mecánicos (electrónicos en sección circuito): También varios tornillos M4, M5, M6 (ver lista completa abajo). Tornillos/tuercas también en ferretería local. Preparamos perfiles de aluminio. Sierra de mano para cortar a medida. 10 perfiles T-slot para base, 8 perfiles redondos para rocker-bogie con estas cotas: Ensamblamos marco T-slot con escuadras y tornillos/tuercas. Listos marco superior e inferior, completamos base insertando piezas impresas de articulación rocker en laterales, y soportes impresos en frente/atrás. Fijamos con tornillos M3 y tuercas T-slot. Para articulaciones rocker: tornillos/tuercas M5. Distancia desde perfil frontal a articulación rocker = 134 mm. Insertamos rodamientos principales en su sitio. Eje de articulación rocker se fija a base con tornillo M8. El eje tiene ranura para inserto M8 que lo fija a base. Agujero del eje = 7,5 mm para unión apretada tornillo-eje. Así reforzamos el eje impreso: el tornillo soporta parte del peso. Es la pieza más solicitada. La orientación de impresión es clave para resistencia. Primero imprimí el eje en orientación fácil (sin soportes), pero falló. La fuerza actuaba sobre capas (débiles). Imprimiendo de lado, la fuerza actúa sobre contornos de pared → mucho más fuerte, no falla. Continuamos ensamblando rocker-bogie con uniones de rueda y soportes de motor, y luego los fijamos a los ejes rocker. Los agujeros para perfiles redondos 20 mm tienen ajuste justo; a veces hay que lijar/esmerilar para que entren. Para taladrar perfiles en posiciones precisas: marcamos línea recta en el perfil. Insertamos perfil en pieza impresa con la línea pasando por el agujero. Marcamos donde taladrar en ambos lados de la pieza. Repetimos en lado opuesto. Taladré con broca 2,5 mm y roscé con tornillo M3 (el aluminio es blando). Este método asegura posicionamiento relativo correcto final. Articulación bogie: dos rodamientos y tornillo M8. Completado rocker-bogie, pasamos a uniones de ruedas directrices. Pieza en dos mitades atornilladas. Unión real (servo-motor DC): dos rodamientos + tornillo M6. En cabeza del tornillo va perno de servo, acoplado con pieza impresa 3D y tornillos M3. El acoplador tiene ranura hexagonal por donde pasa el movimiento del servo al tornillo. En lado inferior se rosca la otra parte de la unión. Fijamos con tuerca M6. Esto completa la unión directriz, aunque luego vi que hacía falta otra tuerca M6 abajo, apretada contra la primera. Porque el movimiento del servo se transmite al soporte del motor DC mediante la tuerca; sin la segunda tuerca, la unión se desatornilla. Mismo procedimiento en la otra esquina. Sabemos que está bien si al apoyar el conjunto en superficie plana, los tres soportes de motor quedan paralelos. Mismo proceso en el otro lado (piezas espejo, no idénticas). Insertamos sub-ensamblajes en ejes rocker de la base. Antes, insertamos inserts roscados de latón en el eje. Con soldador se colocan fácil, logrando roscas fiables. 4 tornillos M4 por lado. Al instalarlos, el chasis cae/gira libre: falta el diferencial para que rocker-bogie funcione. Con diferencial, los dos rockers se conectan entre sí y al chasis. Cuando uno sube, el otro baja → contacto de ruedas igualado. Chasis toma ángulo medio de ambos rockers. Piezas del diferencial: Barra diferencial larga → 3 piezas atornilladas (imprimibles en impresoras pequeñas). Pivota en centro del chasis con unión: 2 rodamientos + tornillo M8. Conexión diferencial-rocker: rotula M8 + varilla roscada M8 50 mm. Varilla entra en pieza impresa con tuerca M8 por un lado y rotula por otro. Ajustar distancia entre pieza diferencial y rotula ~20 mm para chasis horizontal. Conexión palanca rocker: 2 rodamientos + tornillo M5. Repetimos en otro lado. Rocker-bogie completado: un lado sube, otro baja. Todas las ruedas en contacto siempre. Chasis se mueve la mitad que la pata (ángulo medio). Ver también: Brazo Robot Arduino y Plataforma Ruedas Mecanum Operación Automática Motores DC: 37 mm diámetro, 12 V, reductor 50 RPM. 50 RPM es mucho; sugiero 20 o 10 RPM. Acopladores eje-rueda impresos: Inserts roscados M3 para fijar acoplador a eje, tuercas M4 para rueda. Añadir pegamento a tuercas o usar inserts. Ruedas: dos partes. Neumático (filamento flexible, pero puede ser rígido) + llanta (PLA normal). Llanta tiene ranuras que encajan en neumático transmitiendo tracción. Gotas de pegamento en ranuras. Ruedas a acopladores/motores con 4 tornillos M4. Servos dirección: servos digitales alto par 25 kg·cm, 4,8-6,8 V. 4 tornillos M3 en inserts M3 de soporte impreso. Para pan de cámara: motor paso a paso NEMA 17 (cambiable). Movimiento se transmite a sección superior mediante varilla roscada M5 acoplada al motor con acoplador impreso, y en otro extremo rodamiento + dos tuercas. Para tilt: servo igual que dirección. Muchas piezas aquí son solo estéticas. Varios tornillos M3 e inserts. Instalé cámara FPV real con soporte custom en carcasa. Accesible desde arriba, tapa a presión. Aspecto final: Monté sub-conjunto en esquina frontal derecha del chasis. Ahora: terminar piezas 3D (solo estéticas) o electrónica. Elegí terminar todo lo 3D primero. Piezas solo estéticas; no detallo montaje. Véase modelo 3D. Mucho esfuerzo en diseño detallado para buena estética. Piezas grandes, mucho tiempo de impresión. Vista rápida de instalación. Últimos dos paneles superiores centrales: encaje a presión (snap-fit). Actúan como capó extraíble: electrónica irá debajo. Soporte electrónica: dos piezas impresas atornilladas, va atornillado a marco inferior. Medimos cableado por motor. Soldé cables directos a motores (sin conectores), con termoretráctil. Bridas para guiar y ordenar cables. Servos: cables de extensión al compartimento electrónica. Soporte tiene ranuras para pasar cables al centro. Cableado bastante limpio detrás de partes visibles. Ver también: Robot SCARA | Cómo Construir tu Propio Robot Basado en Arduino Componentes: 6 motores DC → 6 drivers DRV8871 (PWM, 3,6 A pico). Motores 12 V, 1 A nominal, 3 A pico. Alimentación: LiPo 3S (~12 V). Servos: 4,8-6,8 V → convertidor DC-DC 12 V → 6 V, ~8 A (servos potentes, 2 A pico cada uno). Driver paso a paso cámara: A4988 o DRV8825. Divisor resistivo (2 resistencias) para monitorizar batería. Receptor RC alimentado a 6 V (buck). Cámara FPV + transmisor a 12 V (batería). Para ordenar electrónica, diseñé PCB custom. Actúa como shield Arduino MEGA (encaja encima). Incluye: drivers motor, regulador 3,3 V, conector dedicado NRF24L01 (por si control por ese módulo), conexiones DHT22, brújula, I2C, serie, 12 V, 5 V, 3,3 V, GND. Preparada para futuras ampliaciones. Encargada a PCBWay: subes Gerber, eliges opciones, precio razonable. Solo cambié color a azul (a juego con Arduino). Gerber descargable abajo o desde comunidad PCBWay (pedido directo). Descarga Gerber para PCB Rover DIY: Llegó en días. Calidad genial, idéntico al diseño. Montaje directo: todo etiquetado. Soldé pines hembra en cara inferior (conexión Arduino MEGA) y luego cara superior. Usé pines hembra en todo (flexibilidad para cambios). No soldé regulador 3,3 V ni pines libres de Arduino (no los uso ahora). Fijé Arduino a soporte con 2 tornillos y puse PCB. Conecté motores a drivers y los coloqué en PCB. Servos en pines servo, driver paso a paso con jumper para 1/8 paso. Radio: mando/receptor FLYSKY (baratos y buenos). Receptor a Arduino: cables extensión servo (3 hilos: VCC, GND, Señal). Comunicación I-BUS + puerto serie. Para enviar datos de vuelta (voltaje batería), sensor I-BUS del receptor a otro puerto serie Arduino. Convertidor buck atornillado. Batería LiPo sujeta con 2 gomas (fácil extracción para carga). Interruptor en panel trasero derecho. Cable 20 AWG (varios amperios). ¡Revisa conexiones! Error = fuego. Cámara FPV a 12 V, señal vídeo a transmisor (también 12 V). Electrónica terminada. Ponemos tapas y… casi listo: falta programar Arduino. Descarga código Arduino al final. Resumen del código Con librería Convertimos a: radio giro derecha, radio giro izquierda, velocidad rover 0-100 %. Usamos radio Ángulos → servos con librería Motores DC: Código no muy complejo (rover funciones simples). Planeo añadir en futuros videos: navegación GPS, sensores, brazo robótico, recogida muestras, etc. ¡Espero que disfrutaras y aprendieras! Preguntas en comentarios y mira mi Colección Proyectos Arduino.Resumen






Modelo 3D del Rover DIY







Impresión 3D de las piezas del Rover



Lista de piezas para el Rover DIY
Montaje del Rover



Montaje de la suspensión Rocker-Bogie
























Montaje de motores del Rover





Montaje de la unidad de cámaras





Montaje del resto del Rover





Electrónica



Diagrama de circuito del Rover DIY

PCB Personalizada










Programación del Rover DIY – Código Arduino
IBusBM leemos datos del mando RC.// Lectura datos del mando RC IBus.loop(); ch0 = IBus.readChannel(0); ch1 = IBus.readChannel(1); ch2 = IBus.readChannel(2); ch3 = IBus.readChannel(3); ch6 = IBus.readChannel(6);// Conversión datos // Giro derecha if (ch0 > 1515) { r = map(ch0, 1515, 2000, 1400, 600); // radio giro 1400mm a 600mm } // Giro izquierda else if (ch0 < 1485) { r = map(ch0, 1485, 1000, 1400, 600); // radio giro 600mm a 1400mm } // Velocidad rover % 0-100 s = map(ch2, 1000, 2000, 0, 100);r para calcular ángulos servos y velocidades ruedas (geometría Ackermann).void calculateMotorsSpeed() { // sin giro, todas ruedas misma velocidad - recto if (ch0 > 1485 && ch0 < 1515) { speed1 = speed2 = speed3 = s; } // con giro, velocidades dependen de radio else { // Ruedas exteriores (más lejos del centro giro) = velocidad max // Por geometría, tres ruedas exteriores giran casi igual (difieren 1%) speed1 = s; // Ruedas interiores delantera y trasera: más cerca centro giro → menor velocidad speed2 = s * sqrt(pow(d3, 2) + pow((r - d1), 2)) / (r + d4); // Rueda interior central: más cerca → menor velocidad speed3 = s * (r - d4) / (r + d4); } // 0-100% → PWM 0-255 speed1PWM = map(round(speed1), 0, 100, 0, 255); speed2PWM = map(round(speed2), 0, 100, 0, 255); speed3PWM = map(round(speed3), 0, 100, 0, 255); } void calculateServoAngle() { // Ángulo cada servo para radio "r" thetaInnerFront = round((atan((d3 / (r + d1)))) * 180 / PI); thetaInnerBack = round((atan((d2 / (r + d1)))) * 180 / PI); thetaOuterFront = round((atan((d3 / (r - d1)))) * 180 / PI); thetaOuterBack = round((atan((d2 / (r - d1)))) * 180 / PI); }ServoEasing (movimiento suave).// Servos servoW1.startEaseTo(97 - thetaOuterFront); servoW3.startEaseTo(97 + thetaOuterBack); servoW4.startEaseTo(94 - thetaInnerFront); servoW6.startEaseTo(96 + thetaInnerBack);analogWrite() (PWM a drivers).// Motor Rueda 1 - Izq Delantera analogWrite(motorW1_IN1, speed2PWM); // PWM digitalWrite(motorW1_IN2, LOW); // Adelante
Proceso de manufactura
- Construye un Rover con Windows IoT Core en Raspberry Pi 2 – Guía de Principiante a Avanzado
- Detector de frecuencia de audio con Arduino – Mide los picos de sonido más intensos
- Tres en raya con Arduino, matriz LED MAX7219 y carcasa de cartón
- Construye un voltímetro DIY con Arduino y pantalla Nokia 5110 – Guía paso a paso
- Construye un Temporizador Regresivo Fiable con Arduino y Pantalla de 7 Segmentos SparkFun
- Construye tu Propio Coche RC Porsche con Arduino: Guía Paso a Paso
- Construye un Monitor de Energía Inteligente Fiable con Arduino UNO – Guía Paso a Paso
- Construye un Cerco RFID Portátil con Arduino – Guía Paso a Paso
- Detección de Colores con Arduino Nano y Sensor TCS3200
- Dispositivo de medición de altura DIY con Arduino: Preciso y fácil de construir
- Detector de Metales por Inducción de Pulso con Arduino Nano – Kit y Guía DIY