🛠 Publicité BLE 5 en longue portée (Coded PHY)
Objetivos
El ESP32-C3 es una radio Bluetooth 5.0: conoce el PHY codificado (Coded PHY, 125 o 500 kbit/s) que duplica o cuadruplica el alcance de las publicaciones en comparación con el BLE 4.2 clásico a 1 Mbit/s. Configurarás la pila Bluedroid para emitir en este PHY extendido y lo verificarás con un central compatible.
Material
- 1 tarjeta ESP32-C3
- 1 smartphone reciente o dongle nRF con nRF Connect (soporte BLE 5)
- Core Arduino-ESP32 2.0.14 o más reciente
Código completo
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include "esp_gap_ble_api.h"
// Publicite : drapeau LE General + nom "C3 LONGRANGE"
static uint8_t adv_data[] = {
0x02, 0x01, 0x06,
0x0D, 0x09, 'C','3',' ','L','O','N','G','R','A','N','G','E'
};
void setup {
Serial.begin(115200);
BLEDevice::init("C3-LONGRANGE");
// BLE 5 : emission sur PHY code 125 kbit/s (longue portee)
esp_ble_gap_config_own_le_phy(BLE_LE_CODED_PHY);
esp_ble_gap_config_adv_data_raw(adv_data, sizeof(adv_data));
esp_ble_adv_params_t params = {
.adv_int_min = 0x100,
.adv_int_max = 0x160,
.adv_type = ADV_TYPE_IND,
.own_addr_type = BLE_ADDR_TYPE_PUBLIC,
.channel_map = ADV_CHNL_ALL,
.adv_filter_policy = ADV_FILTER_ALLOW_SCAN_ANY_CON_ANY,
};
esp_ble_gap_start_advertising(¶ms);
Serial.println(F("Publicite emise sur PHY code (BLE 5)"));
}
void loop { delay(1000); }
Verificación esperada
nRF Connect en un central BLE 5 muestra «C3 LONGRANGE»; al alejar la tarjeta varios cientos de metros al aire libre, la publicación sigue siendo recibida donde una publicación clásica de 1 Mbit/s habría desaparecido. El registro del controlador indica el PHY codificado utilizado.
Errores frecuentes
- Central antiguo o llave USB BLE 4.x: no escanea el PHY codificado, la publicación parece «invisible» aunque esté siendo emitida.
- Olvidar activar las funciones BLE 5 (publicidad extendida / PHY codificado) en la configuración de la pila: la llamada al PHY codificado se ignora silenciosamente.
- Esperar una alta tasa de transferencia: el Coded PHY cambia el alcance, no el ancho de banda — 125 kbit/s es poco por diseño.
- Comparar distancias sin la misma potencia de emisión: ajusta también la potencia de transmisión (TX power) para una comparación justa.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
clignotante.inoArduinobouton-led.inoArduinorespiration.inoArduinodht22.inoArduinooled-i2c.inoArduinoserveur-web.inoArduino