Bluetooth: profile, atrybuty, charakterystyki

Witajcie,

znacie jakąś fajną stronę lub PDF nt bluetooth, na której będzie po ludzku wytłumaczone, co to są te profile, atrybuty, charakterystyki. Przeglądałem sporo dokumentacji i dla mnie te pojęcia i ich przeznaczenie to jakaś abstrakcja. Szczególnie interesuje mnie przesyłanie danych z dongle'a BLED112 na UART-owe porty RxD i TxD modułu BMD-300 (Nordick'a).

Reply to
Marek
Loading thread data ...

(ostro) to jak zarejestrujesz się:

formatting link

Reply to
invalid unparseable

W dniu 22.08.2017 o 12:06, Marek pisze:

Charakterystykę można porównać do rejestru procesora Taki rejestr może być "RW", "R","W". Czasem dostęp wymaga ustawienia czegoś w innym rejestrze, Identycznie jest dostępem do charakterystyk. Mają one też atrybuty typu "RW", "R", "W". Rejestr uP ma swoją nazwę symboliczną (odpowiednik UUID charakterystyki) i fizyczny adres (odpowiednik uchwytu charakterystyki). Nazwa symboliczna rejestru jest unikana w ramach danego układu peryferyjnego (UART, ADC, I2C ..) Podobnie jest UUID charakterystyki. Jest ona unikalna w ramach danego serwisu.

Szczególnie interesuje mnie

W tym BMD-300 musisz mieć firmware realizujący taką funkcjonalność. Wydaje mi się, że te moduły sprzedawane są bez oprogramowania

Paweł

Reply to
Pawel

Marek snipped-for-privacy@fele.pl napisał(a):

Takiej naprawdę dobrej strony chyba nie ma, informacje na temat BLE są porozrzucane. Możesz zacząć od:

formatting link
korzystasz z profilu Generic Attributes (GATT). Tak jak napisał Paweł, charakterystyki można porównać do rejestrów. Ponieważ są one zorganizowane wewnątrz usług, bardziej byłbym skłonny porównać charakterystyki do plików a usługi do folderów. Gdy połączysz się z urządzeniem, możesz wylistować dostępne na nim usługi i charakterystyki. Standardowe usłgi znajdziesz na stronie
formatting link
Klikając w daną usługę zobaczysz jakie są w niej charakteystyki
formatting link
Te standardowe mają 16-bitowe UUIDy. Wymyślając swoje usługi i charakterystyki zwykle używa się 128-bitowych charakterystyk. UUIDy pozwalają nam zorientować się jakie usługi i charakterystyki są na urządzeniu. Np. czy ma ono usługę Battery Service z charakterystyką Battery Level, z której będziesz mógł odczytać stan baterii. Gdy już mamy nawiązane połączenie, korzystamy z uchwytów. Nie trzeba więc ciągle odwoływać się do długich UUIDów. Uchwyty to kolejne liczby identyfikujące usługi, charakterystyki oraz deskryptory charakterystyk, np.:

1 usługa pierwsza 2 pierwsza charakterystyka pierwszej usługi 3 wartość charakterystyki 4 deskryptor charakterystyki 5 druga charakterystyka pierwszej usługi 6 wartość drugiej charakterystyki pierwszej usługi 7 deskryptor tej charakterystyki 8 druga usługa 9 pierwsza charakterystyka drugiej usługi 10 wartość charakterystyki 11 deskryptor Atrybuty to m.in. R,W ale też notify i indicate, dzięki którym urządzenie może Cię informować o tym, że zmieniła się wartość charakterystyki.

Trzeba dobrze zrozumieć na czym polega filozofia GATT. Urządzenie wystawia Ci charakterystyki, które można porównać do małych plików lub rejestrów. Jeśli kojarzysz Modbus, to jest tu pewna analogia. Z tym, że tutaj dodatkowo jest to zorganizowane w usługi. Masz więc ustrukturyzowane dane, które możesz odczytywać i zapisywać. Możesz też dostawać powiadomienia o zmianach. Nie ma czegoś takiego jak port szeregowy, że leci Ci dwustronny strumień bajtów. Jak ktoś chce, może sobie port szeregowy symulować. Wystarczy zapisywać dane do wybranej charakterystyki i odbierać je przez notify albo indicate. W GATT założenie jest inne, jest określona struktura punktów wymiany konkretnych danych, takich jak stan baterii, czas, ciśnienie, wilgotność, temperatura czy waga. Lub też dowolne inne. Dobrym przykładem możesz być tutaj Apple Notification Center Service

formatting link
Usługa ta posiada 3 charakterystyki, za pomocą których iPhone może powiadamiać Twoje urządzenie o notyfikacjach. Warto popatrzeć m.in. na struktury danych.

Reply to
Grzegorz Niemirowski

Wszystko to takie mądre ale jak dotąd od 10 lat przynajmniej nie spotkałem się ze stabilnym pieczeniem bt audio np. telefon - słuchawka. Syabilne czyli ZAWSZE zadziała. Jeszcze takiego zestawu nie miałem.

Reply to
Marek

Marek snipped-for-privacy@fakeemail.com napisał(a):

Niestety w przypadku BLE wcale nie jest lepiej. Mam Huawei P9 Lite. Połączyć się z niego do BlueNRG-MS to cud. A PC z najtańszym donglem z Allegro łączy się bez problemu. Ale pod warunkiem, że jest na nim konkretna wersja Windows

  1. iPhone działa bardzo ładnie z BlueNRG-MS. Inne telefony z Androidem różnie. W ogóle pisanie appek BLE na Androida to masakra:
    formatting link
    kolei na Linuksie bywa różnie, jako tako działa. Z modułów, to ładnie działał mi nrf52, dużo lepiej od BlueNRG-MS.
Reply to
Grzegorz Niemirowski

W dniu 23.08.2017 o 16:56, Marek pisze:

W typowym telefonie obsługę BT i WiFi zapewniają te same układy. Tak jest taniej. Oczywiście jednoczesne korzystanie z BT i WiFi nie jest możliwe. Usiłuje się ten problem zamaskować różnymi sztuczkami. Zwykle stosuje się szybkie przełączanie układów. Niestety to rozwiązanie w przypadku BT ma poważną wadę. Nawiązanie połączenia wymaga wcześniejszego odebrania pakietu rozgłoszeniowego. Są one nadawane typowo co około 1..2 sek. Ten podział czasu pomiędzy WiFi a BT powoduje, że statystycznie odbierany np. co trzeci pakiet. To jednak tylko statystyka. Czasem może się jednak zdarzyć, że nawet przez 30 sek. nic nie zostanie odebrane. Nawiązanie połączenia w takich warunkach graniczy z cudem. Czym szybciej urządzenie się rozgłasza tym większe szanse na udane połączenie. Nie ma jednak szans na uzyskanie 100%.

Paweł

Reply to
Pawel

Wyłącznie WiFi nie wpływa na to co który pakiet jest odbierany. Mam urządzenie wysyłające numerowane pakiety rozgłoszeniowe. Udało mi się odebrać na Androidzie jak i Windows max. 30% wysłanych pakietów. Przy pomocy zewnętrznego dongla obsługiwanego z własnej aplikacji jest to 100%.

Paweł

Reply to
Pawel

To jest jakieś dramat, że z wydawało by się tak prosta funkcjonalność jest tak spieprzona implementacyjnie. I to wcale się nie poprawia. Co ciekawe w przypadku np. telefonów problem wcale nie jest w hardwarze (modułach) tylko w sofcie. W miarę działający telefon po aktualizacji systemu nagle ma problem z bt, czyli problem nie jest w sprzęcie. Skoro bt jest tak zależny od "user space" (co jest absurdem), to dlaczego nie przenosi się obsługi do wew. modułu, tak aby kretyni od (dowolnego) osa nie mogliby tego już popsuć??

Reply to
Marek

Wiem, ale wyłączenie Wi-Fi wcale nie naprawia BT.

Reply to
Marek

W dniu 2017-08-22 o 23:14, Grzegorz Niemirowski pisze:

Bardzo dziękuję za wyczerpujący opis działania BT, dużo mi to rozjaśniło.

Reply to
Marek

W dniu 2017-08-22 o 20:30, Pawel pisze:

Bardzo dziękuję za wyjaśnienie pojęcia charakterystyki w BT.

Reply to
Marek

Użytkownik "Marek" napisał w wiadomości grup dyskusyjnych: snipped-for-privacy@news.neostrada.pl... On Wed, 23 Aug 2017 00:24:00 +0200, "Grzegorz Niemirowski"

Tylko ze tu mamy Low Energy. Byc moze nie dalo sie zrobic lepiej ... oszczedzajac energie.

J.

Reply to
J.F.

To fakt, teraz działam z wt32 Bluegiga i przy włączonym wifi w telefonie zdarza się ze blue rwie, czasami nie.. Wyłączenie wifi w telefonie pomaga. Co do samego blue, jest stabilne, nie ma mowy o rwaniu ani o utracie pakietów..

Reply to
wchpikus

Nie ważne jak BT się nazywa działa tak samo kiepsko.

Reply to
Marek

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.