En este proyecto, se aprenderá a utilizar el Bluetooth HC-06 por medio de Arduino, se controlarán varios actuadores desde una aplicación creada para Android, usando MIT App Inventor.
Las especificaciones detalladas de este módulo se encuentran en el siguiente enlace: https://www.olimex.com/Products/Components/RF/BLUETOOTH-SERIAL-HC-06/resources/hc06.pdf
Los módulos Bluetooth pueden configurarse como Maestro o Esclavo. Esto quiere decir que un módulo configurado como Maestro es el que inicia el emparejamiento o conexión, mientras que un módulo configurado como Esclavo espera a que otros se conecten a él. Por ejemplo, cuando conectamos un teclado Bluetooth a nuestro PC, este último solicitará un código de emparejamiento, entonces el PC hace las veces de Maestro y el teclado hace las veces de Esclavo. El módulo HC-06 es de tipo Esclavo y esto no se puede cambiar.
En cuanto a las conexiones con Arduino, hay que tener en cuenta los pines al respaldo del módulo, tenemos:
Cuando realizamos la anterior conexión, el módulo se encenderá y un LED empezará a parpadear. Esto significa que el módulo no está emparejado. El LED dejará de parpadear cuando se establezca una conexión entre el HC-06 y otro dispositivo.
En cuanto a la programación, no es necesario utilizar ninguna librería. Sólo basa con poner en el setup() la inicialización del puerto serial a una determinada velocidad de baudios:
En este tutorial se realizan varios ejemplos para demostrar las posibilidades de controlar a distancia diversos dispositivos en nuestros proyectos con Arduino. Todo se hará a través de aplicaciones desarrolladas para Android utilizando la plataforma MIT App Inventor.
Componentes utilizados:
A la hora de conectar el HC-06 con nuestro teléfono Android, pedirá una contraseña para establecer la conexión. Por defecto es: 1234
El primer ejemplo consiste en controlar dos LEDs, los cuales se pueden encender y apagar. A través del Bluetooth llegan datos de tipo char por parte del móvil. El Arduino decide qué acción ejecutar de acuerdo al dato que recibe, por ejemplo, si recibe la letra 'A' entonces enciende un LED y si recibe la letra 'B' lo apaga.
El esquemático para este ejemplo es el siguiente:
El código en Arduino para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZZFRrb0xabWlQc28
El archivo .apk de la aplicación para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZV3pSYzk3UkhwZEk
El segundo ejemplo consiste en el uso de PWM, para variar el ángulo de un servomotor y el brillo de un LED. En este caso en particular, utilizamos deslizadores para enviar datos variables los cuales modificarán el ángulo del servo y brillo del LED.
El Arduino está recibiendo a través del Bluetooth dos datos: uno que le indica si se va a controlar el servo o LED y otro con el ángulo o nivel de brillo, según sea el caso. Cuando el Arduino recibe el dato que le ordena controlar el servo o LED, pasa a leer nuevamente el puerto serie para recibir los datos del ángulo o nivel de brillo, los cuales llegan como tipo char y son convertidos en datos tipo int, que son los que pueden mandar via PWM.
En este post se explica con detalle el funcionamiento y uso de un servomotor con Arduino
En este post se explica con detalle cómo modificar el brillo de un LED con señales PWM
El esquemático para este ejemplo es el siguiente:
El código en Arduino para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZSjNwZ2E1LUdxcmc
El archivo .apk de la aplicación para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZWmdQN1FSMUR0Qmc
El tercer ejemplo consiste en enviar texto para que pueda aparecer en una pantalla LCD de 16x2 conectada al Arduino.
En este post se explica con detalle el funcionamiento y uso de esta pantalla.
El Arduino está recibiendo a través del Bluetooth dos datos: uno que le indica que se va a controlar la pantalla LCD y otro con el mensaje que se desea mostrar en ella. Cuando el Arduino recibe el dato que le ordena controlar la pantalla, pasa a leer nuevamente el puerto serie para recibir los datos correspondientes al mensaje, los cuales llegan como tipo char y son convertidos en una cadena tipo String, para finalmente mostrarlos en la pantalla.
El esquemático para este ejemplo es el siguiente:
El código en Arduino para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZRjNmanN2d3Qwb2M
El archivo .apk de la aplicación para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZUFVHTi1kVzhYYU0
El cuarto y último ejemplo consiste en la recepción de datos por parte del Arduino. Se van a recibir datos de un sensor de temperatura y humedad DTH22 (se puede usar también un DHT11) y un sensor de luz (fotocelda) para mostrarlos en la pantalla del móvil. A través del Bluetooth, el Arduino envía los datos leídos de: temperatura, humedad y luz. Posteriormente la aplicación los recibe y los muestra en la pantalla del móvil.
En este post se explica con detalle el funcionamiento y uso de los sensores DHT22 y DHT11
En este post se explica con detalle el funcionamiento y uso de la fotocelda con Arduino
El esquemático para este ejemplo es el siguiente:
El código en Arduino para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZbFFYcl9vaFdFWDQ
El archivo .apk de la aplicación para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZZW13NGhVOWcxWms
Las especificaciones detalladas de este módulo se encuentran en el siguiente enlace: https://www.olimex.com/Products/Components/RF/BLUETOOTH-SERIAL-HC-06/resources/hc06.pdf
En cuanto a las conexiones con Arduino, hay que tener en cuenta los pines al respaldo del módulo, tenemos:
- VCC: Que en algunos módulos se llama simplemente 5V. Es el pin de alimentación y va conectado al pin 5V o 3.3V del Arduino
- GND: Es el ground o negativo del módulo. Va al GND del Arduino
- TX: Este es el pin de transmisión de datos. A través de este pin, el módulo transmite hacia el Arduino los datos que le llegan desde un dispositivo conectado, como un móvil. Se conecta al pin RX del Arduino
- RX: Este es el pin de recepción de datos. A través de este pin, el módulo recibe datos desde el Arduino para enviarlos hacia un dispositivo conectado, como un móvil. Se conecta al pin TX del Arduino
En cuanto a la programación, no es necesario utilizar ninguna librería. Sólo basa con poner en el setup() la inicialización del puerto serial a una determinada velocidad de baudios:
- Serial.begin(9600);
Se suele utilizar una velocidad de 9600 baudios porque esa es la velocidad a la que se comunica el HC-06 por defecto. En cuanto al setup() declaramos los pines como entradas o salidas con la función pinMode(), dependiendo de lo que tengamos conectado al Arduino (por ejemplo, un LED, un pulsador, un servo...).
En este tutorial se realizan varios ejemplos para demostrar las posibilidades de controlar a distancia diversos dispositivos en nuestros proyectos con Arduino. Todo se hará a través de aplicaciones desarrolladas para Android utilizando la plataforma MIT App Inventor.
Componentes utilizados:
- Módulo Bluetooth HC-06
- Teléfono con Android
- Sensor de temperatura y humedad DHT22 o DHT11
- Pantalla LCD de 16x2 (1602A)
- Fotocelda
- LEDs
- Servomotor TowerPro SG90
- Resistencias de 220 ohms
- Resistencias de 10K ohms
- Protoboard o breadboard
- Cables
- Tarjeta Arduino
A la hora de conectar el HC-06 con nuestro teléfono Android, pedirá una contraseña para establecer la conexión. Por defecto es: 1234
El primer ejemplo consiste en controlar dos LEDs, los cuales se pueden encender y apagar. A través del Bluetooth llegan datos de tipo char por parte del móvil. El Arduino decide qué acción ejecutar de acuerdo al dato que recibe, por ejemplo, si recibe la letra 'A' entonces enciende un LED y si recibe la letra 'B' lo apaga.
El archivo .apk de la aplicación para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZV3pSYzk3UkhwZEk
El segundo ejemplo consiste en el uso de PWM, para variar el ángulo de un servomotor y el brillo de un LED. En este caso en particular, utilizamos deslizadores para enviar datos variables los cuales modificarán el ángulo del servo y brillo del LED.
El Arduino está recibiendo a través del Bluetooth dos datos: uno que le indica si se va a controlar el servo o LED y otro con el ángulo o nivel de brillo, según sea el caso. Cuando el Arduino recibe el dato que le ordena controlar el servo o LED, pasa a leer nuevamente el puerto serie para recibir los datos del ángulo o nivel de brillo, los cuales llegan como tipo char y son convertidos en datos tipo int, que son los que pueden mandar via PWM.
En este post se explica con detalle el funcionamiento y uso de un servomotor con Arduino
En este post se explica con detalle cómo modificar el brillo de un LED con señales PWM
El archivo .apk de la aplicación para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZWmdQN1FSMUR0Qmc
El tercer ejemplo consiste en enviar texto para que pueda aparecer en una pantalla LCD de 16x2 conectada al Arduino.
En este post se explica con detalle el funcionamiento y uso de esta pantalla.
El Arduino está recibiendo a través del Bluetooth dos datos: uno que le indica que se va a controlar la pantalla LCD y otro con el mensaje que se desea mostrar en ella. Cuando el Arduino recibe el dato que le ordena controlar la pantalla, pasa a leer nuevamente el puerto serie para recibir los datos correspondientes al mensaje, los cuales llegan como tipo char y son convertidos en una cadena tipo String, para finalmente mostrarlos en la pantalla.
El archivo .apk de la aplicación para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZUFVHTi1kVzhYYU0
El cuarto y último ejemplo consiste en la recepción de datos por parte del Arduino. Se van a recibir datos de un sensor de temperatura y humedad DTH22 (se puede usar también un DHT11) y un sensor de luz (fotocelda) para mostrarlos en la pantalla del móvil. A través del Bluetooth, el Arduino envía los datos leídos de: temperatura, humedad y luz. Posteriormente la aplicación los recibe y los muestra en la pantalla del móvil.
En este post se explica con detalle el funcionamiento y uso de los sensores DHT22 y DHT11
En este post se explica con detalle el funcionamiento y uso de la fotocelda con Arduino
El archivo .apk de la aplicación para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZZW13NGhVOWcxWms
hello, i have error on the coding on arduino "Serial.print(“|”);". Can u help me?
ResponderBorrarHi, remember to write on the "setup"
BorrarSerial.begin(9600);
muy bueno, me gustaría revisar el código del apk para entender bien como funciona... saludos.
ResponderBorrarsaludos, podrias pasarme los archivos .aia, para entender el funcionamiento de la apk
ResponderBorrarEste comentario ha sido eliminado por el autor.
ResponderBorrarExcelente post, me ha sido de mucha ayuda, 10 estrellas xD
ResponderBorrarBuenas, tengo un problema. Estoy haciendo un coche con un Nano Arduino controlado por Bluetooh pero no consigo configurar el módulo HC06. No sé si es el puerto serie (COM3) o por qué. Me podría echar una mano? Gracias!
ResponderBorrarEste comentario ha sido eliminado por el autor.
ResponderBorrar#include amigo la solcuioon me sale error de que no existe aiuda alguien
ResponderBorrarPodrías pasarme el comando .aia a a este mismo correo?
ResponderBorrarCan you share the blocks of programming.
ResponderBorrarThanks bro!
Gracias! sirve a los que recién empiezan con arduino!
ResponderBorrarEste comentario ha sido eliminado por el autor.
ResponderBorrarExcelente proyecto. Podrias mandarme la programación de los bloques en el app inventor de como mandar los datos para el brillo del led por favor. Gracias
ResponderBorrarlos links para descargar los proyectos ya no existen
ResponderBorrarpor que me sale error516 : unable to write: broken pipe
ResponderBorrarhola que tal me podrían dar el nombre de la app ya que el link no funciona. gracias
ResponderBorrarhola ayúdenme por favor Select list item: Attempt t me aparace un cuadro de error. o get item number 2 of a list of length 1: (1 %)
ResponderBorrarNote: You will not see another error reported for 5 seconds.
ayuda porfa como aria solo para prender 2 led por 2 segundos y 1 led q este todo el tiempo prendido ayuda documento aia para arduino y programa en app inventor te agradescso mucha gracias tu ayuda
ResponderBorrarEl archivo .apk de la aplicación para este ejemplo se puede descargar desde aquí: https://drive.google.com/open?id=0Bxr9tDhyoU1ZWmdQN1FSMUR0Qmc
ResponderBorrarAl parecer no me deja descargar la app no se por que sucede esto, alguien podria ayudarme por favor.
Hola, es posible aceder a las app .apk. Parecen caídas del drive, o no están. Muchas gracias de antemano!
ResponderBorrarEste comentario ha sido eliminado por el autor.
ResponderBorrarHola, muy útil el post, gracias
ResponderBorrar¿Podrías subir de nuevo el .apk parece que está caído?
Gracias
como es el código en android studio
ResponderBorrarMuchas Gracias. Buen post, pero los códigos subidos no están en el link de descarga.
ResponderBorrarTiene un codigo para medir el nivel de alchol con arduino y android?
ResponderBorrarnombre de la app para descargar xfa
ResponderBorrarhola, disculpa no me deja descargar la aplicacion apk me sale el error 404. Se ha producido un error.
ResponderBorrarNo se ha encontrado la URL solicitada en este servidor.
https://www.youtube.com/watch?v=OO7vKKuJ9a0
ResponderBorrarAqui pueden encontrar como elaborar las aplicaciones apra los diferentes ejercicios.
Muy bueno el ejemplo. Me gustaría saber de como serie el código con microcontrolador en C de ccs compiler. Me gustaría que hiciera un ejemplo de eso sin modificar el app. Solo con microcontrolador.
ResponderBorrarfatal error: DHT.h: No such file or directory.
ResponderBorrarHelp me
Error al descargar
ResponderBorrar404. Se ha producido un error.
No se ha encontrado la URL solicitada en este servidor. Eso es todo lo que sabemos
JAJAAJAAJA
Borrarexcelentes ejemplos mil gracias
ResponderBorrarLinks caídos!
ResponderBorrar:(
Y LOS CODIGOS ? QUE ASCO
ResponderBorrarLa ultima app no funciona
ResponderBorrarLa última no me funciona :(
ResponderBorrarEn el último proyecto, los mensajes enviados desde Bluetooth al dispositivo nan ° C | nan% | 92 se ven así, y por mucho que busqué el problema, no encontré nada.
ResponderBorrarA mi también me da el mismo error.
BorrarLograron solucionar el error? Si es así me podrían ayudar a solucionarlo por favor?
BorrarAmigo me puedes regalar el código de app donde realizaste los bloques gracias
ResponderBorrarHola, creo que el enlace para descargar la app está averiado, puedes checar eso porfa
ResponderBorrar