PASO 4 ---- (EN PROCESOS 1 de 2 Rovian@s)
Código 4. Bluetooth BLE-SPP ..., Conexión COM mediante la Api del Explorador Crome al PC.
Hola a tod@s,
Hoy os quiero hablar sobre el Bluetooth BLE o LE “Bluetooth Low Energy” que trae incorporado el Arduino Nano 33 BLE.
El Bluetooth LE o BLE, está optimizado para un uso de baja potencia a bajas velocidades de datos “Paquetes de 20 bytes de datos”, y fue diseñado para operar a partir de simples baterías de celdas de monedas de litio.
A diferencia del bluetooth estándar que básicamente está basada en una conexión serial asincrónica (SPP-UART), una radio Bluetooth LE actúa como un tablón de anuncios.
Si su Bluetooth LE es un tablón de anuncios (llamado dispositivo periférico en el lenguaje Bluetooth LE) publica datos para que todos los dispositivos Bluetooth LE de la comunidad las puedan leer.
Si su Bluetooth LE es un lector (llamado dispositivo central en términos Bluetooth LE) puede leer de cualquiera de los tablones de anuncios (dispositivos periféricos).
Las principales diferencias entre LE y BR/EDR son los números de canal (40 en lugar de 79) y los tipos de conexiones de radio.
Bluetooth LE permite ráfagas cortas de conexión de radio de largo alcance que prolongan la duración de la batería.
Bluetooth clásico (o Bluetooth BR/EDR) establece una conexión inalámbrica continua de corto alcance.
Cómo se logra la Baja Potencia?
La forma más fácil de evitar el consumo de energía de batería es apagar la radio tan a menudo como sea posible y durante el mayor tiempo posible.
El chip BLE está programado para una conexión rápida, es decir…, es capaz de enviar datos más rápidamente que el Bluetooth clásico, además, disponen de tiempos de espera bajos .
Los dispositivos de tecnología de baja energía están optimizados para conexiones a dispositivos de escaneo…, estos dispositivos de escaneo, pueden conectarse, enviar y reconocer datos en 3 ms.
En la tecnología Bluetooth clásica, una conexión de nivel de enlace puede tardar hasta 100 ms y una conexión L2CAP puede tardar mucho más.
La tecnología Bluetooth de baja energía, utiliza solo 3 canales publicitarios, la tecnología Bluetooth clásica utiliza de 16 a 32 canales…, la radiofrecuencia (RF) está encendida para 1,2 ms en lugar de 22,5 ms.
¿Cómo se Encuentran los Dispositivos?
Este proceso se denomina "Detección de dispositivos" y es responsabilidad de otra parte de la arquitectura Bluetooth LE llamada Perfil de acceso genérico (GAP).
Hay dispositivos que pueden estar buscando o escaneando otros dispositivos, recibiendo y procesando paquetes publicitarios y filtrándolos.., el período de escaneo es sintonizable entre 2,5 ms y 10,24 s.
Al mismo tiempo, otros dispositivos anuncian emitiendo pequeños paquetes de datos periódicamente.., estos paquetes, contienen información sobre el dispositivo de publicidad.
Debe tenerse en cuenta que el consumo de energía en el modo de publicidad BLE es mayor que en el modo de conexión.
Rendimiento de Datos BLE:
El límite superior teórico es de 1 Mbps, en la práctica, un escenario típico supone 5-10 Kb por segundo, pero incluso transmitiendo a estas velocidades de datos relativamente modestas, 10 KB/s drenará rápidamente cualquier batería de celda de moneda pequeña.
Esto significa que BLE no debe utilizarse para transferir datos multimedia, por ejemplo.
Rango de Funcionamiento de BLE:
Un rango de funcionamiento típico es de entre 2 y 5 metros, dando un esfuerzo consciente para reducir el alcance y ahorrar vida de la batería.
La mejor manera de utilizar dispositivos BLE es enviar mensajes cortos
Estructura de Comunicación BLE:
GAP, es el acrónimo para el Generic Access Profile, y se encarga de controlar las conexiones y los anuncios en BLE.
GAP es lo que permite que tu dispositivo sea público hacia el exterior y determina como dos dispositivos pueden (o no) interactuar entre ellos.
El GAP define varios roles para los dispositivos, pero lo único que debemos tener claro es que vamos a tener dispositivos centrales y los periféricos.
Los periféricos son dispositivos pequeños, de baja potencia, de bajos recursos, que pueden conectarse a dispositivos centrales mucho más potentes…, un ejemplo de periférico puede ser un glucómetro, un medidor de pulsaciones, un beacon, etc.
Un dispositivo central se corresponde normalmente con un teléfono móvil o una Tablet que tienen una capacidad de proceso mucho mayor.
Transmisión de Datos en GAP:
Hay dos maneras de transmitir información a través de GAP: El Advertising Data payload y el Scan Response payload.
Ambos payloads son idénticos y pueden contener hasta 31 bytes, pero solo el advertising data payload es obligatorio, ya que es el payload que se transmite continuamente desde el periférico, para permitir que los nodos y/o dispositivos centrales en su alcance sepan de su presencia.
El scan response payload es opcional y puede ser pedido desde un dispositivo central, de este modo los periféricos pueden transmitir información extra como el nombre del dispositivo o alguna característica especial definida por el fabricante.
Proceso de Advertising:
Un periférico emite su Advertising Data payload a intervalos regulares configurables, cada vez que el intervalo pasa, el periférico emite su Advertising Data payload.
Intervalos altos, permiten ahorrar batería, mientras que intervalos cortos, permiten ser más reactivos.
Si un dispositivo central necesita más datos y el periférico lo permite, puede solicitar adicionalmente el scan response payload, y este contestara con la información adicional.
El Modo Broadcast:
Si bien la mayoría de los periféricos se anuncian para que se pueda establecer una conexión y se puedan utilizar los servicios y las características del GATT (lo que permite intercambiar mucha más información y en ambos sentidos), hay situaciones en las que sólo se desea anunciar datos (advertising).
El principal caso de uso, es cuando se desea que un periférico transmita datos a más de un dispositivo a la vez.
Esto sólo es posible utilizando el Advertising Data payload ya que los datos enviados y recibidos en modo conectado sólo pueden ser vistos por los dos dispositivos conectados.
Incluyendo una pequeña cantidad de datos personalizados en los 31 bytes del advertising o scan payloads, podemos usar un periférico BLE para enviar datos unidireccionalmente a dispositivos centrales en el rango de alcance, esto es lo que se conoce como Broadcasting in BLE.
Servicios y Características:
Las transacciones GATT en BLE se basan en denominados Perfiles, Servicios y Características.
Los Perfiles:
Un perfil es una colección predefinida de servicios que ha sido especificada por el Bluetooth SIG o por el fabricante del periférico.
Los Servicios:
Los servicios se utilizan para dividir datos en entidades lógicas y contienen trozos específicos de datos llamados características.
Un servicio puede tener una o más características y cada servicio se distingue de otros servicios por medio de un ID numérico único denominado UUID, que puede ser de 16 bits (para servicios BLE adoptados oficialmente) o de 128 bits (para servicios personalizados ).
Se puede encontrar una lista completa de los servicios BLE adoptados oficialmente en la página del portal de desarrolladores de Bluetooth.
Como ejemplo, si observamos el Servicio de Frecuencia Cardíaca, podemos ver que este servicio oficialmente adoptado tiene un UUID de 16 bits de 0x180D, y contiene hasta 3 características, aunque sólo es obligatorio la primera.., “Medición de la frecuencia cardíaca”.., luego la ubicación del Sensor corporal y finalmente el punto de control de la frecuencia cardíaca.
Las Características:
El concepto de nivel más bajo en las transacciones GATT son las características, que encapsulan un único tipo de dato, aunque puede contener una matriz de datos relacionados, como valores X / Y / Z de un acelerómetro de 3 ejes, etc.
De forma similar a los Servicios, cada Característica se distingue a través de un UUID predefinido de 16 o 128 bits, y somos libres de usar las características estándar definidas por el Bluetooth SIG o definir sus propias características personalizadas que sólo su periférico y aplicaciones entienden.
Como ejemplo, la característica de medición de la frecuencia cardíaca es obligatoria para el servicio de frecuencia cardiaca y usa un UUID de 0x2A37.
Comienza con un único valor de 8 bits que describe el formato de si los datos son UINT8, UINT16, etc.
Las características son el elemento principal que vamos a usar para interaccionar con nuestro periférico BLE, por lo que es importante entender el concepto.
Pueden ser de solo lectura o de escritura.., de esta manera se pueden usar para realizar comunicaciones bidireccionales de una manera muy sencilla.
Rovian@s, llegados a este punto os tengo que dar no muy buenas noticias sobre la utilización del Bluetooth BLE en este proyecto de Guantes Hápticos.
Debido al sistema de comunicación que usa el Bluetooth BLE, no existe medios de comunicación para emparejar y/o conectar estos dispositivos al PC y usarlos como un Bluetooth estándar de otros Arduinos.
Hasta la fecha, se podía usar el Bluetooth de los arduinos para realizar una conexión Serial COM y leer los datos desde el puerto COM de comunicación…, pero con el Bluetooth BLE no es posible, a no ser que…
Como exclusiva os informo que estoy trabajando en un JavaScript haciendo uso de las API del Explorador Crome para crear el primer método de conexión entre el PC y puertos de comunicación COM.
Me preguntaba ¿Cómo es posible que no se pueda emparejar y/o conectar un Bluetooth BLE al PC y solo exista utilidades para Móviles y Tablet?.
Debido a las características del Bluetooth BLE este no funciona como un Bluetooth normal, además ni tan siquiera se programa y usa de una forma normal, todo son complicaciones y no hay una forma “fácil de realizar funciones” con este Bluetooth BLE.
Pero.., como os estoy citado y como exclusiva y parte de este proyecto y promesas…, voy a realizar una utilidad mediante la API del Explorador Crome en lenguaje de JavaScript, que permitirá la conexión de dispositivos Bluetooth LE al PC y enviar sus datos al Puerto de comunicación serial COM de Windows, para que aquellas utilidades o programas que estéis creando os funciones mediante conexión Bluetooth LE.
Actualmente, ya dispongo de la conexión estable al PC y captura de datos a un formulario de pruebas…, ahora debo de enviar los datos al puerto serial COM.
Os dejo un video del avance.
Bluetooth BLE SPP Windows en Progreso
Tras esto, os quiero informar que estaré unos días sin aportar más avances debido a que estaré algo ocupado y además de vacaciones…, aun no me llegaron los sensores y actuadores, por lo que tampoco puedo seguir avanzando como me gustaría el proyecto.
Hasta la fecha ya sabemos cómo conectar el arduino, parpadear en el códigos y llevar los datos del giroscópio a Visual Basic 6.0 y hacer funcionar la muñeca de nuestra mano 3D dentro del Unity3D mediante conexión entre VB6.0 y Unity3D. ¿No está mal NO?
Ahora quiero poner mi atención en realizar el código para hacer funcionar el Bluetooth BLE del Arduino Nano 33 en el PC y llevar los datos al Unity3D para hacer funcionar la mano 3D con los datos.
Un saludo a tod@s, CONTINUARÁ
Por tus Donaciones…, Muchas Gracias
Código 4. Bluetooth BLE-SPP
HMD VR-TEK WVR3 1440X1440*2 - Visita y Obtén mi Configuración para tu Visor VR en el Foro==> Steam - VR ................................................................................... Soluciones para el Wrappers VorpX y otros Hack Imprescindibles Rovianos en este Hilo ==> Wrappers VorpX ...................................................................................... Rovian@s os explico, como fábricar tus Guantes Hápticos con un Arduino® ABX00030 Nano 33 BLE desde este Hilo ==> Fábrica tus Guantes Hápticos