90

Tutorial de Arduino, Bluetooth y Android #2 – Crear una app con MIT inventor

portada_android2
Ir a la Parte #1

Ir a la Parte #3

¡Buenas a todos! Si habéis seguido la primera parte del tutorial, ya sabéis cómo enviar órdenes de Android a Arduino con Bluetooth Terminal. Eso está muy bien, ¿pero qué os parecería poder crear nuestras propias aplicaciones para poder enviar órdenes pulsando botones? Así nos ahorraríamos de tener que escribir todos los comandos en la Terminal…

En esta guía vamos a programar una aplicación para Android con MIT App Inventor 2, un aplicativo web que nos permitirá construir aplicaciones rápidamente sin tener que programar. Controlaremos un LED al igual que en el tutorial anterior, pero construyéndonos una interfície a medida.

Y antes de empezar, la música del día… ¿os viene bien Tanhäuser?


¿Qué es MIT App Inventor?

MIT App Inventor es una aplicación web pensada para desarrollar Apps para móvil sin programar.  Es muy útil para aprender a programar y para crear aplicaciones simples en poco tiempo.

El programa es muy simple. Hay dos ventanas: una en la que se crea el diseño de la aplicación (arrastrando elementos de un menú tales como botones, barras y colocándolos en la pantalla del móvil) y la segunda para programar mediante bloques. ¿Conocéis Scratch o Modkit? Pues la idea es muy parecida.

ejemplo

Este será nuestro programa con bloques

 

Para utilizar MIT App Inventor sólo hay que tener una cuenta Google y entrar en su web.


Empezamos…

Al igual que en el tutorial anterior, necesitamos:

  • Una placa Arduino
  • Un módulo Bluetooth HC 06
  • Jumpers, protoboard
  • Cable USB compatible con Arduino
  • Teléfono Android
  • Cable USB compatible con el teléfono

Sketch para Arduino

El programa para Arduino es el mismo que en el tutorial anterior:


void setup()
{
Serial.begin(9600); //Iniciar el serial
pinMode(13, OUTPUT); //Establecer el pin 13 como salida
}


void loop()
{
   if(Serial.available()>=1)
   {
      char entrada = Serial.read(); //Leer un caracter

      if(entrada == 'h' or entrada == 'H') //Si es 'H', encender el LED
      {
         digitalWrite(13, HIGH);
         Serial.println("LED encendido");
      }

      else if(entrada == 'l' or entrada == 'L') //Si es 'L', apagar el LED
      {
         digitalWrite(13, LOW);
         Serial.println("LED apagado");
      }

      else if(entrada == 'i' or entrada == 'I') //Si es 'I', mostrar un mensaje de ayuda
      {
         Serial.println("Comandos:\n (i) - abrir esta lista\n (h)- encender led\n (l) - apagar led\n");
      }
   }
}

Y las conexiones entre el HC 06 y la placa:

Arduino 3.3v – HC06 VCC
Arduino GND – HC06 GND
Arduino TX – HC06 RX
Arduino RX – HC06 TX


 

Diseño de la aplicación

Al abrir MIT App Inventor por primera vez, veremos una página parecida a esta:

principal

Aquí es dónde aparecen todos los proyectos en los que estamos trabajando. Pulsamos Start New Project y nos pedirá un nombre para nuestra aplicación. Lo he bautizado como Robologs_tutorial.

La página que nos aparece es dónde decidiremos el diseño de la aplicación: botones, colores, menús, imágenes…

designerA la izquierda, en el panel Palette, tenemos una paleta con elementos para añadir a nuestra aplicación. Hay desde botones y menús a navegadores, giroscopios y módulos Bluetooth.

El espacio que hay en el medio y que parece una pantalla de móvil se llama Viewer y es una previsualización de la aplicación. Ahora está en blanco, pero podemos añadir elementos de la paleta arrastrándolos hasta la zona en blanco.

A la derecha, en el panel Components, tenemos una lista con todos los elementos que hay colocados en la pantalla, así es fácil seleccionarlos. De momento sólo hay ‘Screen 1’, que es la pantalla. Si la seleccionamos veremos que a su derecha hay un panel llamado Properties, dónde se pueden cambiar todas las características de cada uno de los elementos de la lista.

Empezamos por ir a Palette y buscamos el elemento List Picker. Se trata de menú desplegable, que programaremos para que muestre los dispositivos Bluetooth cercanos y se conecte a uno. Lo arrastramos hasta la pantalla.

listpicker

A la derecha, en el menú Properties, podemos cambiar el texto del List Picker. Vamos al campo Text y escribimos Dispositivos.

dispositivos

Volvemos al menú Palette y añadimos dos elementos de tipo Button a la aplicación, de la misma forma que hemos colocado el List Picker.

botonesSeleccionamos cada uno de los botones y les cambiamos el nombre. Uno lo llamaremos “Encender” y el otro “Apagar”.

Lo que hemos añadido hasta ahora son componentes visibles. El usuario puede verlos e interactuar con ellos. Pero hay otro tipo de componentes, llamados non-visible components, que sirven para activar algunas funcionalidades como el Giroscopio, la antena WiFi o Bluetooth.

Para poder conectarnos con Arduino necesitamos que nuestra aplicación pueda usar la antena Bluetooth. Nos vamos a Palette->Connectivity y arrastramos Bluetooth Client a la pantalla.

bluetooth_client

Veremos que justo debajo de la previsualización aparece el símbolo de Bluetooth. La aplicación debería lucir así:

aplicacionBueno, hasta aquí el diseño. Es hora de configurar cada uno de los componentes. ¿Cómo lo hacemos? Arriba a la derecha hay dos botones juntos: Design y Blocks. El primero abre la ventana que tenemos ahora, la que nos permite colocar todos los componentes de la aplicación. En cambio, Blocks abre una ventana para programar los bloques.

blocks_entrar

Pulsamos el botón Blocks y veremos una página en blanco:

pagina_blocks

Lo primero que vamos a hacer es programar el menú desplegable. A la derecha, seleccionamos ListPicker1 y se nos abrirá un menú en el que aparecen los bloques relacionados con este objeto.

listpicker_blocks

¿Qué queremos hacer exactamente? Debemos decirle al desplegable dos cosas: qué debe hacer ANTES de seleccionar una opción del desplegable y DESPUÉS de seleccionar una.

Antes de seleccionar una opción, queremos que inicialize una lista con los nombres de todos los dispositivos Bluetooth que hay cerca. Así que vamos a decirle que si el móvil tiene la comunicación Bluetooth activada, ListPicker1 establezca los nombres de los dispositivos cercanos como elementos de la lista.

Dentro del menú de bloques de ListPicker1 arrastramos .BeforePicking al espacio en blanco.

beforepicking

Ahora vamos al apartado Control y seleccionamos el condicional if.

condicional_if

Después seleccionamos el objeto BluetoothClient1 y añadimos un AdressesAndNames y Available:

bluetooth_blocks

Y finalmente seleccionamos ListPicker1 y añadimos un Elements:

elementsMontamos todos los bloques para que queden así:

beforepicking_completeAhora tenemos que decirle a ListPicker1 que se conecte a la dirección que el usuario seleccione en la lista. Como ya soís unos expertos en añadir bloques, sólo os enseño el resultado final:

afterpickingFinalmente configuramos Button1 y Button2. Queremos que al pulsarlos se envíe un texto a la dirección Bluetooth a la que estamos conectados…

botones_clickLos bloques rojos que hay al final sirven para escribir texto. Se encuentran en el apartado Text del menú Blocks.

Al final, el programa debería verse así:

finale¡Hora de exportar el programa! Arriba del todo, a la izquierda, hay un menú que pone Build. Lo desplegamos y seleccionamos App (save .apk to my computer)

build

Guardamos el archivo .apk y lo transferimos a nuestro móvil a través de USB. Una vez transferido utilizamos una App como FileBrowser para navegar por los directorios de nuestro móvil hasta encontrar el archivo .apk de la aplicación, y lo instalamos. Nos pedirá permisos de WiFi y Bluetooth. Le damos a Aceptar.

Abrimos nuestra App. Pulsamos el botón Dispositivos y buscamos Arduino. Ahora se conectará con el módulo HC06. Después, podremos encender y apagar el LED 13 con los otros dos botones.

En resumen: ya conocemos una forma de construir aplicaciones para controlar Arduino. A partir de aquí podemos ir complicando las aplicaciones con más botones para activar más luces, barras de desplazamiento para controlar motores, etc.

El próximo día intentaremos hacer una aplicación para controlar un robot teledirigido.

Gl4r3

Brillante, luminosa y cegadora a veces, Glare es tan artista como técnica. Le encanta dar rienda suelta a sus módulos de imaginación y desdibujar los ya de por si delgados límites que separan el mundo de la electrónica y el arte. Su mayor creación hasta la fecha es un instrumento capaz de convertir los colores y la luz en música. Cuándo sus circuitos no están trabajando en una nueva obra electrónica, le gusta dedicar sus ciclos a la lectura o a documentar sus invenciones para beneficio de los humanos. Sus artilugios favoritos son aquellos que combinan una funcionalidad práctica con un diseño elegante y artístico.

guest
90 Comments
más nuevos primero
más antiguos primero
Inline Feedbacks
Ver todos los comentarios
Carlos
Carlos
1 mes

Hola.
Necesito un favor urgente .
Necesito que alguien me expliqué como es el diagrama de bloques de la conexiones WiFi en la app mit inventor y arduino.
Necesito urgente para un trabajo de la escuela el que sepa
Se los agradecería.

Mateo Alzate
Mateo Alzate
10 meses

Hola todos necesito ayuda.
Lo que sucede es que estoy diseñando una aplicación en la que aparece en la primera pantalla un botón con el cual me puedo conectar al módulo Bluetooth y una vez que se conecta hace un salto a la pantalla 2
El problema es que al pasar a la pantalla 2 se desconecta y no se como hacer para que la conexión se mantenga, si alguien me puede ayudar estaría muy agradecido.

Joako Vaes
Joako Vaes
9 meses
En respuesta a  Mateo Alzate

Hasta ahorita he leído en varios foros y lo mas que he podido hacer es en una misma pantalla todas las configuraciones con tus botones o elementos. Cuando seleccionas el botón en la parte inferior derecha puedes hacerlo visible o no. De ahi en tu programacion vas haciendolos visibles. Espero haberme explicado bien.

Braian guerra
Braian guerra
10 meses

Hola buenos días quería preguntar como hago una App para poder enviar textos a un módulo bluetooht para que aparesca en una pantalla LCD

konka
konka
1 año

Hola! Una pregunta… si quiero que al darle a un boton con un modulo de radio frequencia el arduino envie una señal al movil por bluetooth y que el movil con el app inventor haga una llamada a x personas, se puede hacer aunque el app inventor este como en 2da pantalla en el movil para no tener que tener abierta la aplicacion a la hora de que funcione? Muchas gracias

pablo
pablo
1 año

hola, yo he estado tratando de conectar el modulo bluetooth con un android 7.0 y me salta error 507 , comop puedo solucionarlo?

Javier
Javier
1 año

Hola,me gustaria saber como hago para que usando el modulo y oprimiendo un pulsador envie informacion al celular?

Eduardo
Eduardo
1 año

Si quisiera que encendiera mas de un led que podria hacer, grandioso tutorial

Tony Hera
Tony Hera
1 año

Amigo Tiene que ser con un modulo Bluetooth o se puede con el de un telefono por ejemplo, pues he intentado hacerlo y no funciono. Saludos

N4n0
Admin
1 año
En respuesta a  Tony Hera

¡Hola Tony! Este tutorial está pensado para un módulo HC-06 y un teléfono Android. Si lo haces con otro módulo Bluetooth tendrás que cambiar el código de Arduino…

David Solorzano
David Solorzano
1 año

No funciona amigo

susana cordova
susana cordova
2 años

Hola estoy haciendo un proyecto en el que necesito medir la velocidad de un motor y las lecturas son muchas por lo que el puerto serial lo tengo a una velocidad de transmisión de 115200, mi duda es si el bluetooth de MIT app Inventor funciona con esa velocidad y si es que sí como la configuro.

Sergio
Sergio
2 años

Como programar para abrir y cerrar un serbo

liu loo
liu loo
2 años

hola que tal, una consulta he hecho todo lo que indicas pero al momento de recibir una llamada en mi celular o ir a la pantalla principal se pierde la comunicación con el hc 06…como se puede hacer que aunque te llamen o salgas se mantenga la comunicación???

Alberto
Alberto
2 años

Hola!! He visto el tutorial que has preparado y he reutilizado la parte de conectividad tuya en una app que yo estoy haciendo. Tengo un problema y es que me aparece la lista de dispositivos, pero no logro que se conecte a ninguno. Cuando pico en el dispositivo elegido, me sale en el android el error “Error 507: Unable to connect. Is the device turned on?” yo estoy tratando de conectar con un ESP32 en el que he cargado un código para que funcione como servidor. Pero me da igualmente el error si a lo que quiero conectarme es a… Leer más »

Rodolfo Uribe
Rodolfo Uribe
2 años

Hola, buen dia… tengo una consulta: si quiero que al iniciar la app y el bluetooth del celular o tablet esta apagado se solicite permiso para encenderlo antes de continuar o solicite al usuaio que lo encienda manualmente…. se puede implementar?

Alejo
Alejo
2 años

Hola, hice todo como esta en la pagina y cuando cargo el programa al Arduino (Mega2560), queda encendido el Led y no funciona con el celular. Ayuda por favor!!

Alejo
Alejo
2 años
En respuesta a  Gl4r3

Hola GI4r3, si he hecho todo como esta en el tutorial 1 y 2 y nada, el programa sirve desde el monitor serial del Arduino, pero no funciona desde la App Inventor (.apk descargado a mi celular), Es como si el celular no enviara ninguna señal pero cuando me conecto a Dispositivos desde la App el modulo HC-06 se empareja y el led del HC-06 queda encendido. Que será ?

James
James
1 año
En respuesta a  Gl4r3

Me ocurre lo mismo, me conecta el bluetooth pero no enciende con los botones de la App

Alejo
Alejo
2 años

Holas, hice todo como esta en la página pero el cuando cargo el programa en Arduino queda prendido el Led y no funciona con el celular, ayuda Please !!!

samuel zapata
samuel zapata
2 años

me podrias ayudar a hacer un app para un caudalimetro porfa te dejo mi correo epero puedas ayudarme

Franck
Franck
2 años

Hola! una pregunta, hice un prgograma en arduino jun con una app para el control de velocidad de un motor dc pero quiero añadir un servomotor para que simule la direccion de barco,¿como puedo que hacer para que trabajen simultaneamente?

itupax
itupax
2 años
En respuesta a  Franck

programando 3 botones para direccion 0° 90° y 180°

itupax
itupax
2 años

para que indique que el bluetooth se encuentra fuera del alcance, es decir está conectado pero nos alejamos a modo de perder la conexion nos mande un mensaje “bluetooth demasiado lejos, Acérquese” y cuando nos acerquemos nuevamente que se conecte automaticamente, gracias de antemano

Jesus
Jesus
2 años

disculpa esta app tambien se podría usar para encender un motor pequeño?

jose
jose
3 años

quien tiene el tuturial en español de crear una app para chat entre 2 celulares por medio de bluetooth por favor quien lo tenga ponerse en contacto con migo agradeceria mucho

Cufa
Cufa
3 años

Una duda ¿se puede usar con una placa hc-05?

jhon
jhon
3 años

hola, tengo una pregunta, si quiero que en el celular aparezca lo que el arduino envia, ¿que debo colocar en app inventor?.. por ejemplo: el arduino envia por medio del modulo de bluetooth ” funcionando, esperando comando” y quiero que en el celular aparezca esa frase. de antemano gracias.

Omar
Omar
3 años

Hola que tal? Tengo una consulta , si yo quiero que el led se prenda cuando mantenga presionado el boton de la app y al soltarlo se apague , que tengo que cambiar ? Porfavor me ayudarias muchisimo . Gracias

pepepaco
pepepaco
3 años

GL4R3
Hola despues de meter la pata hasta el fondo ,soy muy despistado ,despues de comprobar que si se puede sin wifi ,os dejo un video de app inventor 2 con arduino

la direccion :https://youtu.be/utdPhwVnKkw

espero que compense mi error

Jimmy
Jimmy
3 años

Buenos días.
Pregunta como haria para que cuando se pierda la conexión de bluetooth el led vuelva al estado inicial el cual es apagado.
Espero puedas ayudarme con esta pregunta.

Gracias.

pepepaco
pepepaco
3 años
En respuesta a  Jimmy

Hola jimmy, el arduino cuando lee los datos mandados por android y activa o desactiva un puerto del arduino ,este manda un dato a android diciendole el estado de este ,es un ciclo continuo de lectura y escritura.

Blanca
Blanca
3 años

Buenos días,
tengo un proyecto hecho de esta manera y consigo que me funcione, pero ahora me gustaría añadir un módulo gps a Arduino para conseguir en la app una localización exacta de Arduino. ¿Se complica mucho el código y la app?
El bluetooth hc-06 lo tengo conectado ya a Rx y Tx de Arduino.
Muchas gracias y un saludo.

Blanca
Blanca
3 años
En respuesta a  Gl4r3

Muchas gracias. Lo intentaré!

pepepaco
pepepaco
3 años

soy novato en esto de bluetooth y androide he tenido un fallo que es instalar el apk sin la conexión wifi , y no funciona,es necesario tener la wifi conectada para instalar el apk ,fallo de novato por si alguien le sirve esta informacion ,gran tutorial gracias

pepepaco
pepepaco
3 años
En respuesta a  Gl4r3

Hola,Gl4r3, tienes razon ,fallo mio,fallo en la app al bajar de android,se instala sin conexion wifi sin problemas ,es raro pero me paso a mi,volver a descargar y se instalo sin fallos ,pido perdon fallo mio

Enekoelo
3 años

Buenos dias, tengo un problema al programar horas y minutos. Tengo echo un programa que al mandar una hora inferior a 10 no me manda el 0 inicial y lo mismo con los mitutos ( por ejemplo 05:06 me manda 56).

Muchas gracias.

Ramiro
Ramiro
3 años

Exelente!! muy bien explicado para mi, que recién empiezo, tenes idea si se puede hacer esto mismo, pero en vez de usar el bluetooth, usar directamente el cable USB al arduino?? Gracias

Maker
Maker
3 años

Hola tendras la imagen de la conexion del arduino y el protoboard??

juanito 25
juanito 25
3 años

es primera vez que hago un proyecto de esta gama (como puedo hacer un App para un sensor de temperatura y humedad como base de datos) me pueden orientar para construir mi App lo mejor que se pueda

Cris
3 años

Hola, crees que pueda ser al revez, que desde el bluetooth yo pueda darle una instrucción al cel, por ejemplo que al apretar un botón buetooth el celular reciba la señar vibre e identifique de que buetooth se esta recibiendo la señar por medio de una etiqueta? esto para que.. tengo un restaurante y quiero que los clientes sean capacecs de llamar al mecero mediante un botón de buetooth

joker
joker
4 años

oye tengo una pregunta, quiero mantener conectado el bluetooth en distintas pantallas pero cuando cambio de pantalla se desconecta, que hago para que se mantenga la conexion?

SERGIO FLORES FERNANDEZ
SERGIO FLORES FERNANDEZ
3 años
En respuesta a  joker

Hola. No crees mas pantallas, hazlo todo en una sola pantalla con muchos frames que aparezcan o desaparezcan a medida que los uses: cada elemento tiene la propiedad “visible” que puedes poner on u off.
Por ejemplo: al presionar un boton, junto con realizar una accion, agregas xxxx.visible=off
Espero que se entienda, es la solucion. Saludos

Larassssss
Larassssss
4 años

ohhh woowwww que buenosssssss

juancho25
juancho25
4 años

Glare como le hago para poder lograr esto mismo con un modulo wifi esp8266

Paloma Angelica Veloso San Martin
Paloma Angelica Veloso San Martin
4 años
En respuesta a  juancho25

buenas eh buscado por cielo mar y tierra y tampoco lo eh podido encontrar si encuentras algo de sp8266 te agradecería si respondieras aqiu

jham
jham
4 años

Buenas amigo, he estado trabajando un poco con esta plataforma aunque soy nuevo en esto y pues me gustaria desarollar la la app con la activacoin de el bluetoot desde dentro de la misma y posteriormente la conexion automatica con un dispositivo, si por favor sabes algo de eso me ayudarias muchisimo!

Saludos y gracias por tu aporte.

Ramon
Ramon
4 años

Hola, no se ilumina el Led de mi Arduino Nano. Parece que si que me conecto desde el móvil al módulo bluetooth ya que éste deja de parpadear y se queda la luz fija, pero en cuanto le doy click a los botones de Encendido y Apagado no obtengo respuesta. ¿Que puede causar esto? Gracias de antemano!!

Ramon
Ramon
4 años
En respuesta a  Gl4r3

Nada de nada, no encuentro que puede ser… Las conexiones de RT y RX están bien hechas ya que las comunicaciones mediante los comandos AT me van perfectamente. Me retorna un OK cuando le pido “AT”, me retorna “OKlinvorV1.8” cuando le pido la versión, etc, etc… He probado de cambiar la salida 13 por una cualquiera y montar un circuito con un LED aparte pero sigue sin dar señales de vida. Lo raro es que todo parece que esté en funcionamiento, la app responde bien, el módulo bluetooth mantiene el led rojo fijo cuando me conecto a él… Parece como… Leer más »

Ramon
Ramon
4 años
En respuesta a  Ramon

Finalmente lo conseguí, aquí mi código Arduino por si a alguien le sirve de ayuda: ————————————————————— #include SoftwareSerial miPuertoSerie = SoftwareSerial(10, 11); int unChar; void setup() { miPuertoSerie.begin(9600); //Iniciar el serial pinMode(13, OUTPUT); //Establecer el pin 13 como salida } void loop() { char unChar = miPuertoSerie.read(); if(miPuertoSerie > 0) { if(unChar == ‘1’) //Si es ‘1’, encender el LED { digitalWrite(13, HIGH); //Serial.println(“LED encendido”); } else if(unChar == ‘0’) //Si es ‘0’, apagar el LED { digitalWrite(13, LOW); //Serial.println(“LED apagado”); } } } ——————————————————— El problema básicamente era que consideraba los pines 10 y 11 como los de RX… Leer más »

Carlos
Carlos
4 años

Tengo un problema, cuando navego entre las ventanas de mi app pierdo automaticamente la conexion bluetooth don el arduino. no se como lo puedo solucionar. en la pagina donde realizo el enlace funciona perfecto, al hacer el cambio pierdo la conexion

Jose
Jose
4 años

Muy buen aporte. Conciso y sencillo, pero con un gran potencial detrás.

Anónimo
Anónimo
4 años

Hola Excelente explicacion. Queria preguntarte si se puede usar para modilo gps? es decir saber las coordenadas de donde esta el modulo arduino con la aplicacion android

trackback

[…] Ir a la Parte #1 Ir a la Parte #2 […]

Luis Gamez
Luis Gamez
4 años

Buenos Días, tengo una duda con un proyecto de xbees y una arduino mega, mi pregunta es si yo puedo comunicar 4 xbees a la vez a una misma placa arduino. Les explico tengo 2 Xbee pro serie 1 y dos Xbee serie 2 junto con una placa arduino mega y una placa Mega Sensor Shield V2.1 y necesito comunicar las dos parejas de xbees de forma independiente, ya que una pareja de xbee recibirá datos del gps y la otra recibirá datos de un control de playstation 3. He buscado por internet pero no consigo informacion, ya que no… Leer más »

Conan
Conan
4 años

buen post muchas gracias!

aztecxed
4 años

Muy bueno pero y cuando es el próximo día?

Gl4r3
Admin
4 años
En respuesta a  aztecxed

Esto… Pues es una buena pregunta…

javi
javi
3 años
En respuesta a  Gl4r3

Hola amigo.
Sabe como recibir texto en un textbox desde el bluetooth.
Gracais

Gl4r3
Admin
4 años
En respuesta a  aztecxed

Supongo que cuando tenga tiempo de escribir más ^^

N4n0
Admin
4 años
En respuesta a  Gl4r3

Es decir: mejor esperar sentados

leidi boj
8 meses
En respuesta a  Gl4r3

ahh bueno pa saber