🛠 Ê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.

Objectifs

Rendre le Nano ESP32 périphérique Bluetooth LE avec la bibliothèque ArduinoBLE : diffusion d'un nom, service et caractéristique lisible/notifiable incrémentée par le bouton. Le module NORA-W106 gère le BLE 5.0 multi-connexions (central/périphérique).

Matériel

Code complet

#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);
}

Vérification attendue

nRF Connect affiche « NanoESP32-Demo » ; après connexion, la caractéristique 2A19 vaut 0 puis s'incrémente à chaque appui (après activation des notifications dans l'app).

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels