|
|
Das ESP32-Modul enthält neben dem Mikrocontroller auch ein WLAN- und Bluetooth Modul. Mit dem Bluetooth-Modul kann man zum Beispiel einen Beacon realisieren, der mit entsprechenden Scannern (Smartphones mit entsprechenden Apps oder ein entsprechend programmierter ESP32 -> Praxis 13) gelesen werden kann.
#include <Arduino.h>
/* -------------------------------------
Praxis 12
BLE-Beacon mit dem ESP32
-----------------------------------*/
#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
// Wichtig!
// Die UUID unbedingt durch "eigene" UUID von der folgenden Webseite ersetzen:
// https://www.uuidgenerator.net/
#define SERVICE_UUID "3f38b78f-90db-4246-8088-8ac74471b8d4"
#define CHARACTERISTIC_UUID "9c5c7f98-b6f8-4630-863e-6a05b2836be1"
void setup() {
Serial.begin(115200);
Serial.println("BLE-Service starten!");
BLEDevice::init("Labor-Token 1");
BLEServer *pServer = BLEDevice::createServer();
BLEService *pService = pServer->createService(SERVICE_UUID);
BLECharacteristic *pCharacteristic = pService->createCharacteristic(
CHARACTERISTIC_UUID,
BLECharacteristic::PROPERTY_READ |
BLECharacteristic::PROPERTY_WRITE
);
pCharacteristic->setValue("Herzlich willkommen im IT-Labor!");
pService->start();
BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
pAdvertising->addServiceUUID(SERVICE_UUID);
pAdvertising->setScanResponse(true);
pAdvertising->setMinPreferred(0x06);
pAdvertising->setMinPreferred(0x12);
BLEDevice::startAdvertising();
Serial.println("Server eingerichtet!");
}
void loop() {
delay(2000);
}
Hier steckt das meiste in den Bibliotheken, diese stellen die benötigten Objekte BLEDevice, BLEService und BLEServer bereit. Der Name unter dem der Beacon später sichtbar ist, wird beim BLEDevice::init mitgegeben. Da die Charakteristik (Zeile 25 – 29) auch das Schreiben zulässt („PROPERTY_WRITE“), kann mit den Apps der Wert geändert werden.
