¿Te imaginas tener en casa un pequeño robot capaz de moverse como una hormiga? Con el Robot Arduino Hormiga Hexápodo, esta idea se convierte en realidad. Descubre en este artículo cómo este increíble dispositivo puede revolucionar la forma en que interactuamos con la tecnología. ¡No te lo pierdas!
En este tutorial te mostraré cómo construí un hexápodo Arduino. Como sugiere el nombre, el hexápodo tiene seis patas, pero también cola o abdomen, cabeza, antenas, mandíbulas e incluso ojos funcionales. Todo esto hace que el hexápodo parezca una hormiga, por lo que también podemos llamarlo hormiga robot Arduino.
Puede ver el vídeo a continuación o leer el tutorial escrito a continuación.
descripción general
Para controlar el robot, creé una aplicación de Android personalizada. La app cuenta con 4 botones mediante los cuales podemos ordenar al robot que avance o retroceda así como que gire a la izquierda o a la derecha. Además de estas funciones principales, el robot también puede mover la cabeza y la cola, morder, agarrar y soltar cosas e incluso atacar.
Como>
Si>
Arduino Hexapod: modelo 3D de una hormiga robot
Como de costumbre, comencé a diseñar el hexápodo utilizando un software de modelado 3D. El hexápodo tiene 6 patas y cada una de ellas consta de 3 articulaciones o 3 servos. Esto significa que necesitamos 18 servos en total y en mi caso utilicé los servos MG996R.
En>
Aquí>
Puedes encontrar y Descarga este modelo 3Dy explóralo en tu navegador en Thangs.
Archivos>
Archivos STL de Arduino Ant Robot
Impresión 3D de las piezas.
Supongo que ya sabes lo que sigue: la impresión 3D de las piezas del robot. Utilicé la impresora 3D Creality CR-10 para todas las impresiones e hizo un gran trabajo. La parte más difícil de imprimir fue la cabeza porque quería una sola impresión.
Para>
Montaje del hexápodo Arduino
Una vez que tengamos todas las piezas impresas, podemos pasar al montaje del hexápodo. Empecé montando las patas. Para fijar los servos a las piezas impresas utilicé tornillos y tuercas M3 y arandelas elásticas. La longitud de los tornillos debe ser de al menos 12 mm y en mi caso utilicé tornillos de 16 mm de largo.
Necesitamos>
Al>
Cabe destacar que los servos tienen un pequeño soporte triangular en la parte superior que hay que retirar. Utilicé una sencilla navaja para poder colocar los servos con las piezas impresas en un instante. Antes de insertar el tercer servo, primero debemos insertar un tornillo M4 que se usará para conectar la pata a la placa base.
Así>
Una>
Esto>
Una vez colocadas las patas, este proyecto ya tomó forma y parecía un hexápodo.
En>
A continuación debemos darle la vuelta al hexápodo para poder insertar la placa inferior a través de los tornillos M4 de las patas. Luego le sujeté las patas con unas arandelas y tuercas autoblocantes. Debemos tener cuidado con lo apretados que apretamos estos tornillos porque en realidad son las articulaciones giratorias y las patas también deben girar y al mismo tiempo estar lo suficientemente seguras.
A>
Luego>
Luego>
Finalmente>
Antes de acoplar el cabezal al mecanismo, debemos preensamblarlo o acoplar las mandíbulas con el pequeño servo SG90 y el sensor ultrasónico. Nuevamente, está un poco apretado, pero aun así logré insertar la primera mandíbula inferior y fijarla a la cabeza con un tornillo M4.
Puedes>
A>
Luego>
A>
A>
La>
Diagrama del circuito del robot Arduino Ant
Bien, ahora podemos pasar a la electrónica. Aquí está el esquema de este proyecto, que en realidad es simple, aunque parece un poco complejo debido a las numerosas conexiones de los servos.
Además>Servobiblioteca.
Tutorial relacionado: Cómo funcionan los servomotores y controlar los servos con Arduino
Para alimentar el robot, utilizo una batería LiPo 3S con un voltaje de aproximadamente 12 V. Las baterías LiPo pueden soportar un mayor consumo de corriente y, por lo tanto, son adecuadas para este proyecto porque consumen aproximadamente 10 amperios de corriente cuando todos los servos están encendidos al mismo tiempo. tiempo y a plena carga puede. Sin embargo, el voltaje de funcionamiento de los servos está limitado a 4,8 a 7,2 V, lo que significa que tengo que usar un convertidor reductor CC-CC para convertir los 12 V a 5 V. Incluso si usamos una batería LiPo 2S que tiene un voltaje de alrededor de 7,4 V u 8,4 V cuando está completamente cargada, aún necesitamos usar un convertidor reductor. El convertidor reductor que usaré para este proyecto puede manejar hasta 8 amperios de corriente, pero recomendaría usar uno de 10 a 15 amperios solo para asegurarme de tener suficiente corriente y no se sobrecaliente. En mi caso, el consumo máximo de corriente que noté mientras movía el robot fue de alrededor de 6 amperios.
Puede obtener los componentes necesarios para este proyecto a través de los siguientes enlaces:
- Servomotor MG996R………………………….…. Amazonas / Banggood / AliExpress
- Microservomotor SG90……..…….….……. Amazon / Banggood / AliExpress
- Módulo Bluetooth HC-05…………………….… Amazonas / Banggood / AliExpress
- Megaplaca Arduino …………………….…. Amazonas / Banggood / AliExpress
- Batería LiPo 3S……………………..………….. Amazon / Banggood / AliExpress
- Convertidor reductor CC-CC…………………………. Amazon / Banggood / AliExpress
Divulgación: estos son enlaces de afiliados. Como asociado de Amazon, gano con compras que califican.
Diseño de una placa de circuito para el Arduino Hexapod
Ahora bien, si intentamos conectar todo juntos, habrá un gran desorden debido a las muchas conexiones de los servos. Así que diseñé una placa de circuito impreso personalizada utilizando el software gratuito de diseño de circuitos en línea EasyEDA. Esta placa en realidad actuará como un Arduno Mega Shield para el Hexapod, ya que podemos conectarlo directamente a la Arduino Mega Board. Coloqué los terminales de los servos muy juntos e instalé dos condensadores grandes junto a ellos para mantener el voltaje más estable. También incluí una conexión para un módulo transceptor NRF24L01 por si queremos controlar el robot vía radio. Hay múltiples conectores de clavijas digitales y analógicos, conectores de tierra y de 5 V, dos conectores de LED y un conector de monitoreo de voltaje de la batería. El voltaje de la batería de 12 V pasa a través de un divisor de voltaje que consta de dos resistencias R1 y R2, que reduce el voltaje por debajo de 5 V para que el pin analógico pueda leerlo con seguridad. De esta forma sabemos cuándo es necesario cargar la batería.
Aquí>Archivos de proyecto de este diseño de PCB.. Después de completar el diseño, creé el archivo Gerber necesario para hacer la placa de circuito.
Archivo Gerber:
Gerber_Hexapod Hormiga Robot Hexápodo – Arduino Mega Shield
Entonces yo Pedí la placa a JLCPCB quienes en realidad son los patrocinadores de este video.
Aquí>
Al>
Montaje de la placa de circuito
Bien, ahora podemos seguir adelante y montar el tablero. Comencé soldando cabezales de pines macho a la placa que se usarán para conectarla a la placa Arduino. Una vez que tengamos los cabezales de los pines colocados en la parte inferior, podemos usar algún tipo de placa para sujetar los pines y darle la vuelta al tablero. Ahora necesitamos soldarlos todos al tablero. Una vez que hayamos terminado con eso, podemos pasar a las conexiones de los servos, para las cuales también necesitaremos cabezales de pines.
En>
A>
Recuerda>
Ahora podemos insertar los componentes electrónicos entre las dos placas. Aquí también está un poco apretado, pero todavía podemos meter todo allí. Primero viene la batería que pegué con cinta adhesiva y encima viene el Arduino junto con la placa de circuito que hicimos. A continuación podremos conectar el transceptor NRF24L01 o simplemente el módulo Bluetooth, según qué tipo de comunicación vayamos a utilizar. También instalé un LED que muestra cuándo es necesario cargar la batería o si el voltaje cae por debajo de 11 V. Finalmente tenemos que conectar todos los servos a los pines de los servos. Al hacer esto, asegúrese de anotar a qué número de pin conectó cada servo. Después de conectar todos los servos, simplemente podemos colocar la cubierta curva en la placa superior y terminamos con este proyecto.
código hexápodo arduino
En este vídeo sólo tenemos que ver cómo funciona el programa Arduino. Dado que el código es un poco más largo, para una mejor comprensión publicaré el código fuente del programa en secciones con una descripción para cada sección. Y al final de este artículo publicaré el código fuente completo.
Entonces, para controlar los servos usamos la biblioteca de servos básica y para la comunicación Bluetooth también necesitamos incluir la biblioteca SoftwareSerial. Primero necesitamos definir todos los objetos servo, así como algunas variables que se necesitan para el siguiente programa.
#include <Servo.h>
#include <SoftwareSerial.h>
#define trigPin 7
#define echoPin 6
#define ledB 10
SoftwareSerial Bluetooth(12, 9); // Arduino(RX, TX) - HC-05 Bluetooth (TX, RX)
// Create servo object
Servo s24;
Servo s23;
Servo s22;
Code language: Arduino (arduino)
En la sección de configuración necesitamos inicializar la comunicación Bluetooth, configurar los modos de pin para el sensor ultrasónico y los LED y también definir los pines a los que están conectados los servos.
void setup() {
Serial.begin(38400);
Bluetooth.begin(38400); // Default baud rate of the Bluetooth module
Bluetooth.setTimeout(1);
delay(20);
pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
pinMode(echoPin, INPUT); // Sets the echoPin as an Input
pinMode(ledB, OUTPUT);
// Head
s15.attach(36, 600, 2400);
s14.attach(35, 600, 2400);
s13.attach(34, 600, 2400); //grip
// Tail
s5.attach(26, 600, 2400); // Tail
// Leg 4
s10.attach(31, 600, 2400);
s11.attach(32, 600, 2400);
s12.attach(33, 600, 2400); //rot
// Leg 5
s7.attach(28, 600, 2400);
s8.attach(29, 600, 2400);
s9.attach(30, 600, 2400); //rot
// Leg 6
s1.attach(22, 600, 2400);
s2.attach(23, 600, 2400);
s3.attach(24, 600, 2400); //rot
// Leg 1
s18.attach(39, 600, 2400);
s17.attach(38, 600, 2400);
s16.attach(37, 600, 2400); //rot
// Leg 2
s21.attach(42, 600, 2400);
s20.attach(41, 600, 2400);
s19.attach(40, 600, 2400); //rot
// Leg 3
s24.attach(45, 600, 2400);
s23.attach(44, 600, 2400);
s22.attach(43, 600, 2400); //rot
Code language: Arduino (arduino)
Luego movemos los servos a su posición inicial usando las funciones write(). Aquí es donde realmente podemos calibrar nuestros servos. Hay que tener en cuenta que al montar el robot no podrás poner cada servo en la posición exacta, pero aquí podemos hacer ajustes y conocer nuestros valores iniciales y programar el movimiento del robot desde ahí.
// == Move to initial position
// Head
s15.write(72);
s14.write(50);
s13.write(90); // Grip
s5.write(65); // Tail
// Leg 4
s10.write(65);
s11.write(35);
s12.write(40);
// Leg 5
s7.write(80);
s8.write(50);
s9.write(25);
// Leg 6
s1.write(90);
s2.write(45);
s3.write(60);
// Leg 1
s18.write(60);
s17.write(90);
s16.write(100);
// Leg 2
s21.write(50);
s20.write(85);
s19.write(75);
// Leg 3
s24.write(50);
s23.write(80);
s22.write(80);
Code language: Arduino (arduino)
Hay varias opciones para programar un movimiento hexápodo, como usar cinemática de avance o retroceso. Estos métodos implican algunas matemáticas serias donde la posición de cada articulación se calcula en función de los datos de entrada para la posición final deseada del cuerpo. Sin embargo, decidí hacerlo un poco menos complicado ya que los servos que uso no son lo suficientemente buenos para tal tarea de todos modos. Esto se debe a que mis servos son la versión barata del servo MG996R. No tienen el torque adecuado y no siempre se ubican exactamente en la posición deseada.
Así que echemos un vistazo a cómo hice funcionar el Hexápodo. Creé una función personalizada separada para mover cada pierna. Un ciclo de piernas consta de dos fases llamadas swing y postura. En la fase de balanceo, la pierna se mueve en el aire desde una posición inicial a una posición final, mientras que en la fase de postura, la pierna se mueve desde la posición final de regreso a la posición inicial con el efector final de la pierna tocando el suelo. De esta forma, el cuerpo del hexápodo avanza.
Entonces>
void moveLeg1() {
// Swign phase - move leg though air - from initial to final position
// Rise the leg
if (i1L1 <= 10) {
s18.write(60 - i1L1 * 2);
s17.write(90 - i1L1 * 3);
i1L1++;
}
// Rotate the leg
if (i2L1 <= 30) {
s16.write(100 - i2L1);
i2L1++;
}
// Move back to touch the ground
if (i2L1 > 20 & i3L1 <= 10) {
s18.write(40 + i3L1 * 2);
s17.write(60 + i3L1 * 3);
i3L1++;
}
// Stance phase - move leg while touching the ground
// Rotate back to initial position
if (i2L1 >= 30) {
s16.write(70 + i4L1);
i4L1++;
l1status = HIGH;
}
// Reset the counters for repeating the process
if (i4L1 >= 30) {
i1L1 = 0;
i2L1 = 0;
i3L1 = 0;
i4L1 = 0;
i5L1 = 0;
}
// Each iteration or step is executed in the main loop section where there is also a delay time for controlling the speed of movement
}
Code language: Arduino (arduino)
Primero, los dos servos exteriores levantan la pierna y el tercer servo conectado al cuerpo comienza a girar en una dirección específica. Cuando el tercer servo está a 10 pasos de distancia antes de que deje de girar, comenzamos a mover los dos servos exteriores hacia atrás a la misma posición para tocar el suelo. Esto completa la fase de balanceo o la pierna se mueve desde su posición inicial a su posición final. Luego giramos el tercer servo desde la posición final a la posición inicial y esto completa la fase de postura. Después de que la pierna completa un ciclo, los contadores se reinician y la pierna repite el ciclo una y otra vez. Cada iteración o paso se ejecuta en la sección del bucle principal, donde también hay un tiempo de retardo que controla la velocidad de los servos. Creé funciones similares para todas las demás piernas, así como algunas funciones adicionales para mover las piernas en la dirección opuesta para lograr movimientos inversos, izquierdo y derecho. Del mismo modo, programé el resto de funciones, usando contadores para seguir los pasos, como mover la cabeza, la cola, las mandíbulas, etc.
Por ejemplo, si queremos hacer avanzar el robot, necesitamos llamar a las seis funciones personalizadas MoveLeg(), que se repiten constantemente en el bucle principal.
// Move forward
if (m == 2) {
moveLeg1();
moveLeg3();
moveLeg5();
if (l1status == HIGH) {
moveLeg2();
moveLeg4();
moveLeg6();
}
}
Code language: Arduino (arduino)
Puedes ver que las tres patas están desplazadas. Entonces, cuando las piernas 1, 3 y 5 están en la fase de balanceo, las otras tres piernas 2, 4 y 6 están en la fase de postura. Si queremos movernos hacia la izquierda, llamamos a las funciones moveLeft() correspondientes.
Estos comandos en realidad provienen del módulo Bluetooth o de la aplicación Android especialmente desarrollada de nuestro teléfono inteligente.
// Check for incoming data
if (Bluetooth.available() > 0) {
dataIn = Bluetooth.read(); // Read the data
Code language: Arduino (arduino)
Aplicación Arduino Ant Robot para Android
Ahora echemos un vistazo a la aplicación y veamos qué tipo de datos envía realmente al Arduino. Creé la aplicación con eso Inventor de la aplicación del MIT Solicitud en línea y cómo funciona.
Entonces,>
Echemos>
Por>
Aquí hay un archivo de descarga del proyecto MIT App Inventor anterior, así como la aplicación de Android lista para instalar en su teléfono inteligente:
Archivo de proyecto Arduino Ant Hexapod Robot Control MIT App Inventor
Archivo de instalación de la aplicación Arduino Ant Hexapod Robot Control
Echemos un vistazo a dos características más del programa Arduino, a saber, el monitor de voltaje de la batería y el sensor ultrasónico.
// Monitor the battery voltage
int sensorValue = analogRead(A3);
float voltage = sensorValue * (5.00 / 1023.00) * 2.9; // Convert the reading values from 5v to suitable 12V i
Serial.println(voltage);
// If voltage is below 11V turn on the LED
if (voltage < 11) {
digitalWrite(ledB, HIGH);
}
else {
digitalWrite(ledB, LOW);
}
Code language: Arduino (arduino)
Así, cuando el voltaje de la batería es inferior a 11 voltios, encendemos el LED y cuando el sensor ultrasónico detecta un objeto a menos de 40 cm, el robot se prepara para atacar.
// Get the distance from the ultrasonic sensor
if (getDistance() > 40) {
att = 0;
}
if (getDistance() <= 40) {
att = 1;
dataIn = 99;
}
Code language: Arduino (arduino)
Si ya no hay ningún objeto delante de él, el ataque es rechazado. Si el objeto todavía está presente y más cerca de la cabeza, el robot ataca.
// If there is an object in front of the sensor prepare for attack
if (att == 1) {
prepareAttack();
if (aStatus == HIGH) {
while (a == 0) {
delay(2000);
a = 1;
}
if (getDistance() > 30) {
att = 2;
a = 0;
aStatus = LOW;
initialPosHead();
}
if (getDistance() < 30) {
att = 3;
a = 0;
aStatus = LOW;
initialPosHead();
}
}
}
// If there is no longer object in front, dismiss the attack
if (att == 2) {
dismissAttack();
if (aStatus == HIGH) {
dataIn = 0;
att = 0;
}
}
// If there is closer to the sensor attack
if (att == 3) {
attack();
if (attStatus == HIGH) {
while (aa == 0) {
delay(2000);
aa = 1;
} attStatus = LOW;
}
if (aStatus == HIGH) {
while (a == 0) {
delay(2000);
a = 1;
}
dataIn = 0;
att = 0;
initialPosHead();
}
}
Code language: Arduino (arduino)
Eso es prácticamente todo en este vídeo.
Puede descargar el código completo para este proyecto Arduino Hexapod aquí:
Código del robot hormiga hexápodo Arduino
Tenga en cuenta que si decide implementar este proyecto, debe estar preparado para algunos desafíos. El mayor problema para mí fue el bajo rendimiento de los servos que utilicé. Espero que hayas disfrutado este video y hayas aprendido algo nuevo. No dudes en hacer tus preguntas en la sección de comentarios a continuación y consultar mi colección de proyectos Arduino.
Robot Arduino Hormiga Hexápodo: Tutorial Completo y FAQs
En este tutorial te mostraré cómo construí un hexápodo Arduino. Como su nombre lo indica, el hexápodo tiene 6 patas, pero además de eso, también tiene una cola o abdomen, una cabeza, antenas, mandíbulas e incluso ojos funcionales. Todo esto hace que el hexápodo se parezca a una hormiga, por lo tanto, también podemos llamarlo Robot Hormiga Arduino.
Descripción General
Para controlar el robot, construí una aplicación Android personalizada. La aplicación tiene 4 botones a través de los cuales podemos comandar al robot para moverse hacia adelante o hacia atrás, así como girar a la izquierda o a la derecha. Además de estas funciones principales, el robot también puede mover la cabeza y la cola, así como morder, agarrar y soltar cosas e incluso atacar.
Como mencioné anteriormente, el robot tiene ojos funcionales, o diseñé específicamente la cabeza para que encaje un sensor ultrasónico. Entonces, si intentamos tocar la cabeza del robot o acercar nuestra mano al sensor, el robot se preparará inicialmente para un ataque.
Si retrocedemos, el robot cancelará el ataque, pero en caso de acercar nuestra mano, atacará y nos morderá. ¿Qué tan genial es eso? Quédate conmigo y descubrirás exactamente cómo lo construí y cómo funciona. Puedes ver el siguiente video o leer el tutorial escrito a continuación.
Preguntas Frecuentes sobre el Robot Arduino Hormiga Hexápodo
- ¿Cuántas patas tiene el hexápodo?
- ¿Qué tipo de servos se utilizan en el hexápodo?
- ¿Cómo se controla el hexápodo?
- ¿Qué otro componente es necesario para alimentar el robot?
- ¿Cómo se diseña el PCB del Arduino Mega Shield para el hexápodo?
El hexápodo tiene 6 patas, cada una compuesta por 3 articulaciones o 3 servos.
Se utilizan servos del tipo MG996R para todas las articulaciones del hexápodo.
El hexápodo se controla mediante una aplicación Android personalizada que se comunica con el Arduino a través de un módulo Bluetooth HC-05.
Para alimentar el robot, se utiliza una batería LiPo de 3S que tiene un voltaje de alrededor de 12V. Se emplea un convertidor buck DC-DC para reducir el voltaje de 12V a 5V para los servos.
El PCB del Arduino Mega Shield se diseña utilizando el software de diseño de circuitos EasyEDA y se fabrica a través de JLCPCB.
Espero que esta información te haya sido útil para comprender mejor el proceso de construcción y programación del Robot Arduino Hormiga Hexápodo. Si tienes más preguntas, no dudes en dejarlas en los comentarios.
¡Qué pasada de proyecto! Me encanta la creatividad y el ingenio que se necesita para crear un robot como este. Definitivamente me gustaría probar a hacer uno también. ¡Gracias por inspirarme! 🙌🤖🔧
¡Qué chulo! Me encanta la idea de un robot hexápodo con Arduino. Debe ser súper entretenido de programar y jugar con él. ¡Genial artículo!
Wow, me parece súper interesante este proyecto. Nunca había pensado en hacer un robot hexápodo con Arduino. ¡Gracias por compartir! 🤖💡