logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Komunikacja BLE między płytką ESP32 a telefonem (z Android i iOS) - podstawy transmisji danych...

CC_PL 22 Mar 2023 20:36 1431 2
  • #1 20503551
    CC_PL
    Poziom 13  
    Posty: 484
    Pomógł: 4
    Ocena: 56
    Chcę zrobić niewielki projekt w oparciu o płytkę developerską ESP32, wraz z enkoderem i GPS-em. Jeśli muszę podać więcej szczegółów to podam, ale w skrócie:

    Projekt ma zliczać obroty enkodera i co jakiś czas, gdy użytkownik naciśnie przycisk połączony z płytką ESP32, wyzwalane będzie przerwanie IRQ, które obsłuży dwie rzeczy:

    - prześle dane - liczbę obrotów enkodera od ostatniego wyzwolenia (użycia przycisku),

    oraz

    - prześle aktualne współrzędne - dane z GPS (w miejscu w którym naciśnięto przycisk).

    To jest podstawowa funkcjonalność, którą chcę uzyskać. Będzie kilka innych rzeczy, ale nie chcę o nich pisać, żeby uprościć opis.



    Dane to będą krótkie stringi, kilkanaście znaków, maks. kilkadziesiąt. Wysyłać chcę z ESP32 do telefonu informacje za pośrednictwem Bluetooth Low Energy (BLE).

    Trochę już czytałem na temat BLE, ale mam pytania, do osób które już wdrażały BLE w ESP32 o jakieś podpowiedzi, porady i wskazówki. Dokumentacja protokołu jest rozbudowana i nie znam jeszcze wielu rzeczy.

    Z czego najlepiej skorzystać (jakie "serwisy" do przesyłania stosunkowo krótkich stringów, jak najlepiej rozwiązać parowanie urządzeń, czy warto i jak uśpić BLE na krótki czas - do kilku minut i Wasze inne rozwiązania problemów/ trudności jakie napotkaliście)?
    UUID będzie na stałe zapisane, by ułatwić parowanie obydwu urządzeń.

    Dziękuję za wszelkie porady i wskazówki!

    Myślałem, żeby z ESP32 dla ułatwienia zrobić serverem, a telefon uczynić klientem. Czy może "zwykłe" SPP tu wystarczy? (jeszcze bardziej upraszczając wystarczyłaby pewnie funkcjonalność Beacona, ale nie wiem do końca czy to dobry pomysł). To chyba by wystarczyło, aczkolwiek, nie wiem czy to się sprawdzi na wypadek jakiejś utraty łączności / błędów - nie mogę pozwolić żeby część danych nie dotarła do telefonu, a więc dobrze byłoby potwierdzać odebranie danych (odebranie i poprawność, po walidacji w telefonie). Nie wiem na ile można polegać na połączeniu BLE (choć odległość urządzenia od telefonu nie przekroczy kilku metrów).

    Z góry dziękuję za pomoc i podpowiedzi!
  • Pomocny post
    #2 20504076
    TvWidget
    Poziom 38  
    Posty: 4391
    Pomógł: 471
    Ocena: 691
    1. W tym wypadku najlepiej jeśli smartfon będzie klientem a czujnik serwerem.
    2. Profil SPP nie dotyczy BLE.
    3. Stos BLE zapewnia integralność i poprawność danych. Nie trzeba nic dodatkowo sprawdzać.
    4. Dane w BLE mogą być wysyłane z potwierdzeniem lub bez niego. Wszytko dzieje się automatycznie. tzn. dba o to stos BLE.
    5. Zakładam, że urządzenie nie musi pasować do jakiegoś istniejące sytemu. Jakie wiec serwisy i charakterystyki chcesz użyć nie ma znaczenia.
    6. Określenie "parowanie" w BLE zwykle oznacza "połączenie".
    7. Posługiwanie się UUID jako identyfikatorem urządzenia w tym zastosowaniu raczej nie ma sensu.
  • #3 20504319
    CC_PL
    Poziom 13  
    Posty: 484
    Pomógł: 4
    Ocena: 56
    Bardzo dziękuję za odpowiedzi! W razie dodatkowych pytań wrócę do wątku. A obecnie sprawdzam napotkane w sieci rozwiązania.
REKLAMA