Cómo añadir Bluetooth 5.3 de forma rápida y rentable a los diseños de IoT Edge

Por Jens Wallmann

Colaboración de Editores europeos de DigiKey

La competencia incesante presiona a los desarrolladores de dispositivos de Internet de las cosas (IoT) para que introduzcan rápidamente productos nuevos e innovadores al tiempo que reducen los costos y garantizan una comunicación resistente, de bajo consumo y segura. Los nodos finales inteligentes de IoT tradicionales constan de una unidad de microcontrolador (MCU) para permitir el procesamiento de los bordes y un CI inalámbrico para la conectividad. Los problemas surgen cuando los equipos de diseño carecen de los conocimientos de radiofrecuencia (RF) necesarios para una solución eficaz.

Para completar, certificar y pasar a tiempo sus diseños de IoT inalámbrico a la producción en serie, los desarrolladores necesitan hacer más eficiente el proceso de desarrollo. Una forma de aumentar la eficiencia del proceso de desarrollo consiste en utilizar una MCU de bajo consumo con una interfaz inalámbrica Bluetooth de baja energía (BLE) integrada.

En este artículo se presenta la serie de MCU STM32WBA52 de bajo consumo de STMicroelectronics y se muestra cómo los desarrolladores pueden utilizar una placa de evaluación BLE, herramientas de desarrollo y ejemplos de aplicaciones para poner en marcha rápidamente un diseño inalámbrico BLE 5.3. Se incluye una breve descripción de la programación y el cableado de la unidad de microcontrolador.

MCU inalámbrico de bajo consumo con alto nivel de seguridad

Certificada para BLE 5.3, la serie de MCU STM32WBA52 es una solución rentable que permite a los desarrolladores noveles añadir rápidamente comunicaciones inalámbricas a sus dispositivos. Al basarse en el núcleo ARM® Cortex®-M33 con un reloj de 100 megahercios (MHz) y tecnología TrustZone, estos microcontroladores proporcionan un alto nivel de seguridad, protegen los datos y la propiedad intelectual (IP), y evitan los hackeos y la clonación de dispositivos.

Mientras que la MCU inalámbrica STM32WBA52CEU6 tiene 512 kilobytes (Kbytes) de memoria Flash y 96 Kbytes de RAM estática (SRAM), la variante STM32WBA52CGU6 ofrece 1 megabyte (Mbyte) de memoria Flash y 128 Kbytes de SRAM. La figura 1 muestra el ámbito funcional del CI en un encapsulado de 48 UFQFN. Por cierto, hasta 20 canales táctiles capacitivos permiten el funcionamiento de dispositivos herméticamente cerrados (no se necesitan teclas mecánicas).

Diagrama de bloques funcional de  STM32WBA52 de STMicroelectronicsFigura 1: Un diagrama de bloques funcional del STM32WBA52 muestra la radio BLE 5.3 integrada, Flash y SRAM, y el soporte de seguridad. (Fuente de la imagen: STMicroelectronics)

Un rico ecosistema STM32Cube soporta la implementación y programación de la aplicación bluetooth de baja energía. Incluye el entorno de desarrollo STM32CubeIDE, así como herramientas como el configurador de periféricos y generador de código STM32CubeMX, el comprobador de rendimiento STM32CubeMonitorRF y las versiones de escritorio y en la nube STM32Cube.AI para inteligencia artificial (IA). Una placa de evaluación a juego, la NUCLEO-WBA52CG, simplifica la creación de prototipos y acelera la validación con muchas aplicaciones de muestra BLE y código fuente disponible gratuitamente.

Seguridad de dispositivos y datos

La línea de productos STM32WBA52 cumple los estándares de seguridad fr IoT Platform Security Arm (PSA), con certificación de nivel 3 y Security Evaluation Standard for IoT Platforms Assurance, nivel 3 (SESIP3). La ciberprotección se ve reforzada por el programa de seguridad PSA basado en el aislamiento de seguridad, la protección de la memoria, la protección contra manipulaciones y el Cortex-M33 de las MCU con arquitectura Arm TrustZone. El firmware de confianza para Arm Cortex-M (TF-M) cumple el marco de seguridad certificado PSA estándar del sector con la raíz de confianza (RoT) inmutable PSA, que incluye arranque seguro y actualización segura del firmware (X-CUBE-SBSFU), criptografía, almacenamiento seguro y atestación en tiempo de ejecución.

La radio integrada minimiza la lista de materiales

El módulo de radio integrado de consumo ultrabajo proporciona +10 decibelios referidos a 1 milivatio (mW) (dBm) de potencia de salida de RF. Permite una comunicación fiable en distancias cortas (BLE 5.3) y largas (Long Range) con velocidades de datos de hasta 2 megabits por segundo (Mbps). Un modo de espera profunda de bajo consumo reduce la potencia eléctrica total cuando la comunicación por radio está activa. Las MCU STM32WBA admiten hasta 20 conexiones simultáneas.

Características de rendimiento eléctrico del módulo de radio:

  • Transceptor RF de 2.4 gigahercios (GHz) compatible con BLE 5.3
  • Sensibilidad de RX: -96 dBm (BLE a 1 Mbps)
  • Potencia de salida programable, hasta +10 dBm en pasos de 1 dB
  • Balun integrado

Batería más pequeña gracias a una gestión de la energía muy eficaz

Las MCU STM32WBA52 incorporan numerosas tecnologías de ahorro de energía, como el acceso directo a memoria de bajo consumo (LPDMA) de STMicroelectronics y estados flexibles de ahorro de energía con tiempos de activación rápidos. Juntas, estas características pueden reducir el consumo de energía de la unidad de microcontrolador hasta en un 90%, lo que se traduce en una batería mucho más pequeña o en una mayor duración de la batería.

Características de rendimiento eléctrico de FlexPowerControl:

  • Fuente de alimentación de 1.71 a 3.6 voltios
  • 140 nanoamperios (nA), modo en espera (16 pines de activación)
  • Modo en espera de 200 nA con reloj en tiempo real (RTC)
  • Modo en espera de 2.4 microamperios (μA) con SRAM de 64 Kbytes
  • Modo de parada de 16.3 μA con SRAM de 64 Kbytes.
  • 45 μA/MHz en modo ejecución a 3.3 voltios
  • Radio: Rx 7.4 miliamperios (mA) / Tx a 0 dBm 10.6 mA

Además, Bluetooth 5.3 ofrece una conmutación más rápida entre ciclos de trabajo bajos y altos, lo que lo hace más eficiente energéticamente que las versiones anteriores.

Arquitectura de la pila Bluetooth y paquetes de datos

Las MCU Arm Cortex-M33 mononúcleo del STM32WBA52 están diseñadas para el desarrollo de firmware de aplicaciones, incluidos perfiles y servicios en la pila BLE (controlador y host). Las MCU procesan el flujo de datos desde el módulo RF integrado en la capa física más baja (PHY) hasta el perfil de atributos genéricos (GATT) y el perfil de acceso genérico (GAP) (Figura 2). El GAP define y gestiona la publicidad y la conexión, mientras que el GATT define y gestiona el intercambio de datos de entrada y salida.

Imagen de las MCU procesando el flujo de datos desde la radio PHY al GATT y GAPFigura 2: Las MCU procesan el flujo de datos desde la radio PHY hasta el GATT y el GAP. (Fuente de la imagen: STMicroelectronics)

BLE envía paquetes de datos que se definen como una estructura de trama fija de una secuencia de bits. La longitud del área de datos de usuario puede variar dinámicamente de 27 a 251 bytes.

Ejemplos de aplicaciones BLE

La enciclopedia en línea, STMicro-Wiki for STM32WBA MCUs, contiene varios ejemplos de aplicaciones para diferentes funciones de Bluetooth, incluyendo:

  • Anuncio: BLE_Beacon
  • Sensores: BLE_HealthThermometer,BLE_HeartRate
  • Puente: BLE_SerialCom
  • Router: BLE_p2pRouter
  • Datos: BLE_DataThroughput, BLE_p2pServer y Multi Slave BLE_p2pClient
  • RF-Monitor: BLE_TransparentMode,
  • Actualización de firmware por aire: BLE_Fuota

Adaptando su propio proyecto BLE, los diseñadores y programadores de dispositivos pueden flashear el binario compilado desde el correspondiente directorio de proyectos de GitHub a la placa NUCLEO e iniciar la conexión Bluetooth con un smartphone o una computadora de escritorio. El software programador requerido, STM32CubeProg, proporciona lectura, escritura y verificación de la memoria del dispositivo a través de la interfaz de depuración y la interfaz del gestor de arranque.

Ejecución del ejemplo BLE "Sensor termómetro de salud"

El perfil de termómetro de salud (HTP) es un perfil de bajo consumo basado en GAP definido por el Grupo de Interés Especial de Bluetooth (SIG). Combina un colector de termómetros de salud y un sensor de termómetros de salud para conectar e intercambiar datos en distintas aplicaciones (Figura 3).

Imagen de la comunicación BLE entre la placa NUCLEO y un smartphone (haga clic para ampliar).Figura 3: Comunicación BLE entre la placa NUCLEO como sensor/servidor y un smartphone como colector/cliente. (Fuente de la imagen: STMicroelectronics)

El sensor termómetro de salud:

  • Mide la temperatura y la expone a través del Servicio de Termómetro Sanitario
  • Contiene el servicio de información del dispositivo que debe identificar el dispositivo remoto
  • ¿Es el servidor GATT?

El coleccionista de termómetros sanitarios:

  • Accede a la información expuesta por el sensor del termómetro de salud y puede mostrarla al usuario final o almacenarla en una memoria no volátil para su posterior análisis.
  • ¿Es el cliente del GATT?

Después de flashear el archivo binario del termómetro sanitario en la unidad de microcontrolador del NUCLEO, el desarrollador debe seguir los siguientes pasos para ejecutar el ejemplo de aplicación BLE:

Uso de la aplicación para smartphone

  1. Instala ST BLE Toolbox en un teléfono inteligente. La aplicación se utiliza para interactuar con dispositivos ST BLE y depurarlos.
  2. Enciende la placa STM32WBA NUCLEO con la aplicación Health Thermometer flasheada.
  3. Enciende el Bluetooth (BT) del smartphone y escanea los dispositivos BT disponibles en la aplicación. Seleccione Termómetro sanitario y conéctese.

Uso de la interfaz del navegador web

  1. Garantice la compatibilidad de los navegadores:
    • en una computadora de escritorio: Chrome, Edge u Opera
    • en un dispositivo smartphone: Chrome Android
  2. Enciende la placa STM32WBA NUCLEO con la aplicación Health Thermometer flasheada.
  3. Activa Bluetooth en la computadora.
  4. Abra la página web https://applible.github.io/Web_Bluetooth_App_WBA/ en el navegador.
  5. Haga clic en el botón de conexión en la parte superior de la página web, luego seleccione HT_xx en la lista de dispositivos y haga clic en emparejar. El dispositivo ya está conectado.
  6. Haga clic en Termómetro sanitario para mostrar la interfaz.

La tabla 1 describe la estructura de los servicios del sensor termométrico sanitario. El Identificador Único Universal (UUID) de 128 bits de longitud distingue las características y servicios individuales.

Servicio Característica Propiedad UUID Tamaño
Servicio de termómetro sanitario 0x1809
Medición de temperatura Indique 0x2A1C 13
Tipo de temperatura Leer 0x2A1D 1
Temperatura intermedia Notificar 0x2A1E 13
Intervalo de medición Leer, escribir, indicar 0x2A21 2
Servicio de información sobre dispositivos 0x180A
Cadena de nombre del fabricante Leer 0x2A29 32
Cadena del número de modelo Leer 0x2A24 32
DI del sistema Leer 0x2A23 8

Tabla 1: Servicios GATT y sus UUID para el GAP "Sensor de termómetro de salud". (Fuente de la imagen: STMicroelectronics)

La siguiente secuencia JavaScript de GitHub muestra cómo la interfaz del navegador web filtra las diferentes características de los datos de GATT (Listado 1).

Copia
[...]

// Filtering the different datathroughput characteristics
  props.allCharacteristics.map(element => {
    switch (element.characteristic.uuid) {
      case "00002a1c-0000-1000-8000-00805f9b34fb":
        IndicateCharacteristic = element; // Temperature Measurement (TEMM)
        IndicateCharacteristic.characteristic.startNotifications();
        IndicateCharacteristic.characteristic.oncharacteristicvaluechanged = 
        temperatureMeasurement;
        break;
      case "00002a1d-0000-1000-8000-00805f9b34fb":
        ReadCharacteristic = element; // Temperature Type
        readTemperatureType();
        break;
      case "00002a1e-0000-1000-8000-00805f9b34fb":
        NotifyCharacteristic = element; //Immediate Temperature
        NotifyCharacteristic.characteristic.startNotifications();
        NotifyCharacteristic.characteristic.oncharacteristicvaluechanged = notifHandler;
        break; 
      case "00002a21-0000-1000-8000-00805f9b34fb":
        ReadWriteIndicateCharacteristic = element; // Measurement Interval
        readMeasurementInterval();
        break;
      default:
        console.log("# No characteristics found..");
    }
  });

[...]

Listado 1: Esta secuencia de JavaScript filtra las distintas características del flujo de datos GATT de la Tabla 1. (Fuente del listado: GitHub, STMicroelectronics)

Seguimiento de los procesos de la pila BLE

El NUCLEO-WBA52CG incorpora el depurador y programador en circuito ST-LINK/V3, compatible con el controlador de puerto COM virtual STM32 para la comunicación con un PC a través de una interfaz serie. Cualquier terminal de software puede abrir este puerto de comunicación serie para mostrar los mensajes cortos de texto generados en el código por la función APP_DBG_MSG.

Las trazas dentro del proyecto necesitan ser habilitadas en el archivo app_conf.h

#define CFG_DEBUG_APP_TRACE (1)

Como alternativa, la aplicación para smartphone "SE BLE Toolbox" ofrece una función de rastreo en la lengüeta .

Programación de aplicaciones BLE 5.3

Para la programación de los MCU STM32WBA52, STM ha reunido el STM32CubeWBA-Package que consiste en una capa de abstracción de hardware (HAL), interfaces de programación de aplicaciones de baja capa (API) y CMSIS, Sistema de archivos, RTOS, BLE/802.15.4, Thread, y pilas Zigbee, así como ejemplos que se ejecutan en placas STMicroelectronics.

Las configuraciones de la estructura del proyecto para los tres entornos de desarrollo (IDE), como IAR Embedded Workbench for Arm (EWARM), Keil MDK-ARM y STM32CubeIDE, se incluyen en cada ejemplo de aplicación NUCLEO-WBA52CG BLE.

En el caso del ejemplo del termómetro de salud, sólo determinados archivos del árbol de directorios del proyecto (recuadro de la figura 4 a la izquierda) generan los servicios GATT. Las dos rutinas, "Health Thermometer Service" (hts) y "Device Information Service" (dis) de la Tabla 1, se ejecutan en paralelo (parte inferior derecha de la Figura 4).

Los programadores pueden añadir su propio contenido GATT a los archivos de código enmarcados (haga clic para ampliar)Figura 4: Los programadores pueden añadir su propio contenido GATT a los archivos de código enmarcados (izquierda); estos archivos generan los servicios GATT (derecha). (Fuente de la imagen: STMicroelectronics)

Los programadores pueden utilizar el código fuente para sus propios proyectos y ampliarlo con su contenido GATT en las zonas marcadas con USER CODE BEGIN / USER CODE END (Listado 2). La secuencia de inicialización del fichero hts.c genera la característica GATT Medición de Temperatura (TEMM) que lleva el UUID 0x2A1C.

Copia
[...]
 void HTS_Init(void)
 {
 [...]

  /* TEMM, Temperature Measurement */
  
  uuid.Char_UUID_16 = 0x2a1c;
  ret = aci_gatt_add_char(HTS_Context.HtsSvcHdle,
                          UUID_TYPE_16,
                          (Char_UUID_t *) &uuid,
                          SizeTemm,
                          CHAR_PROP_INDICATE,
                          ATTR_PERMISSION_NONE,
                          GATT_DONT_NOTIFY_EVENTS,
                          0x10,
                          CHAR_VALUE_LEN_VARIABLE,
                          &(HTS_Context.TemmCharHdle));
  if (ret != BLE_STATUS_SUCCESS)
  {
    APP_DBG_MSG("  Fail   : aci_gatt_add_char command  : TEMM, error code: 0x%2X\n", ret);
  }
  else
  {
    APP_DBG_MSG("  Success: aci_gatt_add_char command  : TEMM\n");
  }

  /* USER CODE BEGIN SVCCTL_InitService2Char1 */

  /* USER CODE END SVCCTL_InitService2Char1 */

 [...]
 }
[...]

Listado 2: La secuencia de inicialización del fichero hts.c genera la característica GATT TEMM. (Fuente de la imagen: GitHub, STMicroelectronics)

Requisitos de los componentes externos

La MCU inalámbrica STM32WBA52 solo requiere unos pocos componentes externos para un funcionamiento básico con funcionalidad Bluetooth. Entre ellos se incluyen condensadores para la alimentación de voltaje, un oscilador de cristal, una antena de placa de circuito impreso (pc board) con adaptación de impedancia y un filtro de armónicos (Figura 5).

Diagrama del terminal RF STM32WBA52 de STMicroelectronics (haga clic para ampliar)Figura 5: Para Bluetooth, el terminal RF del STM32WBA52 se conecta a una red de adaptación de impedancias, un filtro de armónicos y una antena. (Fuente de la imagen: STMicroelectronics)

Conclusión:

Los desarrolladores de dispositivos IoT inalámbricos necesitan acortar los ciclos de diseño y reducir los costos para competir en un mercado en rápida evolución. Sin embargo, el diseño de RF es todo un reto. La unidad de microcontrolador STM32WBA52, con su interfaz BLE 5.3 integrada, permite a los desarrolladores llegar al mercado de forma rápida y rentable. La pila BLE preprogramada y varios ejemplos de aplicaciones BLE constituyen una plantilla de programación para proyectos personalizados en los que los contenidos GATT se insertan fácilmente.

DigiKey logo

Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de DigiKey o de las políticas oficiales de DigiKey.

Información sobre el autor

Jens Wallmann

Jens Wallmann

Jens Wallmann is a freelancing editor and contributes to electronics publications, both print and online. As an electrical engineer (communications engineering) and a trained industrial electronic engineer he has more than 25 years in electronics development with a focus on measuring technology, automotive electronics, process industry and Radio Frequency.

Información sobre la editorial

Editores europeos de DigiKey