BLE (Bluetooth Low Energy | Bluetooth de baja energía) es una tecnología inalámbrica diseñada en 2011 con el fin de utilizarse como medio de comunicación de corto alcance. En la actualidad existen múltiples tipos de dispositivos que utilizan esta tecnología como principal medio de envío y recepción de datos. Su frecuencia de funcionamiento se sitúa en la banda de 2.4 [GHz] al igual que las redes WiFi y la versión de Bluetooth Clásica.
Dentro del contexto IoT, la extracción, transformación y propagación de datos generados demandan requisitos específicos y cada vez más exigentes, por lo cual saber diferenciar entre distintos protocolos y tecnologías de comunicación es de suma importancia en un sistema con recursos limitados.
¿Qué cualidades posee BLE como tecnología inalámbrica útil en el contexto IoT?
Comprender la importancia de BLE como tecnología IoT a través de procedimientos empíricos pre-diseñados.
Introducir los conceptos básicos de IoT utilizando la placa de desarrollo Arduino nano 33 BLE Sense como sensor de bajo consumo.
Programar, compilar y configurar placas de desarrollo vía Arduino IDE.
Interactuar con sensores inalámbricos de temperatura, humedad, gestos, color, proximidad y presión atmosférica.
Utilizar Sniffers BLE en Smartphones.
Fuente: https://store-usa.arduino.cc/products/arduino-nano-33-ble-sense-with-headers
Fuente: https://www.arduino.cc/reference/en/libraries/arduinoble/ [Modificada]
1. Configurar placa de desarrollo en Arduino IDE
- Abrir software Arduino IDE
- Conectar la placa Arduino nano 33 BLE Sense al ordenador
- Dentro del software ir a “Herramientas/Placa/Gestor de Tarjetas”
- En la nueva ventana emergente buscar “nano 33 ble sense”*
- Instalar la última versión de “Arduino Mbed OS Nano Boards” (Sólo si no esta previamente instalada)
- Cerrar la ventana y comprobar que en la ruta [Herramientas/Placa/Arduino Mbed OS Nano Boards] se encuentre seleccionada la placa “Arduino Nano 33 BLE”
- Si sigue la ruta “Herramientas/Obtener información de la placa” debe ver una ventana emergente parecida a la imágen inferior
2. Primeros pasos: LED BLE
LED es un script de prueba en Arduino IDE diseñado como ejemplo inicial BLE (“Hello World!”). Su principal función es poder apagar/encender un LED incorporado en la placa de desarrollo y poder controlar su funcionamiento remotamente.
- Para crear un dispositivo periférico (Peripheral Device) utilizando la placa de desarrollo nano 33 BLE sense instale la librería “ArduinoBLE” en la ruta “Herramientas/Administrar Bibliotecas”
- En la ruta “Archivo/Ejemplos/ArduinoBLE/Peripheral” Abra el ejemplo “LED”, se abrirá una ventana con el código fuente.
- Para evitar interferencias, reemplace los identificadores de las siguientes líneas de código por su Rol USM o Rut (Sin dígito verificador):
- Guarde el script como una copia (Archivo/Guardar Como)
- Cargue el script en la placa de desarrollo presionando el ícono “⇨” de la esquina superior izquierda.
- Abra el monitor serie presionando la lupa de la esquina superior derecha.
- Abra la aplicación nRF Connect en su Smartphone.
- En la sección Scanner busque el servicio con el mismo nombre configurado en los pasos anteriores (Asegúrese de que su dispositivo esté escaneando frames)
- Presione el botón “Connect” en el servicio.
- En la nueva ventana ir a la opción “Client”
- En la tabla de atributos debe haber una característica con UUID que termine con “A1214”
- Presionar la flecha hacia arriba de esta característica.
- Poniendo atención en la placa arduino, enviar un 1 como tipo “UnsignedInt” (unit 8) desde la App.
2.1 ¿Qué pasa en la placa arduino justo después que se envía el valor 1 desde la APP?
- Ahora Intente enviar un cero como tipo “UnsignedInt” (unit 8).
2.2 ¿Qué pasa en la placa arduino justo después que se envía el valor cero desde la APP?
2.3 ¿Cuál es el mayor valor de tipo UnsignedInt (unit 8) que puede enviar desde la App?
- Enviando ceros y unos intercalados desde la App observe el delay que existe desde que envía un frame hasta que reacciona la placa arduino, responda las siguientes preguntas:
2.4 Estime visualmente, ¿Cuál es el delay existente entre la placa arduino y su smartphone aproximadamente?
a) 1 segundo
b) 2 segundos
c) más de 2 segundos
d) Casi instantáneamente (milisegundos)
2.5 Si realiza la misma prueba alejando su smartphone de la placa, ¿Cuál es el delay existente entre la placa arduino y su smartphone aproximadamente?
a) 1 segundo
b) 2 segundos
c) más de 2 segundos
d) Casi instantáneamente (milisegundos)
2.6
3. Capturando datos: Arduino como dispositivo central (Central device)
Además de conocer las características de BLE en dispositivos periféricos, es necesario experimentar la forma en que se puede obtener los datos de estos dispositivos utilizando BLE. Para lo anterior, es necesario configurar un Central device en modo escucha bajo las condiciones de esta tecnología.
- Abra la aplicación nRF Connect en su Smartphone.
- En la sección Peripheral (Advertisement) cree un nuevo advertiser presionando el botón “add advertiser” (plus button)
- En nombre escriba su Rol USM o Rut (Sin dígito verificador) y agregue un nuevo servicio presionando el botón “add service”
- Seleccione “Device Information” y guarde los cambios. Asegúrese que el advertiser esté activo y sin posibilidad de editar.
- En Arduino IDE, vaya a la ruta “Archivo/Ejemplos/ArduinoBLE/Central” Abra el ejemplo “PeripheralExplorer”, se abrirá una ventana con el código fuente.
- Modifique el nombre del periférico a buscar por su Rol USM o Rut (Sin dígito verificador), el mismo que configuró en la creación del advertiser, como se muestra en el siguiente ejemplo:
- Guarde el script como una copia (Archivo/Guardar Como)
- Cargue el script en la placa de desarrollo presionando el ícono “⇨” de la esquina superior izquierda.
- Abra el monitor serie presionando la lupa de la esquina superior derecha.
3.1 ¿Qué pasa en el monitor serial?, ¿Tiene sentido lo obtenido? Explique
3.2 ¿Cuál es el UUID del servicio escaneado?
3.3
4. Detectando Frames: Arduino como Sniffer
Conocer la forma en que una arquitectura de red define los protocolos encargados de detectar e interactuar con los dispositivos heterogéneos del entorno permite poder comprender de mejor manera los desafíos de un sistema IoT. ¿Cómo un dispositivo periférico informa su presencia en los dispositivos centrales?, ¿Que se necesita para poder extraer datos de un dispositivo periférico determinado?, ¿Existe interferencia?, practiquemos.
- Para crear un Sniffer BLE Arduino IDE, vaya a la ruta “Archivo/Ejemplos/ArduinoBLE/Central” Abra el ejemplo “Scan”, se abrirá una ventana con el código fuente.
- Cargue el script en la placa de desarrollo presionando el ícono “⇨” de la esquina superior izquierda.
- Abra el monitor serie presionando la lupa de la esquina superior derecha, desactive el Autoscroll si desea observar los atributos con detención.
4.1 Responda, ¿Cuál de estos atributos se observan al escanear un dispositivo periférico?
a) UUID
b) Nombre & dBm
c) Address & RSSI
d) Nombre del fabricante
4.2 Responda según su intuición, ¿Qué significan el/los atributo(s) observado(s)?
4.3
5. Tasa de transferencia en BLE: Phyphox
Phyphox es una Aplicación móvil para generar experimentos sobre BLE. En este apartado se utilizará esta App para intentar obtener la tasa de transferencia media de envío de registros por segundo, es decir, la cantidad de mensajes (registros) que se pueden enviar en un segundo.
- Descargue y descomprima el archivo “nano_pyphox_v1” desde la web oficial:
https://hebergement.universite-paris-saclay.fr/phyphox/nano_phyphox_v1.zip
- Abra este archivo en Arduino IDE y reemplace el nombre por su Rol_USM (para evitar interferencias)
- Cargue el script en la placa de desarrollo presionando el ícono “⇨” de la esquina superior izquierda.
- En su smartphone, abrir la aplicación Phyphox.
- Agregue un nuevo set de experimentos presionando el botón plus (+).
- Seleccione añadir experimento desde un código QR.
- Agregue todos los experimentos y luego seleccione en la sección “Arduino Nano 33 BLE Sense” el experimento “Temperature and Humidity”.
- Seleccione el dispositivo BLE que posee su Rol_USM.
- Configure la prueba como ejecución cronometrada de duración 10 segundos.
- Presione el botón “Play” y observe.
- En opciones del experimento puede exportar los resultados del procedimiento.
5.1 Basándose en los datos obtenidos del experimento en Phyphox, ¿Cuántos registros por segundo se pueden enviar vía BLE aproximadamente?