Archivo de la categoría: Programación

ArduBrazo VIII

Pinza

En esta entrada construiremos una pinza. Con ello terminaremos por ahora las partes mecánicas del proyecto. En el futuro crearemos algún otro utensilio que se pueda encajar en el brazo.

Estas piezas 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.

En la base de la pinza he creado un alojamiento para insertar en el futuro un led de iluminación.

Lista de Piezas

Dibujo de la Pieza Nombre Nº Piezas
Base de la Pinza 1
Garra Izquierda 1
Garra Derecha 1

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

Fotos

Conjunto Vistas FreeCad

Detalle Pinza

Vista Pinza

Vista Pinza

Vista Pinza

Detalla Brazo – Pinza

Conjunto Brazo

Conjunto Brazo

Detalle Pinza

Vista Alámbrica

Estoy siguiendo con el desarrollo del programa en Java que gestiona los movimientos del Brazo, pero estoy tardando un poco más de lo esperado. Espero que para la siguiente entrada sea posible enseñarlo.

Hasta la próxima entrada

ArduBrazo VII

Muñeca-Pinza

Con la construcción de esta pieza llegamos a la pinza, solo nos faltaría para completar el Brazo Robot 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.

He creado una unión en hexagonal para insertar los utensilios de trabajo del Brazo Robot, como pueden ser una pinza, un laser, una ventosa, etc

 

Lista de Piezas

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

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

Fotos

Conjunto Vista FreeCad

Pieza Vista Unión con Pinza

Pieza Vista Lateral

Pieza Vista Trasera

Otras Vista

Vista Alambre

Foto 01

Foto 02

Foto detalle

En la próxima entrada desarrollaré un poco más el programa para que tenga memoria de los ajustes de configuración.

 

 

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 IV

Programando el Arduino

Bueno ya es hora de poner los servos y ver que tal funciona la parte del brazo construido hasta ahora.

He elegido un Arduino Mega, no por que necesitaba muchos recursos, sino por que era el que tenía libre, el resto los tenía ocupados con otros proyectos. Así que si tenéis un arduino Uno o Leonardo, también os vale.

He preferido realizar la programación para los cinco servos y así ya la tengo para los restos de grados de libertad que aún no están disponibles.

El programa de Arduino se basa 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.

Ahora utilizo el monitor serie del IDE del programa del Arduino para el envío de la cadena, pero en el futuro, lo realizaré con un programa realizado en Java.

Esquema Práctico Simplificado:

 

Extracto del Programa Arduino:

Recibir Cadena

Separar y Convertir en Enteros

Posicionar Servos

Foto:

Código Fuente  Arduino Completo

ArduBrazo_01.ino

Vídeo resumen:

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

 

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:

Pantalla LCD Nokia 5110

En esta entrada trataré de explicar como utilizar el LCD del Nokia 5110. Es una pantalla pequeñas, de 1.5″, pero tienen buena legibilidad. Su resolución es de 84 x 48 pixel, internamente emplea un controlador PCD8544 desarrollado por Philips, un controlador de bajo consumo diseñado para manejar pantallas monocromas de 48 filas y 84 columnas. Para mayor legibilidad estos displays suelen incorporar una luz trasera (back light).

Sus características se pueden encontrar aquí.

La configuración de pines que voy a utilizar es:

Número de Pin

Nombre de Pin Arduino Pin Función de Pin Notas

1

RST

3

Reset

10kΩ

2

CE

4

Chip Selection (Selección de chip)

10kΩ

3 DC 5

Data/Commands choice

10kΩ

4

DIN

6

Serial data in

10kΩ

5

CLK 7

Serial clock

10kΩ

6

VCC

3,3 Vcc

Positive power supply (Alimentación positiva) 2.7V a 3.3V

7

LIGHT

GND

LED backlight supply Conectar a GND para máximo brillo

8

GND

GND

Ground (Tierra)

Existen varias librerías que funcionan con este LCD. Aquí explicaremos la librería más común para este modelo, “ Adafruit PCD8544 Nokia 5110 LCD library “. Esta librería posee una gran variedad de gráficos, entre ellos círculos, líneas, cuadros, triángulos, además de varios tipos de fuentes y la posibilidad de imprimir imágenes como logos o figuras.

Esta librería requiere de la instalación adicional de la librería gráfica “ GFX “ para su utilización.

En la siguiente dirección podréis ver un resumen de algunos de los procedimientos que tiene la librería “Adafruit_GFX.h”.

Circuito Práctico.

Programa Arduino

Fotos

Plano general del Circuito

Detalle de la Pantalla LCD

Códigos Fuente

LCD_Nokia_5110.ino

Vídeo resumen:

Escudo de Ethernet W5100 – IV – Lector de Tarjetas SD

Vamos a conectar un arduino duemilanove con un escudo Ethernet W5100 y utilizaremos la posibilidad que nos ofrece el citado escudo de “Lector de Tarjetas SD”. Aunque quiero advertiros que tenemos ciertas limitaciones, debido a la librería actualmente existente.

La primera de ellas es que podemos leer y escribir en la tarjeta, pero no formatearla, esto se debe realizar desde un ordenador.

La segunda es que aunque el  ordenador puede manejar varios formatos de sistema de archivos, la librería, por ahora solo soporta FAT16 y FAT32. En principio si se usa FAT32 se podría usar una tarjeta de hasta 32Gb. Otra de las limitación, son los nombres de los archivos, solo pueden utilizar los antiguos formatos de 8 caracteres para el nombre y tres para la extensión (sin acentos, ñ´s, espacios en blanco, etc).

El Shield Ethernet y la librería, controlan el acceso a Ethernet y a la SD Card por SPI, por lo que no podemos usar los pines  que corresponden a la gestión el bus SPI.

Para comprobar que la tarjeta está bien formateada, que todo esta correcto y que podemos usarla, existe un ejemplo suministrado por el programa (CardInfo ) que nos puede servir para éste fin. Asegurémonos que la SD esta formateada, grabamos en ella algunos ficheros (con nombre 8.3), la introducimos en el lector del Shield y encendemos el Arduino. El resultado debe ser algo similar a esto:

Realizaré uno programa con tres módulos diferenciados:

  1. Introducir/Grabar un dato en un archivo de la tarjeta SD
  2. Leer los datos grabados en un archivo en la tarjeta SD
  3. Borrar el archivo

El archivo donde vamos a realizar la grabación es “TEST.TXT”

Modulo de Grabar

Asignamos un valor analógico, abrimos el archivo, grabamos el valor en dicho archivo y cerramos el archivo.

Módulo de Leer

Abrimos el archivo, leemos el archivo y cerramos el archivo.

Módulo de Borrar archivo

Borramos el archivo

Circuito Práctico.

Programa Arduino

Fotos

Códigos Fuente

Manejar_SD.ino

Vídeo resumen: