Comunicar una app de Android con un arduino utilizando la api de Bluetooth (1/2).

En este proyecto voy a presentar una aplicación de Android sencilla que recibirá una temperatura cada pocos segundos de un arduino leonardo que la registra con un sensor DS18B20.

Para emitir la temperatura a nuestro dispositivo Android, usaremos un transceiver Bluetooth, en concreto el conocido por su facilidad de uso y bajo precio, HC-06.

Primero presentaré el sketch de arduino necesario para registrar y medir la temperatura ambiente y emitirla por bluetooth.

En segundo lugar, presentaré el código fuente de una pequeña app Android que recibe la información y la muestra en pantalla, para ilustrar como se utilizan las API de bluettooth en Android.

Para recibir la información en segundo plano, utilizaremos la socorrida tarea asíncrona, «AsyncTask», que es realmente fácil de utilizar en Android. Realmente no es la mas adecuada para esta tarea, ya que las guidelines de programación en Android recomiendan usar un AsyncTask solamente para tareas que duren «unos segunos». Es decir, no mas de 4 o 5.

El motivo es que si durante la ejecucion de la AsyncTask  la actividad o fragment con el que esta relacionada, se recrea, tenemos que ocuparnos de cancelar y lanzar de nuevo la tarea. Seria mucho mejor utilizar un servicio de fondo, pero por simplicidad, lo vamos  a hacer asi.

Empecemos_ componentes de arduino necesarios, donde comprarlos, y el sketch.

Para realizar este proyecto, necesitamos los siguientes componentes:

  1. Un arduino cualquiera, yo he utilizado un Arduino Leonardo.
  2. Un sensor de temperatura ds18b20.
  3. Un transceiver bluetooth, en concreto el conocido como HC-06.

[AMAZONPRODUCTS asin=»B008V5PZC4″]

[AMAZONPRODUCTS asin=»B00H07UJL6″]

[AMAZONPRODUCTS asin=»B013GB27HS»]

Además, el consabido cable usb para subir el sketch al arduino. Respecto a las librerías, las clásicas librerias para el sensor de temperatura ds18b20, que puedes descargar de la sección de descargas, valga la redundancia.

Para conectar el sensor de temperatura, utilizaremos el mismo esquema que ya hemos utilizado en el proyecto «Termostato Arduino Yun«:

Incorpora un pequeño led que brilla tenuemente mientras se carga e energía y parpadea en rojo al realizar una lectura
El montaje es muy sencillo. El pin identificado por el – es GND. El pin identificado por S es el pin de datos. Y el que queda en medio es el pin para darle corriente.

No es necesario puentear GND y V con en el caso anterior, ya esta todo hecho en la placa.

  • cable verde: une pin (-) de keyes con pin GND de arduino.
  • cable naranja: une pin (+) de keyes con pin 5V de arduino.
  • cable rojo: une pin S de keyes con pin digital 2 de arduino.
Detalle de la placa keyes con el sensor DS18B20 conectada al YUN
Y ahora, conectamos el transceiver bluetooth al arduino.

HC-06 conectado a arduino leonardo

Como se puede apreciar en la foto, las conexiones son muy sencillas:

  • El pin GND del HC-06 va conectado al pin gnd del arduino.
  • El pin VCC a la conexión de 3.3v del arduino leonardo.
  • El pin RXD del HC-06 va al pin TX del arduino leonardo (pin 1).
  • El pin TXD del HC-06 va al pin RX del arduino leonardo (pin 0).

Y ya esta todo conectado. Veamos ahora el sketch que envía la temperatura por bluetooth.

Conclusión.

Como veis el sketch es muy sencillito. Despues de cargar las librerias para el sensor de temperatura e inicializar el mismo, para cada iteración del procedimiento loop, se abre el puerto serie 1 al que está conectado el HC-06, se envía la cadena con el nombre del nodo y la temperatura separado por una coma y se vuelve a cerrar el puerto.

Esto se repite a intervalos de un segundo.

En el siguiente articulo veremos como hacer una aplicación de Android sencilla que reciba los datos y los muestre en pantalla.

16 comentarios en “Comunicar una app de Android con un arduino utilizando la api de Bluetooth (1/2).”

  1. Hola, disculpa la pregunta de pronto sabes como se haría para saber desde el dispositivo móvil, si el bluetooth(módulo) de la arduino está prendida o apagada, en otras palablar antes de que se inicien las conexiones se conosca si la arduino está prendida o apagada por medio del bluetooth.

    • EN el proximo articulo que estoy preparando, la aplicación hace precisamente eso, comprueba si esta disponible el arduino antes de conectarse a el. A ver si lo tengo listo en un par de semanas.

  2. Amigo buen dia, me interesa mucho tu proyecto, estoy realizando algo muy similar, seria posible que me mostraras como realizar la aplicacion o el codigo fuente, me urge para un proyecto de final de semestre, me ayudarías muchismo

    Saludos

    • Hola, lo lamento, pero no creo que llegue a tiempo para tu proyecto de fin de semestre, ya que estoy en un proceso de mudanza internacional, y puedo conectarme a internet puntualmente. Lo lamento.

  3. O podrias decirme como enviar y recibir los datos? ya intente con el codigo que tienes arriba y no me deja enviarlos por el serial2, y si me podrias ayudar en como recibirlos en la aplicacion android

    • Hola de nuevo.

      He buscado un hueco para publicar el codigo fuente de la app de android que recibe los datos mediante bluetooth. No he podido detenerme mucho en el articulo para explicar como funciona, pero ahora al menos tienes material para empezar a trabajar. Echale un vistazo al articulo en la url http://www.hell-desk.com/comunicar-una-app-de-android-con-un-arduino-utilizando-la-api-de-bluetooth-24/

      Respecto a que lo has intentado con el codigo del arduino que he puesto en el articulo 1, ¿estas usando los mismos componentes que he indicado al principio del articulo? ¿Por que dices que no te deja enviarlos por el serial 2? ¿QUe error o comportamiento erroneo detectas?

  4. Buenas queria saber si podes ayudarme con mi problema el cual es que, mi celular android 4.0.3 reconoce el modulo HC-06 pero cuando abro las apps, (sensoduino, blueterm, u otra, no reconocen el dicho modulo, lo probe con una tablet y si lo hace por eso queria perguntarte si hay alguna configuracion especial para el celular muchas gracias.
    saludos

    • Lo siento, no puedo ayudarte. El ecosistema android es tan grande que no puedo imaginar por que no te reconoce el modulo bluetooth. ¿Has probado una actualizacion de tu rom a algo mas reciente?

  5. No puedo utilizar el Serial1 (tengo Arduino Uno) el codigo cambia mucho para Arduino Uno? lei sobre una libreria llamada NewSoftwareSerial y Software Serial que puede crearlos virtualmente, pero no logro hacer funcionar el programa. Otra duda, si consigo arduino Mega, el codigo es igual a el de este tutorial? Gracias.

  6. Buenas,
    estoy iniciando un proyecto final de carrera que consiste en detectar datos con un sensor(aun no se que tipo de datos; si temperatura, proximidad..) a partir de arduino, enviar dichos datos a Mule donde se procesan y enviar eventos en tiempo real a una app android. Me gustaria saber si usted conoce como conectar Mule con una app android para la difusion de esos datos y su representacion.

    Gracias de antemano y reciba un saludo.

    • Hola, desconozco de que se trata esa plataforma llamada Mule. Si me facilitas un enlace o algo mas de informacion tal vez pueda ayudarte.

  7. Una disculpa he leído tu gran explicación, sólo quería preguntar si esto que mencionas ¿se puede implementar en un Arduino UNO?

    • Hola,

      en principio no veo ningun inconveniente en implementarlo en un arduino UNO. Un saludo

  8. Muy Buenas noches, ROQUE CAMPOS PARADA.
    Gracias por la gran explicación acerca de como conectar una App android con un modulo bluetooth, me aclaro varias dudas pero a la vez quisiera saber sí podrías hacer un tutorial donde me des algunas nociones de como crear una App en algún ide como Android Studio para implementarla con esté modulo, ya qué generalmente solo he visto que utilizan app inventor.
    Los mejores deseos y qué el código no acabe.

    • Hola José,

      estoy esperando que me lleguen unos sensores de humedad, y tenia pensar hacer una app de android que leyese los valores de los de un arduino mediante bluetooth, y publicar todo el código, ya que la api de android con respecto al bluetooth ha cambiado un poco. Por lo tanto en los próximos ¿meses? es posible que lo publique. Lamento no hacerlo antes!

      Un saludo

Los comentarios están cerrados.