Sunteți pe pagina 1din 11

LABORATORIO

CREAR APP PARA ARDUINO CON APP


INVENTOR
SISTEMAS DE CONTROL

En este tutorial vamos a crear una App Android con la herramienta App Inventor
para controlar un Led RGB conectado a Arduino a través de Bluetooth.

Material
-Arduino Uno Rev 3
-Módulo Bluetooth JY-MCU
-Led RGB
-Dispositivo Android con Bluetooth
-Resistencias: 150 ohmios, 100 ohmios x 2, 10k, 5k6
-Fuente alimentación

¿Qué es App Inventor?


App Inventor es una herramienta de software libre creada por Google Labs en 2011 para
crear apps Android. Al cabo de poco tiempo, su desarrollo se traspasó al Massachusetts
Institute of Technology (MIT). A través de web browser se pueden crear apps Andoid de
una manera visual y sencilla gracias a un conjunto de herramientas básicas. En App
Inventor se empieza diseñando la app a través de un entorno de desarrollo gráfico.
Después para programar usa un lenguaje de programación basado en un lenguaje visual a
partir de bloques Java (muy parecido a Scratch). Las librerías de estos bloques han sido
desarrolladas por el MIT y son de uso libre. En estos bloques encontramos funciones,
sentencias y elementos muy comunes en la mayoría de lenguajes de programación. Gracias
a esto podemos crear apps Android de una manera rápida y sencilla sin tener muchos
conocimientos de Java. Una vez finalizado el diseño y la programación de la app, se
descarga y se instala en un dispositivo Android o también podemos probarla en el emulador
que nos proporciona App Inventor.
Para empezar a usar App Inventor, solo tenéis que ir a su página web (App Inventor) y
registrarse.
Crear un App para controlar un Led RGB conectado
a Arduino
Lo que haremos en este tutorial será crear una app Android con App Inventor para
controlar un Led RGB que estará conectado en el Arduino comunicados a través de
Bluetooth. Primero de todo crearemos la app con App Inventor explicando su proceso paso
a paso. Después haremos el código de Arduino y explicaremos los aspectos más
importantes de este.

App Inventor
Cuando creamos un nuevo proyecto en App Inventor, nos saldrá el App Inventor Designer
donde construiremos el diseño de nuestra app. En el centro tenemos la visualización de una
pantalla de un dispositivo Android donde iremos poniendo todos los componentes que
queramos. Estos componentes están en la parte izquierda y tenemos desde botones,
etiquetas, sliders, etc… hasta el hardware del dispositivo Android como la cámara, GPS,
acelerómetro, sonido, etc. Esto es muy útil ya que tenemos la posibilidad de usar los
sensores de nuestro dispositivo Android junto a Arduino para nuestros proyectos. Para
poner un componente a la pantalla de visualización, tenemos que arrastrarlo hasta esta.
Por último, en la parte derecha de la pantalla tenemos un recuadro donde podremos
cambiar las propiedades de los componentes que insertemos en la app tales como el color,
nombre, valores…
En esta app hemos puesto un botón que servirá para conectarse al Arduino a través de
Bluetooth, unas etiquetas para el título (LED RGB) y el nombre de los colores (RED, GREEN,
BLUE), y tres sliders para controlar los tres colores RGB. También pondremos un Cliente
Bluetooth para establecer la comunicación Bluetooth. En las propiedades de los sliders,
pondremos MinValue 0 y MaxValue 255. También hemos puesto una imagen de icono de la
app subiendo una imagen en Media, y colocando el archivo en Icon de las propiedades de
la pantalla (Screen). Las demás propiedades de los componentes sirven para cambiar al
gusto de cualquiera los colores, medidas y nombres de estos.
Uno vez terminado con el diseño de la app, clicamos en la el botón Blocks en la parte
superior derecha de la pantalla para ir al App Inventor Blocks Editor. Aquí es donde
programaremos la app en forma de bloques como si se tratase de un puzle.
En Viewer tenemos una hoja en blanco donde pondremos los bloques. Estos bloques están
en la parte izquierda en el apartado Blocks donde encontraremos los elementos y funciones
más comunes en los lenguajes de programación tales como sentencias, funciones lógicas,
funciones matemáticas, strings… También habrá los elementos y funciones específicos de
los componentes que hemos insertado en la app, que en nuestro caso son Bluetooth, un
botón y tres sliders.
La programación de nuestra app consta de dos partes:
–Bluetooth: La comunicación Bluetooth depende del botón llamado CONECT que hemos
puesto. Antes de pulsarlo, si el Bluetooth de nuestro dispositivo Android está listo, la app
recogerá todas las conexiones Bluetooth listadas en este. Esto lo hará al principio de abrir la
app. Una vez se pulse el botón CONECT nos saldrá este listado donde seleccionaremos el
módulo Bluetooth conectado al Arduino. Cuando se conecte haremos que el texto del botón
se ponga de color azul para saber que la comunicación Bluetooth está establecida.
-Sliders: La parte de los tres sliders es la misma para cada uno. Consiste en que cuando
haya un cambio de posición en uno de los sliders, primero se comprueba si la comunicación
Bluetooth está establecida, y si es así, se envía el valor de la posición de los tres sliders
siempre en este mismo orden: primero se envía el valor de Red seguido de una coma,
después se envía el valor de Green seguido de otra coma y por último se envía el valor de
Blue seguido de un carácter de nueva línea (“\n”).
Por ejemplo: 125 “,” 98 “,” 216 “\n”
Una vez finalizado con los bloques sólo queda poner a prueba nuestra app. Podemos
hacerlo desde el emulador de App Inventor o instalando la app directamente en nuestro
dispositivo Android. Para esto último tenemos que ir en el menú de la parte superior
izquierda del App Inventor donde pone Build para obtener el archivo .apk de la app.
Tendremos dos opciones: obtenerlo desde código QR que saldrá en el centro de la pantalla
para enfocarlo directamente con la cámara de nuestro dispositivo Android para descargarlo
e instalarlo directamente en este o descargar el archivo .apk en nuestro PC para copiarlo en
la memoria del dispositivo Android. Sea cual sea la opción que escojamos, tendremos que
poner en las opciones de nuestro dispositivo Android Permitir la instalación de aplicaciones
de origen desconocido para poder instalar nuestra app. El aspecto de esta será este:
Arduino
En el Arduino habrá conectado un Led RGB y un módulo Bluetooth JY-MCU (tanto el HC-06
como el HC-05 son validos). Si queréis saber más sobre estos módulos Bluetooth
conectados a Arduino visitad el tutorial que hicimos sobre este tema en el siguiente enlace
(Arduino + Bluetooth).
El diodo Led RGB tiene un cátodo y tres ánodos (uno para cada color). Los colores son
controlados a través de PWM. En su datasheet comprobamos que los voltajes de cada
color a una intensidad de 20mA son los siguientes: Red 2 V, Green 3,2 V y Blue 3,2V.
Sabiendo esto juntamente con que el voltaje de salida máximo de los pins del Arduino es
de 5V podemos calcular las resistencias de cada color aplicando la ley de Ohm.

Podemos poner resistencias de 100 ohmios en vez de 90 ohmios ya que estas últimas son
poco comunes, el resultado final no influirá mucho ya que además hay que contar con la
tolerancia de la resistencia.

Montaje
-Ajuntar las masas del Arduino y de la fuente de alimentación.
-Con las resistencias 5K6 y 10K creamos un divisor de tensión en la salida del pin 11 del
Arduino para limitar el voltaje a 3,3V que es el voltaje que soporta el pin RX del módulo
Bluetooth ya que la salidas del Arduino son de 5V.
-Un consejo: desconectar el cable USB del Arduino cuando no se use la comunicación serie
porque pueden ocurrir fallos. Alimentar el Arduino con una fuente de alimentación a través
del pin Vin o con el conector jack.

Código

Leer varios valores enteros en un String


Cuando se envían los valores de los sliders a través de Bluetooth hacia el Arduino, se
envían los tres valores a la vez en un mismo String. Para almacenar cada uno de estos
valores en una variable usaremos la función Serial.parseInt() que retorna el primer número
entero hasta que encuentra un carácter que no sea un entero. Como en la app hemos
programado que los valores de los sliders estén separados por una coma y finaliza con un
carácter de nueva línea, esta función nos será muy útil.
Si por ejemplo el Arduino recibe este String en su buffer:235 , 45 , 124 ‘\n’
Llamamos la función Serial.parseInt() y leerá solo el valor entero 235
Si volvemos a llamar la función, lo siguiente que leerá será 45
Y si la volvemos a llamar por tercera vez, leerá el último valor entero 124

Código completo
/*
www.diymakers.es
by A.García
Crear App para Arduino con App Inventor
Tutorial en: http://diymakers.es/crear-app-para-arduino-con-app-inventor/
*/

#include <SoftwareSerial.h> //Librería que permite establecer comunicación


//serie en otros pins

//Aquí conectamos los pins RXD,TDX del módulo Bluetooth.


SoftwareSerial BT(10,11); //10 RX, 11 TX.

int ledred=3; //Pin LED Red


int ledgreen=5;//Pin LED Green
int ledblue=6; //Pin LED Blue

void setup()
{

BT.begin(9600); //Velocidad del puerto del módulo Bluetooth

pinMode(ledred,OUTPUT);
pinMode(ledgreen,OUTPUT);
pinMode(ledblue,OUTPUT);
}

void loop()
{
//Cuando haya datos disponibles
while (BT.available()>0)
{
int red = BT.parseInt(); //Leemos el primer valor entero (Red) y lo
//almacenamos en la variable

int green = BT.parseInt(); //Leemos el segundo valor entero (Green) y


//lo almacenamos en la variable

int blue = BT.parseInt(); //Leemos el último valor entero (Blue) y lo


//almacenamos en la variable
//Cuando lea el carácter fin de línea ('\n') quiere decir que ha
//finalizado el envío de los tres valores
if (BT.read() == '\n')
{
//Enviamos los valores de los tres colores al LED RGB através de PWM
analogWrite(ledred,red);
analogWrite(ledgreen,green);
analogWrite(ledblue,blue);
}
}
}

S-ar putea să vă placă și