Réplica DIY Mars Perseverance Rover – Proyecto basado en Arduino
En este tutorial, te mostraré cómo construí una réplica del Mars Perseverance Rover. Por supuesto, inspirado en el rover real que actualmente está explorando Marte, diseñé este rover de manera que todos los amantes de esta tecnología, estudiantes, fabricantes, entusiastas de la mecatrónica o la robótica, etc., puedan seguir fácilmente las instrucciones de este video y construir su propio Mars Rover.
Puede ver el siguiente video o leer el tutorial escrito a continuación.
Resumen
Echemos un vistazo a las características principales de este rover. Emplea una suspensión de bogie basculante que permite que el rover funcione sin problemas en terrenos irregulares y trepe obstáculos, como rocas, que tienen hasta el doble del diámetro de la rueda mientras mantiene las seis ruedas en contacto con el suelo todo el tiempo. Cada rueda tiene un motor de CC independiente que impulsa el vehículo hacia adelante o hacia atrás.
Las cuatro ruedas de las esquinas tienen servomotores de dirección individuales. Para dirigir el rover de manera eficiente y evitar que los neumáticos resbalen al tomar una curva, estamos implementando la geometría de dirección de Ackermann. Con esta geometría podemos calcular la velocidad y el ángulo de cada rueda en función del radio de giro.
Esto significa que, al girar, las ruedas direccionales interiores tendrán un ángulo mayor en comparación con las ruedas exteriores. Al mismo tiempo, las ruedas interiores tendrán velocidades más lentas en comparación con las ruedas exteriores.
Para controlar el rover, estoy usando un transmisor RC comercial barato que envía comandos al rover. En el rover tengo un receptor RC adecuado que recibe los comandos y los envía a una placa Arduino. Sí, el cerebro de este rover de Marte es en realidad una placa Arduino MEGA y, para conectar todo fácilmente, hice una PCB personalizada que se puede conectar simplemente en la parte superior de la placa Arduino MEGA.
El rover también cuenta con una cámara FPV ubicada en la unidad de cámaras. Se controla mediante un motor paso a paso y un servomotor y recibo el video en tiempo real en un teléfono inteligente.
Me gustaría señalar aquí que muchas de las partes en realidad no son funcionales, o están presentes solo para que coincidan con la apariencia del rover real. Además, falta el brazo robótico, pero planeo hacer el brazo y agregar más funciones a este rover en videos futuros.
Sin embargo, ahora déjame guiarte a través del proceso de construcción, comenzando con el diseño del rover, conectando los componentes electrónicos y programando la placa Arduino.
Modelo DIY 3D Mars Rover
Diseñé este rover de Marte usando 3D EXPERIENCE Solidworks que en realidad es el patrocinador de este video.
3DEXPERIECE Solidworks es una versión de Solidworks con capacidades en la nube que obtenemos a través de la plataforma 3DEXPERIECE. Aquí todo funciona a través de la nube, por lo que usted o cualquier persona de su equipo puede tener acceso a los datos o modelos en cualquier momento y desde cualquier parte del mundo. La plataforma 3DEXPERIECE también incluye muchas aplicaciones útiles de productividad y gestión de datos.
Por ejemplo, la aplicación Planificación de proyectos es una excelente manera de organizar sus tareas, establecer fechas límite y realizar un seguimiento de su progreso. Con la aplicación 3D Markup, puede ver, explorar y tomar notas de los modelos desde cualquier dispositivo, como una computadora portátil, una tableta o incluso un teléfono inteligente.
También hay un modelador 3D separado basado en la nube llamado SOLIDWORKS xDesign, que se ejecuta dentro de su navegador. Se puede usar junto con Solidworks o por sí solo y es ideal para modelar, en cualquier lugar, en cualquier momento y en cualquier dispositivo.
Sin embargo, probablemente la noticia más emocionante para muchos de ustedes aquí es que, a partir de la segunda mitad de este año, habrá una versión de fabricante de 3DEXPERIECE Solidworks que puede obtener por solo $ 99 por año. Muchas gracias a Solidworks por patrocinar contenido educativo como este.
Si desea saber si SOLIDWORKS y la plataforma 3DEXPERIENCE pueden funcionar para usted, consulte los siguientes enlaces a continuación.
Pruebe 3DEXPERIENCE gratis con mi enlace especial: www.solidworks.com/HTMTryNow
Más información sobre 3DEXPERIENCE SOLIDWORKS: www.solidworks.com/HTMLearnMore
3DEXPERIENCE SOLIDWORKS para creadores:www.solidworks.com/htm
Bien, volvamos al modelo y expliquemos cómo diseñé el rover. Mi objetivo era hacer que este rover se pareciera lo más posible al Mars Perseverance Rover real. En el sitio web oficial de la NASA hay un modelo 3D del Mars Perseverance Rover, así que lo descargué y lo abrí en Blender.
Tomé 3 fotografías de la vista frontal, superior y lateral del rover y las importé a Solidworks. Quería que el tamaño de las ruedas fuera de 130 mm de diámetro, así que escalé las imágenes de acuerdo con esta dimensión.
Luego, desde aquí tomé todas las dimensiones clave, como el ancho, largo, alto, distancia entre ruedas, dimensiones para la suspensión del bogie basculante, etc.
Ahora, de acuerdo con estas dimensiones y los motores y servos de CC que planeé usar, diseñé las partes del rover de manera que se puedan imprimir y ensamblar fácilmente en 3D mientras trato de mantener la apariencia lo más cerca posible del original.
Para la suspensión del bogie basculante estoy usando perfiles de aluminio redondos de 20 mm, mientras que para el bastidor base estoy usando perfiles de aluminio con ranura en T de 20 mm.
Puede buscar y descargar este modelo 3D, así como explorarlo en su navegador en Thangs.
Y aquí están los archivos STL necesarios para la impresión 3D:
Impresión 3D de las piezas de la réplica del Mars Rover
Para imprimir las piezas en 3D, utilicé mi antigua Creality CR-10 y la nueva impresora 3D CR-10 V3. Si desea imprimir las ruedas con material flexible, definitivamente necesitará una impresora con extrusora directa como la CR-10 V3.
Ambas impresoras 3D brindan una gran calidad de impresión y son relativamente asequibles. Si está interesado, aquí hay enlaces a ellos para que pueda consultarlos:
Creality CR-10…… Amazon / Banggood
Creality CR-10 V3…… Amazon / Banggood / AliExpress
Consulte también: Los mejores osciloscopios económicos para principiantes y creadores – Actualización 2021
Al imprimir las piezas en 3D, es importante utilizar la función de expansión horizontal en su software de corte. Utilicé un valor de -0,1 mm. Esta característica compensa la expansión del filamento al imprimir.
Si no se usa, por ejemplo, si la pieza tiene un orificio con un diámetro de 20 mm, el orificio de la pieza impresa en 3D real será de alrededor de 19,8 mm y no podremos ensamblarla.
Sin embargo, aquí están todas las piezas impresas en 3D.
Para ser honesto, es un poco loco cuánta impresión hay, pero es la única forma de obtener la apariencia única del rover. Sin embargo, puede reducir el tiempo de impresión a la mitad si elige imprimir solo las partes funcionales de este rover.
Lista de piezas para el Mars Rover DIY
Aquí hay una lista de los componentes necesarios para ensamblar este Mars Rover DIY. La lista de los componentes electrónicos se puede encontrar a continuación en la sección del diagrama del circuito del artículo.
Perfiles de aluminio con ranura en T 20x20mm ………..Amazon / Banggood / AliExpress
Soportes de esquina de perfil con ranura en T ……………..… Amazon / Banggood / AliExpress
Tubo redondo de aluminio de 20 mm ………………. Amazonas / AliExpress
Junta de extremo de barra 8 mm ………………………………….. Amazonas / Banggood / AliExpress
8 x Rodamiento 608RS – 8x22x7mm ……..…… Amazonas / Banggood / AliExpress
8 x Rodamiento 626RS – 6x19x6mm ………….… Amazonas / Banggood / AliExpress
5 x Cojinete 625RS – 5x16x5mm …………… Amazonas / Banggood / AliExpress
Pernos M3 de varias longitudes ………………………… Amazonas / Banggood / AliExpress
4 bocinas de servo …………………………………………. Amazonas / Banggood / AliExpress
También necesitamos varias longitudes de pernos M4, M5 y M6. Puede consultar la lista completa de pernos y tuercas necesarios a continuación.
También puede obtener los pernos y las tuercas en su ferretería local.
Ensamblaje del Rover
Muy bien, ahora podemos empezar a ensamblar el rover. Primero, necesitamos preparar los perfiles de aluminio. Usé una sierra de mano para metal para cortarlos a la medida.
Necesitamos 10 perfiles con ranura en T para la base y 8 perfiles redondos para la suspensión balancín-bogie con las siguientes dimensiones.
Para ensamblar el marco de perfiles con ranura en T, utilizamos soportes de esquina con ranura en T adecuados y algunos pernos y tuercas. Una vez que tengamos listos los marcos superior e inferior, podemos completar la base insertando las partes impresas en 3D de la junta de balancín en los lados y algunos soportes impresos en 3D en la parte delantera y trasera. Para asegurarlos en su lugar, necesitamos pernos M3 y tuercas con ranura en T.
Para las juntas de balancines utilicé tornillos y tuercas M5. La distancia desde el perfil frontal hasta el balancín debe ser de 134 mm.
Montaje de la suspensión del balancín-bogie
A continuación, podemos insertar los cojinetes principales para la suspensión del bogie balancín en su lugar. Luego, tenemos el eje de la junta de balancines que se fijará a la base mediante un tornillo M8.
El eje tiene una ranura donde podemos introducir una tuerca M8 que sirve para fijarlo a la base. El orificio del eje es de 7,5 mm para que tengamos una conexión estrecha entre el perno y el eje. De esta manera, en realidad reforzamos el eje impreso en 3D, ya que el propio perno soportará parte del peso del rover. Esta es la parte más estresada de todo el conjunto, ya que todo el peso del móvil se apoya en el eje del balancín. La forma en que imprimimos las piezas es muy importante para su resistencia.
Inicialmente imprimí este eje de la manera más fácil, donde no se necesita material de soporte, pero la impresión falló.
De esta forma, la fuerza de tensión principal actúa sobre las capas que no son tan fuertes, pero si imprimimos la pieza de lado, donde la fuerza de tensión actuará sobre los contornos de la pared, la pieza será mucho más fuerte y no fallará.
No obstante, ahora continuaremos con el montaje de la suspensión balancín-bogie junto con las rótulas y los soportes del motor, y posteriormente acoplaremos estos subconjuntos a los ejes de balancines.
Los agujeros de las piezas donde van los perfiles redondos de 20 mm están dimensionados para que queden ajustados, por lo que en algunos casos necesitamos usar una escofina o una lija para que encajen.
Ahora, para ensamblar correctamente estas piezas, necesitamos hacer agujeros en los perfiles redondos en lugares precisos. Para ello, primero marcaremos una línea recta en el perfil.
A continuación, podemos insertar el perfil en la pieza impresa en 3D con la línea de marcado pasando por el orificio de la pieza. Luego podemos marcar las ubicaciones donde necesitamos perforar el perfil en ambos lados de esa parte.
En el lado opuesto del perfil, debemos repetir el mismo procedimiento.
Perforé los agujeros con un taladro de 2,5 mm y luego, con un tornillo M3, hice una rosca en el perfil que usaremos para apretar las piezas.
El perfil de aluminio es más blando que el perno, por lo que es fácil hacer la rosca con el propio perno. Seguir este método para perforar los agujeros es muy importante para que al final todas las piezas queden colocadas como deben estar entre sí.
Para la unión del bogie también utilizamos dos rodamientos y un tornillo M8.
Una vez que completemos la disposición de la suspensión del balancín-bogie, podemos continuar con el montaje de las juntas del volante. La pieza de unión del volante se compone de dos piezas atornilladas entre sí.
Para la junta real o la conexión entre la pieza de montaje del servo y la pieza de montaje del motor de CC, utilizamos dos cojinetes y un perno M6.
En la parte superior o en la cabeza del perno, debemos colocar una bocina de servo y lo hacemos con la ayuda de este acoplador impreso en 3D y algunos pernos M3.
El acoplador tiene una ranura hexagonal a través de la cual se transferirá el movimiento del servo al perno. En la parte inferior podemos atornillar la otra parte de la junta.
Aseguramos esta conexión con una tuerca M6. Esto completa la unión del volante, aunque más adelante me daré cuenta de que en realidad necesitamos agregar otra tuerca M6 en la parte inferior y apretarla a la otra tuerca.
Necesitamos hacer esto porque el movimiento del servo se transfiere a la parte de montaje del motor de CC usando la tuerca misma, y si no se aprieta con otra tuerca, toda la junta se desenroscará.
El mismo procedimiento se aplica a la otra junta de esquina. Sabemos que hemos conectado todo correctamente si colocamos este conjunto sobre una superficie plana y los tres soportes del motor están planos o todos paralelos entre sí.
Por supuesto, estamos usando el mismo método para ensamblar el otro lado. Sin embargo, podemos notar aquí que aunque algunas de las partes parecen idénticas, no son las mismas partes sino que en realidad están reflejadas.
A continuación, debemos insertar estos subconjuntos en los ejes de juntas de balancines en el bastidor base o el chasis. Sin embargo, antes de hacer eso, debemos insertar algunos insertos de latón roscados en el eje.
Usando un soldador, podemos insertarlos fácilmente en su lugar, y así obtenemos agujeros roscados buenos y confiables para asegurar el subconjunto de suspensión. Necesitamos cuatro tornillos M4 para ese propósito.
Una vez que los instalamos en ambos lados, podemos notar que el chasis se cae o gira libremente. Entonces, en realidad nos falta algo para que la suspensión de balancín-bogie funcione correctamente, y ese es el diferencial.
Con el diferencial, los dos balancines están conectados entre sí y al chasis del rover. Con esta configuración, cuando un lado gira, el otro gira en la dirección opuesta, proporcionando así un contacto de la rueda aproximadamente igual.
El chasis tendrá un ángulo de inclinación promedio de ambos balancines.
Aquí están todas las piezas necesarias para montar el diferencial.
Como la barra diferencial es bastante larga, la hice con tres piezas atornilladas para que podamos imprimirlas en 3D incluso en impresoras 3D más pequeñas. La barra del diferencial pivotará en el medio del chasis con una junta hecha de dos cojinetes y un tornillo M8.
Para conectar el diferencial con el balancín, necesitamos una rótula de rótula. Estoy usando una rótula de extremo de varilla M8 y también necesitamos una varilla roscada M8 con una longitud de 50 mm. La varilla roscada se introduce en una pieza impresa en 3D que tiene una tuerca M8 en un lado y, en el otro lado, se introduce en la rótula del extremo de la varilla.
Aquí debemos ajustar la distancia entre el enlace diferencial impreso en 3D y el extremo de la barra, que debe ser de unos 20 mm para que el chasis permanezca horizontal. Para conectar el enlace del diferencial con el balancín, estamos usando dos rodamientos y un perno M5.
Repetimos este procedimiento para el otro lado también y con esto se completa nuestra suspensión balancín-bogie. Cuando un lado sube, el otro baja y viceversa.
Esto proporciona que todas las ruedas estén en contacto con el suelo todo el tiempo. El chasis realiza solo la mitad del movimiento de la pata, o el chasis tiene un ángulo de inclinación promedio de ambos balancines.
Ver también:Operación automática de plataforma de ruedas Mecanum y brazo robótico Arduino
Montaje de los motores para Mars Rover
Muy bien, a continuación podemos continuar con la instalación de los motores de CC. Los motores que utilizo son de 37 mm de diámetro, funcionan a 12 V y tienen una caja de cambios con salida de 50 RPM.
Aunque luego me di cuenta de que 50 RPM es demasiado para este rover, por lo que sugeriría elegir versiones de 20 o 10 RPM.
Para unir las ruedas a los motores, hice estos acopladores de ejes.
Aquí necesitamos instalar insertos roscados M3 que se usarán para asegurar el acoplador al eje, y también tuercas M4 para asegurar la rueda al acoplador. Al insertar las tuercas, también debemos agregar un poco de pegamento para que se mantengan firmemente en su lugar, o usar insertos roscados en su lugar.
A continuación, podemos colocar las ruedas. Las ruedas se componen de dos partes. Una es la rueda que imprimí con filamento flexible, pero no tiene por qué serlo, y la otra es la llanta impresa con PLA normal.
La llanta tiene ranuras que encajan en la rueda y así la potencia del motor se transfiere a la rueda. Podemos añadir unas gotas de pegamento en las ranuras para que queden más fijas. Por último, podemos fijar las ruedas a los acopladores de ejes oa los motores DC mediante 4 tornillos M4.
Muy bien, ahora podemos instalar servomotores de dirección. Estoy usando servos digitales de alto par con un par de 25 kgcm y un voltaje de funcionamiento de 4,8 a 6,8 V. Para asegurar los servos en su lugar, usamos cuatro pernos M3 que se insertan en las inserciones roscadas M3 en la parte impresa en 3D del soporte del servo.
Ensamblaje de la unidad de cámara
A continuación, podemos montar la unidad de cámaras. Para la panorámica de la cámara, decidí usar un motor paso a paso NEMA 17, pero puede cambiar esto para usar cualquier otro tipo de motor aquí.
El movimiento del motor se transfiere a la parte superior usando una varilla roscada M5 que se conecta al motor con un acoplador de eje impreso en 3D, y en el otro lado usamos un rodamiento y dos tuercas para asegurar la varilla roscada al elemento móvil. Para inclinar la cámara estoy usando un servo que es el mismo que usamos para los volantes.
Muchas de las partes aquí en la unidad de la cámara no son funcionales y están presentes solo para que coincidan con la apariencia del rover real. Para ensamblar estas piezas, necesitamos varios pernos M3 y algunos insertos roscados.
Sin embargo, también instalaré una cámara FPV real aquí. Hice un soporte personalizado para poder montarlo en la carcasa de la unidad de cámara. Se puede acceder fácilmente a la cámara desde la parte superior, que la cerramos con una cubierta a presión. Aquí está la apariencia final de la unidad de cámara.
Monté todo este subconjunto de cámara en la esquina frontal derecha del chasis.
En este punto, podemos continuar ensamblando el resto de las piezas impresas en 3D, que en realidad no son funcionales sino que solo se asemejan a la apariencia del rover real, o conectar los componentes electrónicos y hacer que el rover funcione. Decidí ensamblar primero todas las piezas impresas en 3D y luego hacer la electrónica.
Ensamblaje del resto del rover
Tal como dije, las siguientes partes son solo para hacer coincidir la apariencia del rover, por lo que no entraré en detalles sobre cómo ensamblarlas. Puede ver cómo se debe conectar todo desde el modelo 3D.
De hecho, puse mucho esfuerzo en el diseño de estas piezas, prestando atención a los detalles para que todo se vea bien.
Estas piezas también son bastante grandes y lleva algo de tiempo imprimirlas en 3D.
Aquí hay una vista rápida de cómo los instalé.
Los dos últimos paneles superiores en el medio del móvil están diseñados para encajar a presión en el móvil.
De hecho, actuarán como una cubierta que se puede quitar fácilmente ya que los componentes electrónicos estarán ubicados en esta área.
El soporte de componentes electrónicos está hecho de dos piezas impresas en 3D atornilladas y va al marco inferior del chasis.
Electrónica
Muy bien, ahora podemos continuar con la electrónica. Primero, necesitamos medir cuánto cable necesitamos para cada motor. Soldé los cables directamente en los motores porque no tenía los conectores de motor adecuados. Usé tubos termorretráctiles para aislar los conectores.
Con la ayuda de unas bridas podemos guiar y mantener limpios los cables.
Para los servomotores, podemos usar cables de extensión de servo para extender los cables al compartimiento de la electrónica. La parte de montaje de la electrónica tiene ranuras por las que podemos pasar los cables para llegar a la mitad del rover.
En general, creo que el cableado salió bastante limpio y los cables pasaron por detrás de las partes visibles.
Ver también:Robot SCARA | Cómo construir su propio robot basado en Arduino
Diagrama del circuito DIY de Mars Rover
Echemos un vistazo al diagrama de circuito de este rover ahora y veamos cómo se debe conectar todo.
Puede obtener los componentes necesarios para este proyecto en los siguientes enlaces:
Motor CC 12 V 37 mm …….……………….…
Servo digital de 25 kg …………………………….
Controlador de motor de CC DRV8871 ……………….
Motor paso a paso:NEMA 17……………………
A4988 Controlador paso a paso………………..…..…
Arduino MEGA…………………….…..…………
Convertidor reductor CC-CC …………………….
Batería LiPo 3S ……………………..…………..
Conector XT60 ………………………………
Transmisor FLYSKY RC …………………..
Cámara FPV y transmisor de vídeo…. Amazonas / Banggood / AliExpress
Receptor FPV a su elección
Para accionar los seis motores de CC, utilizamos seis controladores de motor de CC DRV8871 que admiten control PWM y hasta 3,6 A de corriente máxima. El voltaje de funcionamiento de los motores de CC es de 12 V, con una corriente nominal de 1 A y una corriente de bloqueo de 3 A. Para alimentar el rover estoy usando una batería LiPo 3S que proporciona alrededor de 12 V.
Los servos, por otro lado, necesitan de 4,8 a 6,8 V, por lo que necesitamos un convertidor de CC a CC que convierta los 12 V a 6 V. El convertidor debe poder manejar alrededor de 8A de corriente, ya que los servos que estamos usando son bastante potentes y tienen una corriente de parada de alrededor de 2A. Para impulsar el motor paso a paso de la unidad de cámara, podemos usar un controlador paso a paso A4988 o DR8825. Usando dos resistencias podemos hacer un divisor de voltaje simple a través del cual podemos monitorear el voltaje de la batería.
El receptor RC se alimenta con los 6 voltios provenientes del convertidor reductor, y la cámara FPV y su transmisor de video se alimentan con los 12V de la batería.
PCB personalizado
Para mantener los componentes electrónicos organizados, diseñé una placa de circuito impreso personalizada para este rover DIY de Marte.
Este PCB en realidad actuará como un escudo Arduino MEGA, ya que podremos conectarlo directamente en la parte superior de la placa Arduino MEGA. Además de los controladores de motor, incluí un regulador de voltaje de 3.3V y una conexión NRF24L01 dedicada en caso de que desee controlar el rover usando ese módulo, así como conexiones para un sensor DHT22, brújula, I2C, comunicación en serie, 12V, 5V , 3.3V y conexiones GND. De hecho, preparé esta PCB para mejorar las funcionalidades del rover.
Pedí el PCB de PCBWay. Aquí podemos simplemente cargar el archivo Gerber, elegir las propiedades de nuestro PCB y pedirlo a un precio razonable.
No cambié ninguna de las propiedades predeterminadas, excepto el color de la PCB, que elegí azul para que coincidiera con la placa Arduino. Puede descargar el archivo Gerber aquí abajo, o desde la comunidad de intercambio de proyectos de PCBWay a través de la cual también puede pedir directamente el PCB.
Aquí puede descargar el archivo Gerber para este PCB DIY Mars Rover:
Sin embargo, después de varios días llegó el PCB. La calidad de la PCB es excelente y todo es exactamente igual que en el diseño.
El montaje de la placa de circuito impreso es bastante sencillo, ya que todo está etiquetado. Empecé soldando los cabezales de los pines en la parte inferior de la PCB, para la conexión Arduino MEGA y luego continué con la parte superior. De hecho, usé encabezados de pines para todas las conexiones, porque brinda flexibilidad para realizar cambios si algo no funciona correctamente. No soldé el regulador de voltaje de 3,3 V ni algunos pines libres de Arduino, ya que no los iba a usar ahora de todos modos.
Una vez que terminé con el ensamblaje de la placa de circuito impreso, aseguré la placa Arduino a la pieza de montaje de la electrónica con dos pernos y le agregué la placa de circuito impreso.
Luego conecté cada motor a sus drivers y los puse en su lugar en la PCB. Los servos van en sus pines de servo apropiados, así como el controlador paso a paso para el que usé un puente para seleccionar la resolución de paso de 1/8.
Para la comunicación por radio, estoy usando el transmisor y el receptor FLYSKY RC, que son realmente asequibles y funcionan muy bien.
Para conectar el receptor al Arduino, podemos usar cables de extensión de servo, ya que necesitamos tres cables, VCC, GND y el pin de señal. El receptor se comunica con el Arduino a través de un I-BUS y el puerto serie. Si queremos enviar datos del receptor al transmisor, en nuestro caso para monitorear el voltaje de la batería, también necesitamos conectar el sensor I-BUS del receptor a otro puerto serie Arduino.
El convertidor reductor está asegurado en su lugar con dos pernos, y para asegurar la batería LiPo estoy usando dos bandas elásticas para poder quitar fácilmente la batería para cargarla.
El interruptor de encendido va en el panel trasero derecho del rover. Utilicé cables de calibre 20 para estas conexiones, ya que el flujo de corriente a través de ellos puede llegar a varios amperios cuando el móvil está completamente acoplado. Make sure you double check your connections with these wires because if you connect something wrong you might fire up things.
Lastly, we can connect the FPV camera to a 12V power supply and connect video signal wire to the video transmitter which also needs to be powered with 12V. With this we are done with the electronics.
We can put back the cover panels in place and we are done with this DIY Mars Rover. Actually, we are almost done, as we need to give life to this machine now, or program the Arduino.
Programming the DIY Mars Rover – Arduino Code
Here you can download the Arduino code for this DIY Mars Rover project:
Code overview
So, using the IBusBM library we read incoming data from the RC Transmitter.
// Reading the data comming from the RC Transmitter
IBus.loop();
ch0 = IBus.readChannel(0);
ch1 = IBus.readChannel(1);
ch2 = IBus.readChannel(2);
ch3 = IBus.readChannel(3);
ch6 = IBus.readChannel(6);
Code language: Arduino (arduino)
Then we convert these values into a turning radius to right value, turning radius to left value and rover speed from 0 to 100%.
// Convertign the incoming data
// Steering right
if (ch0 > 1515) {
r = map(ch0, 1515, 2000, 1400, 600); // turining radius from 1400mm to 600mm
}
// Steering left
else if (ch0 < 1485) {
r = map(ch0, 1485, 1000, 1400, 600); // turining radius from 600mm to 1400mm
}
// Rover speed in % from 0 to 100
s = map(ch2, 1000, 2000, 0, 100); // rover speed from 0% to 100%
Code language: Arduino (arduino)
We use the turning radius “r” value for calculating the steering wheels angles as well as the speed of the wheels.
void calculateMotorsSpeed() {
// if no steering, all wheels speed is the same - straight move
if (ch0 > 1485 && ch0 < 1515) {
speed1 = speed2 = speed3 = s;
}
// when steering, wheels speed depend on the turning radius value
else {
// Outer wheels, furthest wheels from turning point, have max speed
// Due to the rover geometry, all three outer wheels should rotate almost with the same speed. They differe only 1% so we asume they are the same.
speed1 = s;
// Inner front and back wheels are closer to the turing point and have lower speeds compared to the outer speeds
speed2 = s * sqrt(pow(d3, 2) + pow((r - d1), 2)) / (r + d4);
// Inner middle wheel is closest to the turning point, has the lowest speed
speed3 = s * (r - d4) / (r + d4);
}
// speed value from 0 to 100% to PWM value from 0 to 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() {
// Calculate the angle for each servo for the input turning radius "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);
}
Code language: Arduino (arduino)
As I mentioned earlier, we are using the Ackerman steering geometry for calculating them. These values are then used for controlling the servos using the ServoEasing library which provides smoother servo movements.
// Servo motors
servoW1.startEaseTo(97 - thetaOuterFront);
servoW3.startEaseTo(97 + thetaOuterBack);
servoW4.startEaseTo(94 - thetaInnerFront);
servoW6.startEaseTo(96 + thetaInnerBack);
Code language: Arduino (arduino)
For controlling the DC motors using the analogWrite() function which actually sends PWM signal to the DC motor drivers.
// Motor Wheel 1 - Left Front
analogWrite(motorW1_IN1, speed2PWM); // PWM value
digitalWrite(motorW1_IN2, LOW); // Forward
Code language: Arduino (arduino)
Overall, the code is not that complicated as the rover itself doesn’t have complicated functions. However, I do plan in future videos to add more functions to this rover, like GPS navigation, various sensors, robotic arm, soil collecting mechanism and so on.
I hope you enjoyed this project and learned something new. Feel free to ask any question in the comments section below and check my Arduino Projects Collection.