- Pierwsze kroki z ESP32 Bluetooth
- Zrozumieć Bluetooth Low Energy (BLE) i ESP32 Classic Bluetooth
- Przygotowanie Arduino IDE dla ESP32
- Szeregowy program Bluetooth dla ESP32
- Testowanie szeregowego Bluetooth z ESP32
Moduły Bluetooth, takie jak HC-05 i HC-06, są łatwe w konfiguracji i szybkie w użyciu z Arduino IDE, ale mają swoje ograniczenia, takie jak wysokie zużycie energii i działają na starym Bluetooth V2.0. Niedawno dostałem nowy zestaw ESP32 DEV, moduły te mają mnóstwo funkcji, takich jak wbudowane Wi-Fi i Bluetooth, liczne piny ADC i DAC, obsługa audio, obsługa kart SD, tryb głębokiego uśpienia itp. Prawie ma wszystko do tworzenia projektów IoT.
I tak jak chciałby to każdy hobbysta, ESP32 jest teraz oficjalnie obsługiwany przez Arduino IDE. Wcześniej musimy wykonać ogromne obejście z Biblioteką Neila Kolbansa, ale teraz dzięki ciężkiej pracy tego gościa programowanie ESP32 z Arduino IDE stało się piekielnie. W związku z tym uruchomiłem swoje Arduino IDE i przeszedłem przez kilka przykładowych programów BLE, dzięki którym nic nie zrozumiałem. Po długim czasie surfowania i youtubingu zdałem sobie sprawę, że jest dużo więcej rzeczy do zrozumienia, jeśli musisz pracować z Bluetooth Low Energy (BLE) za pomocą ESP32. Postanowiłem opisać BLE w osobnych artykułach, więc tutaj użyjemy klasycznego szeregowego Bluetooth ESP32 do przełączania diody LED za pomocą smartfona. Jeśli chcesz sprawdzić, jak korzystać z funkcji BLE, przeczytaj ten artykuł na temat serwera ESP32 BLE i klienta BLE ESP32
Pierwsze kroki z ESP32 Bluetooth
Pierwszym programem, który chciałem wypróbować, był prosty program, za pomocą którego mogę włączać i wyłączać diodę LED w aplikacji terminala Bluetooth w telefonie komórkowym, podobnie jak stare dobre HC-05 dni. Ale okazuje się, że Bluetooth Low Energy (BLE) nie jest do tego wcięty. Odkryłem również, że w module ESP32 są dwa rodzaje Bluetooth, jeden to Classic Bluetooth, a drugi to BLE Bluetooth Low Energy. Dobrze, ale dlaczego?…. dlaczego mamy dwa typy Bluetooth i czego powinienem używać w moim projekcie?
Zrozumieć Bluetooth Low Energy (BLE) i ESP32 Classic Bluetooth
Bluetooth Low Energy, jak nazwa wskazuje, zużywa mniej energii niż klasyczny Bluetooth. Osiąga się to poprzez wysyłanie danych w razie potrzeby z predefiniowanymi okresowymi aktualizacjami. Ale w przeciwieństwie do klasycznego Bluetooth nie służy do przesyłania plików ani muzyki. Czy zastanawiałeś się kiedyś, w jaki sposób Twój telefon automatycznie identyfikuje, że sparowane urządzenie Bluetooth jest urządzeniem audio, laptopem lub telefonem, być może zauważyłeś również, że poziom naładowania baterii w bezprzewodowym odtwarzaczu audio lub opasce fitness jest automatycznie wyświetlany na pasku stanu Twój telefon komórkowy; wszystko to jest możliwe dzięki charakterystyce urządzeń BLE. Urządzenie BLE współpracuje z Bluetooth V4.0 i może pracować z niskim poborem mocy jako serwer lub klient, który sprawia, żeBLE to idealny wybór dla lamp ostrzegawczych, inteligentnych zegarków, opasek fitness itp.
Z drugiej strony klasyczny Bluetooth to po prostu zwykły stary Bluetooth, którego używamy do przesyłania plików i innych danych. Prawie wszystkie urządzenia BLE mają powiązaną z nim klasyczną funkcjonalność Bluetooth. Bluetooth używany w modułach takich jak HC-05 jest wersją klasycznego Bluetooth o nazwie Bluetooth SSP (Serial Port Protocol), co oznacza, że Bluetooth jest zgodny ze standardowym protokołem szeregowym, który ułatwia wysyłanie i odbieranie danych bez większego narzutu. Pod koniec tego samouczka dowiemy się, jak korzystać z funkcji szeregowego Bluetooth w ESP32.
W tym artykule użyjemy funkcji Serial Bluetooth w ESP32, aby sparować go ze smartfonem i użyć dowolnej istniejącej aplikacji terminalu Bluetooth ze sklepu Play, aby wysyłać polecenia do ESP32 i odpowiednio przełączać wbudowaną diodę LED.
W kolejnych artykułach zajmiemy się ESP32 BLE jako serwerem i klientem. Serwer BLE jest zwykle używany do wysyłania danych BLE do innych urządzeń Bluetooth, a klient BLE jest używany do skanowania innych urządzeń BLE, a zatem działa jako sygnał nawigacyjny.
Przygotowanie Arduino IDE dla ESP32
Zwróć uwagę, że Arduino IDE domyślnie nie obsługuje płyty ESP32; musisz je pobrać i zainstalować za pomocą menedżera tablicy. Jeśli jest to Twój pierwszy program z ESP32, postępuj zgodnie z tym samouczkiem wprowadzającym, aby dodać kartę ESP32 do Arduino i przesłać szkic testowy.
Co więcej, możesz wykonać więcej projektów z ESP32, bez używania z nim żadnego mikrokontrolera.
Szeregowy program Bluetooth dla ESP32
Kompletny program do przełączania diody LED za pomocą ESP32 Bluetooth znajduje się na końcu tej strony. Pod tym nagłówkiem podzielmy kod na małe fragmenty i spróbujmy je zrozumieć. Jeśli korzystałeś już z innych modułów Bluetooth, takich jak HC-05, ten przykładowy program ESP32 Bluetooth Classic jest bardzo podobny.
Ideą programu jest zainicjowanie połączenia szeregowego Bluetooth za pomocą ESP32 i nasłuchiwanie danych ze sparowanych urządzeń. Jeśli przychodzące dane to „1” to włączamy diodę, a jeśli jest „0” to wyłączamy diodę. Rozpoczynamy nasz program od dodania pliku nagłówkowego BluetoothSerial, który sprawia, że ESP32 Bluetooth działa jako SSP Bluetoth.
#include "BluetoothSerial.h" // Plik nagłówkowy dla Serial Bluetooth, zostanie dodany domyślnie do Arduino
Za tą biblioteką dzieje się wiele rzeczy, ale zdecydowaliśmy się nie zagłębiać w nią, aby wszystko było proste. Następną rzeczą, której potrzebujemy, jest obiekt do naszych operacji związanych z Bluetooth. Tutaj nazwałem moje jako ESP_BT , ale możesz wybrać dowolną nazwę.
BluetoothSerial ESP_BT; // Obiekt dla Bluetooth
Następnie wewnątrz funkcji void setup () . Mamy rozpocząć komunikację szeregową o szybkości transmisji 9600 i zainicjować sygnał Bluetooth z nazwą. Tutaj nazwałem go jako „ESP32_LED_Control ”, będzie to nazwa, która zostanie znaleziona przez nasz telefon podczas próby sparowania. Wreszcie zadeklarowałem wbudowany pin LED jako pin wyjściowy, ponieważ zamierzamy go przełączyć na podstawie sygnału Bluetooth.
void setup () { Serial.begin (9600); // Uruchom monitor szeregowy w 9600 ESP_BT.begin ("ESP32_LED_Control"); // Nazwa Twojego sygnału Bluetooth Serial.println ("Urządzenie Bluetooth jest gotowe do sparowania"); pinMode (LED_BUILTIN, OUTPUT); // Określ, że pin LED jest wyjściowy }
Wewnątrz nieskończonej pętli pustych funkcji, możemy sprawdzić, czy nie ma wszelkie dane pochodzące z modułu Bluetooth, a jeżeli tak, to dane są odczytywane i zapisywane w zmiennej przychodzące . Drukujemy również tę wartość na monitorze szeregowym, aby sprawdzić, co jest odbierane przez Arduino.
if (ESP_BT.available ()) // Sprawdź, czy otrzymujemy cokolwiek z Bluetooth { incoming = ESP_BT.read (); // Przeczytaj, co otrzymaliśmy Serial.print ("Received:"); Serial.println (przychodzący);
Teraz wszystkie otrzymane dane są przechowywane w zmiennej przychodzącej , dzięki czemu możemy bezpośrednio porównać tę zmienną z wartością oczekiwaną i wykonać wymaganą akcję. Ale wartość wysłana z Bluetooth będzie miała postać znaku, a Arduino odczyta wartość dziesiętną znaku, który jest wysyłany z telefonu. W naszym przypadku dla znaku „0” wartość dziesiętna będzie wynosić 48, a dla znaku „1” wartość dziesiętna będzie wynosić 49. Możesz zapoznać się z wykresem ASCII, aby zrozumieć, jaka będzie wartość dziesiętna dla każdego znaku.
Tutaj porównaliśmy przychodzącą zmienną z 48 i 49, aby sprawdzić odpowiednio 0 i 1. Jeśli jest to 1, to wyłączamy diodę LED, a także drukujemy wiadomość potwierdzającą z powrotem do Bluetooth, mówiącą, że dioda LED została wyłączona i odwrotnie dla 0.
if (przychodzące == 49) { digitalWrite (LED_BUILTIN, HIGH); ESP_BT.println ("Dioda włączona"); } if (przychodzące == 48) { digitalWrite (LED_BUILTIN, LOW); ESP_BT.println ("Dioda wyłączona"); }
Testowanie szeregowego Bluetooth z ESP32
Podłącz ESP do Arduino IDE i wybierz odpowiednią kartę i port, jak omówiono w samouczku wprowadzającym. Ponieważ jest to 3 rd menedżer deska partia może potrwać trochę dłużej, aby uzyskać kod skompilowany i przesłany. Po przesłaniu uruchom monitory szeregowe (tylko do debugowania) i otwórz ustawienie Bluetooth w telefonie. Powinieneś znaleźć urządzenie Bluetooth o nazwie ESP32_LED_Control sparowane z.
Teraz możesz otworzyć dowolną aplikację terminala Bluetooth na swoim smartfonie, ja używam tego o nazwie „Terminal Bluetooth”, który został pobrany z Google App Store. Połącz aplikację Bluetooth z urządzeniem, które właśnie sparowaliśmy, wpisz 1 i naciśnij Wyślij.
Moduł ESP32 powinien go odebrać i włączyć diodę LED zgodnie z naszym programem, a także dać komunikat z potwierdzeniem, że dioda LED jest włączona, jak na powyższym zrzucie ekranu. Możesz również sprawdzić monitor szeregowy, który pokaże dane odbierane przez ESP32 Bluetooth w formacie dziesiętnym, to znaczy, że Arduino odczyta 48 dla 0 i 49 dla 1, jak wyjaśniono wcześniej. Migawka mojego okna terminala jest pokazana poniżej.
Podobnie powinieneś być w stanie wyłączyć diodę LED, wysyłając 0 z aplikacji mobilnej. Cała praca jest pokazana na poniższym filmie. Mam nadzieję, że zrozumiałeś samouczek i nauczyłeś się czegoś przydatnego. Jeśli masz jakiekolwiek wątpliwości, zostaw je w sekcji komentarzy poniżej lub skorzystaj z naszych forów, aby uzyskać inną pomoc techniczną.