Controla un robot con celular Android en App Inventor

En este tutorial aprenderemos a controlar un robot con celular Android en App Inventor; utilizaremos la comunicación bluetooth y el sensor Acelerómetro de nuestro teléfono o tablet utilizando una placa Arduino, para esto desarrollaremos una aplicación Android en la plataforma MIT App Inventor 2. El acelerómetro es un sensor muy útil y con infinidades de aplicaciones con este podemos controlar un carrito, un brazo robótico entre otras cosas.

 

Tutorial: Controlar un robot con celular Android en App Inventor. ¡Comenzamos!

[nextpage title = «Materiales»]
Carrito de acrílico para armar mk-ca
Arduino UNO
Modulo bluetooth HC-05
Driver L293D
2 baterías de 9V
Broches para baterías de 9V
Jumpers y alambres para protoboard.
Protoboard.
Cautín y estaño.
[nextpage title = «Desarrollo de Aplicación Android»]
App7
Para desarrollar la aplicación Android utilizaremos la plataforma MIT App Inventor 2, para utilizar la plataforma necesitamos contar con nuestra cuenta de Google. (También puedes descargar nuestra aplicación ya hecha y utilizarla si no quieres desarrollarla, el Winrar contiene dos archivos uno es con extensión .apk una Aplicación para instalar en tu móvil o Tablet Android y el otro es .aia archivo para editar en MIT app Inventor. Descárgalos Aquí.)
1.-Lo primero que debemos de hacer para nuestra aplicación es crear un nuevo proyecto y escribimos el nombre del proyecto.
App1
2.- Cambiamos la orientación de nuestra pantalla en ScreenOrientation > Landscape y en AlignHorizontal > Center.
App2
3.- Del menú User Interface seleccionamos dos etiquetas (Label) las arrastramos a la pantalla cambiamos sus propiedades Text Color > None como se muestra en la imagen, esto solo es para dejar un espacio superior en blanco.
App3.1
4.- En el menú Layout seleccionamos HorizontalArrangement y lo arrastramos a la pantalla y adentro del recuadro colocamos un ListPicker y un Botón, en propiedades cambiamos las letras que vienen por defecto, al ListPicker le ponemos CONECTAR y al botón le ponemos SALIR, también le podemos cambiar los colores si deseamos.App4
5.-  Colocamos otras dos etiquetas (Label) debajo de los botones con la misma configuración que las anteriores, para crear otro espacio en blanco.
App6.1
6.- Colocamos otros dos botones dentro de un HorizontalArrangement, a uno le ponemos START y a otro STOP. A todos los botones les cambiamos los nombres en Rename y el tamaño para que se vean más grandes, FontSize>18, Height > 40 pixeles, Widht 150 pixeles.
App7
7.- En el menú Sensors arrastramos el AccelerometerSensor y lo colocamos a la pantalla, lo mismo hacemos con el BluetoothClient en el menú Connectivity, estos se mostrarán en la parte inferior de nuestra pantalla, como se muestra en la imagen.
App4.1
8.- Ahora nos cambiamos a la parte de programación en bloques en el menú Blocks que se encuentra en la parte superior derecha.
10.- Lo primero que haremos es iniciar nuestra pantalla para eso hacemos esta función. Para seleccionar los bloques, sólo pulsamos sobre los objetos de la izquierda y buscamos el bloque, los botones True o False se encuentran en Logic. La función desactiva el sensor, así como los botones. ACTIVAR, SALIR y DESACTIVAR.bloque1
11.- Este bloque es para agregar todas la dirección del bluetooth a la ListPicker.
bloque2
12.- El siguiente bloque es para llamar a la dirección del módulo bluetooth y conectarse a él, también se activan las botones ACTIVAR y SALIR.
bloque3
13.- Este bloque es para activar el sensor al momento que hagamos click sobre el botón ACTIVAR que previamente creamos.
bloque4
14.- Esta función desactiva el sensor y los botones así mismo envía el dato numero 5 al bluetooth. Este dato lo utilizamos más adelante para activar nuestros motores.
bloque5
15.- Esta función es la que se encarga de enviar los datos a nuestro modulo bluetooth y estos son interpretados por la tarjeta Arduino, por cada condición enviamos un dato que son los números del 1 al 5. Como vemos en la figura se hace una comparación y a razón de eso se envía un dato.  Cabe recordar que el acelerómetro tiene tres ejes X, Y y Z nosotros utilizaremos solo dos. Cada eje nos da un valor de -9 a 9 eso quiere decir que cuando está estabilizado el sensor es 0 y depende de qué lado lo movemos variará a positivo o a negativo.bloque7
16.- Por ultimo esta función es para que cuando hagamos click en el botón SALIR se cierre la aplicación.
bloque6
17.- Para descargar la aplicación e instalarla nos vamos al menú Built y le damos en Save .apk to my computer. Se descarga un archivo .apk a nuestra computadora, enviamos el archivo a nuestro celular, lo instalamos y Listo! Ahora solo nos falta ensamblar nuestro carrito y escribir el código en Arduino.
[nextpage title = «Ensamble del carrito»]
Para ensamblar el kit de carrito mk-ca y finalizar con nuestro proyecto «Controlar un robot con celular Android en App Inventor» lo primero que debemos de hacer es soldar dos alambres de protoboard en los motorreductores de preferencia que sean sean del color blanco y rojo para que tengamos una mayor facilidad a la hora de polarizarlos.
soldaduramotormotoresol
Después colocamos los motor reductores al acrílico y los atornillamos lo mismo hacemos con la rueda loca.
colocacionmotor ruedaloca
Por último colocamos las llantas y listo! Ahora solo nos falta hacer la conexión del circuito electrónico.
llantacolocacion llantascarro
[nextpage title = «Circuito electrónico (cableado)»]
El circuito electrónico que utilizaremos para nuestro proyecto: ¨Controlar un robot con celular Android en App Inventor¨, es muy simple solo tenemos que conectar algunos componentes.
1.- Una de las baterías de 9V la conectamos al Arduino a los pines Vin y GND (el cable rojo va al pin Vin y el negro a GND), después sacamos los 5V del Arduino para alimentar los componentes del protoboard. Conectamos el Arduino y el driver L293D como se muestra en el diagrama:arduinoyDriver-compressor
2.- Conectamos el módulo Bluetooth HC- 05 los pines VCC a 5V y GND a GND y estos dos pines que son de comunicación van entrelazados RXD del Bluetooth a TX del arduino y TXD del bluetooth a RX del Arduino. Conectamos como se muestra en el diagrama:
bluetoothfrit
3.- Conectamos las lineas de los motores así como la otra batería de 9V cabe destacar que esta batería es la que va a alimentar nuestros motores por eso es importante conectarla en el pin correspondiente del driver L293D(puente H).
motoresfrit
4.- Conectamos los pines digitales del Arduino a nuestro Driver L293D estos pines son los que van a controlar los giros de los motores, como hacer que el carro valla adelante, atrás, derecha e izquierda.controlar un robot con celular Android en App Inventor
Esquematicotodo
Ahora solo nos falta escribir el código en Arduino y cargarlo…
[nextpage title = «Programación de Arduino»]
Felicidades si ya te encuentras en este paso, este es el último proceso que realizaremos y por fin podremos controlar nuestro carrito mediante el acelerómetro de nuestro telefono solo necesitamos escribir el siguiente código y cargarlo a nuestro Arduino. Puedes modificarlo agregando cosas adicionales como pueden ser leds u otros componentes.
[code language=»java»]
int dato;
void setup() {
pinMode(8,OUTPUT); //Declaramos nuestros pines como salidas
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
Serial.begin(9600); //Velocidad de comunicacion serial
}
void loop() {
if(Serial.available());{ //si la comunicacion esta habilitada
dato = Serial.read(); //asignar el valor recibido a la variable dato
// ADELANTE
if(dato == 1){ // Este valor es el que estamos enviando desde nuestra aplicacion
digitalWrite(8,0);
digitalWrite(9,1);
digitalWrite(10,0);
digitalWrite(11,1);
}
//ATRAS
if(dato == 2){
digitalWrite(8,1);
digitalWrite(9,0);
digitalWrite(10,1);
digitalWrite(11,0);
}
//DERECHA
if(dato == 3){
digitalWrite(8,1);
digitalWrite(9,0);
digitalWrite(10,0);
digitalWrite(11,1);
}
//IZQUIERDA
if(dato == 4){
digitalWrite(8,0);
digitalWrite(9,1);
digitalWrite(10,1);
digitalWrite(11,0);
}
//PARO
if(dato == 5){
digitalWrite(8,0);
digitalWrite(9,0);
digitalWrite(10,0);
digitalWrite(11,0);
}
}
}
[/code]
¡LISTO NUESTRO PROYECTO PARA CONTROLAR UN ROBOT CON CELULAR ANDROID EN APP INVENTOR ESTÁ TERMINADO! …A DIVERTIRNOS.

Compartir ahora:

Entradas relacionadas

7 comentarios

  • Hola, disculpa es posible sustituir la rueda loca por 2 ruedas similares o iguales a las que tiene el carro?

    • Oscar, gracias por tu comentario.
      Sí es posible hacer el cambio. Sólo recuerda conectar tus motores en paralelo.
      Cualquier duda será un gusto para nosotros apoyarte.
      Te enviamos un gran saludo por parte de todo el equipo.

  • Puedo alimentar a un arduino uno junto a 2 servos futaba s3003 y un modulo bluetooth con una batería de 9v directamente, o necesito alguna resistencia o un elemento extra.!?

    • Hola Gabrial.
      Es posible siempre y cuando las especificaciones en los servomotores diga que pueden ser alimentados hasta 9V. Si dicen un voltaje inferior no es recomendable.
      Además, es importante revisar cuánto Amperaje es capaz de generar tu batería de 9V para que pueda soportar alimentar las 3 cosas a la vez, en su caso el sistema será inestable.
      Si te podemos apoyar nuevamente lo haremos con todo gusto.
      Un saludo Gabriel.

  • Juan Carlos Castellanos

    Muy buenos días María, para poder implementar tu circuito como lo pides, debes conectar el cable rojo del broche a un pin lateral de un switch deslizable, y otro al pin central del mismo y lo conectas al pin de Vin del Arduino, asi controlarás el encendido y apagado del carrito, para poner un led, conecta el anodo a una resistencia de 330 Ohms al pin de 5 voltios del Arduino, y el catodo a Tierra.

  • Hola Jacinto, una pregunta como haria la conexión en este circuito que se muestra para encender el circuito completo a través de un switch y a su vez que encienda un led.

    • Muy buenos días María, para poder implementar tu circuito como lo pides, debes conectar el cable rojo del broche a un pin lateral de un switch deslizable, y otro al pin central del mismo y lo conectas al pin de Vin del Arduino, asi controlarás el encendido y apagado del carrito, para poner un led, conecta el anodo a una resistencia de 330 Ohms al pin de 5 voltios del Arduino, y el catodo a Tierra.