1,アドバタイズをする
ESP32が外部から見られるように、名前をみんなに教えます。
ESP32-ROOM-32のプログラム
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>
// Notify用のCharacteristicポインタ
BLECharacteristic* pCharacteristic;
// 接続状態のフラグ(オプション)
bool deviceConnected = false;
void setup() {
Serial.begin(115200);
Serial.println("BLEサンプル開始");
// 1. デバイス初期化 & 名前設定
BLEDevice::init("MyESP32-BLE");
// 2. サーバー(Peripheral)作成
BLEServer* pServer = BLEDevice::createServer();
// 3. サービス作成(任意のUUID)
BLEService* pService = pServer->createService("12345678-1234-5678-9012-345678901234");
// 4. キャラクタリスティック作成(読み取り + 通知の権限)
pCharacteristic = pService->createCharacteristic(
"abcd1234-abcd-abcd-abcd-abcdefabcdef",
BLECharacteristic::PROPERTY_READ | BLECharacteristic::PROPERTY_NOTIFY
);
// 5. 初期値設定
pCharacteristic->setValue("Hello BLE!");
// 6. Notifyを許可する設定(iOSの一部端末などで必須)
pCharacteristic->addDescriptor(new BLE2902());
// 7. サービス開始
pService->start();
// 8. アドバタイズ開始
BLEAdvertising* pAdvertising = BLEDevice::getAdvertising();
pAdvertising->start();
Serial.println("アドバタイズ中:MyESP32-BLE");
}
void loop() {
// 9. 5秒ごとにNotifyで新しいデータを送る
static unsigned long lastTime = 0;
if (millis() - lastTime > 5000) {
lastTime = millis();
// 送信する文字列を生成(ミリ秒を文字列に)
String data = "Millis: " + String(millis());
pCharacteristic->setValue(data.c_str()); // 値をセット
pCharacteristic->notify(); // 通知送信
Serial.println("Notify送信: " + data);
}
}