poniedziałek, 21 maja 2018

iTAG BLE - jak je odczytać?

Rozwiązania Smart Home nęcą użytkowników nieograniczonym dostępem do domowego systemu z własnego telefonu / tableta z dowolnego miejsca na świecie. Ale większość osób po początkowej fascynacji twierdzi, iż rzeczywista przydatność i wygoda takiego rozwiązania jest więcej niż dyskusyjna. Próba załączenia światła, podniesienia rolet czy otwarcia bramy telefonem zachwyci kumpla z pracy ale nie żonę. Samemu też o wiele wygodniej zrobić to jakimkolwiek pilotem niż mozolnie docierać do telefonicznej aplikacji z wirtualnym przyciskiem. Toteż spore wzięcie w moich projektach mają miniaturowe piloty na 433 MHz z 1,2 lub 3 przyciskami dedykowanymi do konkretnej funkcji. Nadeszła jednak pora by sprawdzić czy w tej roli nie będą lepsze iTAGi - bezprzewodowe przyciski oparte na nowoczesnej transmisji BLE (Bluetooth Low Energy)
Dziś trochę więcej o tych nowych gadżetach w systemach IoT.
Typowy pilot 433 MHz to przycisk, specjalizowany scalak i bateria. O obudowie nie wspominając.





Czy to rozwiązanie ma wady? Niewiele. Czasami wspomina się o bezpieczeństwie ale wtedy można zastosować pilot z kodem kroczącym. Niekiedy przeszkadza jednokierunkowość przesyłu informacji. Pilot nie ma żadnego mechanizmu potwierdzenia zdekodowania sygnału przez odbiornik. Poza tym same zalety. Prosty, tani, z długim okresem pracy na miniaturowej 12V baterii.

Czy warto wiec zmieniać coś co działa? No właśnie. Dzisiejszy wpis to próba odpowiedzi na to pytanie.


iTAGi reklamowane  są głównie jako gadżety do lokalizacji różnych ważnych elementów w naszym życiu: kluczy, bagażu, psa czy niesfornego malca.  Ale mnie najbardziej interesuje dostępny w iTAGu przycisk i możliwość dowolnego jego wykorzystania w systemach sterowania.

Podobnie jak klasyczny pilot iTAG to zestaw przycisku, scalaka i baterii. O obudowie nie wspominając. Podstawowa różnica tkwi w scalaku a w zasadzie w typie komunikacji.



W iTAGu zainstalowano pełnowymiarowy mikrokontroler z BLE mający potężne, jak na takiego mikrusa, potencjale możliwości.
Na trzy iTAGi dwa z nich zawiera scalak BEKEN 3431 a trzeci ST17H26.

ST17H26 to jakiś chiński wynalazek z trudno dostępną dokumentacją czy informacją na jego temat
Układ ten został odnaleziony też w innych modułach  - np. w wyzwalaczach do aparatu telefonu Bluetooth Shutter. Ten iTAG kupiłem najtaniej na znanym portalu (1,3$) ale o dziwo jako jedyny zadziałał bez żadnych problemów przy próbie wykorzystania go jako bezprzewodowego przycisku - patrz wpis >>>.

Dwa pozostałe przyciski zaopatrzono już w porządny mikrokontroler BEKEN 3431 (BK3431). Bez trudu odnajdziemy pełną dokumentację układu. A jest co  czytać. Niepozorna kość zawiera nieprawdopodobne możliwości jak na takie trywilne zastosowanie.



128 kB pamięci programu 16 kB RAM wszystkie podstawowe interfejsy, 48 MHz wewnętrzny zegar, 7 wejść 10 bitowych wejść analogowych no i oczywiście BLE. We wszystkich parametrach BK3431  bije na głowę ATmega328. Zastosowanie takiego procesora do odczytu przycisku, napędzania minibuzzerka i świecenia diodą wydaje się mocną przesadą. I to wszystko zapakowane w obudowie w cenie ok 1,5$. Ciekawe jak długo jeszcze takie elektroniczne barokowe figury będą wzbudzać u mnie niekłamane zdziwienie.

Na razie nie planuję by dobrać się do programu tego mikrokontrolera co chyba nie jest ani proste ani oczywiste.

W kości zaszyty jest natomiast pełen standard BLE i niewątpliwie można będzie wykorzystać d o własnych celów kilka usług (service). By odczytać co Chińczyki umieścili w środku trzeba skorzystać z monitora protokołu BLE.  Potrzebny będzie telefon lub tablet z BLE minimum 4.0 i jakieś przyjazne oprogramowanie.

Przypadkiem mam tablet z BLE na Androidzie. Z oprogramowania wszyscy polecają aplikację nRF Connect.

Oba iTAGi ładnie zgłaszają sie na ekranie początkowym po uruchomieniu skanowania. iTAG zielony to ten zaznaczony na czerwono a czarny na niebiesko.


iTAG zielony z procesorem ST17H26

Zielony iTAG ma w profilu tylko cztery podstawowe usługi: ogólną, baterii, alertu i przycisku. Trzy pierwsze są usługami standardowymi (16 bitowy UUID). Ostatnia jest usługą własną producenta sprzętu (128 bit UUID) - pod tym kodem kryje się obsługa naciśnięcia przycisku. Nie widać usługi Link Loss ale mimo to iTAG jakoś włącza alarm po utracie połączenia z klientem.


Każda z usług ma swoje dane. Można je zobaczyć naciskając pola poszczególnych usług. Pole usługi ogólnej zawiera dwie dane: name i appearance. W name zapisana jest nazwa iTAG, druga dana jest pusta. Można to odczytać naciskając strzałkę w dół po prawej stronie pozycji usługi


Kolejna usługa Battery Service pozwala odczytać poziom napięcia baterii w %. Tu jest 99%


Usługa Immediate Alert pozwala załączać i wyłączać piszczek w iTAGu. Wpisanie 0x00 wyłącza zaś 0x02 załącza alarm


Usługa producenta FFE0 ma jedną daną. Naciśniecie przycisku ustawia daną na wartość "1". Ale nie ma automatycznego kasowania tej wartości - nie jest rejestrowane zwolnienie przycisku. Toteż niezbędne jest programowe  "skasowanie" zawartości pola danych by móc ponownie rozpoznać fakt naciśnięcia przycisku


iTAG czarny z procesorem BK3431


iTAg z procesorem BK3431 ma zaszyte znacznie więcej usług



Również wewnątrz usług mamy dostępne o wiele więcej danych



Są to głównie dane informacyjne (do odczytu). Ale udostępnione są również dane sterujące reakcjami iTAGa np.


możliwość sterowania mocą nadajnika w iTAG czym możemy regulować zarówno zasięg jak i żywotność baterii, uruchamianie usługi Link Loss czyli sygnalizacji po utracie po utracie połączenia client-serwer, czy znana już możliwość załączania alarmu w iTAGu.

Najciekawsza jest jednak dla mnie usługa FFE0 tzn. obsługa przycisku. Z pozoru wygląda identycznie jak w iTAGu zielonym ale widać zasadnicze różnice.



Przede wszystkim usługa musi zostać włączona !!! Tu odbywa się poprzez naciśnięcie trzech strzałek. Powoduje to wysłanie do iTAGa wartości 0x0100 na numer UUID = 2902 otwierającej możliwość wysyłania notyfikacji.
Po tej operacji każde naciśnięcie przycisku generuje wysłanie komunikatu z wartością 0x01


Bez monitora BLE takiej informacji nie dałoby się w żaden sposób odczytać.

Na koniec pozostała jeszcze jedna tajemnicza usługa o kodzie UUID FFF0. Jak na razie nie mam pojęcia do czego można ją wykorzystać.

Wnioski

  1. iTAG to element bez wątpienia mocno dwukierunkowy. To dobra wiadomość bo ilość ewenualnych funkcji jakie może spełniać w systemach IoT znakomicie wzrasta.
  2. Kupując iTAGa nie mam pojęcia co zastanę w środku zarówno pod względem sprzętowym jak i docelowego oprogramowania. To duży minus szczególnie, że na razie nie ma szans na jego domowe przeprogrowanie
  3. Standard BLE w iTAG wydaje się być zachowany to dobry znak dla przyszłych z nim eksperymentów
  4. Z użytecznych funkcji tak na początek da się na pewno wykorzystać
  • detekcję naciśnięcia przycisku
  • włączenie alarmu w iTAGu (dzwiękowego i LEDem)
  • alarm po utracie połączenia klient-serwer
  • pomiar napięcia baterii
  • nastawę mocy nadajnika iTAGa
A to nie wszystko. Część usług z racji ich nieznajomości działania dyskretnie ominąłem w opisie.
Tak czy owak iTAG nie jest całkiem bez szans by zaistnieć w moich projektach IoT.

Ale o tym przekonam się o ile ciąg dalszy jeszcze nastąpi ...


przydatne linki
https://simplysoldered.com/cheapest-bluetooth-low-energy-tag-teardown
https://guru.multimedia.cx/bluetooth-tracking-devicestagskey-finders/
https://www.bountysource.com/issues/27726498-any-ideas-about-the-microcontroller-or-protocol-the-tag-use
https://github.com/sylvek/itracing2/issues/106
141











https://github.com/reaper7/M5Stack_BLE_client_Owon_B35T/blob/master/M5Stack_BLE_client_Owon_B35T.ino

https://github.com/nkolban/esp32-snippets/issues/502           wifi i ble razem problem


Brak komentarzy:

Publikowanie komentarza