AA – Arduino&Android

0
555

1.Introducción

El objetivo de este tutorial es mostrar un proyecto personal en Arduino y su interacción con una aplicación Android.

El proyecto consiste en un Carro Robot basado en Arduino. A partir de ahora y a lo largo del documento lo denominaremos “Carrimoto”, el cual tendrá dos tipos de modos:

  • Manual: A través de de una aplicación móvil, se le indicará al Carrimoto en que dirección deberá moverse.

  • Automático: El propio Carrimoto se moverá de forma autónoma. Mediante un sensor de proximidad buscará cual es la ruta más óptima fuera de obstáculos.

Empezamos ……………

2.Entorno

Este tutorial está escrito utilizando el siguiente entorno:

  • Hardware: Dell Inspiron 15’ (2.50 GHz Intel Core i7, 16 GB DDR3 )
  • Sistema Operativo: Ubuntu 18.04.2 LTS
  • Entorno de desarrollo: Android Studio 3.3 + IDE Arduino 1.8.9
  • Placa: Arduino Nano

3.¿Qué es Arduino?

 

A estas alturas de la película, prácticamente todo el mundo sabe lo que es Arduino y lo que se puede llegar a hacer con él, por tanto la mejor descripción la podemos encontrar en la propia página de Arduino.

Arduino es una plataforma de desarrollo basada en una placa electrónica de hardware libre que incorpora un microcontrolador re-programable y una serie de pines hembra, los que permiten establecer conexiones entre el microcontrolador y los diferentes sensores y actuadores de una manera muy sencilla.

Las principales ventajas de utilizar Arduino son las siguientes:

  • Gran comunidad: Gracias a su alcance, existe una gran comunidad trabajando con esta plataforma, lo cual genera una cantidad muy extensa de documentación.

  • Entorno de programación multiplataforma: Arduino dispone de un IDE, que se puede instalar y ejecutar en diferentes sistemas operativos (Windows, Mac OS y Linux).

  • Lenguaje de Programación sencillo: Dispone de un lenguaje de programación basado en C++ fácil de comprender.

  • Bajo Costo: El precio de las diferentes placas oscila, en función del modelo, entre los 6 y 50 Euros. Se trata de precios bastante asequibles. Existen Kit de iniciación muy completos.

  • Re-usabilidad y versatilidad: Re-utilizable, ya que una vez finalizado el proyecto es muy fácil desmontar los componente y empezar con uno nuevo. Todos los pines del micro-controlador están accesibles a través de conectores hembra, lo cual permite sacar partido de todas las característica del micro-controlador con un riesgo muy bajo de hacer una conexión errónea.

Existe una gran familia de placas. En la propia página de Arduino podéis ver las principales características y especificaciones de cada una de ellas:

  • UNO

  • NANO

  • MEGA

  • LEONARDO

  • YUN

4.Componentes

Arduino dispone de una gran variedad de componentes (sensores, motores,…). La idea de esta presentación no es hacer referencia a todos ellos, si no hacer un pequeña referencia a los implicados en este proyecto.

Arduino NANO

Es una de las placas Arduino más pequeñas. Esta basado en el microcontrolador ATmega328 y tiene una entrada mini-usb a través de la cual se puede subir el código fuente para la ejecución de los comandos. Viene con 14 puertos digitales de entrada/salida, 8 puertos analógicos, una memoria de 16 KB, 1 KB de SRAM y 512 bytes de EPROM.

Servo Motor

Un servomotor o comúnmente llamado servo, es un motor DC con la capacidad de ubicar su eje en una posición o ángulo determinado. Internamente tiene una caja reductora la cual le aumenta el torque y reduce la velocidad, un potenciómetro encargado de sensorizar la posición del eje y una pequeña tarjeta electrónica que junto al potenciómetro forman un control de lazo cerrado.

Sensor Ultrasonito HC-SR04

El sensor HC-SR04 es un sensor de distancia de bajo costo que posee dos transductores: un emisor y un receptor piezo-eléctricos, además de la electrónica necesaria para su operación.

El funcionamiento del sensor es el siguiente:

  1. El emisor piezoeléctrico emite 8 pulsos de ultrasonido (40KHz) después de recibir la orden en el pin TRIG, las ondas de sonido viajan en el aire y rebotan al encontrar un objeto.

  2. El sonido de rebote es detectado por el receptor piezoeléctrico.

  3. El pin ECHO cambia a Alto (5V) por un tiempo igual al que demoró la onda desde que fue emitida hasta que fue detectada, el tiempo del pulso ECO es medido por el microcontrolador y así se puede calcular la distancia al objeto.

Puente H L298N

Placa para control de motores mediante el chip L298N, de doble H-Bridge, que permite manejar dos motores de corriente continua o uno de paso a paso.

Es una placa ideal para construir pequeños Robots móviles mediante un par de motores de corriente continua y una plataforma base.

Protoboard

Placa de pruebas en las que se pueden insertar elementos electrónicos y cables con los que se arman circuitos sin la necesidad de soldar ninguno de los componentes. Las Protoboards tienen orificios conectados entre si por medio de pequeñas laminas metálicas. Usualmente, estas placas siguen un arreglo en el que los orificios de una misma fila están conectados entre si y los orificios en filas diferentes no.

2x Motor reductor DC 5V

Los motorreductores son ampliamente usados en la actualidad pueden ir desde un pequeño motorreductor capaz de cambiar y combinar velocidades de giro en un reloj de pulsera, cambiar velocidades en un automóvil, hasta enormes motorreductores capaces de dar tracción en buques de carga, molinos de cemento, grandes máquinas cavadoras de túneles o bien en molinos de caña para la fabricación de azúcar.

Un motorreductor cuenta con un motor acoplado directamente a un sistema de engranajes, esto permite al motor reducir o aumentar su velocidad dependiendo de la configuración de los engranes que se usen.

Chasis

Soporte compuesto:

  • Estructura donde se va a montar el proyecto.

  • Dos ruedas donde se anclan los motores reductores.

  • Rueda loca para la parte posterior de la estructura.

  • Una batería de 4 pilas para alimentar los motores.

Módulo BlueTooth HC05

El módulo Bluetooth HC-05 es ideal para utilizarlo en todo tipo de proyectos donde necesites una conexión inalámbrica fiable y sencilla de utilizar. Se configura mediante comandos AT y tiene la posibilidad de hacerlo funcionar tanto en modo maestro como esclavo.

Batería Externa

Esta batería se utilizará para alimentar el Arduino.

5.Conexionado del Proyecto

En este apartado voy a mostrar un esquema de conexión de los diferentes componentes que han intervenido en el proyecto, para ello he utilizado Frizing (https://fritzing.org)

Frizing es un programa libre de automaticación de diseños eléctricos, que permite a los diseñadores crear su prototipos. En este caso lo voy a utilizar para mostrar el diseño planteado en Arduino.

6.Codificación

Todo el código de este proyecto lo podéis encontrar en mi Github (https://github.com/vtcmer/arduino-project).

En el repositorio vais a encontrar tres sub-proyectos:

  1. IRobotApp: Aplicación Android para el control de Carrimoto.

  2. bt_remote: Aplicación Arduino.

  3. sk_xy_remote: Es una aplicación que genera todo el código automático para el control del Carrimoto.

En este caso no voy a mostrar todo el código. Voy a explicar las diferentes fases por las que he ido evolucionando el proyecto.

6.1. Fase I: Desplazamiento Automático

En esta fase inicial, se realizó las mayor parte de montaje:

Como se puede observar en las fotos, el sensor Ultrasónico está acoplado al soporte impreso en 3D, el cual, a su vez descansa sobre un brazo del servo motor.

El movimiento del Carrimoto siempre es en línea recta hacia adelante, cuando detecta un obstáculo cercano realiza las siguientes acciones:

  1. Detiene el movimiento.

  2. De mueve ligeramente hacia atrás, para poder girar más fácilmente si está muy próximo al obstáculo.

  3. El servo motor mueve al sensor Ultrasónico hacia la derecha e izquierda para identificar cual es la dirección más óptima a seguir (en función de la distancia más lejana del próximo obstáculo).

  4. Cuando identifica cual es la ruta más óptima, se realiza el giro hacia el lado indicado por el sensor Ultrasónico.

  5. En caso de tener obstáculo muy cercanos a la derecha o izquierda se volverá a realizar un chequeo de posicionamiento volviendo al punto 2 de estas acciones.

6.2.Fase II: Desplazamiento Manual (I)

En esta segunda fase se introdujo la comunicación a través de Bluetooth.

Se realizó el conexionado del componente Bluetooth (HC 05) a la placa Arduino.

Como primera aproximación a este desarrollo se utilizó RemoteXY (http://remotexy.com/).

RemoteXY es una manera sencilla de hacer y usar una interfaz gráfica de usuario móvil para tarjetas controladoras (en este caso Arduino). Usando el editor de interfaces gráfica que proporciona, se puede crear una interfaz de usuario fácilmente (Botones, Interruptores, Leds, ….), que se podrá cargar en el controlador.

Desde RemoteXY se generará el código (en este caso Arduino) que se cargará en el controlador. Por supuesto se tendrá que incluir el código específico de cada proyecto, en mi caso el movimiento del Carrimoto. Posteriormente tendrás que descargar la aplicación móvil RemoteXY en tú dispositivo móvil y conectarte vía Bluetooth al Arduino.

En esta segunda fase del proyecto, creé en RemoteXY una interfaz sencilla, que consistía en un conjunto de botones que a través de Bluetooth envía al Carrimoto la dirección en la que se tendrá que desplazar.

El código correspondiente a esta fase lo podéis encontrar aquí https://github.com/vtcmer/arduino-project/tree/master/i-robot/sk_xy_remote .

6.3.Fase III: Desplazamiento Manual (II)

En esta tercera y última Fase, desarrollé una aplicación móvil en Android que se comunica con Arduino vía Bluetooth.

El código correspondiente a esta fase lo podéis encontrar aquí https://github.com/vtcmer/arduino-project/tree/master/i-robot/IRobotApp .

La aplicación es muy simple, consiste en:

  • Activity para seleccionar el dispositivo Bluetooth: se mostrará la lista de dispositivos Bluetooth disponibles y se tendrá que seleccionar el del Carrimoto.

  • Activity de Control del Carrimoto, donde se podrán hacer las siguientes acciones:

    • Cambio del modo de movimiento manual ó automático.

    • Parar el Carrimoto.

    • Desplazamiento del Carrimoto (derecha/izquierda).

    • Controlar la velocidad de Carrimoto.

  • Una serie de servicios para establecer la comunicación con el Bluetooth y el intercambio de mensajes entre la aplicación móvil y el Carrimoto.

En esta fase se introdujo una comunicación bidireccional entre los dos dispositivos:

  • En modo manual, se envía desde la aplicación al Arduino la dirección en la que se tiene que mover el Carrimoto.

  • En modo automático el Arduino envía a la aplicación hacia donde se mueve el Carrimoto y en la aplicación se resalta la flecha correspondiente al movimiento.

7.Conclusiones

La tecnología avanza a una velocidad vertiginosa. Está ahí para poder ser utilizada, transformada y combinada … Trastea con ella.

Cualquier proyecto por pequeño y sencillo que sea, si te proporciona una satisfacción personal ya es un gran crecimiento profesional para ti.

A continuación os dejo algunos enlaces de interés relacionados:

https://www.arduino.cc/

https://www.xataka.com/makers/empezar-arduino-que-placa-kits-iniciacion-comprar

https://www.prometec.net/indice-tutoriales/

https://www.youtube.com/channel/UC9TXm_X_JeVPLZtLEK1S3xA

https://www.luisllamas.es/tutoriales-de-arduino/

Dejar respuesta

Please enter your comment!
Please enter your name here