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. 

Bluetooth en el ESP32

A diferencia del Arduino que necesita un módulo exterior el HC06, el ESP32 tiene el Bluetooth integrado

Pero tenemos que tener en cuenta una cosa importante a la hora de conectarlo en la placa TDR-STEAM

Comparte la comunicación del Bluetooth ESP32 con las líneas de datos D0 y D1 utilizados en la comunicación serie COM !!! 😮😮😮 no podemos comunicarnos con el ESP32 y que funcione el Bluetooth a la vez !!!

Existe un interruptor para conectar y desconectar las líneas D0 y D1 a la comunicación serie COM :

interruptorHC06.jpg

LUEGO :

Para inicializar el Bluetooth, ARDUINOBLOKS tiene instrucciones específicas, lo primero es definir un nombre a la señal Bluetooth para que los otros dispositivos (tu móvil) lo encuentre, por ejemplo en la figura ESP32 STEAMakers

bluetoothESP32.jpg

El  bloque  Fijar  timeout  significa que fijamos el tiempo  en  la transmisión de datos por bluetooth. Por defecto está fijado en 1000 ms pero podemos reducirlo a 100 ms como en la figura para que funcione más fluido.

Actividad 15 APP->ESP32

Enunciado

Si recibe un código, que encienda un led. Por ejemplo:

Este enunciado parecido a este programa en Arduino con Bluetooth 

Programa

El programa es sencillo: http://www.arduinoblocks.com/web/project/1013787

arduinoblocks_1673960449135.png

Recuerda subir el programa con el interruptor hacia el borde.
Ver https://libros.catedu.es/books/esp32-en-el-aula/page/bluetooth-en-el-esp32

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:

Recuerda que para que funcione el Bluetooth tienes que poner el interruptor alejado del borde.
Ver https://libros.catedu.es/books/esp32-en-el-aula/page/bluetooth-en-el-esp32

El resultado

Reto

¿Te atreves a hacerlo con voz? Por ejemplo si dices AZUL que encienda el led AZUL si dices ROJO que encienda el ROJO y si dices APAGAR que los apague


Actividad 16 APP<->ESP32

Enunciado

Ahora vamos a realizar la comunicación bidireccional. El propósito es que si recibe un código, que encienda y apague los leds, pero además vamos añadir comunicación hacia la APP del móvil, que nos envíe información de los sensores. Un ejemplo de enunciado sería:

Además lo vamos a complicar un poco más: que visualice los valores de temperatura y luz en el display LCD para que se vea que corresponden a los que muestra en la APP (no se muestra el de la humedad pues no cabe en el LCD).

Este enunciado parecido al programa en Arduino https://libros.catedu.es/books/arduinoblocks-en-el-aula/page/app-tdr-steam-arduinoblocks

Programa

El programa ya es más complejo: http://www.arduinoblocks.com/web/project/1050441

arduinoblocks_1674036272627.png

Recuerda subir el programa con el interruptor hacia el borde.
Ver https://libros.catedu.es/books/esp32-en-el-aula/page/bluetooth-en-el-esp32

La APP en el móvil

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

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

La APP a tu 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

El resultado

Recuerda que para que funcione el Bluetooth tienes que poner el interruptor alejado del borde.
Ver https://libros.catedu.es/books/esp32-en-el-aula/page/bluetooth-en-el-esp32