Archivo del sitio

ArduBrazo VI

Moviendo el Brazo con Java

Una vez que he conseguido el movimiento de los servos con ayuda del monitor serie del IDE del programa de Arduino, vamos a sustituirlo por un programa realizado en java que nos dará un interface más agradable y con mayot funcionalidad.

Recordar que el programa de Arduino se basaba en los siguiente:

  • Capturo por el puerto serie una cadena de caracteres
  • Separo en cinco tramos la cadena
  • Convierto la cadena en valor numérico
  • Los envío a servo para su posicionamiento. El posicionamiento lo realiza de manera progresiva para dar más suavidad al mismo.

El programa de Java solo tiene que mandar una cadena reconocible por el puerto serie (en este caso será el COM25) hasta el arduino y lo que antes se realizaba de manera manual a través del teclado ahora lo realiza el programa Java.

El programa de Java se basa en tres clases:

  • BrazoRobot.java, que es la encargada del interface grafico y de gestión principal del programa
  • Configurar.java, que es la encargada del interface grafico de la configuración del brazo robot
  • ComunicacionBrazoRobot.java, que es la encargada de realizar las funcionalidades de los anteriores.

Bueno, espero que me disculpéis si no he sido muy purista con la denominación anterior pero quiero que se entienda por todo el público y sacrifico exactitud en la terminología y denominación por claridad.

He utilizado la “Librería PanamaHitek” para realizar la comunicación con Arduino. En este enlace les dejo el acceso a la página donde explican los pasos que hay que realizar par instalarlo sin problemas. Yo he seguido los pasos y no he tenido problemas (pincha aquí).

El hilo del programa es muy fácil. Prescindiendo del interface gráfico, lo que realiza es abrir un puerto de comunicación serie y enviar una cadena de los valores de cada servo separados por ponto y coma. Si necesitáis aclaración de algún punto en concreto, no dudéis en solicitármelo.

Como es un programa en fase de prueba, tengo algunas botones para comprobar algunas funcionalidades intermedias. En el futura irá evolucionando hacia una versión más refinada.

He realizado una pantalla de configuración donde en el futuro se podrá configurar y almacenar la configuración de los parámetros de funcionamiento de cada servo y del puerto de comunicación.

Ya que la versión del programa está muy en los comienzos no había pensado dejar el programa en el blog, pero al final he decidido que aunque no es una versión ni estable ni definitiva, sería bueno que pudieseis experimentar desde el principio.

 

Esquema Práctico Simplificado:

Al esquema le he puesto un servo más

Extracto del Programa Arduino:

Recibir Cadena

Separar y Convertir en Enteros

Posicionar Servos

Extracto del Programa en Java:

Abrir el Puerto de Comunicación Serie (en este caso COM25):

Enviar los Datos a Arduino

Cerrar el Puerto de Comunicación Serie

Rutina de Espera

 

Foto:

 

 

 

Código Fuente  Arduino Completo

ArduBrazo_01.ino

Código Fuente Java

Ardubrazo.zip

Vídeo resumen:

ArduBrazo V

Brazo-Muñeca

Con la construcción de esta pieza llegamos a la muñeca, solo nos faltaría una pequeña pieza que realizaría el juego de la muñeca y la pinza.

Esta pieza al igual que las anteriores se ha realizado con el programa “FreeCad” y la he impreso con la impresora 3D “BQ Prusa i3 Hephestos”. He utilizado el programa para cargar los objetos, crear el archivo de laminado con el programa Cura, y tras grabarlo en una SD lo imprimirá la impresora.

Lista de Piezas

Dibujo de la Pieza Nombre Nº Piezas
Brazo-Muñeca 1

Aquí podéis descargar el modelo 3D para imprimirlo.

Fotos

Vista FreeCad Delantera

Vista FreeCad Posterior

Conjunto Vistas FreeCad

Vista 3D FreeCad

Vista Pieza 01

Vista Pieza 02

Vista Pieza 03

Perspectiva 01
Perspectiva 02
Perspectiva 03
Perspectiva 04

 

 

 

ArduBrazo III

Tercer Grado de Libertad

La realización de esta pieza al igual que las anteriores se ha realizado con el programa “FreeCad” y la he impreso con la impresora 3D “BQ Prusa i3 Hephestos”. He utilizado el programa para cargar los objetos, crear el archivo de laminado con el programa Cura, y tras grabarlo en una SD lo imprimirá la impresora.

Lista de Piezas

Dibujo de la Pieza Nombre Nº Piezas
 

Tercer Grado

 

1

Aquí podéis descargar el modelo 3D para imprimirlo.

Fotos

Vista FreeCad Delantera

Vista FreeCad Posterior

Vista Conjunto FreeCad

Vista 3D FreeCad

ArduBrazo_3ª_01

Composición Delantera

ArduBrazo_3ª_02

Composición Trasera

ArduBrazo II

Segundo Grado de Libertad

La realización de esta pieza al igual que la anterior se ha realizado con el programa “FreeCad” y la he impreso con la impresora 3D “BQ Prusa i3 Hephestos”. He utilizado el programa para cargar los objetos, crear el archivo de laminado con el programa Cura, y tras grabarlo en una SD lo imprimirá la impresora.

Lista de Piezas

Dibujo de la Pieza Nombre Nº Piezas
 

 

Segundo Grado

 

 

1

Aquí podéis descargar el modelo 3D para imprimirlo.

Fotos

Vista 01

Vista 02

Vista 03

Vista 04

Vista de Conjunto

Vista 3D

Vistas en FreeCad

 

ArduBrazo I

ArduBrazo – Primer Grado de Libertad

Empiezo un nuevo proyecto, la realización de un Brazo Robot. Tendrá cuatro grados de libertad más una pinza o mano.

Realizaré las piezas con una impresora 3D y dejaré los archivos para que podáis utilizarlos.

Los servos que voy a utilizar son de dos tipos:

Del tipo SG90:

  • Dimensiones:                23 X 12.2 X 29 (mm)
  • Tensión de Trabajo:      4V a 6V
  • Velocidad:                     3 sg / 60 grados
  • Temperatura:                 0 ºC a -55 ºC
  • Velocidad de Trabajo:   3 sg/ 60 grados
  • Peso:                              9 gr
  • Torque:                          1.6kg/cm

Del tipo MG996R:

  • Dimensiones:                 40 X 19 X 43 (mm)
  • Tensión de Trabajo:       8V a 7.2V
  • Temperatura:                 0 ºC a -55 ºC
  • Velocidad de Trabajo:    17seg / 60 grados (4.8V sin carga) /  0.13seg / 60 grados (6.0V sin carga)
  • Peso:                               67 gr
  • Torque:                          13 kg-cm (180.5 oz-in) a 4.8V  / 15 kg-cm (208.3 oz-in) a 6V
  • Tipo de engranaje:         Todos los engranajes metálicos

Realización de las piezas en 3D.

Después de ver muchos modelos en la web y en “thingiverse“(esta web tiene a disposición de los usuarios un montón de objetos en 3D – Os la recomiendo), me he decidido por realizar las piezas y el diseño con el programa “FreeCad” y las he impreso con la impresora 3D “BQ Prusa i3 Hephestos”. He utilizado el programa para cargar los objetos, crear el archivo de laminado con el programa Cura, y tras grabarlo en una SD lo imprimirá la impresora.

 

Lista de Piezas

Dibujo de la Pieza Nombre Nº Piezas
 

 

Primer Grado

 

 

1

Aquí podéis descargar el modelo 3D para imprimirlo.

Fotos


Base del brazo robot. Primer Eje de Libertad

Vista Superior

Vista Inferior

Modelado 3D

 

Poniéndolo Expresión al ArduRobot

Bueno, ya era hora de poner una cabeza al ArduRobot. He aprovechado la anterior entrada para realizar una iniciación al control de un LCD con Arduino.

Como bien sabéis la placa que controla el Robot es un Arduino UNO y éste tiene sus salidas casi saturadas, por lo que para el control del LCD he tenido que utilizar otro controlador. Es el Arduino Nano.

Para que el ordenador me reconociese el Arduino Nano, he tenido que instalar unos driver exprofeso para esta placa (puede ser por que el procesador es Chino :)). Los Arduino Nano chinos suelen llevar el chip ch340 en vez el FTDI. En el Fórum de Arduino puedes encontrar más información al respecto

Le he dado muchas vueltas a que expresiones quería que tuviese el robot y al final he decidido que con cinco expresiones para empezar podría ser suficiente:

  • Normal
  • Triste
  • Feliz
  • Enfadado
  • Sorpresa

En el futuro dotaré al robot de más expresiones.

Para dotar de expresión al Robot, he utilizado la posibilidad que me ofrece la librería “Adafruit_GFX.h” de representar imágenes Bitmap. Más abajo podréis ver un ejemplo de un bitmap de una cara de sorpresa.

Con la impresora 3D he realizado una carcasa que utilizo para meter en su interior al Arduino Nano y la pantalla LCD.

Representación 3D de la Cabeza

Circuito Práctico.

Programa Arduino

Ejemplo del Código del PROGMEM CaraSorpresa

Fotos

Visión 3D del ArduRobot

Códigos Fuente

Cabeza_Robot.ino

Vídeo resumen:

Movimiento de Brazos

He tardado un poco en publicar esta entrada pero por problemas de recepción de los servos y el periodo vacacional no ha sido posible antes.

Por fin el ArduRobot ya mueve los brazos pero al hacerlo tiene problemas de estabilidad, por lo que he tenido que ponerle unos zapatos un poco más grandes y el problema se ha solucionado.

Como la calidad de los servos es la que es, he diseñado una rutina para mover los brazos que realiza el movimiento en diez submovimientos, con lo que mejora la respuesta y los servos sufren meno.

Rutina de Movimientos de los brazos.

Rutina_SubMovimientos

 

Fotos

Frente

Frontal

Perfil

Perfil

DSC_2193

Zapatos Nuevos

Video:

 

 

Brazos para ArduRobot

Quería que la próxima entrada fuese con los brazos del ArduRobot en movimiento, pero he recibido dos de los seis servo SG 090 que solicité en mal estado. No es que me costaran mucho (menos de 10 euros) pero es el tiempo que tardan en venir lo que me fastidia.

Como adelanto publicaré el robot con brazos, aunque no hay movimiento hasta que lleguen los servos que he vuelto a pedir.

Fotos

Vista_3_D

Modelado 3D

ArduRobot_Frente_Brazos_Abajo

Vista Frontal Brazos Caídos

ArduRobot_Frente_Brazos_Cruz

Vista Frontal Brazos en Cruz

ArduRobot_Frente_Brazos_Adelate

Vista Frontal Brazos al Frente

ArduRobot_Frente_Brazos_Flamenco

También Puede Bailar Sevillanas

ArduRobot_Perfil_Brazos_Abajo

Vista Perfil Derecho

ArduRobot_Perfil_Trasero_Brazos_Abajo

Vista Trasera Derecha

ArduRobot_Frente_Rodillas

Semi de Rodillas

ArduRobot_Sentado_Brazos_Abajo

Sentadito como un niño Bueno

Video:

Midiendo Sensores

He decidido dotar al ArduRover de tres entradas analógicas para poder medir y representar sensores externo que se conecten a él.

Es una evolución de la anterior entrada. En esta ocasión, doto al programa de un panel de configuración, para que se pueda personalizar las medidas que se realicen.

Configuración

Como podemos ver se puede configurar el nombre del sensor a representar, el valor de aviso(por si queremos que al llegar a un valor dado nos avise), si se representa o no, el valor máximo en la escala y un último valor que ajustará los valores recibidos a una escala real de medición.

Si conectásemos el sensor siguiente, el valor de conversión sería -> 0.4882

lm35.png

Continuamos con la posibilidad de almacenar los valores en una hoja de Excel, para su posterior análisis.

La programación con VB es casi idéntica al realizado en la entrada “Conociendo el Estado de los Sensores” y el posterior “ Exportando a Excel los valores”  con unos pequeños ajustes para parametrizar las medidas.

Una mejora que puede dar muy buen resultado es realizar una media de diez mediciones antes de enviar el valor desde Arduino a la aplicación, con esta minimizamos parte de los errores por ruido.

Esquema Práctico del Sensor LM35:

Medir_Temperaturas_Sensor

Esquema Práctico de las Entradas Analógicas:

Esquema_Practico

Lista de Piezas

Dibujo de la Pieza Nombre Nº Piezas
Hembra Soporte Hembra 1
Macho Soporte Macho 1
Pasamuros Porta Soporte 2

 

Extracto del Programa Arduino:

codigo_Arduino

 

 

Fotos:

Arriba_01

Vista SuperiorArriba_02

Detalle con sensores

frontal_01

Primer plano

VB_01

Visión General del Programa

Configuración

Detalle del Panel de Configuración

Código Fuente  Arduino Completo

Midiendo.ino

Proyecto VB 2015

Sensores de Entrada.zip

Vídeo resumen:

 

 

 

 

 

 

ArduRobot – Equilibrios

Esta entrada es continuación de la anterior (Arduino – Primeros Pasos).

He aumentado la superficie de apoyo, y le he puesto unos zapatos para dar mayor estabilidad.

He creado un cuerpo y en su interior he alojado el paquete de pilar y el “Arduino”; es una versión preliminar para ver la posible configuración final. Cuando sea definitivo publicare las piezas en 3D para poder reproducirlo.

Como se puede observar lleva dos servos laterales que serán utilizados para los brazos y un servo superior que será para la cabeza.

Procedimiento del movimiento 90º Pierna

Procedimiento_Cadera_Tobillos_90

Fotos

Modelado_3D

Modelado 3D

Frontal

ArduRobot de Frente

Perfil_01

ArduRobot de Perfil

Perfil_trasero

Perfil Trasero

Sentado

Sentado

Código Fuente  Arduino Completo

Equilibrios.ino

Vídeo resumen: