Drony klasy cywilnej w Polsce pojawiły się w okolicach 2011, aby w 2013 poważnie stanieć i zawojować rynek konsumencki. Niestety gwałtownie doprowadziło to do „uregulowania” rynku, czyli wprowadzenia całego szeregu utrudnień dla osób, które chciałyby wykorzystywać drony w swojej pracy.
Stan prawny na październik 2020
W chwili pisania tych słów polskie prawo dzieli drony na kilka kategorii wagowych – różnice pomiędzy tymi kategoriami (konieczność rejestracji, szkoleń/egzaminów itp. – generalnie im cięższy dron, tym większe utrudnienia) doskonale pokazuje tabelka zapożyczona jako cytat ze strony Świat Dronów:
Z założenia jednak ten artykuł nie dotyczy dronów „legalnych” dla zwykłego Kowalskiego, ale dronów o przeznaczeniu specjalnym (głównie inwigilacyjnych lub bojowych) – np. dla policji lub służb specjalnych, czy też konstruowanych z myślą o użytku poza polską jurysdykcją. Dlatego też zakończmy dywagacje prawne na podaniu kilku linków związanych z polskim stanem prawnym:
- http://www.swiatdronow.pl/drony-a-prawo-unijne
- http://www.swiatdronow.pl/rejestracja-dronow-po-1-lipca-2020-czy-na-pewno
- http://www.swiatdronow.pl/249-gramow-obowiazek-rejestracji-czy-nie
- https://www.instalki.pl/aktualnosci/hardware/43199-spis-wlascicieli-dronow.html – to jest krótkie (i dobre np. do zacytowania w prasie) streszczenie całej powyższej wiedzy
Intencją autorów ani wydawcy treści prezentowanych w magazynie PAYLOAD nie jest namawianie bądź zachęcanie do łamania prawa. jeżeli popełniłeś lub masz zamiar popełnić przestępstwo, bądź masz wątpliwości, czy Twoje działania nie będą łamać prawa, powinieneś skonsultować się z najbliższą jednostką Policji lub Prokuratury, a jeżeli są one związane z pieniędzmi, dla pewności również z Urzędem Skarbowym.
Nie zezwala się na użycie treści prezentowanych w magazynie PAYLOAD, ani produktów dostępnych w sklepie PAYLOAD, do celów popełniania przestępstw lub przestępstw skarbowych.
Mechanizmy sterowania dronami
Zanim przejdziesz do rzeczy bardziej praktycznych, związanych np. z wykrywaniem i zwalczaniem dronów, powinieneś zrozumieć, jakich danych wejściowych można użyć do kierowania lotem drona (linki prowadzą do dokładnych specyfikacji poszczególnych typów czujników) – poszczególne typy danych łączą się bowiem z konkretnymi ryzykami odnośnie utraty sprzętu lub bycia namierzonym:
- sygnał radiowy od operatora – najczęściej na częstotliwościach 433 MHz, 915 MHz, 2.4 GHz, 5 GHz, czy 5.8 GHz
- sygnał radiowy w standardzie GSM – pozwalający na sterowanie dronem ze znacznej odległości, bez ryzyka namierzenia operatora
- sygnał GPS lub Glonass – jest to najczęstszy sposób kierowania dronów cywilnych „do domu”, jeżeli zgubią sygnał operatora (np. wylecą poza zasięg, skończy się bateria w urządzeniu sterującym itp.)
- dane z czujników pasywnych: przede wszystkim żyroskop i akcelerometr, a w dalszej kolejności magnetometr, czujnik odległości, temperatury (klasyczny i pirometr), natężenia światła, wilgotności, ciśnienia, zapylenia itp.
- obraz z kamery (na zasadzie rozpoznawania obiektów mogących stanowić przeszkodę dla lotu drona, albo podążania za wskazanymi obiektami)
Systemy do zwalczania dronów
Działanie wszelkiego rodzaju systemów do zwalczania dronów idzie w czterech zasadniczych kierunkach:
- zagłuszanie sygnału od operatora, dzięki czemu dron przestaje dostawać nowe „instrukcje” i musi polegać na danych z pozostałych czujników (w przypadku fabrycznych dronów, najczęściej po prostu na danych z GPS/Glonass i zaprogramowanej lokalizacji „domu”) – np. SkyHawk Blocker zagłusza pasma 2.4 GHz (2400-2485 MHz), 5.8 GHz (5720-5875 MHz) i Glonass L1 (1598.06-1604.40 MHz)
- fałszowanie sygnału od operatora (możliwe np. w przypadku komunikacji w standardzie Wifi), dzięki czemu dron zaczyna przyjmować instrukcje od wroga – realizuje to np. platforma DeDrone, natomiast jest to na tyle proste, iż potrafią to choćby narzędzia open source
- zagłuszanie lub fałszowanie sygnału GPS/Glonass, co w połączeniu z zagłuszaniem sygnału od operatora ma prowadzić do „zawiśnięcia” drona (aby go następnie zestrzelić lub złapać w specjalną siatkę), albo do skłonienia go do wylądowania w miejscu wybranym przez wroga – np. Hawk polskiej firmy Hertz Systems nie tylko zagłusza sygnał operatora na typowych pasmach, ale także – wg zapewnień producenta – potrafi fałszować sygnały GPS i Glonass
- namierzanie fizycznej lokalizacji operatora – np. SkyHawk Detector przeszukuje pasma 2.4 GHz i 5.8 GHz, po czym z odległości ponad kilometra wskazuje kierunki pochodzenia poszczególnych sygnałów z dokładnością 5°
Słabości systemów do zwalczania dronów
Systemy do zwalczania dronów metodą radiową są projektowane pod kątem częstotliwości i protokołów komunikacyjnych używanych przez drony fabryczne – i generalnie nie radzą sobie z samoróbkami, które nie trzymają się wymagań prawa (np. używając niedozwolonych w danym kraju częstotliwości), albo po prostu używają łączności GSM (której w Polsce zagłuszać co do zasady cywilom nie wolno, choćby będąc np. cywilnym podwykonawcą wojska, policji czy służb specjalnych – jedyne zezwolenie na cywilne użycie sprzętu ingerującego w sieć GSM zostało wydane dla TOPR).
Czego takie systemy nie są w stanie zrobić:
- zagłuszyć sygnału GSM (ani tym bardziej go sfałszować)
- namierzyć lokalizacji operatora przy komunikacji GSM – aczkolwiek jest to jak najbardziej możliwe przy współpracy z operatorem sieci GSM, można również śledzić trasę raz namierzonego drona, który musi w końcu gdzieś wylądować
- fałszować odczytów z czujników pasywnych – można wyposażyć drona w różne czujniki pasywne i tak go zaprogramować, aby w razie utraty sygnału od operatora, nie leciał w kierunku ustalonej lokalizacji z GPS, ale w kierunku np. największego źródła ognia wskazywanego przez pirometr, w ramach wysokości od X do Y metrów nad poziomem morza
Inne problemy z dronami fabrycznymi
Strefy ograniczone
O ile osoba pracująca nad dronem np. na potrzeby służb specjalnych nie musi przejmować się stanem prawnym, o tyle oprogramowanie samego drona może pilnować stref, w których z różnych powodów nie wolno latać. Zostało to doskonale wyjaśnione w tym artykule (a tu znajdziesz linki do map).
Numery seryjne
Drugim problemem istotnym z punktu widzenia bezpieczeństwa są numery seryjne: taki numer posiada dron jako całość, jak również wybrane moduły elektroniczne posiadają swoje własne numery. O ile tymi drugimi najczęściej nie musisz się przejmować, o tyle numery seryjne zakupionych dronów (i praktycznie każdego innego produktu elektronicznego dowolnej znanej firmy, posiadającego numer seryjny) są raportowane przez sklep do dystrybutora i w razie potrzeby może uzyskać do nich dostęp policja lub inne służby.
Kupić gotowego drona, konstruować „własnego” z gotowej elektroniki, czy robić coś naprawdę własnego od zera?
Rozmaite różnice pomiędzy pierwszym a drugim podejściem świetnie wyjaśnia ten artykuł. Jednak z punktu widzenia bezpieczeństwa ofensywnego, wariant pierwszy i drugi są niemal tym samym, różniąc się wyłącznie szczegółami technicznymi. Prawdziwą zmianę wnosi dopiero wariant trzeci:
- możliwość sterowania dronem za pośrednictwem sieci GSM, z dużo większej odległości, a tym samym odporność na działanie systemów do zwalczania dronów (i namierzania operatorów) drogą radiową
- możliwość zastosowania autorskich mechanizmów sterowania awaryjnego zamiast GPS/Glonass, a tym samym jeszcze większa odporność na działanie systemów do zwalczania dronów
- możliwość ignorowania stref z ograniczeniami lotów (albo choćby implementowania własnych ograniczeń – np. aby dron bojowy sprzedawany na Bliski Wschód nie mógł działać w Polsce)
- dużo większa swoboda odnośnie podwieszania akcesoriów:
- optyki klasy wyższej niż cywilna (o ile właściciel takową dysponuje), lub po prostu optyki klasy wyższej niż klasa samego drona
- mechanizmów zrzutowych do większych ładunków (dostępne na rynku modyfikacje dla fabrycznych dronów cywilnych są rzadkie i mają bardzo niewielkie możliwości)
- zdalnego sterowania podwieszonymi akcesoriami (samodzielnej konstrukcji – albo szukaj słowa kluczowego „Canon” poniżej)
- drony fabryczne na rynek cywilny projektowane są w taki sposób, aby być w stanie wrócić do właściciela po zakończeniu misji, a przynajmniej bezpiecznie wylądować – co przekłada się na dużo bardziej zachowawcze korzystanie z baterii:
- w przypadku dronów bojowych powrót nie będzie wymagany, co umożliwia dużo lepsze wykorzystanie baterii i dużo lepsze dobranie adekwatności aerodynamicznych pod kątem jak najdłuższego zasięgu, jak największej prędkości przelotowej i siły uderzenia w cel, czy możliwości podwieszenia jak najcięższego ładunku
- również dla dronów inwigilacyjnych, powrót po zakończeniu misji nie musi być wymagany, co może przekładać się na dużo dłuższą obserwację celu – można więc tak zaprogramować drona, aby po jej zakończeniu i przekazaniu danych drogą radiową, wleciał w ognisko lub do wody, albo po prostu wyłączył się i spadł (w tym ostatnim przypadku warto najpierw zadbać o usunięcie numerów seryjnych z poszczególnych części)
Wady „własnych” dronów
Drony fabryczne cały czas ewoluują, szczególnie w kierunku coraz lepszego „user experience”, a więc łatwości i intuicyjności sterowania, jakości stabilizacji, radzenia sobie z wiatrem itp. sprawami, z których początkujący użytkownik drona może w ogóle nie zdawać sobie sprawy. Możliwości modeli z 2020, czy choćby np. z 2017, mają się nijak do możliwości Parrot AR.Drone z 2010, który zapoczątkował w Polsce popularność dronów. A z kolei Parrot AR.Drone przez cały czas przewyższa to, co da się osiągnąć najprostszymi konstrukcjami na bazie Arduino.
Obrazowo mówiąc, porównywanie nowoczesnego drona z 2020 z samodzielną konstrukcją na bazie Arduino (zamiast gotowego modułu kontrolera lotu), jest jak porównanie nowoczesnego samochodu z ABS, AFIL, ASR, BAS, BLIS, EBD, ESP i paroma innymi mechanizmami wspomagającymi prowadzenie i wychodzenie z niebezpiecznych sytuacji, z Polonezem (nawet fabrycznie nowym). Oczywiście Poloneza da się prowadzić, ale wówczas to operator swoimi umiejętnościami, koncentracją i zaangażowaniem musi nadrobić wszystko to, czym w dzisiejszych konstrukcjach fabrycznych zajmują się algorytmy.
Sytuacja pogarsza się jeszcze bardziej, gdy:
- dron ma być sterowany przez GSM (a więc dochodzą spore opóźnienia w transmisji sygnałów sterujących)
- dron ma być sterowany wyłącznie w oparciu o obraz z kamery, ew. wskazania z innych czujników, przesyłane do operatora również przez GSM (dochodzą wówczas jeszcze większe opóźnienia)
W praktyce więc samodzielne konstrukcje nie pozwalają na precyzyjne sterowanie, umożliwiające np. zawiśnięcie w powietrzu w jednym miejscu (np. przed czyimś oknem) i kompensację podmuchów wiatru. Nadają się raczej do lotów na dłuższym dystansie i obserwowania wyznaczonych celów z daleka (konkretne możliwości zależą od klasy zamontowanej optyki), albo wręcz do lotów bojowych (w jednym kierunku, bez konieczności precyzyjnego lądowania).
Budujemy własnego drona od podstaw
Jeśli pomimo nakreślonych wyżej wad, przez cały czas uważasz budowę własnego drona za zasadną, przejdźmy przez omówienie poszczególnych elementów.
Elementy takie jak szkielet, silniki i ich regulatory, czy te związane z zasilaniem, są elementami pasywnymi i dość niezależnymi od użytego kontrolera lotu i systemu – a więc, pomijając etap kalibracji (do wybranego rozmiaru szkieletu), oraz konieczność zwrócenia uwagi na parametry nominalne i realną jakość wykonania (szczególnie kupując na Aliexpress), możesz śmiało kupować gotowe elementy tego typu – konstruowanie ich od podstaw nie ma sensu.
Szkielet drona
Zanim przejdziesz do kolejnych elementów, na tym etapie zastanów się, ile ramion i w jakim układzie powinien mieć ten dron. Najczęściej stosuje się:
- dla prostych konstrukcji amatorskich i półprofesjonalnych o małym udźwigu – konstrukcje 4-ramienne (ze względu na stabilność i prostotę sterowania) w układzie X (dzięki czemu śmigło nie zasłania kamery)
- dla większych i droższych konstrukcji profesjonalnych, przeznaczonych np. do profesjonalnego filmowania w jakości kinowej, wspomagania prac przy urządzeniach pod dużym napięciem, czy innych prac wymagających bezwzględnej stabilności – konstrukcje 6- lub 8-ramienne w układzie X
W tym artykule znajdziesz więcej informacji nt. doboru układu konstrukcji 4-ramiennej, adekwatnego do planowanych zastosowań.
Przykładowe szkielety 4-ramienne dostępne na Aliexpress (od najtańszych):
- bez podwozia: F2 Mito, Johnny, Johnny J5, Stretch X5 V2 215, Stretch X5 V2 220, APEX, IFlight Cidora SL5, Blaze, T-motor FT5
- z płozami do łatwego lądowania: F450, JMT J630, X4 500, F550 ZD550/ZD680, Tarot Iron Man 650
- inne ciekawe: Larva X (kompletny dron z bardzo ciekawym szkieletem, resztę elementów można wymienić), 2-osiowy gimbal do podwieszenia kamery
Silniki, regulatory silników, śmigła
Dobór silników i regulatorów do nich jest uwarunkowany dwoma rzeczami: typem i rozmiarem szkieletu (im większy i cięższy dron, tym większa moc silników jest wymagana do jego podniesienia), oraz typem kontrolera lotu.
Jeśli zamierzasz wykonać drona na bazie Arduino, dobrym pomysłem będzie dopasowanie całej reszty elektroniki w postaci tzw. Arduino Shieldów, czyli płytek rozszerzających. Masz wówczas gwarancję zgodności złącz i poziomów napięć, a w Internecie znajdziesz najprawdopodobniej gotowe przykłady kodu sterującego każdym z tak dobranych elementów. Unikniesz więc np. samodzielnego kalibrowania silników.
Przy czym uwaga: większość shieldów do sterowania silnikami służy do sterowania silnikami krokowymi i jest tworzonych z myślą o zastosowaniu w drukarkach 3D, czy maszynach CNC. Natomiast do podniesienia drona potrzebne są silniki tzw. bezszczotkowe (BLDC) – mniej precyzyjne, za to o dużo większej mocy.
Sugerowane shieldy BLDC dla Arduino:
- relatywnie nowa konstrukcja na bazie TLE9879 – kod sterownika, materiały dodatkowe: 1, 2, 3, 4
- starsza konstrukcja na bazie IFX007T
Przykładowe silniki BLDC z Aliexpress o różnej wielkości i mocy: A2212, RS2205 i 3508.
Zanim przejdziesz dalej, powinieneś zadbać o wzajemne dopasowanie elektryczne i mechaniczne poszczególnych elementów: szkieletu, śmigieł, silników i regulatorów do nich – a całości z adekwatnym Arduino. Ogólny schemat połączeń wygląda następująco:
Arduino
Arduino to seria płytek do prototypowania układów elektronicznych, zawierających mikrokontroler AVR (np. ATmega 328) oraz pamięć flash i interfejs USB. Układ AVR ma przy tym wbudowany specjalny program rozruchowy i obsługę USB, dzięki czemu użytkownik, tworząc swoją część programu, może się skupić wyłącznie na aspektach funkcjonalnych – a wgrywaniem tego programu na płytkę zajmą się dołączone narzędzia.
Arduino można programować już w kilkunastu językach programowania – przy czym oryginalnym i najpopularniejszym językiem jest Wiring, bazujący na języku C. Do edycji kodu służy specjalny edytor Arduino IDE.
„Oryginalne” Arduino to ponad 30 różnych modeli płytek, z różnymi wersjami kontrolerów AVR (a w kilku przypadkach zastąpionymi procesorami ARM), o różnych możliwościach. Do tego należy doliczyć kilkaset klonów autorstwa różnych firm. Klonów, czyli płytek „przedstawiających się” po podłączeniu do komputera swoją własną nazwą, np. „DFRduino Uno”. Większość klonów jest kompatybilna elektrycznie ze swoimi odpowiednikami (np. DFRduino Uno z oryginalnym Arduino Uno) i pozwala na pracę z poziomu Arduino IDE – czasem tylko wymagane jest ściągnięcie odpowiedniego sterownika.
Osobnym tematem są podróbki – a więc płytki przedstawiające się jako oryginalne Arduino, ale produkowane w Chinach. Tak jak w każdym innym segmencie podróbek, można je podzielić na lepsze i gorsze. Te gorsze są o tyle niebezpieczne w przypadku dronów, iż dron podczas lotu wibruje i jest narażony na warunki atmosferyczne. A więc np. gorzej zlutowana płytka, czy tańsze kondensatory, mogą doprowadzić do awarii bezpośrednio w powietrzu i utraty cennej optyki, albo narażenia przypadkowych osób na niebezpieczeństwo.
Dlatego o ile zakup szkieletu czy silników (czy choćby elektroniki związanej z zasilaniem i sterowaniem silnikami) na Aliexpress ma sens, o tyle zdecydowanie odradzamy kupowanie w takich miejscach adekwatnej płytki Arduino, oraz shielda GSM. Wypróbowane sklepy w Polsce, sprzedające wyłącznie oryginalną elektronikę, to Botland i Kamami.
Jeśli nie miałeś wcześniej żadnego doświadczenia z Arduino ani inną elektroniką, przed zabraniem się za budowę własnego drona, dobrym pomysłem będzie zakup jakiejś książki o Arduino, oraz wybranego zestawu startowego, pozwalającego poćwiczyć integrację Arduino z różnymi gotowymi modułami.
Moduły GSM dla Arduino, czujniki pasywne i adekwatne Arduino
Jak już wspomniano wyżej, istnieje ponad 30 różnych wersji Arduino – wersja, której szukasz, to:
- w przypadku dronów z silnikami o małej mocy – będzie to wersja zminiaturyzowana, posiadająca wyjścia mogące działać w trybie PWM (mogąca sterować silnikami samodzielnie, bez osobnego shielda BLDC), np. Arduino Micro, Arduino Nano lub Arduino MKR Zero (ten ostatni model potrafi obsłużyć aż 12 silników)
- w przypadku większych dronów – będzie to standardowa wersja płytki, mogąca współpracować z opisanymi wyżej shieldami BLDC i GSM, a więc przede wszystkim Arduino Uno
Jedną z najtrudniejszych decyzji będzie wybór adekwatnego modułu GSM – tutaj bowiem oprócz samej kompatybilności elektrycznej i mechanicznej, wybór zależy od tego, jak zamierzasz sterować dronem:
- za pomocą SMS-ów zawierających kolejne komendy (np. zmiana kierunku lub prędkości lotu, ustalenie parametrów docelowych) – taki sposób sterowania jest zdecydowanie prostszy w realizacji i można go zrealizować w oparciu o w zasadzie każdy model Arduino i każdy dostępny moduł GSM – natomiast nie umożliwia on przesyłania sygnału z kamery (same dane przez cały czas można np. zapisywać na karcie MicroSD, ale sterowanie takim dronem musi się odbywać wizualnie – tzn. musi on latać w zasięgu wzroku operatora, ew. w zasięgu lornetki w przypadku przestrzeni nieosłoniętych)
- w warstwie IP – ten sposób jest zdecydowanie trudniejszy do realizacji w przypadku „klasycznych” Arduino (opartych o mikrokontrolery AVR), ale jak najbardziej możliwy – umożliwia on przesyłanie obrazu z kamery (lub choćby wielu kamer i sygnałów z innych czujników), a także utrudnia odnalezienie operatora – sterowanie nie jest już bowiem transmisją danych pomiędzy dwoma konkretnymi kartami SIM, ale niezależnymi transmisjami pomiędzy każdą z tych kart, a serwerami w Internecie
Dużo prościej wygląda sytuacja z poszczególnymi czujnikami pasywnymi, przynajmniej tymi popularnymi w zastosowaniach konsumenckich – np. wspominany już wyżej czujnik MPU6050, integrujący żyroskop i akcelerometr, dostępny jest w postaci gotowych do integracji modułów firm DFRobot lub SparkFun – dzięki czemu nie trzeba eksperymentować z „gołymi” układami scalonymi.
Podobnie wygląda sytuacja w przypadku np. czujnika odległości, czy dosłownie setek innych czujników, które w większości posiadają wersje „zapakowane” w moduły gotowe do integracji z Arduino.
Zasilanie
Zasilanie dronów jest kwestią dużo bardziej skomplikowaną, niż wielu osobom się wydaje: o ile sama elektronika ma relatywnie niewielkie wymagania prądowe, o tyle już silniki potrzebują jej bardzo dużo – na tyle dużo, iż przy braku odpowiednich zabezpieczeń, start silników może doprowadzić do niestabilności modułu GSM i utraty łączności z operatorem do momentu manualnego restartu całej elektroniki.
Z tego właśnie względu w większych dronach stosuje się osobne shieldy BLDC, zamiast po prostu podłączać silniki o dużej mocy bezpośrednio do wyjść PWM samego Arduino.
Zacznijmy jednak od początku. Pomijając jeszcze obciążalność baterii, powinieneś rozważyć kilka kwestii czysto funkcjonalnych:
- Chcesz iść w kierunku baterii jednorazowych czy akumulatorów? Zaletami baterii jednorazowych są: największa pojemność i jednocześnie największa obciążalność, a przy tym szybka wymienność i wygoda użytkowania – co może mieć znaczenie zwłaszcza w zastosowaniach specjalnych (np. w warunkach wojennych prościej jest wziąć ze sobą kontener zapasowych baterii, niż szukać miejsca i tracić czas na ładowanie akumulatorów). Wady to głównie cena – na dłuższą metę baterie wychodzą dużo drożej.
- Jeśli decydujesz się na wariant z akumulatorami, to powinny być one montowane na stałe (a więc cały dron będzie ładowany z kabla; upraszcza to nieco elektronikę), czy wymienne – a jeżeli wymienne, to w jakim standardzie? W przypadku akumulatorów wymiennych bardzo dobrym pomysłem jest pójście w kierunku standardu AA, czyli popularnych baterii „paluszków” – dzięki temu w razie potrzeby będzie je można stosować zamiennie z bateriami jednorazowymi i/lub wyposażyć się w kilka-kilkanaście osobnych ładowarek.
- Które elementy drona powinny mieć oddzielne zasilanie i po co? Np. jeżeli zdecydujesz się podczepić do drona aparat cyfrowy na gimbalu, wówczas będzie on miał osobne zasilanie. Wiele modeli aparatów pozwala na podłączenie „pilota” sterującego robieniem zdjęć – w przypadku aparatów Canon będą to najczęściej piloty kablowe, w przypadku innych producentów może wchodzić w grę komunikacja na podczerwień. W obu przypadkach Arduino może takiego pilota emulować, a tym samym sterować robieniem zdjęć. Można więc sobie wyobrazić stworzenie drona inwigilacyjnego z osobnym zasilaniem dużej mocy dla sekcji silników, oraz osobnym (wspomaganym bateriami litowymi) o małej obciążalności ale dużej pojemności dla samej jednostki sterującej i modułu GSM – dron taki mógłby dolecieć w mało oczywiste miejsce, wyłączyć silniki i pozostawać w nim całymi tygodniami, włączając aparat i robiąc zdjęcia np. o określonych godzinach czy na zdalne zlecenie operatora, po czym po dłuższym czasie uruchomić silniki i wrócić do operatora.
Aspekty związane z zasilaniem, na które należy uważać:
- silniki potrzebują bardzo dużego prądu, szczególnie w momencie rozruchu
- baterie litowe mają bardzo niską obciążalność (nie są w stanie dać prądu wystarczającego do napędzania silników)
- baterie 9V (tzw. 6F22) są generalnie złym pomysłem, niezależnie od typu i producenta
- szukając akumulatorów, z pewnością natkniesz się na te oznaczone symbolem 18650 – markowe akumulatory w tym formacie są bardzo dobre, zarazem jest to najczęściej fałszowany format, dlatego właśnie go nie polecamy
Na Aliexpress znajdziesz sporo akcesoriów związanych z zasilaniem, głównie jednak są akcesoria (zintegrowane akumulatory, ładowarki USB i sieciowe, rozdzielacze do pracy równoległej itd.) przeznaczone do współpracy z gotowymi kontrolerami lotu. Można też znaleźć sporo akumulatorów 18650, jednak znakomita większość to podróbki. To, czego warto szukać na Aliexpress, to elektronika do ładowania zintegrowanych akumulatorów.
Oprogramowanie sterownika lotu na bazie Arduino
Na początku października 2020 przejrzeliśmy platformę Github i znaleźliśmy 23 interesujące projekty oparte na różnych wersjach Arduino lub Teensy (klona Arduino, znanego raczej z takich zastosowań), oraz 3 interesujące projekty oparte o Raspberry Pi (czyli płytce o podobnych rozmiarach do Arduino, ale zawierającej dużo silniejszy sprzęt, z normalnym Linuxem).
Większość ze wspomnianych 23 projektów opartych na Arduino, to bardzo proste, minimalistyczne wręcz kontrolery lotu, zaimplementowane w postaci prostej pętli czytającej dane z różnych czujników i sterującej silnikami. Mimo tego każdy z nich jest inny – nie chodzi o styl programowania, ale o użyte modele Arduino, czujników, silników, rozmiar ramy itd.
Ze względu na małą moc mikrokontrolera AVR, w kodzie dla Arduino raczej unika się zbyt daleko posuniętej modularyzacji kodu – i np. odczyt danych z czujników realizuje bezpośrednio w głównej pętli programu. Dodatkowo każdy czujnik ma swoją specyfikę obsługi – choćby najpopularniejszy czujnik MPU6050, występujący w większości projektów, ma kilka sposobów obsługi, zależnie od tego czy korzystamy z modułu DFRobot, SparkFun, czy np. samodzielnie „opakowanego” układu.
Co za tym idzie, wymiana czujników na inne, albo choćby wymiana ramy na większą a silników na mocniejsze, pociąga za sobą dużo większe zmiany w kodzie, niż tylko podmianę kilku stałych. Dlatego też postanowiliśmy podlinkować wszystkie interesujące projekty – każdy z nich jest pisany pod kątem nieco innego sprzętu i każdy może się okazać interesujący pod kątem wyciągnięcia z niego kawałków kodu związanych z obsługą jakiegoś konkretnego modelu silnika, czujnika itp.
Projekty bardziej zaawansowane i/lub ciekawsze
- liourej/CodeDroneDIY – najciekawszy z analizowanych przez nas projektów opartych na Arduino (Nano/Uno + MPU6050 + inne czujniki), świetna dokumentacja, w 2020 przez cały czas aktywnie rozwijany
- nyameaama/NEO-Rocket-Flight-Computer – projekt oparty na 2 osobnych kontrolerach (ATmega2560 na własnej płytce + Arduino Uno + MPU6050 + Adafruit BMP085 + inne czujniki), rozbudowany projekt z naciskiem na fazę łagodnego lądowania, w 2020 przez cały czas aktywnie rozwijany
- akashnag/arduino-flight-controller – Arduino Mega, obsługa zrzutów z drona, w 2020 przez cały czas aktywnie rozwijany
- barafael/raPID – Teensy + MPU6050 + własny projekt szkieletu, średniej wielkości projekt z bardzo ciekawymi algorytmami stabilizacji drona
Projekty minimalistyczne – samoloty i inne nietypowe konstrukcje sprzętowe
- David-Vella/autopilot – FT Spear, w 2020 przez cały czas aktywnie rozwijany
- PowerBroker2/ArdUAV – Adafruit BNO055, wydzielone biblioteki do działań matematycznych, w 2020 przez cały czas aktywnie rozwijany
- nickrehm/dRehmFlight – Teensy + MPU6050 + MPU9250, obsługa różnych ilości i układów ramion, w 2020 przez cały czas aktywnie rozwijany
Projekty minimalistyczne – standardowe koptery
Projekty te przez cały czas mogą być interesujące, np. z uwagi na obsługę konkretnego modelu czujnika itp.
- jcjones94/drone – Arduino + MPU6050 + ServoTimer2
- lobodol/drone-flight-controller – F450, Arduino Uno + MPU6050, algorytm Ziegler Nichols, w 2020 przez cały czas aktywnie rozwijany
- MichaelD33/AIO-Quadcopter-Flight-Controller – ATmega32u4 + MPU6050 + Frsky XM, w 2020 przez cały czas aktywnie rozwijany
- Nannigalaxy/wifi-controlled-multiwii – Arduino Nano + MPU6050 + esp8266 (w tym implementacja prostego webservera)
- peasant98/FlightController_Udana_HAWK – Adafruit LSM9DS1
- AbhishekVarghese/Flight_Control_ardquad – obsługa joysticka
- NeilNie/Hexacopter – MPU6050, obsługa 6 silników
- primo-tech/Pegasus-V1-Flight-System – Arduino Nano + MPU6050 + Bosch BME280 + HMC5883L + dedykowana elektronika, obsługa 6 silników, w 2020 przez cały czas aktywnie rozwijany
- primo-tech/Corinthians-V1-Flight-System – MPU6050 + Bosch BME280, obsługa 6 silników, w 2020 przez cały czas aktywnie rozwijany, wygląda jak klon poprzedniego projektu
- dantiel/arduino-flight-controller – Arduino Pro Mini + MPU6050, w 2020 przez cały czas aktywnie rozwijany
- third-meow/harold-the-fc – STM32F103 + Adafruit BNO055
- aryan-gupta/Quadrino – F450, Arduino Nano + MPU6050, wstawki w asemblerze
- nkansal96/arduino-quadcopter – obsługa wewnętrznej pamięci EEPROM
- shaswat-dharaiya/Quadcopter – ATMega328 + MPU6050 + Adafruit OLED + HC-12 (bezpośrednie użycie komend AT, łatwe do podmiany na moduł GSM), w 2020 przez cały czas aktywnie rozwijany
- giusenso/quadcopter-drone-flight-control – S500, Arduino Nano + MPU9250 + Flysky FS-i6X/X6B, w 2020 przez cały czas aktywnie rozwijany
- mozanunal/SimplePilot – wiele różnych czujników, FreeIMU + PID AutoTune + MPU6050 z obsługą przez bibliotekę MPU60X0 + nRF24L01, obsługa wewnętrznej pamięci EEPROM
Oprogramowanie sterownika lotu na bazie Raspberry Pi
W całym powyższym artykule skupialiśmy się na różnych wersjach Arduino, czyli płytki wyposażonej w prosty mikrokontroler AVR. Raspberry Pi to płytka o podobnych rozmiarach, jednak o wiele bardziej zaawansowana, wyposażona w kilkurdzeniowy procesor ARM, pamięć RAM w ilości przypominającej normalny komputer – i rzeczywiście, Raspberry Pi jest normalnym miniaturowym komputerem, na którym działa specjalnie przystosowana wersja systemu Linux o nazwie Raspbian.
Programy dla Raspberry Pi nie są też wgrywane przez specjalne IDE i port USB – zamiast tego kompiluje się je dokładnie tak samo, jak w przypadku każdego innego Linuxa, kompilatorem gcc lub clang. Następnie system operacyjny z wgranym programem sterującym umieszcza się na karcie MicroSD wkładanej w złącze na płytce.
Raspberry Pi, podobnie jak Arduino, występuje w wielu wersjach, a także posiada klony (np. Asus Tinker Board). W tym artykule zapoznasz się z różnicami pomiędzy poszczególnymi wersjami.
Projekty działające na bazie Raspberry Pi:
- dridri/bcflight – świetny, modułowy, obsługa wielu wariantów sprzętu (Raspberry Pi 3A+, Pi Camera 2.1, szkielet ZMR250, MPU9150, radio RFM95W), integracja z LUA, aplikacja sterująca w Qt, trzeba jedynie dopisać obsługę GSM, w 2020 przez cały czas aktywnie rozwijany
- eviallet/Drone_Receiver – minimalistyczny projekt w C++/Qt, MPU6050 z obsługą przez bibliotekę gyroscope, pozwalający zrozumieć działanie w pętli, sterując GPIO i czytając dane z czujników
- tgarr/flying-berry – MPU6050, własny projekt szkieletu, obsługa Steam Controller, w 2020 przez cały czas aktywnie rozwijany
Poza wymienionymi wyżej, na GitHubie jest też mnóstwo innych projektów kontrolera lotu, opartych na sprzęcie innym niż Arduino lub Raspberry Pi.
Kamera, przetwarzanie i transmisja obrazu z kamery
Właśnie doszliśmy do rzeczy najtrudniejszej w całej budowie własnego drona, mianowicie jak przesyłać obraz z kamery do operatora? Jest to tak naprawdę styk trzech różnych obszarów:
- standardu komunikacji (Wifi / 433 MHz / cokolwiek innego vs GSM+SMS vs GSM+IP)
- elektroniki, która jest w stanie odebrać obraz od kamery (w sensie połączenia z kamerą, odpowiedniego API dla programisty, oraz wystarczającej wydajności), przetworzyć go i wysłać obranym kanałem komunikacyjnym
- platformy i aplikacji sterującej, która jest w stanie taki obraz zdekodować i wyświetlić
Zacznijmy od najprostszego wariantu: jeżeli sterowanie dronem ma się odbywać wyłącznie w zasięgu wzroku (potencjalnie z użyciem lornetki itp.), wówczas można podczepić do niego zwykły aparat fotograficzny i co najwyżej z poziomu Arduino emulować „pilota” sterującego robieniem zdjęć. W takim przypadku nie będzie potrzebny żaden zwrotny kanał komunikacyjny, a jedynie obsługa jednego dodatkowego przycisku.
W pozostałych wariantach niezbędna będzie kamera natywnie zintegrowana z Arduino (albo Raspberry Pi lub jeszcze innym sprzętem). Idealnym wyborem będzie kamera pracująca w standardzie ArduCAM (a więc z gotowymi sterownikami zarówno dla Arduino, jak i dla Raspberry Pi), np. Raspberry Pi HQ IMX477R 12.3MPx (pod kartą produktu znajdziesz na tej stronie też listę obiektywów i innych akcesoriów) ze świetną soczewką Sony i gwintem pozwalającym na montaż obiektywów od „dużych” aparatów dzięki prostego adaptera.
Tu dochodzimy jednak do sedna problemu, jakim jest relatywnie niska wydajność Arduino, a w szczególności „klasycznych” modeli opartych na mikrokontrolerach AVR. Są one w stanie w miarę płynnie obsługiwać webcamy o rozdzielczości 0.3 megapikseli lub nieco więcej, ale nie mają szans poradzić sobie z kamerą 12.3MPx.
Problem ten można rozwiązać na kilka sposobów – opierając całą konstrukcję o:
- najmocniejsze (i zarazem najdroższe) wersje Arduino z procesorem ARM: Arduino MKR Vidor4000 lub Arduino Portenta H7
- Raspberry Pi zamiast Arduino – dlatego właśnie wyżej opisaliśmy 3 projekty sterownika lotu na bazie tej płytki
- Raspberry Pi oprócz Arduino, jako druga płytka na pokładzie, tylko do obsługi kamery i ew. innych czujników – ten wariant gwarantuje najprostszą i najbardziej „podręcznikową” implementację poszczególnych systemów, natomiast jest to dodatkowy ciężar do załadowania na pokład
- kamerę i platformę Sony Spresense, podobnie jak poprzednio, zastosowaną oprócz Arduino (będzie ona dużo bardziej energooszczędna od Raspberry Pi, a przy okazji będzie to wariant najtańszy)
Najtrudniejszym zadaniem jest tu nie wybór platformy sprzętowej, ale połączenie wszystkich elementów (głównego Arduino, obsługi kamery, samej kamery i modułu GSM) w jedną całość – dlatego właśnie nie powinieneś wybierać żadnego z komponentów drona w oderwaniu od reszty, np. z powodu promocji i niższej ceny za jakiś komponent.
Aparatura sterująca
Sposób sterowania dronem bardzo ściśle zależy od tego, na jaki wariant komunikacji się zdecydowałeś – i nie chodzi tylko o wybór pomiędzy GSM a innymi możliwościami. Chodzi o opisany wyżej wybór pomiędzy komunikacją IP a komunikacją na bazie SMS-ów – a następnie o różnice pomiędzy konkretnymi modułami GSM, wpływające na sposób implementacji, w szczególności odnośnie przesyłania obrazu z kamery.
Jedno jest pewne: decydując się na komunikację GSM rezygnujesz ze wszystkich dostępnych na rynku gotowych aparatur sterujących (typu np. Flysky FS-i6X), a jedyną opcją jest budowanie modułu sterującego samodzielnie.
Wspomniany w sekcji o module GSM wybór sposobu transmisji danych w ramach standardu GSM, pomiędzy transmisją wszystkiego w warstwie IP, a transmisją sygnałów sterujących dzięki SMS-ów, rzutuje również na wybór platformy:
- o ile wariant IP jest trudniejszy do implementacji po stronie drona, o tyle bardzo dużo ułatwia po stronie aplikacji sterującej, która może być zrealizowana w zasadzie w dowolnej technologii i na dowolną platformę: jako aplikacja desktopowa dla Windows, dla biblioteki Qt, jako appka dla Androida i iPhone, czy choćby aplikacja webowa (np. w Node)
- wariant SMS po stronie aplikacji sterującej również jest prosty do realizacji, natomiast wymaga bezpośredniego dostępu do modelu GSM na poziomie komend AT – co jest możliwe na Windows i Linuksie, natomiast zablokowane ze względów bezpieczeństwa w systemach mobilnych (Android, iOS, Windows Phone)
Podsumowanie
Jeśli zdecydowałeś się na zbudowanie własnego drona od podstaw, pamiętaj aby mimo wszystko zapoznać się z obowiązującymi w Polsce przepisami – w końcu choćby jeżeli miałby to być dron bojowy dla służb specjalnych, a akcja z jego użyciem miałaby zostać w ten lub inny sposób zalegalizowana, to pozostaje jeszcze cały etap testów i dopracowywania szczegółów.
Częściowym rozwiązaniem może być realizacja montażu i testów poza polską jurysdykcją, w kraju posiadającym mniej rygorystyczne prawo odnośnie dronów (gdyż np. drony jeszcze nie dotarły do niego jako produkt masowy). Natomiast poza samymi kwestiami prawnymi koniecznie trzeba też zadbać o kwestie bezpieczeństwa, aby taki dron nie zrobił krzywdy przypadkowym ludziom.
Kończąc, jesteśmy ciekawi Waszych pytań, uwag, wniosków i innych komentarzy. jeżeli pominęliśmy w tym artykule coś istotnego, chętnie go uzupełnimy – prosimy tylko o feedback w komentarzach poniżej, albo mailem na adres kontakt@payload.pl.