micro:bit – bezprzewodowe wgrywanie programów przez Bluetooth

Na Facebookowej grupie PGUM (Polska Grupa Użytkowników micro:bit) padło pytanie o możliwość programowania BBC micro:bit z użyciem tabletu. Był to pretekst do poważniejszych testów i poszukiwań sposobów programowania tej płytki. Zasadniczo pomysły były dwa: podłączyć micro:bita z tabletem za pomocą kabla USB OTG (niestety okazało się, że nie każdy tablet i telefon, wspiera tę metodę) lub wykorzystać metodę programowania OTA („Over The Air”) przy użyciu Bluetooth. Ta druga, mi osobiście wydała się bardziej kusząca.

Jeżeli zastanawiasz się, czy płytkę BBC micro:bit można zaprogramować bezprzewodowo, bez użycia kabla USB, bez laptopa czy komputera stacjonarnego, dysponując jedynie smartfonem lub tabletem – odpowiedź brzmi: TAK, da się! Czy jest to skomplikowane? Nieszczególnie.

Niemniej przygotuj się na to, że napotkasz wiele małych irytujących drobiazgów, na których można się potknąć. Moim zdaniem implementacja Bluetooth w BBC micro:bit pozostawia wiele do życzenia. W tym artykule opiszę jak zrobić to od początku do końca, na co zwrócić uwagę i dlaczego tak prosta w teorii czynność, w praktyce okazuje się tak trudna do wykonania.

1. Wyczaruj program!

Po pierwsze potrzebujemy program, który chcemy wgrać. Nie będę pisał o tym jak uruchomić w przeglądarce edytor MakeCode. Zakładam, że tę część masz już za sobą i doskonale wiesz jak pobrać plik HEX z programem, który chcesz wgrać. Domyślnie ląduje on w katalogu „Pobrane”, tudzież „Downloads”. I tam ma pozostać. Jeżeli brakuje Ci inspiracji, to w zasobach pgum.pl znajdziesz wiele ciekawych projektów.

2. Pobierz aplikację na telefon lub tablet

Po drugie potrzebujemy aplikacji przez którą będziemy mogli wgrać plik HEX do micro:bita. Co ciekawe jest to aplikacja stworzona przez firmę Samsung i jest dostępna dla systemów Android oraz iOS (ale iOS to lekko inna historia). Aplikacja ta nie cieszy się zbyt dobrą opinią i została oceniona bardzo nisko. Jest masa negatywnych komentarzy. Ludzie skarżą się, że parowanie nie działa, że nie da się przesyłać plików, itp. Dlaczego tak jest? Czy ta aplikacja jest zła? Nie, paradoksalnie aplikacja działa jak należy, tylko zabrakło poprawnej instrukcji obsługi, wyjaśniającej co właściwie trzeba zrobić. Gdyby, ktoś chciał ten stan zmienić, to podpowiem, że jest ona wydana na licencji Open Source. Z kodem można zapoznać się na stronie: https://github.com/Samsung/microbit.

3. Usuń stare parowanie i sparuj ponownie przez aplikację Samsunga

Po trzecie parowanie. Ach parowanie! To sławetne parowanie! Jeżeli w swoim projektach używasz Bluetooth, to zapewne wiesz, że po każdorazowym wgraniu HEXa przez kabel musisz usunąć parowanie i na nowo sparować urządzenie. Tak już jest i nie zanosi się, aby miało się to zmienić. Ale mogę się mylić, bo cały czas oprogramowanie jest rozwijane. Dla przykładu najnowszy beta core przyniósł nową animację parowania. Pikanterii całemu zamieszaniu dodaje fakt, że micro:bit obsługuje 2 rodzaje parowania: „Proste” i „bezpieczne”. Tylko to drugie daje nam dostęp do zdalnego programowania.

Zatem, jeżeli masz sparowanego micro:bita z telefonem lub tabletem – usuń parowanie (usuń, rozłącz, rozparuj – jak zwał tak zwał).

Następnie przejdź do aplikacji Samsunga i wybierz „Connect”. Następnie „Pair a new micro:bit”. Wprowadź micro:bita w tryb parowania, dokładnie tak jak pokazuje animacja.

Gdy micro:bit jest już w trybie parowania, kliknij „next” i przerysuj grafikę z ekranu lub przepisz cyferki, jeżeli Twój telefon lub tablet o to poprosi. Parowanie zakończone. Do tego momentu, większość użytkowników tej aplikacji dociera bez problemu.

4. Połącz micro:bita z telefonem lub tabletem

I tu zaczynają się schody. Zaraz po sparowaniu aplikacja będzie próbowała się połączyć z micro:bitem. Aby Twój telefon lub tablet mógł nawiązać łączność w micro:bicie musi być włączony Bluetooth. Tylko tyle i aż tyle. Poprawne połączenie rozpoznasz po zielonej ikonie spiętych wtyczek tuż obok nazwy Twojego micro:bita.

Nie zawsze jest tak pięknie. I zamiast zielonej ikonki zobaczysz komunikat z błędem. Dlaczego tak się dzieje? Wszystko rozbija się o brak włączonego Bluetooth’a. Aby mieć lepszy obraz sytuacji, rozważmy 3 scenariusze:

  • Posiadasz fabrycznie nowy BBC micro:bit. Ma on wgrany program BBC-MicroBit-First-Experience, który Bluetooth ma włączony. Takiego micro:bita bez problemu zaprogramujesz zdalnie po sparowaniu w aplikacji Samsunga. Niestety w niektórych przypadkach tylko raz.
  • Masz micro:bita, z wgranym projektem, który używał Bluetooth. Nie ważne czy była to aktywna usługa, czy tylko dodany pakiet Bluetooth. Tutaj również nie będzie problemu.
  • Oraz najczęstszy scenariusz. Do Twojego micro:bita masz wgrany prosty program zrobiony na szybko. Wyświetl uśmiech, pokaż tekst, potrząśnij i wylosuj liczbę… Cokolwiek co robi początkujący adept micro:bitowania. I tu właśnie ukryta jest pułapka! Jeżeli programujesz w MakeCode, to każdy program na dzień dobry ma włączone Radio nRF24 i wyłączony Bluetooth. Po parowaniu aplikacja Samsunga nie połączy się z micro:bitem. A ty po kilku minutach frustracji napiszesz komentarz „Nie działa”, „Nie paruje”, po czym dasz 1-gwiazdkową ocenę i odinstalujesz program. Opcjonalnie możesz jeszcze zakląć i pomarudzić jaki ten Samsung jest niekompetentny. Wiem, że tak będzie. Sam tak zrobiłem. Teraz trochę mi głupio.

Ale do rzeczy. Masz dwa wyjścia. Pierwsze pozwoli na przesłanie programu bez dotykania micro:bita. Po prostu, ot tak! W dowolnym momencie. Drugie rozwiązanie to swoiste koło ratunkowe, niemniej działa równie dobrze.

Bluetooth w swoim programie możesz włączyć klikając „Advanced/Add Package” („Zaawansowane/Rozszerzenia”) i wybierając Bluetooth. Ten prosty zabieg spowoduje, że po wgraniu tego programu do BBC micro:bita będzie można się połączyć z nim zdalnie i w konsekwencji wgrać oprogramowanie. Pamiętaj tylko, aby wcześniej go sparować na nowo.

A co zrobić gdy nasz micro:bit nie ma włączonej obsługi Bluetooth. Żaden problem! Polecam prosty trick. Po prostu przejdź do trybu parowania. Tryb ten na dzień dobry resetuje płytkę i  także wymusza włączenie Bluetooth. W tym momencie Twój telefon lub tablet bez problemu może się połączyć z micro:bitem.

5. Wgraj program

W końcu dotarliśmy do sedna artykułu. Skoro mamy już połączenie z micro:bitem, nie pozostaje nam nic innego jak wgranie programu bez użycia kabli.

Jak łatwo się domyślić, z menu głównego wybieramy „Flash”. Na następnym ekranie widać listę plików HEX, które mamy w katalogu „Pobrane” naszego urządzenia. Wybieramy z listy interesujący nasz program. Klikamy niebieski przycisk „Flash”.

Następnie potwierdzamy. Chwilę to zajmie. W międzyczasie mignie nam kilka ekranów. Musisz poczekać aż zapełni się cały pasek postępu. Gotowe!

Czy to było takie trudne? Chyba nie. Cały proces jest zrozumiały i dość przejrzysty. Więc dlaczego jest z tym tyle kłopotu? Moim zdaniem jest to zwykłe nieporozumienie. Programiści odpowiedzialni za MakeCode nie do końca dogadali się z programistami Samsunga. Brakuje jasnej i klarownej informacji, jakie są wymagania aby skorzystać z programowania OTA.