8 Bluetooth (avanzado) 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 10 9 ) 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 la longitud de onda? 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 escribir  o enviar Nosotros hemos elegido uno sencillo que cumple las dos condiciones (hay muchas APPs) Serial Bluetooth Terminal APP Serial Bluetooth Terminal DESCARGA LA APP Esta APP es muy sencilla y la puedes descargar  aquí.  Tiene las siguientes ventajas : Enviar / Recibir mensajes Permitir conexiones tanto BLUETOOTH CLÁSICO por ejemplo HC06 de Arduino, Echidna, ESP32 ... BLUETOOTH LE  (Low emision)  por ejemplo para la MICRO:BIT EMPAREJAR DISPOSITIVOS Si no esta emparejado con el móvil NO TE PUEDES CONECTAR, para ello entramos en Devices : Microbit : Entramos en  Devices y en Bluetooth LE y nos conectamos a la Micro:bit HC06 para Arduino Echidna ESP32 .... igual pero en  Bluetooth clásico Aquí puedes ver dos capturas de dispositivos en Bluetooth clásico y Bluetooth BLE LOS QUE ESTAN EN VERDE SON LOS QUE TIENES EMPAREJADOS Y PUEDES CONECTARTE   ¿Y si no aparece o no esta emparejado? Entras en el diálogo de Android de Bluetooth y lo emparejas CONECTARTE Una vez seleccionado el dispositivo emparejado ya puedes conectarte : Menú Entras en Terminal Enchufe Sale conectado, ya estas preparado para enviar y recibir El HC06 ADVERTENCIA ATENCIÓN : COMO PUEDES VER LOS PINES DE TRANSMISIÓN Y DE RECEPCIÓN SON D0 Y D1 QUE COINCIDEN CON LA TRANSMISIÓN Y RECEPCIÓN DEL PUERTO SERIE UCB POR LO TANTO NO SE PUEDE UTILIZAR A LA VEZ EL HC06 Y LOS DATOS POR EL USB EL HC06 BLOQUEA LA COMUNICACIÓN POR CABLE ESTA ES LA RAZÓN POR LA CUAL NO SE PUEDE UTILIZAR EL PROGRAMA ECHIDNA ML PARA PROGRAMAR PUES TRABAJA EN VIVO, puedes utilizar cualquier programa que trabaje en carga: mBlock, ArduinoIDE... Fuente de las imágenes: www.echidna.es COMO SE CONECTA Echidna tiene un conector preparado para conectar un módulo de Bluetooth Nosotros utilizaremos un JY-MCU o  HC-06 muy común y barato : Para conectar el HC-06 lo hacemos hacia abajo de modo que coincida los pines: Pines del HC-06 Pines del Echidna Pines del Arduino Vcc 5V 5V GND GND GND RX TX D1 TX RX D0 Een la black es igual hacia abajo pero ponlo en medio del zócalo para que coincida bien, pues en el Echidna Black el zócalo hembra tiene 6 pines y el HC06 tiene 4: Imagen www.echidna.es l programa en mBlock Como ya hemos visto NO podemos usar EdhidnaML pues trabaja en vivo y el HC06 bloquea el cable USB, tenemos que usar algún programa compatible con Echidna (=Arduino) y que trabaje en carga . Hemos elegido mBlock https://mblock.cc/ PASO 1 INSTALAMOS EL DISPOSITIVO ARDUINO IDE Vamos a Dispositivos - Añadir - Arduino UNO ( no vale el Echidna ni el Arduino nano ) PASO 2 INSTALAMOS LA EXTENSIÓN BLUETOOTH SERIAL Hay muchas extensiones que trabajan el Bluetooth con Arduino (hay mucha basura) hemos elegido este pues es una extensión sencilla, en castellano y que envía como recibe por el Bluetooth PASO 3 PROGRAMA Con la extensión instalada y el dispositivo ya podemos empezar a programar ENUNCIADO Vamos a realizar un programa que envíe y reciba datos desde la APP del móvil al Echidna Si envío una R se enciende el Rojo Si envío una A se enciende el Amarillo Si envío una L que me diga el nivel de Luz que hay, 10 lecturas para ver cómo cambia SOLUCIÓN El programa lo puedes descargar aquí https://planet.mblock.cc/project/6844489 Utilizamos los pines del Arduino (busca instrucciones azules Pin) el led rojo está en D13 y en naranja en el 12 de momento empezamos poniéndolos apagados PONEMOS LA VELOCIDAD DE BLUETOOTH A 9600  HAY QUE BAJARLO SINO NO FUNCIONA Y ponemos Rx que es D0 y Tx es D1 como hemos visto anteriormente El programa empieza con el clásico bucle y pregunta si se han recibido datos Si se han recibido datos pues entonces lo almacena en una variable interna llamada "Letra" Si Letra = R entonces se enciende el led Rojo Si Letra = A entonces se enciende el led Amarillo Si Letra = L entonces es que preguntamos qué nivel hay de Luz Entramos en un bucle de 10 veces tal y como dice el enunciado Escribe en la APP el valor de la luz medida en el sensor LDR que está en el A5 OJO HAY QUE MAPEARLO (ya hemos visto qué significa esto) y la instrucción de mapear está en violeta en Datos CUÁNTO HAY QUE MAPEARLO pues el LDR según www.echidna.es va desde 1 a 900 y Bluetooth  solo lee un carácter en ASCII  luego convertimos el valor de A5 (1-900) a un valor ASCII que si vemos la tabla, lo hacemos para los valores de los caracteres 48 (0) a 57 (9) y así nos da una lectura de la cantidad de luz entre 0 y 9 VALOR ASCII CARACTER 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 56 8 57 9 Resultado Otras APPs Hay otras apps como el Arduino Bluetooth Control  que permite poner flechas, control de voz... pero no permite envío de Echidna a APP Incluso se podría hacer un coche teledirigido, el programa lo tienes en el repositorio:  https://github.com/JavierQuintana/Echidna y el vídeo en el muro