ESP32 ma obsługę zarówno Bluetooth Classic, jak i Bluetooth Low Energy. Tutaj skupimy się na Bluetooth Low Energy. Zobaczmy to szczegółowo.
Co to jest Bluetooth Low Energy
Ble lub Bluetooth Low Energy to tryb oszczędzania energii Bluetooth. Jego główna aplikacja obejmuje transfer danych na krótkie odległości, takie jak wejście do drzwi, inteligentne zegarki, urządzenia do noszenia, monitorowanie ciśnienia krwi, bezpieczeństwo i automatyzacja domowa. BLE może przesyłać ograniczone dane.
W przeciwieństwie do Bluetooth Classic, który pozostaje włączony przez cały czas BLE pozostaje w trybie uśpienia, z wyjątkiem tego, że jest wywoływany lub inicjowane połączenie. To sprawia, że BLE jest bardzo wydajne i zużywa 100 razy mniej mocy niż klasyczny.
Oto krótkie porównanie klasyki Bluetooth z Bluetooth Low Energy:
Specyfikacja | Bluetooth Classic | Bluetooth Low Energy/Ble |
Prędkość przesyłu danych | 2-3 Mbps | 1 Mbps |
Zakres | ~ 10-100m | ~ 50m |
Częstotliwość robocza | 79 RF | 40 RF |
Szczytowe zużycie prądu | ~ 30ma | <15mA |
Pobór energii | 1W | 0.01-0.5w |
Całkowity czas na wysłanie danych | 100 ms | 3MS |
Aplikacje | Audio, strumieniowanie muzyki | Czujnik, urządzenia do noszenia |
Aby uzyskać bardziej szczegółowe porównanie, kliknij tutaj, aby odwiedzić oficjalną stronę Bluetooth.
Serwer BLE i klient
Bluetooth Low Energy obsługuje urządzenie na dwa różne sposoby: serwer i klient. ESP32 może działać zarówno jako serwer, jak i klient dla Bluetooth o niskiej energii.
BLE WSPARCIE PRZEDSTAWIOWE MODY KOMUNIKACJI:
Działając jako serwer, ESP32 reklamuje swoje istnienie do pobliskich urządzeń klientów. Gdy urządzenia klienckie zeskanują dostępne urządzenia Bluetooth, serwer ustanawia połączenie między nimi a przesyła dane z serwera do urządzenia klienckiego. Ta komunikacja nazywa się punktem punktu.
W tym samouczku weźmiemy przykład komunikacji punkt-punkt między dwoma płytami ESP32.
Ważne warunki w BLE
Oto kilka ważnych terminów, które należy znać podczas pracy z aplikacjami ESP32 BLE:
Gatt: GATT lub atrybuty ogólne, które definiują hierarchiczną strukturę dla transferów danych między urządzeniami BLE przy użyciu usługi i charakterystyki. Określa sposób, w jaki dwa urządzenia przekazują między nimi dane.
BLE Service: Najwyższy poziom wewnątrz hierarchii GATT to profil, który zawiera jedną lub więcej usług. BLE zawiera więcej niż jedną usługę. Każda z tych usług ma swoje własne cechy, które mogą również działać jako odniesienie do innych usług.
BLE Charakterystyka: Charakterystyka to grupa informacji zawsze należących do służby; To tam, gdzie faktyczne dane są przechowywane w hierarchii (wartość). Zawsze zawiera dwa atrybuty:
UUID: UUID (uniwersalnie unikalny identyfikator) to unikalny identyfikator usługi i charakterystyki. Jest to unikalny 128-bitowy identyfikator, który można wygenerować za pomocą dowolnego generatora UUID online. Sprawdź ten bezpłatny generator UUID. Próbka UUID wygląda tak:
583F8B30-74B4-4757-8143-56048FD88B25Universal Bluetooth Specjalna grupa zainteresowań (SIG) predefiniowała niektóre z skróconych UUID dla różnych rodzajów usług i profilu, aby je przeczytać.
Ustaw BLE w ESP32 z Arduino IDE
Aby zrozumieć działanie BLE, będziemy używać dwóch różnych tablic ESP32, jedna z nich będzie działać jako serwer i reklamuj sygnał Bluetooth, a drugi ESP32, który działa jako klient spróbuje podłączyć serwer Bluetooth.
Arduino IDE ma osobne przykłady zarówno dla skanera, jak i serwera.
Aby zobaczyć, jak zainstalować ESP32 z Arduino IDE w systemie Windows, kliknij tutaj.
Serwer BLE ESP32
Najpierw prześlemy przykładowy kod serwera na naszej pierwszej płycie ESP32, która działa jako serwer.
Aby otworzyć przykład serwera BLE, przejdź do: Plik> Przykłady> ESP32 BLE Arduino> Ble_Server:
Poniższy podany kod zostanie otwarty w Arduino IDE.
Kod serwera
Prześlij poniższy kod na płycie ESP32 za pomocą Arduino IDE. Ale pamiętaj, aby odłączyć drugą płytę na chwilę, aby uniknąć przesłania tego samego kodu na jedną płytę.
#włączaćKod zaczyna się od włączenia niezbędnych plików biblioteki Bluetooth. Wtedy UUID jest zdefiniowane zarówno dla usług, jak i charakterystyki. Możesz iść z domyślnym UUID lub wygenerować za pomocą bezpłatnego generatora UUID. Następna komunikacja szeregowa jest inicjowana poprzez zdefiniowanie wskaźnika transmisji.
Następnie utworzyliśmy urządzenie BLE o nazwie ESP32. Następnie zdefiniowaliśmy urządzenie BLE jako serwer za pomocą createServer () funkcja, a później ustawiamy wartość charakterystyczną. Na ostatnim kroku rozpoczęliśmy usługę, reklamując ją, aby inne urządzenia mogły jej wyszukiwać.
Skaner ESP32 BLE
Teraz przesłamy przykład skanowania ESP32 na drugiej tablicy ESP32. Aby to zrobić, przejdź do: Plik> Przykłady> ESP32 BLE Arduino> Ble_scan
Poniższy kod zostanie otwarty w Edytorze Arduino IDE.
Kod skanera
#włączaćPowyższy kod będzie wyszukiwać liczbę całkowitych dostępnych urządzeń dla BLE i wyświetli całkowitą liczbę z adresami. Po przesłaniu kodu na płycie skanera ESP32 Naciśnij Włączać przycisk, płyta ESP32 automatycznie wyszukuje dostępne urządzenia.
Wyjście
Gdy ESP32 skanuje dostępne urządzenia, pojawi się następujący wynik. Tutaj ESP32 zeskanował 9 urządzeń, wśród których jedno to płyta ESP32 z kodem Ble_Server, a innym urządzeniem jest Mi Band 6. Reszta wszystkich urządzeń jest dostępna w pobliżu mojego ESP32.
Jak naprawić bibliotekę skanowania ESP32 BLE, nie licząc urządzeń
Przykład biblioteki SCAN ESP32 ma błąd, który nie liczy całkowitej liczby urządzeń. Aby naprawić ten problem, przejdź do wspomnianej lokalizacji i wymień kod podany poniżej.
C: \ Użytkownicy \ nazwa użytkownika \ appData \ Local \ arduino15 \ pakiety \ esp32 \ hardware \ esp32 \ 1.0.6 \ biblioteki \ ble \ src \ blescan.CPPPamiętaj by Odłącz Wszystkie foldery, ponieważ folder AppData w katalogu C pozostaje domyślnie ukryty. Po otwarciu pliku źródłowego BLE_SCAN .CPP Wymień poniższy warunek w kodzie.
if (m_padvertisedDeviceCallbacks)Testowanie serwera BLE ESP32 ze smartfonem
Większość nowoczesnych smartfonów współpracuje z technologią BLE w celu komunikowania się z różnymi urządzeniami, takimi jak smartwatch, urządzenia do noszenia, czujniki i inne urządzenia do automatyzacji domów. Tutaj płyta ESP32 będzie działać jako punkt dostępu. Więc połączymy telefon z Androidem z płytą ESP32.
Kod serwera BLE dla dostępu do smartfonów ESP32
Prześlij poniższy kod na płycie ESP32.
#include /*biblioteka Bluetooth zawiera* /Instalowanie aplikacji BLE w smartfonie z Androidem
Poniższe kroki poprowadzą Cię do instalacji aplikacji BLE w smartfonach i pomoże w interfejsie urządzeń mobilnych z płytkami ESP32.
Krok 1: Otwórz instalację sklepu Google Play Store Skaner BLE aplikacja.
Krok 2: Po zainstalowaniu otwórz aplikację i zezwól na wszystkie wymagane pozwolenie i pamiętaj o włączeniu mobilnego Bluetooth.
Krok 3: Teraz skanuj dostępne urządzenia Bluetooth. Połącz płytę ESP32.
Krok 4: Po podłączeniu płyty ESP32 ze smartfonem po specyfikacji płyty ESP32 będzie. Tutaj możemy zobaczyć adresy UUID i możemy czytać i pisać nowe wartości charakterystyczne.
Krok 5: Aby odczytać zapisane charakterystyczne kliknięcie wartości R. Wynik zostanie wyświetlony.
Krok 6: Aby napisać dowolny nowy charakterystyczny kliknięcie wartości W.
Krok 7: Pojawi się tutaj nowe wyskakujące okienko, możemy napisać dowolną wartość charakterystyczną i kliknąć OK.
Krok 8: Pojawi się nowa wartość, która jest napisana.
Krok 9: Możemy również zobaczyć tę samą nową charakterystyczną wartość wydrukowaną na monitorze szeregowym Arduino IDE.
Z powodzeniem podłączyliśmy urządzenie z ESP32 Ble.
Wniosek
ESP32 jest wyposażony w podwójny Bluetooth, który jest klasyczny i niski energia. Tutaj w tym artykule omówiliśmy BLE i jego różne aplikacje i działanie. Później skonfigurowaliśmy BLE z dwoma różnymi płytami ESP32 z jedną działającą jako serwer, a drugi jako skaner. W końcu podłączyliśmy nasz smartfon z serwerem ESP32 i napisaliśmy nową wartość charakterystyczną.