bclose

mBlock: movimientos del 4-Bot

Usar el shield de servos con mBlock
tienda online prometec

Objetivos

 

 

    • Conectar los componentes..
    • Entender cómo funciona el movimiento del 4-Bot.
    • Incluir los nuevos bloques para manejar el shield de servos.
    • Programar los movimientos del 4-Bot mediante bloques.
 

Material requerido

 robot cuadrúpedo  Kit de 4-bot correctamente montado.

Conexión del 4-Bot

 

Una vez tenemos el 4-Bot  montado podemos empezar a conectar todos los componentes, principalmente los servos al shield. Es importante que hayáis seguido las instrucciones de la sesión anterior para que tengamos montado el robot de la misma forma, de la misma manera que tenemos que conectar los servos al shield en el mismo orden para que el programa que vamos a hacer  funcione correctamente.

 
  • Si lo hacéis de otra forma tendréis que modificar el programa, aunque si entendéis cómo funcionan los movimientos del robot seguro que podéis modificarlo para que cuadre con vuestro montaje.
  • Un shield es un componente electrónico que se coloca directamente encima del Arduino para otorgarle nuevas funcionalidades.
  • En este caso el shield nos permitirá controlar hasta 16 servos a la vez.
 

Y dicho esto, vamos a empezar. La primera recomendación, para que luego sea más sencillo saber en todo momento el orden de las patas del robot, es que marquéis cada pata, por ejemplo, con un rotulador permanente. Para ello vamos a ponernos el robot delante de manera que veamos el puerto serie del Arduino. Teniéndolo en esa posición, la pata que nos quede a la izquierda va a ser la pata 1, y a partir de ahí las vamos a enumerar en el sentido de las agujas del reloj.

Cuando tengamos eso claro podemos conectar los servos al shield. El shield tiene conexiones hasta para 16 servos, divididos en grupos 4 de 4, que van desde el 0 hasta el 15. Pues vamos a usar uno de esos grupos para cada pata, de forma que en cualquier momento podamos tener claro donde está conectado cada servo.

Conectaremos siempre primero el servo del hombro, y después el de la pata. Es decir, si por ejemplo vamos a conectar la primera extremidad, conectaremos el servo del hombro a la posición 0 y el de la pata al 1.

A la hora de conectarlos al terminal, tenéis marcado qué pin es cada cual en el espacio que hay entre el 2º y el 3º grupo de conexiones para servos del shield. En los servos el cable naranja es PWM, el rojo 5V y el marrón GND.

Además de los servos tenemos que conectar la batería. Ésta tiene dos conexiones, una para cargar, la que tiene 3 cables, y otra por la que sacar la alimentación para el Arduino con 2 cables.

En el esquema podréis ver cómo conectarla, pero si no habéis trabajado antes con baterías LiPo os recomendamos que antes leáis estas advertencias si no queréis estropear nada:

 
  • Para cargarla no hay problema, los conectores sólo enganchan en una posición, así que no tiene perdida. De todas formas el color de los cables de la batería y el cargador tiene que coincidir.
  • El cable rojo de la batería es 5V y el negro es GND. Antes de conectarlo, ¡aseguraos otra vez! Si conectáis estos cables al revés al servo o al Arduino lo más probable es que los queméis.
  • Cuando desconectéis la batería hacerlo siempre desde el conector de la batería, para evitar que podáis cortocircuitarla. Es decir, nunca dejéis los cables saliendo de la batería y al aire, porque si se tocasen las puntas harían cortocircuito.
 
Cuadrúpedo shield servos

Fijaros que además de alimentar el shield tenemos que conectar un cable también desde la toma positiva de la batería al pin de 5V del shield para alimentar también el Arduino desde la batería.

 

Programación

 

La distribución por defecto de mBlock no contiene bloques para poder usar el shield de servos que necesitamos para el 4-Bot. Pero no os preocupéis, hemos modificado el código del entorno de programación para que incluya el nuevo bloque que vamos a utilizar. Además incluye también los bloques que usaremos más tarde para poder usar el Nunchuk con mBlock.

Para incluirlo en mBlock tenemos que seguir estos pasos:

  1. Descargar este archivo: Arduino.
  2. Lo descomprimimos. Veréis un archivo llamado Arduino.s2e.
  3. Ahora buscamos en el directorio donde hayamos instalado mBlock, por defecto en Archivos de programa y tenemos que ir a este directorio: C:\Program Files (x86)\mBlock\ext\libraries\arduino
  4. Copiamos el archivo que hemos descargado en esa carpeta. Nos dirá que ya existe y que si queremos reemplazarlo. Le damos que .
  5. Abrimos mBlock y en “Extensiones” pulsamos en “Limpiar caché”.
  6. Se reiniciará mBlock y en los bloques de “Robots” tenemos que ver un nuevo bloque “Servo shield 0 angulo a 350”.
  7. Descargamos la librería Adafruit-PWM-Servo-Driver-Library-master.
  8. La descomprimimos y copiamos la carpeta Adafruit-PWM-Servo-Driver-Library-master al directorio de librerías de mBlock  C:\Program Files (x86)\mBlock\Arduino\hardware\arduino\avr\libraries
 
  • Con este bloque no usamos la posición en grados sino un número entre 0 y 4096 para posicionar los servos.
  • En este caso vamos a poner los límites en 150 y 550 para asegurarnos de no dañar los servos.
  • La posición de 90º equivale al valor 350, pero ya lo veremos más adelante.
 

Lo primero que vamos a hacer va a ser crear las variables necesarias para  los servos, dándoles el valor del puerto del shield al que está conectado. Vamos a los bloques naranjas de “Datos y Bloques” y damos a crear variable. Tenemos que crear 8 variables, h1 a h4 para los servos de los hombros y p1 a p4 para los de las patas. Una vez creadas fijamos sus valores con el puerto del shield al que corresponde, tal como lo hemos enchufado.

mblock cuadrúpedo

 

Antes de empezar a programar los movimientos, hay dos cosas que tenemos que tener claras a la hora de hacerlo, cómo queremos que se mueva el robot y cómo se mueven los servos en función de su posición. Lo mejor es tener un pequeño esquema que podamos consultar para poder consultar cuando tengamos dudas de cómo se mueve cada servo.

Teniendo en cuenta que el valor 350 coincide con 90º, y que hemos colocado los servos de forma que a 90º la araña quedaría tumbada, hemos hecho este esquema del movimiento de cada extremidad. En él podemos ver si al aumentar o disminuir el valor del servo, este se mueve en una dirección u otra.

Ahora sí que estamos en posición de empezar a programar los movimientos de 4-Bot. El primero, por ser el más sencillo, va a ser el de tumbarse. Para ello no tenemos más que poner todos los servos a 90º, es decir con valor 350.

 
  • Si queréis ir probándolos uno a uno (os lo recomendamos), cada vez que programemos uno ponedlo en la estructura del programa  y cargarlo en el Arduino para comprobar que funciona correctamente.
  • Recordad que tenéis que seleccionar el puerto y pulsar en el bloque de “Programa de Arduino”. En la parte que se ha desplegado de la derecha pulsamos en “Subir a Arduino”.
 
movimiento tumbar cuadrúpedo

El siguiente movimiento que vamos a programar es el de levantarse. Para ello los servos de los hombros los dejaremos igual, pero bajaremos los servos de las patas.

cuadrúpedoRobot cuadrúpedo

A continuación vamos a crear los movimientos para inclinar a 4-Bot en las 4 direcciones. Vamos a empezar por hacer que se siente. Para conseguirlo vamos a dejar las extremidades delanteras como si estuviera en pie y vamos a juntar y estirar las de atrás.robot cuadrúpedo robot cuadrúpedo

El siguiente movimiento va a ser un poco más curioso, y es que vamos a hacer que el robot nos salude. Para ello vamos a hacer que levante la extremidad 3 y la mueva de lado a lado. Pero antes vamos modificar la posición del robot para asegurarnos de que no pierda el equilibrio cuando la suba. Tomando como referencia la posición en pie, la idea es esta:

  1. Subimos la pata de la extremidad 1 y bajamos la de la 3, de forma que se incline hacia atrás.
  2. Movemos los hombros de las extremidades dos y 4 hacia delante para asegurarnos que se apoye bien.
  3. Levantamos la pata de la extremidad 3.
  4. Creamos un bucle en el que movemos el hombro de la extremidad 3 de lado a lado.
  5. Ponemos a 4-Bot en pie.
robot cuadrúpedo

Ya tenemos los movimientos que va a hacer 4-bot sin desplazarse, pero por supuesto que queremos que ande. Así que vamos a hacer que ande hacia delante, y cuanto lo tengamos sólo tendremos que modificar un poco la función para que ande en las demás direcciones.

De la misma forma que el anterior lo que queremos que haga es:

  1. Levantar las patas de las extremidades 1 y 3.
  2. Repetir en bucle en función de los pasos que queremos que dé:
    1. Mover los hombros de las extremidades 1 y 3 hacia delante.
    2. Bajar las patas de las extremidades 1 y 3 a la posición de en pie.
    3. Subir las patas de las extremidades 2 y 4.
    4. Mover los hombros de las extremidades 1 y 3 hacia atrás, a la posición de en pie.
    5. Mover los hombros de las extremidades 2 y 4 hacia delante.
    6. Bajar las patas de las extremidades 2 y 4.
    7. Subir las patas de las extremidades 1 y 3.
    8. Mover los hombros de las extremidades 2 y 4 hacia atrás, a la posición de en pie.
  3. Terminamos poniendo el robot en pie.
robot cuadrúpedo

Para que ande hacia atrás el algoritmo es muy parecido, pero movemos los hombros en la otra dirección:

robot cuadrúpedo

Nos queda hacer que gire hacia ambos lados. Para que gire hacia la derecha tenemos que mover los hombros de las extremidades 2 y 3 hacia delante, como en la función andar(), y las de las 1 y 4 hacia atrás, como en atras(). Para que gire hacia la izquierda haremos lo contrario.

robot cuadrúpedo

Y con esto ya tenemos todas las funciones que vamos a necesitar para los movimientos. Aunque, por supuesto, podéis crear nuevos movimientos o mejorar los que hemos hecho. Ahora vamos a ponerlos todos en el programa principal para que los repita de forma indefinida y comprobaremos una vez más que todo funciona correctamente.

robot cuadrúpedo

Podéis descargar el programa completo aquí: 4-Bot movimientos mBlock.SB2.  Aquí tenéis un vídeo con el resultado:

Con los movimientos programados y probados, se nos abren muchas posibilidades para seguir trabajando con el 4-Bot.  Podemos controlarlo con un Nunchuk de la Wii, con un teléfono móvil mediante bluetooth, crear un mando con otro Arduino y el shield con Joystick y botones… o podemos dotarlo de cierta autonomía utilizando sensores de distancia o convirtiéndolo en un sigue líneas.

 

Resumen de la sesión

 

En esta sesión hemos aprendido varias cosas importantes:

 
    • Hemos incluido nuevos bloques en la interfaz de mBlock.
    • Usamos ese bloque para programar los movimientos del robot..
    • Hemos comprobado que funcionan todos correctamente.
 
 
 

No Comments

Give a Reply

WordPress Anti-Spam by WP-SpamShield