Jako posiadacz licencji pilota/operatora drona postanowiłem, że pora na drona… FPV, co akurat niekoniecznie współgra z moimi uprawnieniami, przynajmniej bez dodatkowej osoby w roli obserwatora (o uprawnieniach pewnie na dniach coś napiszę, bo to całkiem ciekawy temat, który budzi też sporo swego rodzaju kontrowersji). I jak na informatyka i miłośnika wszelkiej maści rozwiązań IoT (np. Raspberry Pi, ESP8266) przystało, mam wrażenie, że więcej dłubię przy swojej małej ptaszynie, niż realnie nią latam. Choć tutaj jako wymówkę mam pogodę (woda w postaci deszczu i śniegu słabo sprzyja awaryjnym… lądowaniom) oraz symulatora, na którym cały czas doskonale swoje umiejętności w zakresie latania dronami FPV. A jednym z podstawowych programów służących do konfiguracji drona jest Betaflight Configurator (przynajmniej jeśli chodzi o drony z oprogramowaniem Betaflight), a w nowych wersjach pojawiła się całkiem interesująca opcja, która niekoniecznie jest aż tak oczywista…

Szablony ustawień w Betaflight Configurator

Z racji tego, że mój maluszek (Metero 75 ELRS od BetaFPV) sterowanie ma za pośrednictwem protokołu ELRS, to działa na oprogramowaniu Betaflight 4.3, a ono jest w pełni wspierane przez rozwojowe wersji oprogramowanie Betaflight Configurator, a więc chcąc nie chcąc korzystam z wersji testowych, czyli najnowszych (Betaflight Configurator Nightly Builds). A takie wersje poza ryzykiem pewnych niedoskonałości (błędów) oznaczają szybki dostęp do nowości. I jedną z takich nowości są presety, czyli predefiniowane szablony ustawień całego drona lub poszczególnych jego elementów/funkcji (np. VTX).

Ustawień do zaimportowania jest już całkiem sporo, i pewnie co chwilę będą pojawiać się nowe. Ja jednak obecnie jestem na takim etapie, że niekoniecznie bym odczuł czy wprowadzone zmiany są lepsze, czy nie, więc na razie temat wczytywania presetów w Betaflight Configurator sobie odpuszczam.

A przynajmniej w takiej klasycznej formule, bo uznałem, że to może być dobre miejsce do wrzucenia kilku modyfikacji, które już w mojej ptaszynie poczyniłem. Nic skomplikowanego, głównie kwestie czysto użytkowe (np. zwiększenie mocy VTXa dopiero po pierwszym uzbrojeniu), ale dlaczego miałbym nie mieć ich jako gotowców do wczytania w razie czego…

Repozytorium Betaflight firmware-presets (GitHub)

Szybko się okazało, że nic nie stoi na przeszkodzie, by dodać do Betaflight Configurator swoje szablony ustawień (presety), ale niestety nie sprowadza się to do wybrania katalogu z odpowiednimi plikami (szablonami) na dysku. Do gry trzeba zaangażować serwis GitHub, oraz trochę pobawić się z repozytoriami.

Tak więc – oczywiście mając już konto w serwisie GitHub – zaczynamy od stworzenia nowego repozytorium, np. „betaflight-firmware-presets”:

Po tej operacji repozytorium będzie tak jakby gotowe.

Tak jakby, bo jest puste i wymaga zainicjowania lub… zaimportowania plików z innego repozytorium. I to właśnie zrobimy (można by też użyć opcji „fork”):

Konkretnie kopiujemy repozytorium:

https://github.com/betaflight/firmware-presets

A więc do dzieła:

Po chwili mamy na swoim koncie kopię wybranego repozytorium Betaflight:

Teraz wypada stworzyć nową gałąź (branch), gdzie będziemy trzymać swoje pliki z szablonami. Jako źródła możemy użyć głównej gałęzi (obecnie cały czas jeszcze „master”, ale za jakiś czas, ze względu na źle rozumianą poprawność kto wie, jak będzie się nazywać ;-)):

Podajemy nazwę dla nowej gałęzi i klikamy „create branch: NAZWA from 'master'” (teoretycznie można to pominąć, ale może się przydać, gdy będzie potrzeba zsynchronizować nasze repozytorium z oryginalnym repozytorium). Po krótkiej chwili mamy naszą gałąź, na której dalej będziemy pracować:

Na potrzeby artykułu będzie to – niespodzianka – „Webinsider”, i takiej nazwy będę używał w dalszej części artykułu. Wy zamiast „Webinsider” podstawiajcie własną nazwę (choć jak ktoś chce, to może użyć i Webinsider ;-)).

TortoiseSVN, czyli repozytorium na komputerze

Kolejny krok to synchronizacja utworzonego repozytorium z wybranych folderem na komputerze. Można to zrobić za pomocą różnych aplikacji, w tym konsolowego polecenia „git”. Ja od dawna do obsługi gita na komputerze korzystam z programu TortoiseSVN, i tak będzie też w tym poradniku. Więc zależnie od tego, z czego korzystacie, kolejne kroki mogą się trochę różnić, choć sama procedura powinna być uniwersalna.

Pobieranie repozytorium na komputer

Tak więc w odpowiednim miejscu tworzymy katalog „betaflight-firmware-presets” i pobieramy do niego repozytorium. W przypadku programu TortoiseSVN po prostu klikamy na wybranym katalogu prawym przyciskiem myszy i wybieramy „SVN Chceckout”:

Ważne, by w polu „URL of repository” wpisać adres URL naszego utworzonego repozytorium, w moim przypadku uznajmy, że będzie to:

https://github.com/Webinsider/betaflight-firmware-presets

Następnie klikamy OK, i zaczyna się cała operacja pobierania repozytorium na komputer:

A tym samym w wybranym katalogu pojawią się pliki związane z repozytorium.

Własne szablony (presety) dla Betaflight Configurator

To, co nas interesuje, znajduje się w gałęzi „Webinsider”, a więc w katalogu:

betaflight-firmware-presets\branches\Webinsider

A konkretnie jeszcze głębiej, bo w:

betaflight-firmware-presets\branches\Webinsider\presets

A jeszcze konkretniej w znajdującym się tam katalogu „4.3”, czyli w szablonach dla Betaflight 4.3 (ale w przyszłości mogą być tam też inne wersje, nawet niekoniecznie tylko wyższe). W tym katalogu znajdziemy kolejne katalogi, z nazwami odpowiadającymi konkretnym kategoriom szablonów. To tam wgrywamy nasze szablony (dla porządku można wywalić inne).

Przykładowy szablon może wyglądać tak:

#$ TITLE: Metero75 VTX Mod
#$ FIRMWARE_VERSION: 4.3
#$ CATEGORY: VTX
#$ STATUS: OFFICIAL
#$ KEYWORDS: vtx, power, disarm
#$ AUTHOR: Patryk
#$ DESCRIPTION: for Metero 75 ELRS

set vtx_low_power_disarm = UNTIL_FIRST_ARM
set vtx_power = 4

To jest akurat bardzo prosty szablon, ustawiający moc VTXa na 4 poziom, oraz blokujący wzrost tej mocy do momentu pierwszego uzbrojenia drona (koptera). Ale w tym artykule skupiamy się na dodawaniu własnych szablonów, a nie na ich tworzeniu.

Node.JS i indexer.js

Kolejny krok, bez którego Betaflight Configurator nie zobaczy naszych szablonów, to dodanie ich do indeksu plików/szablonów. Teoretycznie można by to pewnie i zrobić ręcznie, edytując plik „index.json”, oraz podmieniając hash w pliku „index_hash.txt”, ale poza „pewnie by się dało”, sensu to raczej nie ma.

Zdecydowanie lepiej skorzystać z programu (biblioteki) Node.JS, po zainstalowaniu której, wystarczy, korzystając z wiersza poleceń przejść do głównego katalogu naszej gałęzi i wykonać polecenie:

node indexer/indexer.js

Co powinno sprawić, że wspomniane powyżej pliki będą miały odpowiednią zawartość:

W przypadku, gdy zamierzamy częściej dodawać szablony, zdecydowanie wygodniej będzie stworzyć sobie prosty skrypt, który w odpowiednim miejscu wykona odpowiednią komendę.

Wysyłanie zmian do repozytorium w serwisie GitHub

Kolejny krok to przekazanie lokalnych zmian do repozytorium w serwisie GitHub. Ja ponownie sięgam po TortoiseSVN, czyli ponownie klikam prawym przyciskiem myszy na folderze „betaflight-firmware-presets”, ale tym razem wybieram „SVN Commit”:

Zaznaczam też „all”, by upewnić się, że zostaną przesłane wszystkie zmiany, w tym również te dotyczące skasowanych plików.

Jeśli transfer zakończył się bez błędów, zmiany powinny być od razu widoczne w serwisie GitHub:

Z rzeczy związanych z samym repozytorium to właściwie tyle. Teraz można przejść do podłączenia repozytorium w programie Betaflight Configurator.

Wczytywanie władnych szablonów w Betaflight Configurator

Zacznę od tego, że jest to opcja nowa, a więc występuje tylko w nowych wersjach programu Betaflight Configurator, które obecnie są dostępne w ramach aktualizacji rozwojowych (Betaflight Configurator Nightly Builds).

Po uruchomieniu programu i przejściu do sekcji „presets” mamy do dyspozycji szablony z podstawowego repozytorium Betaflight firmware-presets:

Ale skoro interesują nas nasze szablony, to klikamy „preset sources”, a następnie w oknie, które się otworzy „add new source”:

Nazwa chyba dowolna, jako „URL” podajemy ścieżkę do repozytorium w GitHub, np.:

https://github.com/Webinsider/betaflight-firmware-presets

W polu „GitHub brach” utworzoną nazwę gałęzi (w moim przypadku „Webinsider”).

Następnie klikamy „save”, „make active” i „OK”. W tym momencie możemy już przeglądać nasze szablony:

I tu mała uwaga – w jednym momencie może być aktywne tylko jedno źródło. Zapisanych może być wiele, ale aktywne tylko jedno. Więc jeśli jest aktywne nasze źródło, to nie mamy dostępu do szablonów z oficjalnego źródła. Oczywiście można w naszym źródle zostawić szablony oficjalne, ale… Kto co potrzebuje.

You gonna learn something today

Pierwotnie artykuł miał ukazać się wczoraj, ale po przygotowaniu materiałów uznałem, że za dużo czasu na jeden dzień, jak na jeden artykuł. I chyba dobrze się stało, bo wczoraj wieczorem film na ten temat opublikował Joshua Bardwell:

A to okazja do uzupełnienia artykułu, z której szkoda nie skorzystać. I to nie tylko dlatego, że Joshua Bardwell w świecie FPV jest postacią zdecydowanie rozpoznawalną (w końcu nie każdy w jednym z najpopularniejszych symulatorów FPV znajdzie mapę odzwierciedlającą dość wiernie swoją posiadłość ;-)).

Ale też dlatego, że JB do tematu gita podchodzi od strony wiersza poleceń (Git Bash/Git for Windows), a to będzie dobrym uzupełnieniem artykułu, gdzie ja zdecydowałem się pokazać to na przykładzie graficznego klienta gita (po prostu na komputerze do operacji, które są tu opisane, zazwyczaj używam tego klienta, bo wiersza poleceń mam i tak wystarczająco w przypadku pracy z serwerami ;-)). Dodatkowo jest to swego rodzaju konsultacja online z osobami odpowiedzialnymi za rozwój oprogramowania Betaflight, więc…

(!) Zgłoś błąd na stronie | Lub postaw nam kawę :-)
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk