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 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

 

Escudo de Ethernet W5100 – III

En este caso el control lo realizaré a través de una aplicación creada con “App Inventor”.

Como solo es un ejemplo he decidido realizar la implementación de tres salida digitales y dos entradas analógicas, simulando la temperatura de dos estancias de una casa.

La programación es muy fácil, para las salidas digítales, se trata de realizar un “Get” con uno de estos códigos:

  • OnXXX para encender la estancia
  • OffXXX para apagar la estancia

Módulo de Control de un Led con AppInventos.

Para las entradas analógicas simuladas, se implementa un “Web” dentro de la aplicación y se referencia a la dirección del servidor web (192.168.1.177).

Esquema de los LED

Circuito teórico

Circuito Práctico.

Programa Arduino

AppInventos

Aspecto Simulado

Captura de Pantalla desde un móvil

Archivo aia de AppInventor.

Casa_Domotica_I.aia

App de la Aplicación.

Casa_Domotica_I.apk

Códigos Fuente  Arduino

Ethetnet_AppInventor.ino

Vídeo resumen:

ArduRover VI Sigue Luz

Sigue Luz

Esta parte del proyecto es una continuación del proyecto anterior (ArduRover III Luz), se trata de seguir incorporando funcionalidades al Rover, en este caso he incorporado un programa que sigue una luz.

El árbol de decisión es muy simple y se basa en el diagrama de flujo que más abajo reflejo. En resumen se trata de avanzar mientras los dos sensores luminosos(LDR) tienen una iluminación parecida, si uno de ellos percibe un incremento de luminosidad preestablecido como parámetro, gira hacia este lado y prosigue avanzando.

Diagrama de Flujo 

Diagrama_de_Flujo_Sigue_Luz

 

He realizado una modificación con el programa anterior, diseñando una nueva pantalla que reunirá todos los programas o funciones que se irán incorporando al proyecto, de tal manera que en la primera pantalla se podrá realizar el control manual del Rover y en la pantalla de “Programas” se podrá invocar los programas desarrollados.

 SCREEN

Screen_ArduRover_1.5

Código de la Función Sigue Luz de Arduino

Programa_Sigue_Luz

Bloque del Evento Sigue Luz

Modulo_Sigue_Luz

Esquema Teórico Parcial:

Circuito_Sensores

Esquema Práctico:

Placa_1_ArduRover_4_bb

Código Parcial del Programa Arduino:

Codigo_Sigue_Luz

Fotos:

2

Vista de Perfil

Frente

Detalle de la LDR

Código fuente

ArduRover_Sigue_Luz.ino

APP de Proyecto:

APP ArduRover_VI.apk

Ficha del Proyecto:

ArduRover_VI_Ficha_33

Vídeo resumen:

 

 

 

Unimos Todo en una Placa de Coche

Este proyecto trata de aunar algunos de los proyectos anteriores en una placa, que conectaremos encima de nuestro Arduino, como los escudos que venden comercialmente.

Utilizaremos un circuito impreso pre-perforado, de unas medidas de 20 x 20 agujeros.

Soldaremos uno conectores como los de la fotografía.

detalle

La placa debe tener un aspecto parecido a este.

Placa_Arduino

El primer problema con el que no vamos a enfrentar es que los dos bloques de seis conectores están separados un agujero, pero los dos bloque de ocho agujeros están separados algo menos de un agujero, con lo que el acople no es perfecto. Para que sea un poco más perfecto, podemos agrandar un poco los agujeros y desplazarlos un poco.

Posee cuatro Programas:

  • Programa 0 o Manual – El vehículo se mueve con las teclas de arriba, abajo, derecha, izquierda y Enter. Además dispone de una tecla para encender la luz y otra para apagarla

  • Programa 1 o Seguidor de Luz – Realiza las mismas funciones que el proyecto del mismo nombre ( avanza siguiendo la dirección de más luminosidad)

  • Programa 2 o Bailando – Realiza unos movimientos predeterminados.

  • Programa 3 o Interruptor Crepuscular – Cuando baja la intensidad de la luz ambiente se enciende el diodo LED.

En principio en la placa he juntado los proyectos de “Vehículo con Servo”, “Sigue Luz” , “ Comunicación por Infrarrojos” y un LED súper brillante. En el futuro me servirá para reunir otro que mas adelante realizaré.

He utilizado los conceptos de Función, “CASE”, Librerías, Protocolos de Comunicación y Programación en Bloque, por lo que el proyecto es para un público con conocimientos medios en programación con Arduino.

Como en los anteriores proyectos, solo esbozo las posibilidades de Arduino y dejo a que quiera, el desarrollo más práctico y dirigido a una utilidad concreta.

Placa que Conecta con Arduino

Esquema Eléctrico:

Placa_Arduino_Coche_Esquema

Esquema Práctico:

Placa_Arduino_Coche_1_bb

Código del Programa:

Codigo_Placa_Coche

Fotos:

DSC_0358

Vista General

DSC_0363

Vista Frontal

DSC_0367

Detalle Receptor Infrarrojo

DSC_0365

DSC_0364

Mando

Funciones en el Mando Infrarrojo

Código fuente:

Placa_Arduino_Coche.ino

Ficha del Proyecto:

Placa_Arduino_Coche_Ficha_15

Vídeo resumen:

Sigue Luz

 Vehículo que avanza hacia donde haya más luz

Este proyecto corresponde a la construcción de un vehículo autónomo  seguidor de luz. Su tarea es encontrar un punto de luz dentro de un ángulo de detección de las Foto-resistencias y girar hacia tal fuente de luz.

El funcionamiento del este robot es muy sencillo, para que el robot pueda detectar la luz utilizamos unos sensores LDR (Resistencia dependiente de la luz), que varía su valor de la resistencia dependiendo de la cantidad de luz que incide sobre él. Realizamos un divisor de tensión con el LDR y comparamos en cual de los dos sensores incide más luz, establecemos un umbral de comparación y si se sobrepasa giramos en e sentido que haya más luz, si no se supera el umbral diferencial entre los dos sensores avanzamos.

Continuamente estamos tomando medidas de los sensores, comparándolos y tomando decisiones de sentido de giro o avance.

Esquema Eléctrico:

Coche_Sigue_LuzEsquema Práctico

Sigue_Luz_bbCódigo del Programa:

codigo_Sigue_luz

Código fuente:

Coche_Seguidor_de_Luz.ino

Fotos

vista1

LDR vista0 vista2

 

Ficha del Proyecto:

Coche_Sigue_Luz_Ficha_12

Vídeo resumen: