Spisu treści:

Jak korzystać z Bluetooth (BLE) z ESP32: 3 kroki
Jak korzystać z Bluetooth (BLE) z ESP32: 3 kroki

Wideo: Jak korzystać z Bluetooth (BLE) z ESP32: 3 kroki

Wideo: Jak korzystać z Bluetooth (BLE) z ESP32: 3 kroki
Wideo: Jak dodać urządzenie Bluetooth przez ESP do Home Assistant 2024, Wrzesień
Anonim

#####NOTATKA#####

Metoda pokazana w tej instrukcji jest stara i przestarzała. Obejrzyj ten film, aby zapoznać się z najnowszą metodą.

###############

Podczas gdy ESP32 może pochwalić się obszerną listą funkcji (Wikipedia), największą cechą, która przyciąga wzrok, jest wbudowany bluetooth v4.2 z obsługą BLE. Ale to stwierdzenie może być mylące, podczas gdy sprzęt jest dostępny, brakuje obsługi oprogramowania do korzystania z Bluetooth. (Jest w trakcie opracowywania)

Dla tych, którzy nie wiedzą, czym jest BLE, oznacza Bluetooth Low Energy. Jest to protokół Bluetooth, który znacznie zmniejsza zużycie energii w porównaniu z „klasycznym” Bluetoothem.

W tej instrukcji pokażę Ci, jak możesz wykorzystać ograniczone zasoby (oprogramowania) do Twojej dyspozycji, aby przesłać dane z płyty ESP32 do telefonu przez BLE.

Kilka zastrzeżeń…

Kilka rzeczy, o których powinienem wspomnieć, zanim przejdziesz dalej z tym przewodnikiem.

Uwaga 1: Kiedy mówię, że obsługa Bluetooth nie jest jeszcze dostępna, mam na myśli środowisko programistyczne arduino.

Wsparcie bardzo dobrze może być dostępne w oficjalnym SDK, jak również w IDF, ale nie znalazłem dla nich żadnych kompetentnych instrukcji.

Uwaga 2: Metoda, której używam, jest w dużym stopniu obejściem problemu, a nie tym, jak BLE ma idealnie działać. Biblioteki obsługującej tworzenie usług w BLE nie ma tutaj dla środowiska arduino.

Jedyną rzeczą, którą możesz niezawodnie zrobić, jest stworzenie Beacona, który reklamuje swoją nazwę. Komentarz na YouTube ujął to bardzo elegancko: „LOL, brutalny hack. Ale co możesz zrobić?”

Uwaga 3: Jedynym rodzajem danych, które możesz wysłać, jest ciąg.

Możesz bardzo dobrze zdecydować się na kodowanie i dekodowanie innych rodzajów danych do iz ciągu, ale to wykracza poza zakres tego przewodnika.

Krok 1: Przykładowa kompilacja

Image
Image
Przykładowa kompilacja
Przykładowa kompilacja
Przykładowa kompilacja
Przykładowa kompilacja
Przykładowa kompilacja
Przykładowa kompilacja

Jeśli jesteś tu tylko po wyjaśnienie, możesz pominąć ten krok, ale przejście przez niego może dać ci trochę więcej jasności..

Najpierw zbuduję przykładowy projekt, a następnie postaram się wyjaśnić, jak to działa i jak można zreplikować komunikację Bluetooth. Zbudujemy przenośny czujnik temperatury, który będzie przesyłał dane na żywo do Twojego smartfona. Kompilacja może działać przez kilka dni na jednym li-po i łatwo demonstrować zalety BLE.

Możesz użyć modułu jako podstawki do izolowania napojów i otrzymywać powiadomienie, gdy tylko napój osiągnie optymalną temperaturę. Ponieważ byłoby to parodią, gdybyś musiał popijać herbatę, która miała stopień powyżej 40.

Jedyny sprzęt, którego potrzebujesz, to płytka ESP32 i cyfrowy czujnik temperatury. Moja płyta obsługuje zewnętrzną baterię, więc używam li-po 3,7 V, które uratowałem ze starego urządzenia, aby uczynić ten projekt przenośnym.

Sprzęt komputerowy

Połączenia czujnika temperatury są proste. Czerwony przewód łączy się z 3.3v, czarny łączy się z masą (gnd), żółty łączy się z GPIO 2, które na mojej płycie jest oznaczone jako D9. Podłącz rezystor 4,7 kΩ między czerwonym i żółtym przewodem. Nie używam rezystora, zamiast tego używam 3-pinowego terminala z wtyczką, który był dołączony do mojego czujnika. Posiada wbudowany rezystor podciągający.

Li-po naprawdę powinno być podłączone za pomocą złącza JST, ale nie mogłem się martwić, aby go kupić, więc po prostu włożyłem kilka (żeńskich do żeńskich) kabli połączeniowych do złącza i przylutowałem kolejną parę do zacisków akumulatora. Zapewnia to niezawodne połączenie i prowizoryczny wyłącznik zasilania.

Teraz jako obudowę projektu używam dysku styropianowego, który został wycięty z większego arkusza. To sprawia, że jest to świetny izolator. Kolejny, znacznie mniejszy dysk jest przyklejony na górze, ale nieco z boku. Służy do owinięcia dodatkowej długości przewodów, aby nie zwisały w całym miejscu. Po obfitym użyciu kleju i małym otworze na sondę czujnika, możesz przejść do oprogramowania.

Oprogramowanie

Jeśli nie masz jeszcze zainstalowanego arduino IDE, przejdź do tego linku, aby je pobrać. Oprogramowanie arduino domyślnie nie zawiera definicji płyt dla różnych płyt ESP32. Aby uzyskać je, przejdź do tego linku i pobierz pliki w postaci zip. Musisz je rozpakować do tej lokalizacji:

C:/Użytkownicy//Dokumenty/Arduino/sprzęt/espserrif/ESP32

Gdzie jest twoja nazwa użytkownika na twoim komputerze. Upewnij się, że różne pliki są dostępne w folderze ESP32 i nie znajdują się w innym folderze.

Teraz, jeśli uruchomisz oprogramowanie arduino i przejdziesz do narzędzi->płytki, powinieneś zobaczyć różne płyty ESP32 podczas przewijania w dół.

Większość cyfrowych czujników temperatury używa protokołu OneWire do komunikacji z mikrokontrolerami, więc musimy pobrać bibliotekę. Przejdź do szkicu->włącz bibliotekę->zarządzaj bibliotekami i wyszukaj onewire i zainstaluj bibliotekę, która ma zbyt wielu autorów. Nie potrzebujesz koncentratora onewire. Zignoruj to.

Teraz możesz pobrać i otworzyć kod dołączony do tego kroku (temperatura-example.ino).

Jeśli używasz innego czujnika ode mnie, będziesz musiał odpowiednio zmienić kod. Zastąp kod w getTemp(). Wystarczy zwrócić ostateczną temperaturę w postaci

Powrót;

Gdzie jest pływak zawierający temperaturę.

Podłącz płytkę, wybierz odpowiednią płytkę i port spod narzędzi i kliknij przesyłanie.

Jeśli kod odmawia wgrania, odłącz czujnik i podłącz GPIO 0 do masy. Przywróć połączenia po przesłaniu.

Twój ESP powinien teraz krzyczeć światu o temperaturze twojej kawy, ale potrzebujesz kogoś, kto to zrozumie.

Aplikacja na Androida

Przepraszam użytkowników iPhone'a (… nie do końca).

Pobierz apk stąd i zainstaluj go. Po uruchomieniu aplikacji zostaniesz powitany bardzo prostym interfejsem.

Jeśli pojawi się komunikat o błędzie „Reklama nie jest obsługiwana”, kliknij OK i zignoruj go, ale jeśli pojawi się komunikat „BLE nie jest obsługiwany”, oznacza to, że Twój telefon nie ma Bluetooth 4.0 lub nowszego i nie będzie mógł działać Aplikacja.

Upewnij się, że Bluetooth w telefonie jest włączony i kliknij „Rozpocznij skanowanie”, dopóki esp jest w zasięgu i jest włączony, powinieneś otrzymywać pewną wartość temperatury.

Możliwe błędy:

  • -1000:: Oznacza to, że Twoje urządzenie nie mogło znaleźć ESP. upewnij się, że Bluetooth jest włączony i spróbuj ponownie uruchomić ESP.
  • SNA:: Oznacza to, że Twój telefon odbiera dane z ESP, ale sam ESP nie mógł znaleźć czujnika temperatury na GPIO 2. Upewnij się, że połączenia są bezpieczne, sprawdź, czy używasz rezystora o prawidłowej wartości. Sprawdź dokładnie na schemacie płyty, czy jesteś podłączony do GPIO 2, a nie do pinu oznaczonego jako D2.

Krok 2: Wyjaśnienie

Normalnie BLE działa tak, że urządzenie reklamuje swoją nazwę jak sygnał nawigacyjny, nazwa ta może być widziana przez każdego i służy do identyfikacji urządzenia. Następnie urządzenie może tworzyć różne usługi, które są widoczne dla innych, gdy się z nim łączą. Usługi te mogą mieć różne strumienie danych.

Dla np. Urządzenie o nazwie „Stacja pogodowa” może być pod nią obsługiwane, jak „Temperatura”, „Wilgotność” i „Wiatr”. Gdy inne urządzenie BLE, takie jak smartfon, skanuje w poszukiwaniu urządzeń, zobaczy Stację Pogodową, a gdy się z nią połączy, będzie mogło odbierać strumienie danych w ramach odpowiadających różnym usługom.

Biblioteki (dla ESP32), które są obecnie dla nas dostępne, pozwalają nam stworzyć sygnalizator, który inni mogą odkryć, ale to jest jego zasięg. Nie możemy tworzyć usług ani żadne urządzenie nie może się z nimi połączyć.

Tak więc wysyłam dane bez tworzenia usług za pomocą techniki podobnej do protokołu WiFi o nazwie Beacon Stuffing. Oznacza to, że dołączam dane do wysłania w samej nazwie beacon. Dzięki temu mogę reklamować dane bez konieczności łączenia się innych urządzeń z beaconem.

ble.początek(komunikat beacon); //beaconMsg to reklamowana nazwa

Korzystamy z biblioteki SimpleBLE do tworzenia beacona o nazwie w formacie ESP. Gdzie „ESP” zawsze pozostaje niezmienione na początku nazwy i jest zastępowane najnowszymi danymi zwracanymi przez funkcję getValue() co 100 milisekund.

float getValue(){zwróć czujnikValue;}

Aplikacja na Androida wyszukuje nazwy urządzeń BLE zaczynające się od „ESP”, po znalezieniu dzieli nazwę i wyświetla tylko dane od końca.

Komunikacja jest tylko w jedną stronę, aplikacja nie odsyła niczego.

Krok 3: Wniosek

W ostatecznym rozrachunku ta metoda nie zastępuje poprawnie zaimplementowanej biblioteki BLE, ale może wystarczyć, aby przeczekać niektóre projekty, dopóki Arduino nie otrzyma pełnej obsługi BLE. Mam nadzieję, że te instrukcje były dla ciebie pomocne.

WIELKIE podziękowania dla DFRobot.com za przesłanie mi tych produktów:

  • Płyta ESP32 FireBeetle
  • Tarcza Rozszerzająca FireBeetle
  • Czujnik temperatury DS18B20

Niedawno znalazłem tę bibliotekę. ReadME twierdzi, że możesz połączyć się z innymi urządzeniami BLE w celu odbierania danych (nie możesz się reklamować). Nie próbowałem, ale możesz to sprawdzić, jeśli jesteś zainteresowany.

Film z projektu można obejrzeć na: YouTube

Zalecana: