Bluetooth
- BLUETOOTH un poco de teoría
- Sólo con la microbit: BLUETOOTH programa en Makecode
- BLUETOOTH programa Serial Bluetooth Terminal
- Avanzado: BLUETOOTH con App Inventor. Extensiones
- Avanzado: BLUETOOTH App Inventor programa. Sólo con la micro:bit
- Ahora con la granja
BLUETOOTH un poco de teoría
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:
- Amplitud: altura máxima de la onda. Hablando de sonido representaría el volumen. Si nos referimos a una onda eléctrica estaríamos representando normalmente el voltaje.
- Longitud de onda λ: distancia entre el primer y último punto de un ciclo de la onda (que normalmente se repite en el tiempo).
- Frecuencia f : Número de veces que la onda repite su ciclo en 1 segundo (se mide en hertzios).
- Periodo T es simplemente es la inversa de la frecuencia. T=1/f
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. 
- Hoy en día, este grupo está formado por miles de empresas y se utiliza no sólo para teléfonos sino para cientos de dispositivos.
- Bluetooth es una red inalámbrica de corto alcance pensada para conectar pares de dispositivos y crear una pequeña red punto a punto, (sólo 2 dispositivos).
- Utiliza una parte del espectro electromagnético llamado “Banda ISM”, reservado para fines no comerciales de la industria, área científica y medicina. Dentro de esta banda también se encuentran todas las redes WIFI que usamos a diario. En concreto funcionan a 2,4GHz. (Un G son 109) luego entre FM y Microondas.
¿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?
- Un vídeo de 7Mb usando versión 2 clase 2
- Una imagen de 2.5Mb usando versión 3 clase 1
- 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 clásico o Bluetooth Low Energy = BLE?
Es un protocolo similar al clásico Bluetooth pero diseñado a consumir menos potencia manteniendo funcionalidad. Su popularidad ha crecido en multitud de dispositivos
En robótica, el clásico device que utiliza BLE es la Micro:bit. Aunque la Micro:bit no tiene Wifi integrada, posee una radiofrecuencia que podemos configurar para Bluetooth (hay que elegir, o utilizar sus comandos de Radio o utilizar comandos de Bluetooth)
Por eso a la hora de elegir la APP tienes que tener en cuenta:
- Si acepta Bluetooth clásico o BLE
- Que la APP acepte leer datos desde el robot como enviar
Nosotros hemos elegido uno sencillo que cumple las dos condiciones (hay muchas APPs) Serial Bluetooth Terminal
Sólo con la microbit: BLUETOOTH programa en Makecode
Realizamos un programa que :
- En inicio
- se active el servicio UART para el envío y recepción de mensajes,
- muestra un mensaje del nombre de la micro:bit, ver más abajo
- Al conectar Bluetooth que muestre un check
- Al desconectar Bluetooth que muestre X
- Al recibir datos, hasta # (puede ser otro carácter) que muestre la frase recibida
- Al presionar el botón A
- Que muestre un mensaje
- Que muestre la temperatura
¿Para qué mostrar el nombre de la micro:bit? Para saber a qué micro:bit conectarte. En una clase con muchas micro:bit es importante este dato. El nombre del equipo está en
https://makecode.microbit.org/S60585-58735-21378-05922
BLUETOOTH programa Serial Bluetooth Terminal
Entramos con el móvil a Google Play e instalamos esta aplicación https://play.google.com/store/apps/details?id=de.kai_morich.serial_bluetooth_terminal
Tiene la ventaja de
- Enviar mensajes
- Recibir mensajes
- Permitir conexiones BLUETOOTH LE (Low emision) que es lo que utiliza MICRO:BIT
Entramos en Devices y en Bluetooth LE y nos conectamos a la Micro:bit
Una vez conectado, podemos:
- enviar un mensaje, que como hemos definido anteriomente en Makecode tiene que ir entre #
- recibir un mensaje, se visuaizará lo que nos envíe la micro:bit que en Makecode lo hemos programado al apretar el botón A
Avanzado: BLUETOOTH con App Inventor. Extensiones
Descargas e instalación
Necesitamos estas extensiones para poder crear una APP que pueda enviar y recibir con nuestra micro:bit
Página de descargas https://iot.appinventor.mit.edu/#/
Una vez descargadas, vamos al APP INVENTOR https://ai2.appinventor.mit.edu y las instalamos en extensiones :
Una vez instaladas, se visualizan como extensiones abajo del menú. Las dos últimas son las que utilizaremos:
La extensión Bluetooth tiene diversas funciones que tienes su descripción aquí (English). Para poder instalarla, vamos al APP INVENTOR https://ai2.appinventor.mit.edu
Avanzado: BLUETOOTH App Inventor programa. Sólo con la micro:bit
En DESIGNER
incorporamos:
- HorizontalArrangment para que los botones queden alineados horizontalmente
- Botones
- Scan
- Stop
- Conectar
- Desconectar
- Label que dirá el estado de la conexión. Lo llamaremos LabelEstado
- ListView que lo llamaremos ListBLE donde mostrará los diferentes dispositivos Bluetooth LE que detecta
- TextBox para poner el texto que queramos a enviar a micro:bit
- Un botón Enviar el texto anterior
- Un Label que lo llamaremos LabelTextoRecibido que mostrará el mensaje desde micro:bit
- Añadimos los elementos de las extensiones que hemos instalado anteriormente
- Microbit_UART_Simple
- BluetoothLE
En Blocks
Cuando escaneemos, que el elemento empiece el escaneado y la lista se vuelva visible, además de que LabelEstado diga que esta escaneando
Si ha encontrado un dispositivo, que lo vaya añadiendo a la lista ListBLE
Cuando le digamos que pare, simplemente se lo mandamos al dispositivo y LabelEstado lo informa
Cuando le demos a conectar, pues conecta con el seleccionado en ListBLE y LabelEstado informa
Si conecta, pues LabelEstado informa y ListBLE no es necesaria por lo tanto se oculta, pues entorpece la visión
Si queremos desconectar, pues le decimos al elemento BluetoothLE que desconecte
Si se ha desconectado (voluntariamente al dar al botón anterior, o involuntariamente pues el dispositivo se ha desconectado, o esta muy lejos... etc) que informe
Si apretamos el botón enviar, le enviamos el texto que esta en TextBox entre "#" pues así lo hemos definido en el programa Makecode
Si se ha recibido un mensaje, pues que lo visualice, pero primero comprueba que el mensaje no este vacío
NOTA el mensaje "message" lo arrastras desde la instrucción "when.." tal y como señala la línea roja
La APP a tu móvil
Tienes dos opciones
-
- EN VIVO CONNECT - AI COMPANION esta opción es la más rápida, y realmente lo simula a través de la APP INVENTOR.
- Tienes que tener instalada la APP MIT AI2 COMPANION
- Se le pasa el código de tu APP a la APP
- OTRAS OPCIONES
- EN VIVO CONNECT - AI COMPANION esta opción es la más rápida, y realmente lo simula a través de la APP INVENTOR.
OPCIÓN EN VIVO AI COMPANION
Instalas la APP MIT AI2 COMPANION
En APP INVENTOR
Y sale un código y un QR asociado al código
Abrimos la APP MIT AI2 COMPANION y metemos el código anterior (o lo escaneamos con el QR)
En APP INVENTOR verás que sale una barra de progreso enviando tu APP a tu móvil. Cuando termina automáticamente lo ejecuta.
A jugar...
Ahora con la granja
Una vez visto cómo podemos controlar la micro:bit usando Bluetooth, vamos a hacer lo mismo con la granja
- Empezamos instalando la Extensión Bluetooth que hemos visto en las páginas anteriores
- También pondremos la Extensión Iot-environment kit de Elecfreak para poder usar la OLED, DHT11 etc.. de la granja tal y como lo hemos trabajado en el capítulo Programas básicos con Smart Agriculture Kit
- En el bucle Al inicial, inicializamos la OLED, y también inicializamos el Bluetooth pero aquí el nombre de dispositivo que lo visualice por la OLED que es más cómodo, y así sabemos a qué microbit tenemos que conectarnos si estamos en una clase con muchos:
- Añadimos el bucle "Al conectar Bluetooth" y "Al desconectar Bluetooth" que también lo hemos visto en las páginas anteriores, pero esta vez le decimos que los mensajes lo visualice por la OLED
- Vamos a jugar ahora que si detecta agua en el sensor de nivel de agua, que mande un mensaje de inundación :
- Vamos a jugar más y si aprieto el botón A de la micro:bit que salga un mensaje y además que nos diga la temperatura y la humedad de la granja:
- No podemos abandonar el reto sin poner comunicación en el otro sentido, es decir de la APP a la granja: Vamos a hacer que si se envía desde la APP #abre# pues que el servo se ponga a 0º y se envía desde la APP #cierra# pues que el servo se mueva a 180º. El servo podría estar unido a una puerta, ventana, a un silo de alimentación....
El proyecto https://makecode.microbit.org/S87280-53966-04815-61300
Y el resultado :