ESP32 obsługuje podwójny Bluetooth zawierający Bluetooth Classic i Bluetooth Low Energy (BLE). W tym artykule będziemy omawiać działanie obu tych Bluetooth.
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.
Poniżej znajdują się dwa tryby Bluetooth dostępne na płycie ESP32:
1: ESP32 Bluetooth Classic z Arduino Ide
Płyta ESP32 jest wyposażona w podwójną obsługę Bluetooth jeden jest Bluetooth Classic, a drugi to Ble (Bluetooth Low Energy). Dzisiaj będziemy omawiać tylko Bluetooth Classic. Jedyną różnicą, która istnieje między nimi obojga, polega na tym, że Bluetooth Classic może obsłużyć dużo transferu danych, ale zużywa baterię z wyższą prędkością, jednak Bluetooth Low Energy jest wariantem oszczędzającym energię, który jest używany do komunikacji z krótkimi dystansem. BLE pozostaje w trybie uśpienia, dopóki nie zostanie zainicjowany w celu przesyłania danych.
ESP32 Bluetooth Classic Serial Communication
ESP32 jest wyposażony w wbudowane moduły Bluetooth, które najpierw odbierają dane, a następnie przekazują je do procesora XTENSA. Tak więc, aby ustalić tę komunikację „BluetoothSerial” Używana jest biblioteka, która jest podobna do biblioteki szeregowej Arduino, ale jest tylko w ESP32. Poniżej przedstawiono niektóre funkcje oferowane przez Bluetooth Serial Library:
LED kontrolowany przez Bluetooth za pomocą ESP32
Napiszmy prosty kod, który może kontrolować diodę LED przy użyciu mobilnego Bluetooth przez bezprzewodową komunikację Bluetooth. Poniżej znajduje się sprzęt wymagany do kontrolowania LED za pomocą komunikacji szeregowej Bluetooth:
Okrążenie
Połącz diodę LED przy cyfrowym PIN 15 ESP32 z ujemnym zaciskiem podłączonym na GND płyty ESP32. W przypadku bezpiecznego limitu prądu możemy również podłączyć między nimi rezystor (220 omów):
Kod
Otwórz Arduino IDE i wybierz płytę ESP32 w menedżerze zarządu, aby zobaczyć, jak zainstalować płytę ESP32 w Arduino IDE. Po wybraniu płyty napisz poniższy kod w oknie edytora:
#include /*Bluetooth Serial Communication Library* /Tutaj, w powyższym kodzie, zaczęliśmy od włączenia biblioteki szeregowej Bluetooth dla ESP32. Następnie dołączyliśmy funkcje biblioteki szeregowej Bluetooth, które włączą ESP32 Bluetooth.
Następny pin LED 15 jest inicjowany i używa pinmode () Funkcja Pin LED jest ustawiona jako wyjście.
W częściowej części kodu programu sprawdzi, czy nie ma seryjnej dostępności danych Bluetooth. Jeśli dane wejściowe to 1 dioda LED, włączy się i jeśli otrzymane dane wynoszą 0 diody LED, wyłączy się.
Po przesłaniu kodu. Bluetooth na płycie ESP32 włączy się, a na monitorze szeregowym pojawi się następujący komunikat:
Instalowanie seryjnego terminalu Bluetooth na smartfonie
Potrzebujemy urządzenia Bluetooth, które może wysyłać instrukcje do ESP32, abyśmy używali smartfona z Androidem do interfejsu z ESP32 Bluetooth. Najpierw musimy zainstalować terminal seryjny w telefonie z Androidem. Postępuj zgodnie z poniższymi krokami, aby połączyć się z telefonem Android z ESP32:
Krok 1: Otwórz sklep Google Play na smartfonie i wyszukaj Serial Bluetooth Terminal. Zainstaluj poniższą aplikację:
Krok 2: Po zainstalowaniu otwórz ustawienia telefonu komórkowego Bluetooth. Wyszukaj ESP32 Bluetooth i kliknij, aby rozpocząć parowanie go z smartfonem, klikając Para:
Krok 3: Po stukaniu Para, Telefon komórkowy zacznie pary z ESP32 Bluetooth:
Krok 4: Teraz otwórz aplikację seryjnego terminalu Bluetooth i przejdź do Urządzenia Z menu bocznego:
Krok 5: Po otwarciu opcji urządzenia poprosi o pewne uprawnienia lub naciśnij ODŚWIEŻAĆ Przycisk w prawym górnym rogu:
Krok 6: Po wyskakowaniu pojawi się kliknij Ustawienia i pozwól, aby zezwolić: prosi o:
Krok 7: Teraz płyta ESP32 jest gotowa podjąć instrukcje w Bluetooth. Pod Bluetooth Classic Opcja Wybierz płytę ESP32:
Krok 8: Po wybraniu ESP32 zacznie się łączyć, a jeśli się powiedzie, a Połączony Pojawi się wiadomość:
Krok 9: Teraz możemy wysłać dowolne instrukcje, wpisując ją tutaj. Typ 1 i kliknij przycisk Wyślij, LED na płycie ESP32 włączy się. Podobnie, wpisując 0 LED wyłączy się:
Podobnie widzimy dane wyjściowe na monitorze szeregowym Arduino IDE, co odbiera:
Wyjście
LED włącza się po wysłaniu 1:
LED wyłącza się po wysłaniu 0:
Notatka: Możemy również skonfigurować przyciski dla określonych instrukcji, takich jak pokazane na obrazie poniżej. Aby to zrobić, kliknij przyciski i ustaw żądaną wartość. Tutaj ustawiliśmy dwa przyciski jeden na wysoki, a drugi dla niskiego stanu. Możesz także skonfigurować te skróty w wartościach szesnastkowych.
2: ESP32 Bluetooth Low Energy (BLE) z Arduino IDE
Ble lub Bluetooth Low Energy to tryb oszczędzania energii Bluetooth. Jego główna aplikacja obejmuje transfer danych na krótkich odległościach, takich jak wejście do drzwi, inteligentne zegarki, urządzenia do noszenia, monitorowanie ciśnienia krwi, bezpieczeństwo i automatyzacje domowe. 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 jest połączenie. To sprawia, że BLE jest bardzo wydajne i zużywa 100 razy mniej mocy niż klasyczny.
Serwer BLE i klient
Bluetooth Low Energy obsługuje urządzenie na dwa różne sposoby ze względu.
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 ma 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) jest podawany każdej usłudze i charakterystycznej. 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ć płytę 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ąć przesył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, a 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
Podany kod zostanie użyty na tablicy skanera ESP32. Otwórz IDE i prześlij kod, pamiętaj o odłączeniu innych płyt przed przesłaniem kodu 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 domowej. Tutaj ESP32 jest punktem dostępu dla urządzeń. 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 charakterystyczne wartości:
Krok 5: Aby odczytać zapisane charakterystyczne kliknięcie wartości R. Wynik zostanie wyświetlony, jak wspomniano na zdjęciu poniżej:
Krok 6: Aby napisać dowolny nowy charakterystyczny kliknięcie wartości W:
Krok 7: Pojawi się tutaj nowe wyskakujące okienko, w którym możemy napisać dowolną wartość charakterystyczną i kliknąć OK:
Krok 8: Nowa wartość, która jest napisana, pojawi się, jak pokazano na obrazie:
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óre są Bluetooth Classic i Bluetooth Low Energy. Tutaj w tym artykule omówiliśmy zarówno Bluetooth Classic, jak i BLE oraz jego różne aplikacje i działanie. Bluetooth Classic jest używany do wysokiego transferu danych, podczas gdy BLE (Bluetooth Low Energy) jest używany na krótkie odległości z mniejszymi wymaganiami zasilania. W tym artykule zawiera ostateczny przewodnik po działaniu Bluetooth ESP32 i jak je skonfigurować.