Kuribot
es un robot bípedo que camina gracias a la sincronización de cuatro servos con
tecnología Arduino.
El gobierno del robot se realiza mediante una aplicación Android gratuita creada por mí: Bluetooth Control, al final de la entrada está el enlace.
El gobierno del robot se realiza mediante una aplicación Android gratuita creada por mí: Bluetooth Control, al final de la entrada está el enlace.
En
esta entrada se publican:
1.-
La relación de todos los elementos mecánicos y electrónicos.
2.-
Los planos del robot para realizar su construcción. El proyecto se ha realizado
en madera contrachapada de 0,5 mm.
3.-
Las conexiones entre los diferentes elementos
4.-
El programa que gobierna el robot
Solo
se han utilizado programas libres y gratuitos.
Para
el diseño gráfico: FreeCAd
Para
el diseño electrónico: Fritzing
Para
crear la aplicación Android: App-Inventor del MIT
1.- Relación de los elementos mecánicos y electrónicos
2.- Planos del robot
Todo el conjunto lo he realizado con madera contrachapada de 0,5 mm.
Travesaños superiores:
Sirven para anclar con tornillos la placa Arduino. Sus medidas son 1,5 cm.x 4,5 cm.
Travesaños inferiores:
Sirven como separación entre el soporte de los servos y el soporte de la electrónica.
Soporte de la electrónica:
Soporte de los servos:
Pies del robot:
Cuatro servos (Amazon)
Cuatro adaptadores (Amazon)
Dos soportes para los servos en forma de U (Amazon)
Tuercas y tornillos de 3 y 4 mm.
Cables de conexión
Una placa Arduino UNO
Un escudo (Protoshield)
Un modulo bluetooth LH-05
2.- Planos del robot
Todo el conjunto lo he realizado con madera contrachapada de 0,5 mm.
Travesaños superiores:
Sirven para anclar con tornillos la placa Arduino. Sus medidas son 1,5 cm.x 4,5 cm.
Travesaños inferiores:
Sirven como separación entre el soporte de los servos y el soporte de la electrónica.
Soporte de la electrónica:
Soporte de los servos:
Pies del robot:
3.- Conexiones
4.- Programa
Copia y pega este código en la Ide de Arduino, al final del texto está el archivo comprimido.
/*
KURIBOT
Robot bípedo
@GERMAN ALONSO
Kuritre Game 2016
UTILIZAR LA APP : BLUETOOTH CONTROL
Se utilizan los códigos de control de esta aplicación
Ver en : http://webdegerman.blogspot.com.es/2015/12/senales-bluetooth-control.html
BLUETOOTH
Conexion de cables
MODULO ARDUINO
Verde VCC 5V
Azul GND GND
Morado TXD RX
Gris RXD TX
SERVOS
Conexiones Servo 180º 55:
Marron en el pin GND
Rojo en el pin 5v
Amarillo en el pin de control
-----------------
- 0 0 -
- -
1 ----------------- 2
- -
- - - -
--- ---
3 4
Notas:
La libreria VarSpeedServo asigna a cada servo tres valores:
1: Giro valores entre 0 y 180.
2: Velocidad, valores entre 1 y 255 velocidad.
3: Esperar a completar las instrucciones anteriores, valores de verdadero (true) o falso (false)
*/
//////////SERVOS
#include <VarSpeedServo.h>
//////////Crear objeto servo para controlar un servo
//////////Se pueden crear un máximo de ocho objetos servo
VarSpeedServo myservo1;
VarSpeedServo myservo2;
VarSpeedServo myservo3;
VarSpeedServo myservo4;
/////////Se declaran los pin digitales que utilizará cada servo
const int servoPin1 = 6 ;
const int servoPin2 = 10 ;
const int servoPin3 = 9 ;
const int servoPin4 = 11 ;
//////////COMUNICACION SERIAL
//////////Variable en la que se asignara la señal recibida
int estado;
//////////Velocidad inicial del movimiento de los servos
int vel=30;
int pausa=500;
///////Contador, mediante este contador se comprueba la conexión
int contador=10;
void setup () {
//////////Parametros del puerto serie
Serial.begin(9600);
//////////Se aplica cada objeto servo a un pin
myservo1. attach (servoPin1);
myservo2. attach (servoPin2);
myservo3. attach (servoPin3);
myservo4. attach (servoPin4);
}
void loop () {
///////SE ENVIA EL VALOR DE LA VARIABLE A LA APLICACION MOVIL
///////En la aplicación del móvil se recibirá la variable a modo de control de la comunicación
///////Si la variable va incrementando el valor se puede dar como valida la conexión
///////Se empiza el contador desde el número 10 para evitar interferencias con las ordenes de control
Serial.print("Contador de la conexión: ");
Serial.println(contador);
contador++;
delay(1000);
//////////Recepción y asignación de la señal
if(Serial.available()>0)
{
estado = Serial.read();
}
//////////Definición de tres Velocidades distintas
//////////Velocidad muy lenta
if (estado=='1')
{
vel = 30;
}
//////////Velocidad lenta
if (estado=='2')
{
vel = 50;
}
//////////Velocidad media
if (estado=='3')
{
vel = 100;
}
//////////Velocidad rápida
if (estado=='4')
{
vel = 150;
}
/////////////////////////////////MOVIMIENTOS/////////////////////////////
///////STOP Alineación de todos los servos s 90 grados
if(estado=='c')
{
myservo1.write ( 90 , 50 , true );
delay (pausa);
myservo2.write ( 90 , 50 , true );
delay (pausa);
myservo3.write ( 90 , 150 , true );
delay (pausa);
myservo4.write ( 90 , 150 , true );
estado=0;
}
//////////CAMINAR AL FRENTE
if(estado=='a')
{
myservo4.write ( 135 , vel , false );
myservo3.write ( 135 , vel , true );
myservo1.write ( 55 , vel , false );
myservo2.write ( 55 , vel , true );
myservo4.write ( 90 , 150 , false );
myservo3.write ( 45 , vel , false );
myservo4.write ( 45 , vel , true );
myservo2.write ( 90 , vel , false );
myservo1.write ( 90 , vel , true);
myservo3.write ( 90 , 150 , false );
myservo4.write ( 90 , vel , true);
}
////////CAMINAR HACIA ATRAS
if(estado=='e')
{
//Rutina medio paso derecho
myservo4.write ( 135 , vel , false );
myservo3.write ( 135 , vel , true );
myservo1.write ( 125 , vel , false );
myservo2.write ( 125 , vel , true );
myservo4.write ( 90 , vel , false );
myservo3.write ( 45 , vel , true );
myservo4.write ( 45 , vel , true );
myservo1.write ( 90 , vel , false);
myservo2.write ( 90 , vel , true );
myservo3.write ( 90 , vel , false );
myservo4.write ( 90 , vel , false );
}
//////////GIRO SOBRE LA IZQUIERDA
if(estado=='b')
{
vel = 50;
myservo4.write ( 135 , vel , false );
myservo3.write ( 135 , vel , true );
myservo1.write ( 55 , vel , true );
myservo4.write ( 90 , vel , true );
myservo3.write ( 90 , vel , true );
myservo1.write ( 90 , vel , true );
vel = 30;
}
//////////GIRO SOBRE LA DERECHA
if(estado=='d')
{
vel = 50;
myservo3.write ( 45 , vel , true );
myservo4.write ( 45 , vel , true );
myservo2.write ( 135 , vel , true );
myservo3.write ( 90 , vel , true );
myservo4.write ( 90 , vel , true );
myservo2.write ( 90 , vel , true );
vel = 30;
}
///BAILE
if(estado=='h')
{
myservo4.write ( 115 , vel , true );
myservo3.write ( 55 , vel , true );
myservo4.write ( 90 , vel , true );
myservo3.write ( 90 , vel , true );
myservo3.write ( 55 , vel , true );
myservo4.write ( 115 , vel , true );
myservo3.write ( 90 , vel , true );
myservo4.write ( 90 , vel , true );
}
//////////ZIGZAG
if(estado=='j')
{
myservo1.write ( 65 , vel , false );
myservo2.write ( 65 , vel , true );
myservo1.write ( 115 , vel , false );
myservo2.write ( 115 , vel , true );
myservo1.write ( 90 , vel , false );
myservo2.write ( 90 , vel , true );
}
//////////PUNTERAS
if(estado=='l')
{
myservo3.write ( 55 , vel , true );
myservo4.write ( 125 , vel , true );
}
//...............FIN VOID LOOP
}
ENLACES Y DESCARGAS
Código Arduino
Archivo comprimido
(Enlace a Google Drive)
Enlace a la aplicación Bluetooth Control
(Enlace Google Play)
Descarga directamente en tu
móvil leyendo este QR
(Enlace Google Play)
móvil leyendo este QR
(Enlace Google Play)
¿Te ha gustado este tutorial?
Colabora con nosotros y haz una
donación: