🛠 Wi-Fi + BLE 5 : mesurer la coexistence

ESP32-C3 · avance · Schéma : IMG-esp32-c3-avance-1-wifi-ble5-coexistence.svg — ESP32-C3 mono-cœur avec radio unique 2,4 GHz, calendrier entrelaçant trames Wi-Fi et événements BLE

Objectifs

Le ESP32-C3 cumule Wi-Fi et Bluetooth 5 sur un cœur unique et un seul radio 2,4 GHz. Ce tutoriel mesure la dégradation réelle quand les deux protocoles tournent ensemble, et pose les règles d'ingénierie : intervalles de connexion BLE, taille des paquets, réveil du modem Wi-Fi. Vous saurez dimensionner un produit mixte sans mauvaise surprise.

Matériel

Code complet

#include <WiFi.h>
#include <HTTPClient.h>
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>

BLECharacteristic* cNotif;

void setup {
  Serial.begin(115200);
  BLEDevice::init("C3-COEX");
  BLEServer* srv = BLEDevice::createServer;
  BLEService* svc = srv->createService("180A");
  cNotif = svc->createCharacteristic("2A19",
                 BLECharacteristic::PROPERTY_NOTIFY);
  cNotif->addDescriptor(new BLE2902);
  svc->start;
  BLEDevice::getAdvertising->start;

  WiFi.mode(WIFI_STA);
  WiFi.begin("MON_SSID", "MA_CLE");
  while (WiFi.status != WL_CONNECTED) { delay(300); Serial.print('.'); }
  Serial.println;
}

void loop {
  uint32_t t0 = millis;
  HTTPClient http;
  http.begin("http://exemple.local/test-1mo.bin");
  int code = http.GET;
  int32_t octets = http.getSize;
  http.end;

  uint8_t v = (uint8_t)(millis / 1000);
  cNotif->setValue(&v, 1);
  cNotif->notify;

  Serial.printf("HTTP %d, %d o en %lu ms + notify BLE\n",
                code, octets, millis - t0);
  delay(3000);
}

Vérification attendue

Les deux protocoles fonctionnent simultanément, mais le temps du transfert HTTP augmente nettement dès que BLE est actif (publicité puis notifications). En coupant la publicité BLE, le même transfert redevient rapide : la pénalité vient bien du partage du radio unique, pas du cœur.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels