Mikrokontrolér ESP32 obsahuje kromě Wi-Fi také podporu Bluetooth a Bluetooth Low Energy (BLE). BLE je moderní technologie určená pro komunikaci na krátkou vzdálenost s velmi nízkou spotřebou energie.
Díky tomu se často používá v projektech jako:
- chytré hodinky
- fitness zařízení
- senzory IoT
- domácí automatizace
- bezdrátové ovládání zařízení
V tomto článku si ukážeme základní principy BLE a jednoduchý příklad použití s ESP32 v Arduino IDE.
Co je Bluetooth Low Energy
Bluetooth Low Energy je úsporná varianta klasického Bluetooth. Je navržena pro přenos malého množství dat na krátkou vzdálenost při velmi nízké spotřebě energie.
Na rozdíl od klasického Bluetooth není zařízení stále aktivní. BLE většinu času zůstává v režimu spánku a aktivuje se pouze při komunikaci.
Díky tomu může BLE spotřebovávat až 100× méně energie než klasický Bluetooth, což je ideální pro zařízení napájená baterií.

Server a klient v BLE
BLE komunikace pracuje s dvěma typy zařízení:
BLE server
Server je zařízení, které poskytuje data.
Například:
- senzor teploty
- ESP32 odesílající data
- fitness náramek
Server vysílá signál, aby ho ostatní zařízení mohla najít.
BLE klient
Klient je zařízení, které server vyhledává a připojuje se k němu.
Typickým klientem je například:
- smartphone
- tablet
- počítač
- jiný mikrokontrolér
Klient tedy skenuje okolí a připojí se k serveru.
ESP32 může fungovat jako server i jako klient.
Struktura BLE komunikace (GATT)
BLE používá strukturu nazývanou GATT (Generic Attribute Profile). Ta určuje, jak se mezi zařízeními přenášejí data.
Hierarchie je následující:
- Service (služba)
- Characteristic (charakteristika)
- Descriptor (popis vlastnosti)

Service
Service představuje skupinu dat, například:
- baterie zařízení
- teplota
- srdeční tep
Jedno zařízení může obsahovat více služeb.
Characteristic
Characteristic obsahuje samotná data, například:
- aktuální hodnota senzoru
- stav zařízení
- textovou zprávu
Characteristic může mít různé vlastnosti:
- čtení (READ)
- zápis (WRITE)
- notifikace (NOTIFY)
UUID identifikátory
Každá služba i charakteristika má unikátní identifikátor nazývaný UUID (Universally Unique Identifier).
UUID je unikátní číslo, například:
155072829-bc9e-4c53-938a-74a6d4c78776UUID umožňuje identifikovat konkrétní data nebo služby v BLE zařízení.
BLE knihovna pro ESP32
ESP32 obsahuje BLE knihovnu přímo v balíčku pro Arduino IDE.
Příklady lze najít v Arduino IDE:

Zde jsou připravené projekty například:
- BLE Server
- BLE Client
- BLE Scan
Tyto příklady usnadňují začátky s BLE komunikací.
Program: ESP32 BLE Server
Následující program vytvoří BLE server, který vysílá jednoduchou textovou zprávu.
1#include <BLEDevice.h>
2#include <BLEUtils.h>
3#include <BLEServer.h>
4
5#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
6#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"
7
8void setup() {
9
10 Serial.begin(115200);
11 Serial.println("Starting BLE...");
12
13 // inicializace BLE
14 BLEDevice::init("ESP32_BLE");
15
16 // vytvoření serveru
17 BLEServer *pServer = BLEDevice::createServer();
18
19 // vytvoření služby
20 BLEService *pService = pServer->createService(SERVICE_UUID);
21
22 // vytvoření charakteristiky
23 BLECharacteristic *pCharacteristic = pService->createCharacteristic(
24 CHARACTERISTIC_UUID,
25 BLECharacteristic::PROPERTY_READ |
26 BLECharacteristic::PROPERTY_WRITE
27 );
28
29 // nastavení hodnoty
30 pCharacteristic->setValue("Hello from ESP32");
31
32 // spuštění služby
33 pService->start();
34
35 // spuštění vysílání BLE signálu
36 BLEAdvertising *pAdvertising = pServer->getAdvertising();
37 pAdvertising->start();
38
39 Serial.println("BLE server ready");
40}
41
42void loop() {
43
44}Jak program funguje
Program postupuje v několika krocích:
- inicializuje BLE zařízení
- vytvoří BLE server
- vytvoří službu (Service)
- vytvoří charakteristiku (Characteristic)
- nastaví její hodnotu
- začne vysílat BLE signál
Díky tomu mohou jiná zařízení ESP32 najít a připojit se k němu.
Testování pomocí telefonu
BLE server lze otestovat pomocí mobilní aplikace.
Jedna z nejpoužívanějších aplikací je nRF Connect.
Postup:
- zapnout Bluetooth v telefonu
- otevřít aplikaci
- spustit skenování zařízení
- najít zařízení ESP32_BLE
- připojit se
Po připojení lze zobrazit služby a charakteristiky ESP32.
Možná využití BLE s ESP32
Bluetooth Low Energy lze využít v mnoha projektech:
- bezdrátové senzory
- komunikace se smartphonem
- ovládání zařízení přes mobil
- přenos dat z IoT zařízení
- chytrá domácnost
BLE je velmi populární díky nízké spotřebě energie.
Shrnutí
ESP32 podporuje Bluetooth Low Energy, což umožňuje bezdrátovou komunikaci s nízkou spotřebou energie.
