Marek
Guest
Tue Aug 22, 2017 10:06 am
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).
--
Pzdr.
Marek
Guest
Tue Aug 22, 2017 5:32 pm
(ostro) to jak zarejestrujesz się:
http://zsyp.eu/smieci/usbdp-bluetooth.JPG
?
Pawel
Guest
Tue Aug 22, 2017 6:30 pm
W dniu 22.08.2017 o 12:06, Marek pisze:
Quote:
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.
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
Quote:
przesyłanie danych z dongle'a
BLED112 na UART-owe porty RxD i TxD modułu BMD-300 (Nordick'a).
W tym BMD-300 musisz mieć firmware realizujący taką funkcjonalność.
Wydaje mi się, że te moduły sprzedawane są bez oprogramowania
Paweł
Grzegorz Niemirowski
Guest
Tue Aug 22, 2017 9:14 pm
Marek <trele@fele.pl> napisał(a):
Quote:
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).
Takiej naprawdę dobrej strony chyba nie ma, informacje na temat BLE są
porozrzucane. Możesz zacząć od:
https://www.safaribooksonline.com/library/view/getting-started-with/9781491900550/ch04.html
Ogólnie 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
https://www.bluetooth.com/specifications/gatt/services Klikając w daną
usługę zobaczysz jakie są w niej charakteystyki
(https://www.bluetooth.com/specifications/gatt/characteristics). 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
(https://developer.apple.com/library/content/documentation/CoreBluetooth/Reference/AppleNotificationCenterServiceSpecification/Specification/Specification.html).
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.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
Marek
Guest
Tue Aug 22, 2017 10:00 pm
On Tue, 22 Aug 2017 23:14:01 +0200, "Grzegorz Niemirowski"
<gnthexfiles@poczta.onet.pl> wrote:
Quote:
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.
--
Marek
Grzegorz Niemirowski
Guest
Tue Aug 22, 2017 10:24 pm
Marek <fake@fakeemail.com> napisał(a):
Quote:
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.
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
10. iPhone działa bardzo ładnie z BlueNRG-MS. Inne telefony z Androidem
różnie. W ogóle pisanie appek BLE na Androida to masakra:
https://www.reddit.com/r/androiddev/comments/4ofnbp/bluetooth_ble_development_is_miserable_on_android/
Z 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.
--
Grzegorz Niemirowski
http://www.grzegorz.net/
Pawel
Guest
Wed Aug 23, 2017 5:51 am
W dniu 23.08.2017 o 16:56, Marek pisze:
Quote:
On Wed, 23 Aug 2017 00:24:00 +0200, "Grzegorz Niemirowski"
gnthexfiles@poczta.onet.pl> wrote:
Niestety w przypadku BLE wcale nie jest lepiej.
To jest jakieś dramat, że z wydawało by się tak prosta funkcjonalność
jest tak spieprzona implementacyjnie. I to wcale się nie poprawia.
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ł
Pawel
Guest
Wed Aug 23, 2017 6:36 am
W dniu 23.08.2017 o 18:43, Marek pisze:
Quote:
On Wed, 23 Aug 2017 07:51:54 +0200, Pawel <nic@nic.pl> wrote:
W typowym telefonie obsługę BT i WiFi zapewniają te same układy. Tak
Wiem, ale wyłączenie Wi-Fi wcale nie naprawia BT.
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ł
Marek
Guest
Wed Aug 23, 2017 2:56 pm
On Wed, 23 Aug 2017 00:24:00 +0200, "Grzegorz Niemirowski"
<gnthexfiles@poczta.onet.pl> wrote:
Quote:
Niestety w przypadku BLE wcale nie jest lepiej.
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ć??
--
Marek
Marek
Guest
Wed Aug 23, 2017 4:43 pm
On Wed, 23 Aug 2017 07:51:54 +0200, Pawel <nic@nic.pl> wrote:
Quote:
W typowym telefonie obsługę BT i WiFi zapewniają te same układy.
Tak
Wiem, ale wyłączenie Wi-Fi wcale nie naprawia BT.
--
Marek
Marek
Guest
Thu Aug 24, 2017 5:52 am
W dniu 2017-08-22 o 23:14, Grzegorz Niemirowski pisze:
Quote:
Marek <trele@fele.pl> napisał(a):
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).
Takiej naprawdę dobrej strony chyba nie ma, informacje na temat BLE są porozrzucane. Możesz zacząć od:
https://www.safaribooksonline.com/library/view/getting-started-with/9781491900550/ch04.html
Ogólnie 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
https://www.bluetooth.com/specifications/gatt/services Klikając w daną usługę zobaczysz jakie są w niej charakteystyki
(https://www.bluetooth.com/specifications/gatt/characteristics). 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
(https://developer.apple.com/library/content/documentation/CoreBluetooth/Reference/AppleNotificationCenterServiceSpecification/Specification/Specification.html).
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.
Bardzo dziękuję za wyczerpujący opis działania BT, dużo mi to rozjaśniło.
--
Pzdr.
Marek
Marek
Guest
Thu Aug 24, 2017 5:56 am
W dniu 2017-08-22 o 20:30, Pawel pisze:
Quote:
W dniu 22.08.2017 o 12:06, Marek pisze:
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.
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
przesyłanie danych z dongle'a
BLED112 na UART-owe porty RxD i TxD modułu BMD-300 (Nordick'a).
W tym BMD-300 musisz mieć firmware realizujący taką funkcjonalność. Wydaje mi się, że te moduły sprzedawane są bez
oprogramowania
Paweł
Bardzo dziękuję za wyjaśnienie pojęcia charakterystyki w BT.
--
Pzdr.
Marek
J.F.
Guest
Thu Aug 24, 2017 9:43 am
Użytkownik "Marek" napisał w wiadomości grup
dyskusyjnych:almarsoft.6635279375316686256@news.neostrada.pl...
On Wed, 23 Aug 2017 00:24:00 +0200, "Grzegorz Niemirowski"
Quote:
Niestety w przypadku BLE wcale nie jest lepiej.
To jest jakieś dramat, że z wydawało by się tak prosta
funkcjonalność jest tak spieprzona implementacyjnie. I to wcale się
nie poprawia.
Tylko ze tu mamy Low Energy.
Byc moze nie dalo sie zrobic lepiej ... oszczedzajac energie.
J.
wchpikus
Guest
Thu Aug 24, 2017 1:36 pm
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..
Marek
Guest
Thu Aug 24, 2017 3:49 pm
On Thu, 24 Aug 2017 11:43:43 +0200, "J.F."
<jfox_xnospamx@poczta.onet.pl> wrote:
Quote:
Tylko ze tu mamy Low Energy.
Byc moze nie dalo sie zrobic lepiej ... oszczedzajac energie.
Nie ważne jak BT się nazywa działa tak samo kiepsko.
--
Marek