Zpět na články

ESP32 Bluetooth Low Energy (BLE) – Arduino IDE

ESP32 podporuje Bluetooth Low Energy, které umožňuje bezdrátovou komunikaci s nízkou spotřebou energie.

ESP32 Bluetooth Low Energy (BLE) – Arduino IDE

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í.

ESP32 Blog image

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í:

  1. Service (služba)
  2. Characteristic (charakteristika)
  3. Descriptor (popis vlastnosti)
ESP32 Blog image

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:

ble.cpp
155072829-bc9e-4c53-938a-74a6d4c78776

UUID 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:

ESP32 Blog image

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.

ble.cpp
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:

  1. inicializuje BLE zařízení
  2. vytvoří BLE server
  3. vytvoří službu (Service)
  4. vytvoří charakteristiku (Characteristic)
  5. nastaví její hodnotu
  6. 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:

  1. zapnout Bluetooth v telefonu
  2. otevřít aplikaci
  3. spustit skenování zařízení
  4. najít zařízení ESP32_BLE
  5. 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.

Nakupte svoje ESP32 ještě dnes!

Doprava Zásilkovnou za 89 Kč
Platba dobírkou
Vrácení do 30 dnů
Omezené zásoby - skladem

ESP32-S3 DevKit USB-C

Kompletní vývojová deska s USB-C

240MHz dvoujádrový
WiFi 802.11 b/g/n
Bluetooth 4.2 + BLE
4MB Flash paměť
520KB SRAM
38 GPIO pinů
209za kus

Množstevní slevy:

1
Celkem
209
Objednat

Bezpečná platba při převzetí zásilky nebo online platba přes Comgate, a.s.