Proyecto «Robot que baila, saluda y anda solo»

Ya esta aquí, ya ha llegado, el proyecto de un robot que baila, camina y saluda con Arduino. Este proyecto esta hecho utilizando solo materiales que todos los kits de iniciación traen, como son los servomotores, placa de Arduino UNO y demás componentes básicos. Si todavía no tienes tu kit, aquí te dejo un enlace con los mejores kits y completos.

Si te interesa como realizar este proyecto de forma muy fácil y rápida, quédate en esta pagina. 

En esta pagina encontraras el código de programación, el esquema de conexiones y un vídeo explicando el proyecto completo en YouTube.

Materiales necesarios para hacer el robot

A continuación hablaremos de los diferentes materiales utilizados para la construcción de este robot humanoide que es capaz de andar y bailar solo. Si te interesa realizar este proyecto pero te falta alguno de los materiales de la lista, puedes comprarlos de forma muy sencilla en lo enlaces.

Puedes encontrar más herramientas y materiales que puedas necesitar para tus proyectos AQUÍ.

Video explicación del proyecto

Más abajo tienes el código de programación y el esquema de conexiones para realizar este proyecto, pero si tienes alguna duda o no entiendes alguno de los pasos, aquí tienes el video de YouTube original en el cual se hace este proyecto con Arduino paso a paso, explicando todo lo que necesitas saber para poder montarlo sin ningún problema. Y recuerda, si te gusta esta clase de contenido, no olvides SUSCRIBETE 😉

 

Esquema de conexiones Arduino

Otra parte muy importante de un proyecto con Arduino es el esquema de conexiones. Aquí tienes todas las conexiones que hay que realizar para hacer este proyecto. Te recomiendo comprobar muy bien que todas están exactamente igual que las de la imagen para asegurarte de que el código de programación que hay mas adelante funciona sin necesidad de ninguna adaptación.

 

Código de Arduino para la programación 

Para finalizar con este proyecto del brazo robótico, a continuación te dejamos el código de programación desarrollado específicamente para este proyecto.

Respecto al código, recuerda instalar las librerías «Servo.h». También asegúrate de que el puerto donde esta conectada la placa de Arduino es el que esta seleccionado.

//Canal YouTube -> RobotUNO
//Robot Bipedo 
#include <Servo.h>
Servo der_arriba;
Servo der_abajo;
Servo izq_arriba;
Servo izq_abajo;
void setup() {
  der_arriba.attach(5);
  der_abajo.attach(6);
  izq_arriba.attach(7);
  izq_abajo.attach(8);  
  posicion_inicial(); 
  delay(3000); 
}
int f=0;
void loop() {
  if (f==0) {
    saludar();
    caminar();
    bailar();
    
    f=1;
  }
}
void posicion_inicial(){
  der_arriba.write(0); delay(100);
  der_abajo.write(0); delay(100);
  izq_arriba.write(90); delay(100);
  izq_abajo.write(90); delay(100);
}
void saludar(){
  for (int i=0;i<2;i++){
    der_abajo.write(50); delay(100);
    izq_abajo.write(40); delay(100);
    der_abajo.write(0); delay(100);
    izq_abajo.write(90); delay(100);
  }
}
void caminar(){
  int vel=50; //Velocidad a la que anda
  
  for (int i=0;i<30;i++){
    der_arriba.write(90); delay(vel);
    der_abajo.write(50); delay(vel);
    der_arriba.write(0); delay(vel);
    der_abajo.write(0); delay(vel);
    
    izq_arriba.write(0); delay(vel);
    izq_abajo.write(40); delay(vel);
    izq_arriba.write(90); delay(vel);
    izq_abajo.write(90); delay(vel);
  }
}
void bailar(){
  for (int i=0;i<5;i++){
    der_abajo.write(50); delay(300);
    izq_abajo.write(40); delay(150);
    der_abajo.write(0); delay(300);
    izq_abajo.write(90); delay(150);
    der_arriba.write(90); delay(500);
    izq_arriba.write(0); delay(500);
    der_arriba.write(0); delay(500);
    izq_arriba.write(90); delay(500);
    der_arriba.write(90); delay(500);
    izq_arriba.write(0); delay(500);
    der_arriba.write(0); delay(500);
    izq_arriba.write(90); delay(500);
  }
}

Recordad antes de montar todos los servomotores, estos deben colocarse en la posición inicial neutra, es decir, los servomotores deben de estar situados en la mitad de su movimiento total para tener capacidad de moverse en ambos sentidos. 

Para hacer esto puedes utilizar el código que te dejo aquí abajo. Te recomiendo que lo ejecutes en una nueva ventana de Arduino IDE y pongas los servomotores en la posición media, para esto pon uno a uno (tal y como se explica en el vídeo) los servomotores en el pin número 5 de la placa de Arduino UNO.

Para el servomotor de abajo a la derecha utiliza este código:

#include <Servo.h>
Servo servomotor;

void setup() {
  servomotor.attach(5);
}

void loop() {
  servomotor.write(0);//Para el de abajo a la derecha
}

 En cambio, para el servomotor de abajo a la izquierda utiliza este otro código:

#include <Servo.h>
Servo servomotor;

void setup() {
  servomotor.attach(5);
}

void loop() {
  servomotor.write(90);//Para el de abajo a la izquierda
}

Una vez que tengas esto, ya puedes continuar con el proyecto, montarlo todo y colocarle los servos a robot.

 

Proyecto «Brazo robótico controlado por botones»

En este nuevo proyecto de Arduino, verás como crear un brazo robótico controlado por botones, se trata de un brazo robótico de 3 grados de libertad y una pinza al final, además, verás cuales son los diferentes materiales empleados en su construcción, cual es su esquema de conexiones y finalmente podrás encontrar el código para para controlar el brazo robótico mediante el uso de botones.

 

Materiales necesarios para su construcción

A continuación hablaremos de los diferentes materiales utilizados para la construcción de nuestro brazo robótico controlado por botones con Arduino, también se hará una breve descripción de cada uno de los materiales. Si estás interesado en realizar el proyecto, a continuación tienes los enlaces a diferentes páginas donde poder adquirirlos.

Placa de Arduino UNO: Es el cerebro de nuestro proyecto, encargada de controlar todos los procesos del mismo mediante el código que encontrarás más adelante.

Motor paso a paso: Mediante impulsos eléctricos, es posible controlar el giro del motor, el cual se efectúa de una forma discreta.

Servomotores:  motores de 5v con una reductora, lo que permite un gran manejo de su posición y una gran fuerza para su reducido tamaño.

Protoboard: Tabla con orificios (pines) la cual está conectada internamente y usaremos para realizar nuestras conexiones para el proyecto.

Palos de helado: Usaremos estos palos como estructura para dar forma a nuestra grúa.

Cables con pines: Estos cables tienen unos pines (macho o hembra) los cuales nos permitirán hacer las conexiones entre los diferentes elementos ya mencionados.

Puedes encontrar más herramientas y materiales que puedas necesitar para tus proyectos AQUÍ.

Componentes necesarios para este proyecto

 

Video explicación del proyecto

Para poder ver de una forma mucho más detallada, como realizar este brazo robótico controlado con botones, te dejamos a continuación un video donde podrás ver desde el inicio hasta el final como se ha hecho paso a paso, como puede ser la explicación del código y  los diferentes pasos de su construcción. Y recuerda, si te gusta esta clase de contenido, no olvides SUSCRIBETE 😉

 

Esquema de conexiones Arduino para la construcción del brazo robótico

Si quieres que tu proyecto funcione correctamente, una de las partes más importantes a la hora de realizarlo es que tengas claro cual va a ser tu esquema de conexiones y de como vas a conectar correctamente los diferentes elementos. Con el fin de evitarte errores de montaje o conexiones erróneas, a continuación te dejamos el esquema de conexiones empleado para este proyecto, además, con este esquema de conexiones puedes usar el código código que te dejamos más adelante sin necesidad de hacer ninguna modificación.

 

 

Como podéis observar, existe una pequeña diferencia entre las conexiones que se realizan en el vídeo y las que se muestran en esta imagen. Esto es debido a que en el video se alimentan todos los motores desde la placa de Arduino UNO, cosa que es incorrecta ya que la corriente que circula por esta para alimentar los motores puede quemar la placa. Por este motivo es mas correcto realizar las conexiones tal y como se observa en esta imagen, ya que la alimentación proviene del modulo «mb-102», haciendo que la intensidad que para alimentar los motores no pase por la placa de Arduino.

Por último, realizar este montaje (que es muy recomendable) o el que aparece en el video, no va a afectar en nada al código de programación, ya que las conexiones de los motores no cambian de pines en la placa de Arduino UNO.

Código de Arduino para la programación del brazo robótico controlado por botones

Para finalizar con este proyecto del brazo robótico, a continuación te dejamos el código de programación desarrollado específicamente para este proyecto.

Si estás interesado en automatizar todos los movimientos del brazo robótico, a continuación te dejamos un video en el cual se muestra este proyecto pero con sus movimientos preprogramados. Puedes verlo pinchando AQUÍ.

Respecto al código, recuerda instalar las librerías «Servo.h» y «Stepper.h». También asegúrate de que el puerto donde esta conectada la placa de Arduino es el que esta seleccionado.

//Canal de YouTube -> RobotUNO
//BRAZO ROBOTICO 2.0

#include <Servo.h>
#include <Stepper.h>
#define STEPS 32
#define temp 25

//MOTOR PASO A PASO
volatile boolean TurnDetected; 
volatile boolean rotationdirection; 
const int PinCLK=2;   
const int PinDT=3;   
int RotaryPosition=0;   
int PrevPosition;    
int StepsToTake; 
Stepper small_stepper(STEPS, 4, 6, 5, 7);
void isr ()  {
  delay(4);  // delay for Debouncing
  if (digitalRead(PinCLK))
    rotationdirection= digitalRead(PinDT);
  else
    rotationdirection= !digitalRead(PinDT);
  TurnDetected = true;
}

//SERVOMOTORES
int i=0,j=0,x=0;
Servo servomotor3; //Servomotor pinza
int boton_sub3=0;
int boton_baj3=0;
Servo servomotor2; //Servomotor en medio
int boton_sub2=0;
int boton_baj2=0;
Servo servomotor1; //Servomotor abajo
int boton_sub1=0;
int boton_baj1=0;

void setup(){
  //MOTOR PASO A PASO
  pinMode(PinCLK,INPUT);
  pinMode(PinDT,INPUT);  
  attachInterrupt (0,isr,FALLING); 

  //SERVOMOTORES
  servomotor3.attach(13);
  servomotor3.write(0);
  pinMode(A4,INPUT);
  pinMode(A5,INPUT);
  
  servomotor2.attach(12);
  servomotor2.write(0);
  pinMode(A2,INPUT);
  pinMode(A3,INPUT);
  
  servomotor1.attach(11);
  servomotor1.write(0);
  pinMode(A0,INPUT);
  pinMode(A1,INPUT);
}

void loop(){
  //MOTOR PASO A PASO
  small_stepper.setSpeed(700); 
  if (TurnDetected)  {
    PrevPosition = RotaryPosition; 
    if (rotationdirection) {
      RotaryPosition=RotaryPosition-1;}
    else {RotaryPosition=RotaryPosition+1;}
    TurnDetected = false;
    if ((PrevPosition + 1) == RotaryPosition) {
      StepsToTake=50; 
      small_stepper.step(StepsToTake);}
    if ((RotaryPosition + 1) == PrevPosition) {
      StepsToTake=-50;
      small_stepper.step(StepsToTake);}
  }
     digitalWrite(4, LOW);
     digitalWrite(5, LOW);
     digitalWrite(6, LOW);
     digitalWrite(7, LOW);   
  
  //SERVOMOTOR pinza
  boton_sub3=digitalRead(A4);
  boton_baj3=digitalRead(A5);
  if(boton_sub3==HIGH){
     i++;
     servomotor3.write(i);
     delay(temp);
  }
  if(boton_baj3==HIGH){
    i--;
    servomotor3.write(i);
    delay(temp);
  }
  //SERVOMOTOR en medio 
  boton_sub2=digitalRead(A2);
  boton_baj2=digitalRead(A3);
  if(boton_sub2==HIGH){
     j++;
     servomotor2.write(j);
     delay(temp);
  }
  if(boton_baj2==HIGH){
    j--;
    servomotor2.write(j);
    delay(temp);
  }
  //SERVOMOTOR abajo
  boton_sub1=digitalRead(A0);
  boton_baj1=digitalRead(A1);
  if(boton_sub1==HIGH){
     x++;
     servomotor1.write(x);
     delay(temp);
  }
  if(boton_baj1==HIGH){
    x--;
    servomotor1.write(x);
    delay(temp);
  }
}

 

 

Proyecto «Brazo robótico con Arduino»

Bienvenidos a un nuevo proyecto con Arduino, en este proyecto veremos como podemos crear un brazo robótico con 3 grados de libertad y una pinza al final con Arduino, además, hablaremos de los diferentes materiales empleados en su construcción, se mostrará un esquema de conexiones y finalmente podréis encontrar el código para poder controlar el brazo robótico.

Materiales

A continuación veremos los diferentes materiales que se van a emplear para realizar nuestro brazo robótico con Arduino y una breve descripción de los mismos. Además, para todos aquellos que estén interesados en realizar el proyecto, pueden pinchar en las imágenes y os llevará a una web donde poder adquirir dichos materiales.

Placa de Arduino UNO: Es el cerebro de nuestro proyecto, encargada de controlar todos los procesos del mismo mediante el código que encontrarás más adelante.

Motor paso a paso: Mediante impulsos eléctricos, es posible controlar el giro del motor, el cual se efectúa de una forma discreta.

Servomotores:  motores de 5v con una reductora, lo que permite un gran manejo de su posición y una gran fuerza para su reducido tamaño.

Protoboard: Tabla con orificios (pines) la cual está conectada internamente y usaremos para realizar nuestras conexiones para el proyecto.

Palos de helado: Usaremos estos palos como estructura para dar forma a nuestra grúa.

Cables con pines: Estos cables tienen unos pines (macho o hembra) los cuales nos permitirán hacer las conexiones entre los diferentes elementos ya mencionados.

Para conocer más a fondo sobre cada uno de los diferentes materiales, puedes visitar la página «materiales» donde se explicará de una forma más extensa el funcionamiento y los posibles usos de cada uno de ellos.

Puedes encontrar más herramientas y materiales que puedas necesitar para tus proyectos AQUÍ.

Componentes necesarios para este proyecto

 

Video explicación del proyecto

Si lo que buscas es ver de una forma mucho más detallada de como realizar este proyecto desde el inicio hasta el final y una explicación del código, a continuación se muestra el video con dicho contenido, mucho mas visual y fácil de comprender. Y recuerda, si te gusta esta clase de contenido, no olvides suscribirte 😉

 

Esquema de conexiones Arduino para la construcción del brazo robótico

Una de las partes más importantes a la hora de realizar nuestro montaje del brazo robótico pasa por conectar correctamente los diferentes elementos. Con el fin de evitar errores de montaje o conexiones erróneas, a continuación te dejamos el esquema de conexiones empleado para este proyecto, con este esquema de conexiones es posible usar el código que puedes encontrar al final del post sin necesidad de hacer ninguna modificación.

Como podéis observar, existe una pequeña diferencia entre las conexiones que se realizan en el vídeo y las que se muestran en esta imagen. Esto es debido a que en el video se alimentan todos los motores desde la placa de Arduino UNO, cosa que es incorrecta ya que la corriente que circula por esta para alimentar los motores puede quemar la placa. Por este motivo es mas correcto realizar las conexiones tal y como se observa en esta imagen, ya que la alimentación proviene del modulo «mb-102», haciendo que la intensidad que para alimentar los motores no pase por la placa de Arduino.

Por último, realizar este montaje (que es muy recomendable) o el que aparece en el video, no va a afectar en nada al código de programación, ya que las conexiones de los motores no cambian de pines en la placa de Arduino UNO.

 

Código de Arduino para la programación del brazo robótico

A continuación se muestra el código de programación desarrollado específicamente para este proyecto. Los pines que puedes encontrar en el código son los mismos que encontrarás en el esquema de conexiones previamente mostrado.

Todos los movimientos del brazo robótico mostrados en el video han sido preprogramados por lo que usando el código que dejamos a continuación sólo realiza ese mismo movimiento, en caso de querer controlar los distintos movimientos que hace el brazo robótico de forma manual, te recomendamos que te veas el siguiente video que te dejamos AQUÍ.

Respecto al código, recuerda instalar las librerías «Servo.h» y «Stepper.h». También asegúrate de que el puerto donde esta conectada la placa de Arduino es el que esta seleccionado.

//Canal de YouTube -> Robot UNO
//Proyecto -> Brazo robotico version1

#include <Servo.h>
#include <Stepper.h>

Servo servomotor3; //Servomotor pinza
Servo servomotor2; //Servomotor enmedio
Servo servomotor1; //Servomotor abajo
Stepper motor(2048, 4, 6, 5, 7);

void setup() {
  servomotor3.attach(11);
  servomotor2.attach(10);
  servomotor1.attach(9);
  motor.setSpeed(5);
}

void loop() {
  //Reinicio
  servomotor1.write(0);
  servomotor2.write(0);
  servomotor3.write(0);
  //motor.step(512);
  delay(3000);
  //COJE EL OBJETO
  for(int i=0; i<=45; i++){
    servomotor3.write(i);
    delay(25);
  }
  delay(1000); 
  for(int i=0; i<=90; i++){
    servomotor2.write(i);
    delay(25);
  }
  delay(1000);  
  for (int i=0; i<=90; i++){
    servomotor1.write(i);
    delay(25);
  }
  delay(1000);
  for(int i=45; i>=0; i--){
    servomotor3.write(i);
    delay(25);
  }
  delay(1000);
   for (int i = 90; i>=0; i--){
    servomotor1.write(i);
    delay(25);
  }
  delay(1000);
  for (int i = 90; i>=0; i--){
    servomotor2.write(i);
    delay(25);
  }
  delay(1000);
  //GIRA CON EL OBJETO
  motor.step(512);
  delay(1000);
  //DEJA EL OBJETO
  for(int i=0; i<=90; i++){
    servomotor2.write(i);
    delay(25);
  }
  delay(1000);
  for (int i=0; i<=90; i++){
    servomotor1.write(i);
    delay(25);
  }
  delay(1000);  
  for(int i=0; i<=45; i++){
    servomotor3.write(i);
    delay(25);
  }
  delay(1000);
  //VUELVE A LA POSICION INICIAL
  servomotor1.write(0);
  servomotor2.write(0);
  motor.step(-512);
  delay(3000);
}