🛠 Être un périphérique Bluetooth LE avec ArduinoBLE

Arduino Nano ESP32 · intermediaire · Schéma : IMG-nano-esp32-intermediaire-2-nanoesp32-ble-arduino-ble.svg — Diffusion Bluetooth LE de la carte vers un smartphone exécutant nRF Connect.

Objetivos

Convertir el Nano ESP32 en un dispositivo Bluetooth LE con la biblioteca ArduinoBLE: difusión de un nombre, un servicio y una característica legible/notificable que se incrementa con el botón. El módulo NORA-W106 gestiona BLE 5.0 con múltiples conexiones (central/periférico).

Material

Código completo

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>

BLECharacteristic* compteurChar = nullptr;
const uint8_t BTN = 2;
uint8_t n = 0;
uint32_t derniereMs = 0;

class ServeurCb : public BLEServerCallbacks {
  void onConnect(BLEServer* s) override { Serial.println("centrale connectée"); }
  void onDisconnect(BLEServer* s) override { BLEDevice::startAdvertising; }
};

void setup {
  Serial.begin(115200);
  pinMode(BTN, INPUT_PULLUP);
  BLEDevice::init("NanoESP32-Demo");
  BLEServer* serveur = BLEServer::createServer;
  serveur->setCallbacks(new ServeurCb);
  BLEService* service = serveur->createService("1280");
  compteurChar = service->createCharacteristic(
      "2A19", BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_NOTIFY);
  service->start;
  BLEAdvertising* adv = BLEDevice::getAdvertising;
  adv->addServiceUUID("1280");
  BLEDevice::startAdvertising;
  Serial.println("Diffusion BLE : NanoESP32-Demo");
}

void loop {
  bool appuye = (digitalRead(BTN) == LOW);
  uint32_t now = millis;
  if (appuye && now - derniereMs > 250 && compteurChar) {
    derniereMs = now;
    compteurChar->setValue(++n);
    compteurChar->notify;
    Serial.printf("compteur = %u\n", n);
  }
  delay(10);
}

Verificación esperada

nRF Connect muestra «NanoESP32-Demo»; tras la conexión, la característica 2A19 vale 0 y luego se incrementa con cada pulsación (tras activar las notificaciones en la app).

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales