Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[TUTORIAL] AppInventor. Android + Módulo Bluetooth + Arduino
#1
Me comprometí a hacer un tutorial y aquí lo tenéis, espero que os sirva de algo :one:




Módulo utilizado: JY-MCU HC-06

resim



Esquema de conexiones:


resim



Para explicar el uso de este módulo voy a usar esta sencilla aplicación que consiste en encender y apagar 3 leds diferentes. El aspecto de la aplicación podría ser una cosa así, el diseño es a gusto de cada uno Mola :


resim


Este es el entorno donde vamos a trabajar:


resim


A la derecha del editor nos aparecerá una lista con todos los elementos que estamos usando, es muy recomendable nombrar cada cosa para luego no volvernos locos en el editor de bloques.
Es fundamental añadir el cliente bluetooth para que funcione Sisi3 se encuentra en el menú de la izquierda, dentro de "Other stuff".


resim


Una vez tengamos hecho el diseño de la aplicación toca asignar funciones a cada elemento, para ello, abrimos el editor de bloques con el siguiente botón:


resim


Se nos abrirá esta ventana, donde iremos colocando los bloques que vamos a utilizar. En el menú de la izquierda podemos ver todos los que tenemos disponibles:


resim


Ahora vayamos por partes...

Empezaremos declarando la variable "MAC", asignándole la dirección de nuestro módulo bluetooth (podemos saber la dirección por ejemplo con la app Bluetooth Terminal - Link).
En el campo de texto donde pone "DIRECCION MAC", tendremos que poner la dirección tal cual nos aparece en el móvil, algo así: XX:XX:XX:XX:XX:XX


resim


Seguimos ahora con el botón para conectarnos con el módulo desde la aplicación.

- Realizamos una comprobación de la MAC del módulo para ver si está funcionando.

En el caso de que si lo esté:

- Cambia el texto del botón por "Desconectar"
- Cambia el color del texto a gris.
- Se envía una cadena de texto cualquiera para que el otro extremo "sepa con quien hablar".


resim


Primero, al pulsar el botón de encender "on", tenemos que:

- Se envía un "1", que usaremos para encender en este caso el led rojo con el arduino.
- Desactivamos el botón de encender para este led.
- Activamos el botón de apagado (previamente en el diseño lo marcamos para que esté desactivado en el inicio).

Segundo, una vez desactivado el botón de encender y activado el de apagar "off", si pulsamos este último:

- Se envía una "A", que usaremos para apagar en este caso el led rojo con el arduino.
- Desactivamos el botón de apagar para este led.
- Activamos nuevamente el botón de encendido.


resim


(Las cadenas de caracteres que le enviamos al arduino, pueden ser cualquier texto, solo hay que poner luego lo mismo en la parte del código donde corresponda.)

De está forma quedaría para los 3 leds:


resim


Y este sería el resultado final, añadiéndole al botón "salir" la acción de cerrar la aplicación:


resim


Código de arduino para este ejemplo:

Código:
//Ejemplo de control de 3 LEDs mediante un módulo bluetooth y un dispositivo Android. SpainLabs.com

String dato;                                 //Variable de tipo cadena para guardar los datos recibidos
int rojo= 8;
int naranja= 9;
int verde= 10;

void setup() {
  Serial.begin(9600);                        //Iniciamos comunicación serial
  
  //Salidas digitales
  pinMode(rojo, OUTPUT);
  pinMode(naranja, OUTPUT);
  pinMode(verde, OUTPUT);
}

void loop() {
  while (Serial.available()) {
    delay(10);
     if (Serial.available() > 0) {
      char c = Serial.read();                //Cuando se recibe un dato, se guarda como carácter
      dato += c;                             //Cadena de caracteres formada por la suma de los datos recibidos
     }
  }
  if (dato.length() > 0) {                   //Comprueba que la variable "dato" tenga al menos un caracter
  
    if(dato == "1") {                        //Comparamos la cadena de caracteres con cada uno de los casos
      Serial.println("Encender led rojo");   //Muestra por el monitor serial la acción realizada
      digitalWrite(rojo, HIGH);              //Enciende el led rojo
    }
    if(dato == "A") {  
      Serial.println("Apagar led rojo");
      digitalWrite(rojo, LOW);
    }
    if(dato == "2") {
      Serial.println("Encender led naranja");
      digitalWrite(naranja, HIGH);
    }
    if(dato == "B") {
      Serial.println("Apagar led naranja");
      digitalWrite(naranja, LOW);
    }
    if(dato == "3") {                        
      Serial.println("Encender led verde");
      digitalWrite(verde, HIGH);
    }
    if(dato == "C") {
      Serial.println("Apagar led verde");
      digitalWrite(verde, LOW);
    }
     dato="";  //Declaramos la variable "vacía" para volver a guardar de nuevo caracteres y compararlos con cada uno de los casos
  }
}


Montaje en protoboard:

resim

IMPORTANTE:

- El código para emparejar el módulo bluetooth con el dispositivo, suele ser "1234".
- Si se usan los pines 0 y 1 del arduino (Rx y Tx), a la hora de cargar el sketch hay que desconectarlos y una vez se haya cargado los volvemos a conectar. En el caso de que queráis usar otros pines digitales para no tener problema con esto, tendréis que usar la librería SoftwareSerial.h. Aquí podéis encontrar más información: http://arduino.cc/es/Reference/SoftwareSerial


AppInventor: http://appinventor.mit.edu/explore/classic.html
AppInventor 2: http://ai2.appinventor.mit.edu/

Versión para descargar (Windows): http://beta.appinventor.mit.edu/learn/se...ndows.html

Animaros a realizar algún proyecto implementando esto y lo publicáis aquí en el foro!! :yeah:


Si tenéis alguna pregunta, duda o sugerencia ponedla aquí en el hilo Mola
Citar
#2
Muy buen tuto, yo próximamente voy a empezar un proyecto utilizando el modulo bluetooth HC-05, en cuanto termine lo comparto, con toda la info y datos que he recopilado
Citar
#3
Otro con el proyecto. Me lo pido Gran sonrisa
Citar
#4
diego_eko escribió:Muy buen tuto, yo próximamente voy a empezar un proyecto utilizando el modulo bluetooth HC-05, en cuanto termine lo comparto, con toda la info y datos que he recopilado
Diferencia entre le HC-06 y el HC-05??
Citar
#5
Cita:Una simple diferencia es que el módulo HC-06 funciona como Slave solamente, y el HC-05 funciona como Master y Slave, básicamente es eso, lo cual podría condicionarnos algún desarrollo, pero la realidad es que el HC-06 tiene un valor menor y nos sirve tanto para enviar y recibir (siempre y cuando utilicemos de a uno por vez, por este tema de Maestro y Esclavo).
Citar
#6
cna escribió:
Cita:Una simple diferencia es que el módulo HC-06 funciona como Slave solamente, y el HC-05 funciona como Master y Slave, básicamente es eso, lo cual podría condicionarnos algún desarrollo, pero la realidad es que el HC-06 tiene un valor menor y nos sirve tanto para enviar y recibir (siempre y cuando utilicemos de a uno por vez, por este tema de Maestro y Esclavo).


Osea que en el 06, la comunicacion es bidireccional pero no simultanea, y en el 05, es simultanea?
Citar
#7
Gran tutorial, a ver si mañana despues de clase puedo ponerme un rato y le meto mano al bluetooth y me creo algun programilla Mola
Ayudanos a crear el mapa de usuarios de Spain Labs!!!
Citar
#8
Me lo apunto para en un rato libre ponerme a ello, a ver que sale.

Gracias Mola
Citar
#9
way!! quiero hacerlo pero no tengo módulo bluetooth! Triste
Citar
#10
dreasic escribió:way!! quiero hacerlo pero no tengo módulo bluetooth! Triste

http://www.ebay.com/itm/Wireless-Serial-6-Pin-Bluetooth-RF-Transceiver-Module-HC-05...
http://www.ebay.com/itm/Wireless-Serial-4-Pin-Bluetooth-RF-Transceiver-Module-HC-06...

:roll:
Citar
#11
Muy buen tutorial. La parte de app inventor me puede servir de ayuda.

Solo remarcar una cosa. Si alguien pretende usar el HC-06, que tenga en cuenta que los terminales RX y TX trabajan a 3,3V, osea que no pueden enchufarle un Arduino UNO. Tendrán que hacer, al menos en el RX del bluetooth un cambio de tensión, ya sea con un convertidor lógico o con un divisor de tensión.
Citar
#12
Hola, iba a seguir este fantástico tutorial, pero me ha surgido un problema con el modulo HC-05, el caso es que consigo enviarle comandos desde el puerto serial del arduino, pero cuando desconecto el pin KEY para poder sincronizar con el móvil no se sincroniza, no aparece en la lista de dispositivos ni nada. Ya he probado con varios móviles y no se si es que esta estropeado el modulo o estoy haciendo algo mal, agradezco vuestra ayuda!

Gracias de antemano!
Citar
#13
KamikaceDixit escribió:Hola, iba a seguir este fantástico tutorial, pero me ha surgido un problema con el modulo HC-05, el caso es que consigo enviarle comandos desde el puerto serial del arduino, pero cuando desconecto el pin KEY para poder sincronizar con el móvil no se sincroniza, no aparece en la lista de dispositivos ni nada. Ya he probado con varios móviles y no se si es que esta estropeado el modulo o estoy haciendo algo mal, agradezco vuestra ayuda!

Gracias de antemano!
Me pasa lo mismo el modulo bluetooth no me aparece en la lista de dispositivos visibles, has averiaguado algo? O lo has solucionado?
Saludos y gracias
Citar
#14
Muy buen Tuto, lastima no uso Android ni windows Lengua, pero muy bueno gracias, esto ayudará a muchos
Citar
#15
Buen tuto, yo el app inventor solo lo había visto de re ojo, en clase me machacaban más con el eclipse y el ADT.
"Enseñar es aprender dos veces".
Citar
#16
Extraordinario tuto.
Una duda: ¿Sería útil esta aplicación para encender 16 led?
Citar
#17
Hola kisiera saver si hay la posibilidad de hacer una aplicación en app inventos usando botones los cuales encenderán un led mientras se mantenga presionado dicho boton y una ves que uno suelte el botón automáticamente se apaga caro previa configuración en el programa del arduino. en otra palabras que se mande el carácter desde el celular y y deje de mandarlo en el momento k uno deje de pulsar dicho botón en el celular de ante mano GRACIAS
Citar
#18
Hola a todos,

Recientemente me han regalado un kit de Arduino y ayer empecé a cacharrear con él. El caso es que esta mañana me he puesto con la conexión Bluettoth y Appinventor y en cosa de una hora lo tenía todo en marcha (aunque he tenido un problemilla que me ha retrasado otra hora). Me ha sorprendido lo rápido con lo que se montan las app (siguiendo un tutorial) y la forma en que se conecta con el móvil.

Al estar en la misma wifi el diseñador web y mi móvil, la aplicación se iba actualizando en tiempo real en mi móvil y podía ver los cambios de inmediato sin cables y sin emuladores...una pasada.

He usado el mismo código que aparece al principio del foro (muchas gracias), pero la app en appinventor cambia ligeramente por lo que voy a poner unas imágenes de como me ha quedado a mi. Decir también que además de los botones de encender y apagar el led, he añadido uno más como pulsador.

La app ha quedado así...
resim

Una vez diseñada la parte gráfica....
resim

Están los botones de Conectar (que es un ListPicker) y Salir y luego 3 botones más por cada color.

El listPicker (botón conectar) tiene estos bloques..
resim

El botón Salir es muy sencillo...
resim

Y por último los botones de cada color...

Button3 es el de encender
Button4 es el de apagar
Button5 es el de pulsador
resim
Para operar con el color rojo paso al arduino los valores "1" para encender y "A" para apagar

El resto de botones serían igual que estos pero con estos valores...
Para operar con el color amarillo paso al arduino los valores "2" para encender y "B" para apagar
Para operar con el color verde paso al arduino los valores "3" para encender y "C" para apagar

Como os decía al principio, lo he puesto en marcha muy rápido, luego me ha llevado 1h darme cuenta que tenía los led conectados del revés (es mi primer dia con electrónica  Blush)

La estructura de los botones tiene un bloque condicional IF THEN
  • Si el clientebluetooth está disponible
  • Entonces envía un texto a través de él.
Decir que el hecho de tener un botón de pulsador en la app no influye en el código arduino del principio del post ya que el pulsador actua como dos acciones del mismo botón "cuando está pulsado" y "cuando se suelta".

Un saludo a todos.
Citar
#19
Muy bueno, aunque informático que se respete programa con eclipse o android studio. Meparto
"Enseñar es aprender dos veces".
Citar
#20
(27-11-2015, 06:59 PM)Kurama escribió: Muy bueno, aunque informático que se respete programa con eclipse o android studio. Meparto

Para serte sincero, me instalé eclipse dos veces, y Android studio lo tengo instalado, pero aún no me he puesto con esto en serio.
La velocidad con la que haces una aplicación sencilla creo que no es comparable a no ser que tengas experiencia previa. El módulo bluetooth en Android Studio no sé ni por donde empezar. Pero poco a poco, tengo algo en mente y soy cabezón, jajaja
Citar


Temas similares...
Tema Autor Respuestas Vistas Último mensaje
  APORTE Control de Persiana por bluetooth kuadri 0 119 16-06-2018, 11:33 PM
Último mensaje: kuadri
  Problema con bluetooth y comandos AT sejiozosky 41 4,846 06-05-2018, 11:48 AM
Último mensaje: Iván
  CONSULTA ayuda con modulo bluetooth f-6188 kcho26 0 232 25-02-2018, 07:29 PM
Último mensaje: kcho26
  DUDA Duda con conexion modulo de reles polarode 4 765 29-12-2017, 12:37 PM
Último mensaje: Jasobrino
  medidor de distancia a con bluetooth o wiffi homer32 4 653 28-10-2017, 11:28 AM
Último mensaje: homer32