Archivo de la categoría: Programación
ArduBrazo IX
Desarrollo del Programa con Java
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.
En el programa de Arduino actualizado, en vez de cinco tramos hay seis. El sexto dato es la velocidad
También envío un “Final de Posición Brazo”, para definir cuando Arduino ha terminado de posicionar el brazo
Recordar que el programa de Java solo tenía que mandar una cadena reconocible por el puerto serie (en este caso será el COM25) hasta el arduino.
El programa de Java se basaba 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.
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, más la velocidad.
Ahora he implementado tres clases más:
- Inicio.java, que invoca las clases Servicios, GestiónFicheros y ComunicacionBrazoRobot.
- GestionFicheros.java, que se encarga de gestionar todo lo relativo a la grabación de ficheros
- Servicios.java, que se encarga de realizar labores de comprobación.
He realizado una pantalla de configuración donde se puede definir los parámetros de funcionamiento de cada servo, velocidad y puerto de comunicación. Estos valores se almacenan y se guardan para cada vez que se ejecuta el programa los recupera.
He preparado el programa para poder gestionar una secuencia de movimientos almacenados en un fichero.
En el futuro tendrá la funcionalidad de realizar un programa de recorridos con espera de un estímulo externo.
Ahora solo abre y guarda recorridos. Añadiendo más filas somos capaces de ampliar el recorrido.
Como el programa está en fase de desarrollo en el código hay muchos puntos de control, disculpar la basura.
Como en la versión anterior voy a poner el código, aunque no está limpio y terminado. No es que sea muy profesional, pero dado que este blog está realizado con fines didácticos, lo pongo a vuestra disposición.
Programa Arduino:
Extracto de parte del Programa en Java:
Abrir Fichero de Recorrido
Guardar Fichero de Recorrido
Cargar la tabla con los datos del fichero
Aumentar una fila
Foto:
Pantalla tras la carga de un archivo
Pantalla de Configuración
Código Fuente Arduino Completo
Código Fuente Java
Vídeo resumen:
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
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
Código Fuente Java
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
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
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 |
![]() |
1 |
Aquí podéis descargar el modelo 3D para imprimirlo.
Fotos
Vista FreeCad Delantera
Vista FreeCad Posterior
Vista Conjunto FreeCad
Vista 3D FreeCad
Composición Delantera
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 |
![]() |
|
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
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
Vídeo resumen: