Bluetooth

Un poco de teoría Bluetooth

ONDAS

Una onda es una señal que se propaga por un medio. Por ejemplo el sonido, que es una onda mecánica que viaja usando el aire o cualquier otro material. Pero en el caso de las señales eléctricas pueden ser enviadas por el cable o a través del vacío (no necesitan un medio para transmitirse).

Dependen de 3 parámetros principalmente:

La relación entre ellas es muy fácil pues las ondas electromagnéticas viajan a la velocidad de la luz c y si velocidad es espacio/tiempo luego c = λ/T luego c= λ*f

Dentro del espectro electromagnético encontramos diferentes tipos de señales dependiendo de las características de su onda.

TRANSMISIÓN INALÁMBRICA: BLUETOOTH.   

¿Sabias que?
Su curioso nombre viene de un antiguo rey Noruego y Danés, y su símbolo, de las antiguas ruinas que representan ese mismo nombre. 

Hay 3 clases de bluetooth que nos indican la máxima potencia a la que emiten y por tanto la distancia máxima que podrán alcanzar:

También es muy importante la velocidad a la que pueden enviarse los datos con este protocolo:

Mbps : Mega Bits por segundo.       MBps: Mega Bytes por segundo.
kb = 1.024 b     M = 1.024 k     G = 1.024 M

¿Te atreves a calcularlo . ?

¿Cuántos ciclos por segundo tendrán las ondas que están en la Banda ISM? ¿Cuál es el periodo de esas ondas?

Solución 
a)  f = 2.4G
b) λ=c/f= 12.5cm o sea, las antenas tendrían que ser de esta longitud. Hay muchos trucos para reducirla, una de ellas es la forma de serpiente que puedes ver en el HC-06

¿Te atreves a calcularlo...?

¿A qué distancia y cuanto tiempo tardarían en enviarse los siguientes archivos por Bluetooth?

  1. Un vídeo de 7Mb usando versión 2 clase 2
  2. Una imagen de 2.5Mb usando versión 3 clase 1
  3. Un archivo de texto de 240KB usando versión 1.2 clase 1

Solución 
1) 7Mb / 3Mbs = 2.3 seg.
2) 2.5Mb / 24Mbs = 0.1 seg.
3) 240 kB 8b/B = 1.920 kb   1.920 kb  / 1.024 =   1.875 Mb     1.875Mb / 1Mbs  = 1.875 seg. 

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

Conexión del módulo Bluetooth

Módulo Bluetooth HC-06 SLAVE

El módulo Bluetoth HC-06 tiene 4 pines, funciona SLAVE o sea, esclavo.

Si quieres saber más de este módulo, consulta esta página de Arduino con código


Módulo Bluetooth HC-05 MASTER-SLAVE

Un módulo HC-05 tiene en cambio 6 pines y puede funcionar en dos modos MASTER o SLAVE

HC05-capado.png

El HC-05 puede funcionar como maestro y esclavo. La diferencia con el módulo HC-06 que sólo funciona como esclavo. El HC-05 es por lo tanto un módulo técnicamente superior. Físicamente el HC-05 tiene 6 pines mientras que el HC-06 sólo 4. Esto le permite al HC-05 trabajar con distintos modos de funcionamiento más avanzados, (ver https://fgcoca.github.io/BlueTooth-HC-05-y-HC-06/modulos/)

En nuestro caso

El módulo que se facilita en el kit está fabricado por la empresa KEYSTUDIO, tiene 4 pines por lo tanto es un ... HC-06.

Comparte este módulo las líneas de datos D0 y D1 utilizados en la comunicación serie COM !!! 😮😮😮 no podemos a la vez tener el HC06 y comunicarnos con el Arduino con el ordenador.

Existe un interruptor para desconectar el módulo bluetooth cuando conectamos el Arduino al ordenador por el puerto serie COM, pero a nuestro criterio crea confusión. Recomendamos pues NO TOCAR ESTE INTERRUPTOR, DEJARLO SIEMPRE EN ON es decir, el interruptor siempre hacia el borde como en la figura, y simplemente conectar el HC06 cuando se utilice, y desconectarlo cuando queremos subir un programa al Arduino

interruptorHC06.jpg

Resumiendo

Nuestro consejo es :

CUANDO ESTAMOS SUBIENDO UN PROGRAMA DEL ORDENADOR AL ARDUINO :

conexion1-hc06.jpg

CUANDO ESTAMOS USANDO EL BLUETOOTH 

conexion2-hc06.jpg

No se toca el interruptor, siempre en posición ON (pestaña al borde de la placa)

Si el HC-06 ESTÁ CONECTADO NO SE PUEDE COMUNICAR CON EL ORDENADOR

Esto no es nuevo en los cursos de Arduino, en el curso Arduino con código también hay que tener esa precaución

https://libros.catedu.es/books/programa-arduino-mediante-codigo/page/modulo-hc-06

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

APP -> TDR-STEAM - Programa en ArduinoBlocks

Este caso es sencillo pues el módulo Bluetooth trabaja como esclavo

Si recibe datos, que almacene en una variable tipo texto que le llamaremos codigo el código que recibe de nuestra APP hasta el salto de línea

programaArduinoblocksBluetooth1.jpg

La APP tiene que enviar A y salto de línea o R y salto de línea

ACUÉRDATE DE SUBIRLO A LA PLACA ARDUINO SIN EL MÓDULO HC06 CONECTADO

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

APP -> TDR-STEAM - La APP

La APP en el móvil

La comunicación con la placa en este caso es muy sencilla, pues estamos empleando el Bluetooth como esclavo, es decir, será como receptor de datos nuestra placa electrónica (slave) y el móvil (master) como emisor de datos. 

En nuestro caso usaremos caracteres (bytes)  que enviaremos desde un master, como un teléfono móvil. Hay muchas aplicaciones gratuitas para enviar datos. Podemos usar cualquier APP que emita un código por Bluetooth. hay muchos, nosotros hemos elegido este :

Arduino Bluetooth Control

Esta APP es muy completa y configurable, aquí para descargarla de Google Play.

El código de programa que tenemos que cargar en la placa se basa en escuchar de forma continua el puerto serie. Cuando llegue el dato, se ejecutará la acción que le indiquemos. ¡¡así de sencillo !!

Vincular móvil

Hay que vincular nuestro móvil y nuestra APP de Android con el Arduino, para ello sigue este sencillo tutorial:

Financiado por el Ministerio de Educación y Formación Profesional y por la Unión Europea - NextGenerationEU

logo.png

APP -> TDR-STEAM - Resultado

  1. Pulsamos en el símbolo de dos flechas circulares arriba a la derecha para vincular al HC06
  2. Sale una pantalla para elegir de todos los elementos Bluetooth vinculados cual elegir, elegimos el HC06
  3. El HC06 deja de parpadear
  4. A jugar !!

bluetooth.gif

Igual podemos hacer con la voz, decimos rojo o azul y se enciende con la voz los leds

También en el terminal podemos escribir R (intro) o A (intro) y se apagan o encienden los leds

Retos

APP <-> TDR-STEAM - Arduinoblocks

En este caso añadiremos más código al bucle, creamos unas variables tipo texto que sean temperatura, humedad y luz y en crearemos texto con los valores de los sensores correspondientes, una vez creado el texto y finalizado con salto de línea '/' enviamos el texto por bluetooth

Hacemos una espera de 2 segundos para no saturar a la APP en datos.

¿Un rollo hacerlo? buenoo.. aquí lo tienes http://www.arduinoblocks.com/web/project/796527

arduinoblocks_1663848936180.png

ACUERDATE
De quitar el HC-06 para subir este programa al ARDUINO TDR-STEAM

APP <-> TDR-STEAM - APP INVENTOR- DESIGNER

La comunicación con la placa en este caso no es tan sencilla como en el caso anterior, no nos vale las APPs que hay en Google Play que envían un código y en paz, ahora tenemos que tener una APP que si reciben un código que hagan algo. Esto ya es exclusivo por lo tanto hay que programar una APP que cumpla los requisitos. En nuestro caso lo hemos hecho en APP INVENTOR https://appinventor.mit.edu/

NO ES EL OBJETIVO DE ESTE CURSO FORMARTE EN APP INVENTOR
Pero si no conoces el programa, te recomendamos que vayas a estos contenidos que de una manera muy fácil aprenderás a crear programas con APP INVENTOR y exportarlos al móvil
https://libros.catedu.es/books/app-inventor

En la parte de DESIGNER 

designer-app-bluetooth.jpg

APP <-> TDR-STEAM - APP INVENTOR- Blocks

En la parte de Blocks

blocks-app-bluetooth.jpg

ATENCIÓN: A partir de Android 12 hay que dar permisos a la aplicación para que pueda visualizar los dispositivos bluetooth disponibles, para ver la explicación https://www.youtube.com/watch?v=MNLzS-MOXAg

Hay que añadir este código:

nuevocodigo-android12.png

Puedes descargarte la APP en este enlace pero tienes que permitir en el móvil instalar APPs desconocidas.

Otra forma es en este código QR utilizando la APP de Google Play MIT AI2 Companion  y poner el código sxbbnv

Aquí tienes los pasos de su realización

El programa lo tienes aquí https://gallery.appinventor.mit.edu/?galleryid=e4780fa4-3252-4d73-b846-b2a0935c6d01

Llevar la APP creada en APP INVENTOR al móvil

Tienes dos opciones

OPCIÓN EN VIVO AI COMPANION

Instalas la APP MIT AI2 COMPANION

APP-MIT.png

En APP INVENTOR 

conect-ai-companion.png

Y sale un código y un QR asociado al código

cod-ai-companion.png

Abrimos la APP MIT AI2 COMPANION y metemos el código anterior (o lo escaneamos con el QR)

ai-companion2.jpg

En APP INVENTOR procede a enviar la APP al móvil y a ejecutarlo

OPCIÓN CARGAR BUILD- ANDROID APP (.apk)

En esta opción, descargamos el fichero con extensión apk

build1.png

Procede a compilarlo

compiling.png

Y te da dos opciones para descargar el fichero

build2.png

Si optas por descargarlo, tienes que buscar la manera de llevarlo al móvil (enviándotelo por email a ti mismo, o whatsapp a ti mismo a veces no funciona pues lo bloquean por seguridad)

La opción de descargarlo por QR pregunta por abrir el link de descarga

build3.jpg

Te preguntará permisos para la descarga e instalación de apps de orígenes desconocidos, en mi caso he tenido que permitir los que sean por DuckDuckGo que es el navegador que tengo en el móvil y por donde se ha descargado el enlace anteiorbuild4.jpg

Una vez descargado :

build6.png

Si pulsamos, intenta instalarlo pero vuelve a salir un mensaje de bloqueo que tenemos que dar a More details - Install anyway

build7.png

build8.png

y por fin ya funciona

APP <-> TDR-STEAM- Resultado

Una vez creado la APP vamos en APP Inventor a Build para crear el APK. Si no deseas crear la APP en APP INVENTOR, en este enlace puedes descargar el APK pero ten en cuenta que para instalarlo tienes que permitir orígenes desconocidos, bajo tu responsabilidad

origenesdesconocidos.png

Si el TDR-STEAM tiene el programa cargado, simplemente abrimos la APP, conectamos con el HC-06 y a jugar !