Spisu treści:

Dron Arduino z GPS: 16 kroków
Dron Arduino z GPS: 16 kroków

Wideo: Dron Arduino z GPS: 16 kroków

Wideo: Dron Arduino z GPS: 16 kroków
Wideo: Arduino Drone Flight Controller - Multiwii | With Smartphone Control 2024, Lipiec
Anonim
Dron Arduino z GPS
Dron Arduino z GPS

Postanowiliśmy zbudować sterowany i stabilizowany Arduino, dron quadkopterowy z widokiem z pierwszej osoby (FPV) z obsługą GPS z funkcją powrotu do domu, przejścia do koordynacji i funkcji zatrzymania GPS. Naiwnie założyliśmy, że połączenie istniejących programów i okablowania Arduino dla quadkoptera bez GPS z tymi z systemu transmisji GPS będzie stosunkowo proste i że moglibyśmy szybko przejść do bardziej złożonych zadań programistycznych. Jednak zaskakująca ilość musiała się zmienić, aby połączyć te dwa projekty, i dlatego stworzyliśmy quadkopter FPV z obsługą GPS, bez żadnej dodatkowej funkcjonalności.

Zawarliśmy instrukcje, jak powielić nasz produkt, jeśli jesteś zadowolony z bardziej ograniczonego quadkoptera.

Zawarliśmy również wszystkie kroki, które podjęliśmy na drodze do bardziej autonomicznego quadkoptera. Jeśli czujesz się komfortowo, zagłębiając się w Arduino lub masz już duże doświadczenie w Arduino i chciałbyś wziąć nasz punkt zatrzymania jako punkt wyjścia do własnych eksploracji, to ten Instruktaż jest również dla Ciebie.

To świetny projekt, aby dowiedzieć się czegoś o budowaniu i kodowaniu dla Arduino, bez względu na to, ile masz doświadczenia. Miejmy nadzieję, że odejdziesz z dronem.

Konfiguracja wygląda następująco:

Na liście materiałów części bez gwiazdki są wymagane dla obu celów.

Części z jedną gwiazdką są wymagane tylko w przypadku niedokończonego projektu bardziej autonomicznego quadkoptera.

Części z dwiema gwiazdkami są wymagane tylko w przypadku bardziej ograniczonego quadkoptera.

Kroki wspólne dla obu projektów nie mają znacznika po tytule

Kroki wymagane tylko w przypadku bardziej ograniczonego, nieautonomicznego quadkoptera mają po tytule „(Uno)”.

Kroki wymagane tylko dla autonomicznego quadkoptera będącego w toku mają po tytule „(Mega)”.

Aby zbudować quad oparty na Uno, wykonaj kroki w kolejności, pomijając wszelkie kroki z „(Mega)” po tytule.

Aby pracować na quadzie opartym na Mega, wykonaj kroki w kolejności, pomijając wszelkie kroki z „(Uno)” po tytule.

Krok 1: Zbierz materiały

Składniki:

1) Jedna ramka quadkoptera (dokładna ramka prawdopodobnie nie ma znaczenia) (15 USD)

2) Cztery bezszczotkowe silniki 2830, 900 kV (lub podobne) i cztery pakiety akcesoriów montażowych (4 x 6 USD + 4 x 4 USD = łącznie 40 USD)

3) Cztery ESC 20A UBEC (4x 10 USD = łącznie 40 USD)

4) Jedna tablica rozdzielcza zasilania (z połączeniem XT-60) (20 USD)

5) Jedna bateria LiPo 3s, 3000-5000mAh z podłączeniem XT-60 (3000mAh odpowiada ok. 20 min czasu lotu) (25 USD)

6) Dużo śmigieł (te bardzo się psują) (10 USD)

7) Jeden Arduino Mega 2560* (40 USD)

8) Jeden Arduino Uno R3 (20 USD)

9) Drugie Arduino Uno R3** (20 USD)

10) Jedna Arduino Ultimate GPS Shield (nie potrzebujesz tarczy, ale użycie innego GPS będzie wymagało innego okablowania) (45 USD)

11) Dwa bezprzewodowe nadajniki-odbiorniki HC-12 (2x 5 USD = 10 USD)

12) Jeden żyroskop/akcelerometr MPU-6050, 6DOF (stopień swobody) (5 USD)

13) Jedna para 9-kanałowy nadajnik/odbiornik Turnigy 9x 2,4 GHz (70 USD)

14) żeńskie nagłówki Arduino (do układania w stos) (20 USD)

15) Ładowarka do akumulatorów LiPo (i zasilacz 12 V DC, nie, w zestawie) (20 USD)

17) Przejściówka USB A na B męski na męski (5 USD)

17) Taśma klejąca

18) Rurki termokurczliwe

Ekwipunek:

1) lutownica

2) Lutowane

3) Plastikowa żywica epoksydowa

4) Zapalniczka

5) ściągacz izolacji

6) Zestaw kluczy imbusowych

Opcjonalne komponenty do transmisji wideo FPV w czasie rzeczywistym (widok z perspektywy pierwszej osoby):

1) Mała kamera FPV (to link do dość taniej i złej jakości, której używaliśmy, możesz zastąpić lepszą) (20 USD)

2) Para nadajnik/odbiornik wideo 5,6 GHz (używane 832 modele) (30 USD)

3) 500mAh, 3s (11,1V) LiPo (7 USD) (użyliśmy z wtyczką bananową, ale z perspektywy czasu zalecamy korzystanie z podłączonej baterii, ponieważ ma ona złącze kompatybilne z nadajnikiem TS832, a zatem nie nie wymagają lutowania).

4) 2 akumulatory LiPo 1000 mAh 2s (7,4 V) lub podobne (5 USD). Liczba mAh nie jest krytyczna, o ile jest większa niż 1000 mAh. To samo stwierdzenie co powyżej dotyczy typu wtyczki dla jednej z dwóch baterii. Drugi będzie używany do zasilania monitora, więc będziesz musiał lutować bez względu na wszystko. Chyba najlepiej zaopatrzyć się w taką z wtyczką XT-60 (to właśnie zrobiliśmy). Link do tego typu jest tutaj: LiPo 1000mAh 2s (7,4V) z wtyczką XT-60

5) Monitor LCD (opcjonalny) (15 USD). Możesz także użyć adaptera AV-USB i oprogramowania do kopiowania DVD, aby oglądać bezpośrednio na laptopie. Daje to również możliwość nagrywania filmów i zdjęć, a nie tylko przeglądania ich w czasie rzeczywistym.

6) Jeśli kupiłeś baterie z innymi wtyczkami niż te połączone, możesz potrzebować odpowiednich przejściówek. Niezależnie od tego, zdobądź adapter odpowiadający wtyczce do akumulatora, który zasila monitor. Tutaj znajdziesz adaptery XT-60

* = tylko dla bardziej zaawansowanych projektów

** = tylko dla bardziej podstawowego projektu

Koszty:

Jeśli zaczynasz od zera (ale z lutownicą itp.), brak systemu FPV: ~370 USD

Jeśli masz już nadajnik/odbiornik RC, ładowarkę LiPo i akumulator LiPo: ~$260

Koszt systemu FPV: 80 $

Krok 2: Złóż ramę

Złóż ramę
Złóż ramę
Złóż ramę
Złóż ramę
Złóż ramę
Złóż ramę

Ten krok jest dość prosty, zwłaszcza jeśli używamy tej samej gotowej ramki, której używaliśmy. Po prostu użyj dołączonych śrub i złóż ramkę, jak pokazano, używając odpowiedniego klucza imbusowego lub śrubokręta do swojej ramy. Upewnij się, że ramiona tego samego koloru przylegają do siebie (jak na tym zdjęciu), aby dron miał wyraźny przód i tył. Ponadto upewnij się, że długa część dolnej płyty wystaje między ramionami o przeciwnych kolorach. To staje się ważne później.

Krok 3: Zamontuj silniki i podłącz Escs

Zamontuj silniki i podłącz Escs
Zamontuj silniki i podłącz Escs
Zamontuj silniki i podłącz Escs
Zamontuj silniki i podłącz Escs
Zamontuj silniki i podłącz Escs
Zamontuj silniki i podłącz Escs
Zamontuj silniki i podłącz Escs
Zamontuj silniki i podłącz Escs

Teraz, gdy rama jest zmontowana, wyjmij cztery silniki i cztery akcesoria montażowe. Do przykręcenia silników i mocowań można użyć śrub znajdujących się w zestawach montażowych lub śrub pozostałych po ramie quadkoptera. Jeśli kupisz wierzchowce, z którymi się powiązaliśmy, otrzymasz dwa dodatkowe komponenty, pokazane powyżej. Bez tych części mieliśmy dobre osiągi silnika, więc porzuciliśmy je, aby zmniejszyć wagę.

Po przykręceniu silników nałóż epoksyd na płytę rozdzielczą zasilania (PDB) na górze górnej płyty ramy quadkoptera. Upewnij się, że ustawiłeś go tak, aby złącze baterii wskazywało pomiędzy różnokolorowymi ramionami (równolegle do jednej z długich części dolnej płyty), jak na powyższym obrazku.

Powinieneś również mieć cztery stożki śmigła z gwintami żeńskimi. Odłóż je na razie na bok.

Teraz wyjmij swoje ESC. Z jednej strony będą wychodziły dwa przewody, jeden czerwony i jeden czarny. Dla każdego z czterech ESC włóż czerwony przewód do dodatniego złącza na PDB, a czarny do ujemnego. Pamiętaj, że jeśli używasz innego PDB, ten krok może wymagać lutowania. Teraz podłącz każdy z trzech przewodów wychodzących z każdego silnika. W tym momencie nie ma znaczenia, który przewód ESC połączysz z którym przewodem silnika (o ile łączysz wszystkie przewody jednego ESC z tym samym silnikiem!). Później skorygujesz odwrotną polaryzację. Odwrócenie przewodów nie jest niebezpieczne; powoduje to tylko wirowanie silnika do tyłu.

Krok 4: Przygotuj Arduino i Shield

Przygotuj Arduino i Shield
Przygotuj Arduino i Shield
Przygotuj Arduino i Shield
Przygotuj Arduino i Shield

Uwaga przed rozpoczęciem

Po pierwsze, możesz wybrać bezpośrednie lutowanie wszystkich przewodów. Jednak uznaliśmy, że używanie nagłówków pinów jest nieocenione, ponieważ zapewniają one dużą elastyczność w rozwiązywaniu problemów i dostosowywaniu projektu. Poniżej znajduje się opis tego, co zrobiliśmy (i polecamy innym).

Przygotuj Arduino i osłonę

Wyjmij Arduino Mega (lub Uno, jeśli robisz nieautonomiczny quad), osłonę GPS i nagłówki do układania w stos. Przylutuj męski koniec nagłówków do układania w stos w miejscu na osłonie GPS, w rzędach pinów równolegle do wcześniej wlutowanych pinów, jak pokazano na powyższym obrazku. Wlutuj również w sztaplowane nagłówki w rzędzie pinów oznaczonych 3V, CD, … RX. Użyj przecinaka do drutu, aby odciąć nadmiar długości na kołkach wystających z dna. Umieść męskie nagłówki z wygiętymi wierzchołkami we wszystkich tych nagłówkach do układania w stos. Do nich przylutujesz przewody do pozostałych komponentów.

Przymocuj osłonę GPS do góry, upewniając się, że styki pasują do tych na Arduino (Mega lub Uno). Zwróć uwagę, że jeśli używasz Mega, wiele Arduino będzie nadal odsłoniętych po umieszczeniu osłony na miejscu.

Umieść taśmę elektryczną na spodzie Arduino, zakrywając wszystkie odsłonięte luty pinów, aby zapobiec zwarciom, gdy Arduino spoczywa na PDB.

Krok 5: Połącz ze sobą elementy i umieść baterię (Uno)

Połącz ze sobą elementy i umieść baterię (Uno)
Połącz ze sobą elementy i umieść baterię (Uno)
Połącz ze sobą elementy i umieść baterię (Uno)
Połącz ze sobą elementy i umieść baterię (Uno)
Połącz ze sobą komponenty i umieść baterię (Uno)
Połącz ze sobą komponenty i umieść baterię (Uno)
Połącz ze sobą elementy i umieść baterię (Uno)
Połącz ze sobą elementy i umieść baterię (Uno)

Powyższy schemat jest prawie identyczny z tym, który wykonał Joop Brooking, ponieważ mocno oparliśmy nasz projekt na jego.

*Zauważ, że ten schemat zakłada prawidłowo zamontowaną osłonę GPS, a zatem GPS nie pojawia się na tym schemacie.

Powyższy schemat został przygotowany przy użyciu oprogramowania Fritzing, które jest szczególnie polecane w przypadku schematów z udziałem Arduino. Korzystaliśmy głównie z części ogólnych, które można elastycznie edytować, ponieważ nasze części generalnie nie znajdowały się w dołączonej bibliotece części Fritzing.

-Upewnij się, że przełącznik na tarczy GPS jest ustawiony na „Zapis bezpośredni”.

-Teraz podłącz wszystkie komponenty zgodnie z powyższym schematem (z wyjątkiem baterii!) (Ważna uwaga dotycząca przewodów danych GPS poniżej).

-Zauważ, że już podłączyłeś ESC do silników i PDB, więc ta część schematu jest gotowa.

-Ponadto zwróć uwagę, że dane GPS (żółte przewody) wychodzą z pinów 0 i 1 na Arduino (nie z oddzielnych pinów Tx i Rx na GPS). Dzieje się tak, ponieważ skonfigurowany do "Zapisu bezpośredniego" (patrz poniżej), GPS wysyła bezpośrednio do sprzętowych portów szeregowych w uno (piny 0 i 1). Najwyraźniej widać to na drugim zdjęciu powyżej kompletnego okablowania.

-Podczas podłączania okablowania odbiornika RC, patrz rysunek powyżej. Zauważ, że przewody danych idą do górnego rzędu, podczas gdy Vin i Gnd znajdują się odpowiednio w drugim i trzecim rzędzie (i w drugiej do najdalszej kolumnie pinów).

-Aby wykonać okablowanie dla transceivera HC-12, odbiornika RC i 5Vout z PDB do Vin Arduino, użyliśmy złączy do układania w stosy, podczas gdy dla żyroskopu przylutowaliśmy przewody bezpośrednio do płytki i za pomocą rurek termokurczliwych wokół lutować. Możesz wybrać dowolny z komponentów, jednak zalecane jest lutowanie bezpośrednio do żyroskopu, ponieważ oszczędza miejsce, co ułatwia montaż małej części. Korzystanie z nagłówków to trochę więcej pracy z góry, ale zapewnia większą elastyczność. Bezpośrednie lutowanie przewodów jest bezpieczniejszym połączeniem na dłuższą metę, ale oznacza, że użycie tego komponentu w innym projekcie jest trudniejsze. Pamiętaj, że jeśli używałeś nagłówków na tarczy GPS, nadal masz przyzwoitą elastyczność niezależnie od tego, co robisz. Przede wszystkim upewnij się, że przewody danych GPS w stykach 0 i 1 w GPS są łatwe do usunięcia i wymiany.

Pod koniec naszego projektu nie byliśmy w stanie zaprojektować dobrej metody mocowania wszystkich naszych komponentów do ramy. Ze względu na presję czasu w naszej klasie, nasze rozwiązania zasadniczo obracały się wokół dwustronnej taśmy piankowej, taśmy izolacyjnej, taśmy elektrycznej i opasek zaciskowych. Zdecydowanie zalecamy poświęcenie większej ilości czasu na projektowanie stabilnych konstrukcji montażowych, jeśli planujesz, że będzie to projekt długoterminowy. Biorąc to wszystko pod uwagę, jeśli chcesz po prostu zrobić szybki prototyp, możesz śledzić nasz proces. Upewnij się jednak, że żyroskop jest dobrze zamocowany. To jedyny sposób, w jaki Arduino wie, co robi quadkopter, więc jeśli porusza się w locie, będziesz mieć problemy.

Gdy wszystko jest już okablowane i na miejscu, weź akumulator LiPo i wsuń go między górną i dolną płytę ramy. Upewnij się, że jego złącze jest skierowane w tym samym kierunku co złącze PDB i że faktycznie mogą się połączyć. Użyliśmy taśmy klejącej, aby utrzymać baterię na miejscu (taśma na rzepy również działa, ale jest bardziej irytująca niż taśma klejąca). Taśma samoprzylepna działa dobrze, ponieważ można łatwo wymienić baterię lub wyjąć ją do ładowania. Musisz jednak upewnić się, że bateria jest DOKŁADNIE przyklejona taśmą, tak jakby bateria poruszała się podczas lotu, co mogłoby poważnie zakłócić równowagę drona. NIE podłączaj jeszcze baterii do PDB.

Krok 6: Połącz ze sobą elementy i umieść baterię (Mega)

Połącz ze sobą komponenty i umieść baterię (Mega)
Połącz ze sobą komponenty i umieść baterię (Mega)
Połącz ze sobą komponenty i umieść baterię (Mega)
Połącz ze sobą komponenty i umieść baterię (Mega)
Połącz ze sobą komponenty i umieść baterię (Mega)
Połącz ze sobą komponenty i umieść baterię (Mega)

Powyższy schemat został przygotowany przy użyciu oprogramowania Fritzing, które jest szczególnie polecane w przypadku schematów z wykorzystaniem arduino. W większości korzystaliśmy z części ogólnych, ponieważ nasze części generalnie nie znajdowały się w dołączonej bibliotece części Fritzinga.

-Zauważ, że ten schemat zakłada prawidłowo zamontowaną osłonę GPS, a zatem GPS nie pojawia się na tym schemacie.

-Przestaw przełącznik w Mega 2560 na „Soft Serial”.

-Teraz podłącz wszystkie komponenty zgodnie z powyższym schematem (z wyjątkiem baterii!)

-Zauważ, że już podłączyłeś ESC do silników i PDB, więc ta część schematu jest gotowa.

-Kable połączeniowe z Pin 8 do Rx i Pin 7 do Tx są tam, ponieważ (w przeciwieństwie do Uno, do którego ten ekran został wykonany) mega brakuje uniwersalnego asynchronicznego odbiornika-nadajnika (UART) na pinach 7 i 8, a co za tym idzie musimy użyć sprzętowych pinów szeregowych. Jest więcej powodów, dla których potrzebujemy sprzętowych pinów szeregowych, omówionych później.

-Podczas podłączania okablowania odbiornika RC, patrz rysunek powyżej. Zauważ, że przewody danych idą do górnego rzędu, podczas gdy Vin i Gnd znajdują się odpowiednio w drugim i trzecim rzędzie (i w drugiej do najdalszej kolumnie pinów).

-Aby wykonać okablowanie dla transceivera HC-12, odbiornika RC i 5Vout z PDB do Vin Arduino, użyliśmy złączy do układania w stos, podczas gdy dla żyroskopu przylutowaliśmy przewody bezpośrednio i za pomocą rurek termokurczliwych wokół lutu. Możesz wybrać dowolny z komponentów. Korzystanie z nagłówków to trochę więcej pracy z góry, ale zapewnia większą elastyczność. Bezpośrednie lutowanie przewodów jest bezpieczniejszym połączeniem na dłuższą metę, ale oznacza, że użycie tego elementu w innym projekcie jest trudniejsze. Pamiętaj, że jeśli używałeś nagłówków na tarczy GPS, nadal masz przyzwoitą elastyczność niezależnie od tego, co robisz.

Pod koniec naszego projektu nie byliśmy w stanie zaprojektować dobrej metody mocowania wszystkich naszych komponentów do ramy. Ze względu na presję czasu w naszej klasie, nasze rozwiązania zasadniczo obracały się wokół dwustronnej taśmy piankowej, taśmy izolacyjnej, taśmy elektrycznej i opasek zaciskowych. Zdecydowanie zalecamy poświęcenie większej ilości czasu na projektowanie stabilnych konstrukcji montażowych, jeśli planujesz, że będzie to projekt długoterminowy. Biorąc to wszystko pod uwagę, jeśli chcesz po prostu zrobić szybki prototyp, możesz śledzić nasz proces. Upewnij się jednak, że żyroskop jest dobrze zamocowany. To jedyny sposób, w jaki Arduino wie, co robi quadkopter, więc jeśli porusza się w locie, będziesz mieć problemy.

Gdy wszystko jest już okablowane i na miejscu, weź akumulator LiPo i wsuń go między górną i dolną płytę ramy. Upewnij się, że jego złącze jest skierowane w tym samym kierunku co złącze PDB i że faktycznie mogą się połączyć. Użyliśmy taśmy klejącej, aby utrzymać baterię na miejscu (taśma na rzepy również działa, ale jest bardziej irytująca niż taśma klejąca). Taśma samoprzylepna działa dobrze, ponieważ można łatwo wymienić baterię lub wyjąć ją do ładowania. Musisz jednak upewnić się, że bateria jest DOKŁADNIE przyklejona taśmą, tak jakby bateria poruszała się podczas lotu, co mogłoby poważnie zakłócić równowagę drona. NIE podłączaj jeszcze baterii do PDB.

Krok 7: Powiąż odbiornik

Powiąż odbiornik
Powiąż odbiornik
Powiąż odbiornik
Powiąż odbiornik

Weź odbiornik RC i tymczasowo podłącz go do zasilacza 5V (albo zasilając Arduino zasilaniem USB lub 9V, albo osobnym zasilaczem. Nie podłączaj jeszcze LiPo do Arduino). Weź pin wiążący dostarczony z odbiornikiem RC i umieść go na pinach BIND na odbiorniku. Ewentualnie zewrzyj górne i dolne piny w kolumnie BIND, jak pokazano na powyższym zdjęciu. Na odbiorniku powinna szybko migać czerwona lampka. Teraz weź kontroler i naciśnij przycisk z tyłu, gdy jest wyłączony, jak pokazano powyżej. Trzymając wciśnięty przycisk, włącz kontroler. Teraz migające światło na odbiorniku powinno świecić stałym światłem. Odbiorca jest związany. Usuń linkę wiążącą. Jeśli używasz innego zasilacza, podłącz ponownie odbiornik do 5V z Arduino.

Krok 8: (Opcjonalnie) Połącz ze sobą i zamontuj system kamery FPV

(Opcjonalnie) Połącz ze sobą i zamontuj system kamer FPV
(Opcjonalnie) Połącz ze sobą i zamontuj system kamer FPV
(Opcjonalnie) Połącz ze sobą i zamontuj system kamer FPV
(Opcjonalnie) Połącz ze sobą i zamontuj system kamer FPV

Najpierw zlutuj adapter XT-60 z przewodami zasilającymi i uziemiającymi na monitorze. Mogą się one różnić w zależności od monitora, ale moc prawie zawsze będzie czerwona, a ziemia prawie zawsze czarna. Teraz włóż adapter z przylutowanymi przewodami do swojego LiPo 1000 mAh z wtyczką XT-60. Monitor powinien włączyć się na (zwykle) niebieskim tle. To najtrudniejszy krok!

Teraz przykręć anteny do odbiornika i nadajnika.

Podłącz swój mały Lipo 500mAh do nadajnika. Skrajny prawy pin (tuż pod anteną) to uziemienie (V_) akumulatora, następny pin po lewej to V+. Przychodzą trzy przewody prowadzące do kamery. Twoja kamera powinna być wyposażona we wtyczkę trzy w jednym, która pasuje do nadajnika. Upewnij się, że pośrodku masz żółty przewód danych. Jeśli używałeś baterii, z którymi się łączyliśmy, z wtyczkami do tego przeznaczonymi, ten krok nie powinien wymagać lutowania.

Na koniec podłącz drugą baterię 1000 mAh za pomocą przewodu wyjściowego DC dostarczonego z odbiornikiem, a następnie podłącz go do portu wejściowego DC w odbiorniku. Na koniec podłącz czarny koniec kabla AVin dostarczonego z odbiornikiem do portu AVin odbiornika, a drugi (żółty, żeński) koniec do żółtego męskiego końca kabla AVin monitora.

W tym momencie powinieneś widzieć obraz z kamery na monitorze. Jeśli nie, upewnij się, że odbiornik i nadajnik są włączone (powinieneś zobaczyć cyfry na ich małych ekranach) i że są na tym samym kanale (użyliśmy kanału 11 dla obu i odnieśliśmy dobry sukces). Ponadto może być konieczna zmiana kanału na monitorze.

Zamontuj komponenty na ramie.

Gdy konfiguracja działa, odłącz baterie, aż będziesz gotowy do lotu.

Krok 9: Skonfiguruj odbiór danych GPS

Skonfiguruj odbiór danych GPS
Skonfiguruj odbiór danych GPS
Skonfiguruj odbiór danych GPS
Skonfiguruj odbiór danych GPS

Podłącz drugie Arduino do drugiego transceivera HC-12, jak pokazano na powyższym schemacie, pamiętając, że konfiguracja będzie zasilana tylko tak, jak pokazano, jeśli zostanie podłączona do komputera. Pobierz dostarczony kod nadawczo-odbiorczy, otwórz monitor szeregowy do 9600 bodów.

Jeśli używasz bardziej podstawowej konfiguracji, powinieneś zacząć odbierać zdania GPS, jeśli tarcza GPS jest zasilana i prawidłowo podłączona do drugiego nadajnika-odbiornika HC-12 (i jeśli przełącznik na tarczy jest w pozycji „Zapis bezpośredni”).

W przypadku Mega upewnij się, że przełącznik jest w pozycji „Soft Serial”.

Krok 10: Wykonaj kod konfiguracji (Uno)

Ten kod jest identyczny z kodem używanym przez Joopa Brokkinga w jego samouczku o quadcopterze Arduino i zasługuje na wszystkie zasługi za jego napisanie.

Po odłączeniu baterii użyj kabla USB, aby podłączyć komputer do Arduino i prześlij załączony kod konfiguracyjny. Włącz nadajnik RC. Otwórz monitor szeregowy na 57600 bodów i postępuj zgodnie z instrukcjami.

Powszechne błędy:

Jeśli kod nie zostanie przesłany, upewnij się, że piny 0 i 1 są odłączone na osłonie UNO/GPS. Jest to ten sam port sprzętowy, którego urządzenie używa do komunikacji z komputerem, więc musi być wolny.

Jeśli kod przeskakuje jednocześnie kilka kroków, sprawdź, czy przełącznik GPS jest ustawiony na „Zapis bezpośredni”.

Jeśli żaden odbiornik nie zostanie wykryty, upewnij się, że na odbiorniku świeci stałe (ale słabe) czerwone światło, gdy nadajnik jest włączony. Jeśli tak, sprawdź okablowanie.

Jeśli nie zostanie wykryty żaden żyroskop, może to być spowodowane uszkodzeniem żyroskopu lub posiadaniem innego typu żyroskopu niż ten, do którego jest przeznaczony kod.

Krok 11: Wykonaj kod konfiguracji (mega)

Ten kod jest identyczny z kodem używanym przez Joopa Brokkinga w jego samouczku o quadcopterze Arduino i zasługuje na wszystkie zasługi za jego napisanie. Po prostu dostosowaliśmy okablowanie do Mega tak, aby wejścia odbiornika odpowiadały właściwym pinom przerwania zmiany pinów.

Po odłączeniu baterii użyj kabla USB, aby podłączyć komputer do Arduino i prześlij załączony kod konfiguracyjny. Otwórz monitor szeregowy na 57600 bodów i postępuj zgodnie z instrukcjami.

Krok 12: Kalibracja ESC (Uno)

Po raz kolejny ten kod jest identyczny z kodem Joop Brokkinga. Wszystkie modyfikacje zostały dokonane w celu zintegrowania GPS i Arduino i można je znaleźć w dalszej części opisu budowy bardziej zaawansowanego quadkoptera.

Prześlij załączony kod kalibracji ESC. Na monitorze szeregowym wpisz literę „r” i naciśnij Enter. Powinieneś zacząć widzieć wymienione wartości kontrolera RC w czasie rzeczywistym. Sprawdź, czy wahają się od 1000 do 2000 na skrajnych wartościach przepustnicy, przechyłu, pochylenia i odchylenia. Następnie napisz „a” i naciśnij Enter. Pozwól, aby kalibracja żyroskopu ruszyła, a następnie sprawdź, czy żyroskop rejestruje ruch quada. Teraz odłącz arduino od komputera, przesuń przepustnicę do góry na kontrolerze i podłącz akumulator. ESC powinny powtarzać różne sygnały dźwiękowe (ale może się to różnić w zależności od ESC i jego oprogramowania układowego). Wciśnij przepustnicę do końca. ESC powinny wydawać niższe sygnały dźwiękowe, a następnie zamilkć. Odłącz baterię.

Opcjonalnie możesz w tym momencie użyć stożków dostarczonych z pakietami akcesoriów do montażu silnika, aby mocno przykręcić śmigła. Następnie wprowadź liczby 1–4 na monitorze szeregowym, aby odpowiednio zasilić silniki 1–4 przy najniższej mocy. Program zarejestruje ilość wstrząsów spowodowanych brakiem równowagi rekwizytów. Możesz spróbować temu zaradzić, dodając niewielką ilość taśmy klejącej po jednej lub drugiej stronie rekwizytów. Odkryliśmy, że bez tego kroku możemy uzyskać dobry lot, ale być może nieco mniej wydajnie i głośniej, niż gdybyśmy zbalansowali rekwizyty.

Krok 13: Kalibracja ESC (Mega)

Ten kod jest bardzo podobny do kodu Brokkinga, jednak dostosowaliśmy go (i odpowiednie okablowanie) do pracy z Mega.

Prześlij załączony kod kalibracji ESC. Na monitorze szeregowym wpisz literę „r” i naciśnij Enter. Powinieneś zacząć widzieć wymienione wartości kontrolera RC w czasie rzeczywistym. Sprawdź, czy wahają się od 1000 do 2000 na skrajnych wartościach przepustnicy, przechyłu, pochylenia i odchylenia.

Następnie napisz „a” i naciśnij Enter. Pozwól, aby kalibracja żyroskopu ruszyła, a następnie sprawdź, czy żyroskop rejestruje ruch quada.

Teraz odłącz arduino od komputera, przesuń przepustnicę do góry na kontrolerze i podłącz akumulator. ESC powinny wyemitować trzy niskie sygnały dźwiękowe, a następnie wysoki dźwięk (ale może się to różnić w zależności od ESC i jego oprogramowania układowego). Wciśnij przepustnicę do końca. Odłącz baterię.

Zmiany, które wprowadziliśmy w tym kodzie, polegały na przejściu z używania PORTD dla pinów ESC na używanie PORTA, a następnie zmiana bajtów zapisanych w tych portach, aby aktywować odpowiednie piny, jak pokazano na schemacie okablowania. Ta zmiana jest spowodowana tym, że szpilki rejestru PORTD nie znajdują się w tym samym miejscu w Mega, co w Uno. Nie byliśmy w stanie w pełni przetestować tego kodu, ponieważ pracowaliśmy ze starym, niemarkowym Mega, który miał sklep naszej szkoły. Oznaczało to, że z jakiegoś powodu nie wszystkie piny rejestru PORTA były w stanie prawidłowo aktywować ESC. Mieliśmy również problemy z użyciem operatora lub równa się (|=) w niektórych naszych testach. Nie jesteśmy pewni, dlaczego powodowało to problemy podczas zapisywania bajtów, aby ustawić napięcia pinów ESC, więc zmodyfikowaliśmy kod Brookinga tak mało, jak to możliwe. Uważamy, że ten kod jest bardzo bliski funkcjonalności, ale Twój przebieg może się różnić.

Krok 14: Wznieś się w powietrze!! (ONZ)

I znowu, ten trzeci kawałek genialnego kodu jest dziełem Joopa Brokkinga. Zmiany we wszystkich tych trzech fragmentach kodu są obecne tylko w naszej próbie integracji danych GPS z Arduino.

Gdy śmigła są mocno zamocowane na ramie i wszystkie komponenty są przymocowane, oklejone taśmą lub w inny sposób zamontowane, załaduj kod kontrolera lotu do Arduino, a następnie odłącz Arduino od komputera.

Zabierz swój quadkopter na zewnątrz, podłącz baterię i włącz nadajnik. Opcjonalnie zabierz ze sobą laptopa podłączonego do konfiguracji odbioru GPS, a także konfiguracji odbioru wideo i monitora. Załaduj kod transceivera do Arduino naziemnego, otwórz monitor szeregowy na 9600 bodów i obserwuj napływ danych GPS.

Teraz jesteś gotowy do lotu. Wciśnij przepustnicę w dół i odchyl w lewo, aby uzbroić quadkopter, a następnie delikatnie podnieś przepustnicę, aby zawisła. Zacznij od latania nisko nad ziemią i nad miękkimi powierzchniami, takimi jak trawa, aż poczujesz się komfortowo.

Zobacz osadzony film, w którym podekscytowany latamy dronem, gdy po raz pierwszy udało nam się uruchomić jednocześnie drona i GPS.

Krok 15: Wznieś się w powietrze!! (Mega)

Z powodu naszego rozłączenia z kodem kalibracji ESC dla Mega, nigdy nie byliśmy w stanie stworzyć kodu kontrolera lotu dla tej płyty. Jeśli dotarłeś do tego punktu, wyobrażam sobie, że przynajmniej bawiłeś się kodem kalibracji ESC, aby działał dla Mega. Dlatego prawdopodobnie będziesz musiał wprowadzić podobne modyfikacje w kodzie kontrolera lotu, jak w poprzednim kroku. Jeśli nasz kod kalibracyjny ESC dla Mega działa magicznie bez żadnych innych modyfikacji, to jest tylko kilka rzeczy, które będziesz musiał zrobić z kodem zapasowym, aby działał na tym etapie. Najpierw musisz przejrzeć i wymienić wszystkie wystąpienia PORTD na PORTA. Nie zapomnij również zmienić DDRD na DDRA. Następnie będziesz musiał zmienić wszystkie bajty zapisywane w rejestrze PORTA, aby aktywowały właściwe piny. Aby to zrobić, użyj bajtu B11000011, aby ustawić piny na wysoki i B00111100, aby ustawić piny na niski. Powodzenia i daj nam znać, jeśli z powodzeniem latasz na Mega!

Krok 16: Jak dotarliśmy do miejsca, w którym obecnie jesteśmy dzięki Mega Design?

Ten projekt był ogromnym doświadczeniem edukacyjnym dla nas, początkujących hobbystów Arduino i elektroniki. Dlatego pomyśleliśmy, że dołączymy sagę o wszystkim, co napotkaliśmy, próbując włączyć GPS kod Joop Brokkinga. Ponieważ kod Brokkinga jest tak dokładny i znacznie bardziej skomplikowany niż wszystko, co pisaliśmy, postanowiliśmy go jak najmniej modyfikować. Staraliśmy się, aby tarcza GPS wysyłała dane do Arduino, a następnie Arduino przesyłało nam te informacje za pośrednictwem transceivera HC12 bez jakiejkolwiek modyfikacji kodu lotu lub okablowania. Po przejrzeniu schematów i okablowania naszego Arduino Uno, aby dowiedzieć się, jakie piny są dostępne, zmieniliśmy kod nadajnika GPS, którego używaliśmy do obejścia istniejącego projektu. Następnie przetestowaliśmy go, aby upewnić się, że wszystko działa. W tym momencie wszystko wydawało się obiecujące.

Następnym krokiem była integracja kodu, który właśnie zmodyfikowaliśmy i przetestowaliśmy z kontrolerem lotu Brokkinga. Nie było to zbyt trudne, ale szybko natrafiliśmy na błąd. Kontroler lotu Brokking opiera się na bibliotekach Arduino Wire i EEPROM, podczas gdy nasz kod GPS korzystał zarówno z biblioteki Software Serial, jak i biblioteki Arduino GPS. Ponieważ Wire Library odwołuje się do biblioteki Software Serial, napotkaliśmy błąd, w którym kod nie skompilował się, ponieważ istniało „wiele definicji dla _wektora 3_”, cokolwiek to znaczy. Po przejrzeniu Google i grzebaniu w bibliotekach w końcu zdaliśmy sobie sprawę, że ten konflikt bibliotek uniemożliwił użycie tych fragmentów kodu razem. Poszliśmy więc szukać alternatyw.

Odkryliśmy, że jedyną kombinacją bibliotek, która nie rzucała nam błędów, było przełączenie standardowej biblioteki GPS na neoGPS, a następnie użycie AltSoftSerial zamiast Software Serial. Ta kombinacja zadziałała, jednak AltSoftSerial może działać tylko z konkretnymi pinami, które nie były dostępne w naszym projekcie. To właśnie prowadzi nas do korzystania z Mega. Arduino Megas ma wiele sprzętowych portów szeregowych, co oznaczało, że mogliśmy ominąć ten konflikt bibliotek, nie musząc w ogóle otwierać portów szeregowych oprogramowania.

Jednak kiedy zaczęliśmy używać Mega, szybko zdaliśmy sobie sprawę, że konfiguracja pinów była inna. Piny na Uno, które mają przerwania, są inne na Mega. Podobnie piny SDA i SCL znajdowały się w różnych lokalizacjach. Po przestudiowaniu schematów pinów dla każdego typu Arduino i przywróceniu rejestrów wywołanych w kodzie, byliśmy w stanie uruchomić kod konfiguracji lotu przy minimalnym ponownym okablowaniu i bez zmian oprogramowania.

Kod kalibracji ESC to miejsce, w którym zaczęliśmy napotykać problemy. Poruszyliśmy to krótko wcześniej, ale zasadniczo kod wykorzystuje rejestry pinów do regulacji pinów używanych do sterowania ESC. To sprawia, że kod jest trudniejszy do odczytania niż przy użyciu standardowej funkcji pinMode(); jednak sprawia, że kod działa szybciej i jednocześnie aktywuje szpilki. Jest to ważne, ponieważ kod lotu działa w starannie zaplanowanej pętli. Ze względu na różnice pinów między Arduino zdecydowaliśmy się użyć rejestru portu A w Mega. Jednak w naszych testach nie wszystkie szpilki dawały nam to samo napięcie wyjściowe, gdy powiedziano nam, że mają być wysokie. Niektóre piny miały napięcie wyjściowe około 4,90V, a inne zbliżały nas do 4,95V. Najwyraźniej ESC, które mamy, są nieco wybredne, więc działałyby poprawnie tylko wtedy, gdy użyliśmy pinów o wyższym napięciu. To zmusiło nas do zmiany bajtów, które zapisaliśmy w rejestrze A, tak abyśmy rozmawiali z właściwymi pinami. Więcej informacji na ten temat znajduje się w dziale Kalibracja ESC.

To mniej więcej tyle, ile doszliśmy w tej części projektu. Kiedy poszliśmy przetestować ten zmodyfikowany kod kalibracji ESC, coś się zwarło i straciliśmy komunikację z naszym Arduino. Byliśmy tym bardzo zdziwieni, ponieważ nie zmieniliśmy żadnego okablowania. To zmusiło nas do cofnięcia się i uświadomienia sobie, że po tygodniach prób dopasowania do siebie niekompatybilnych elementów mieliśmy tylko kilka dni na zdobycie latającego drona. Dlatego cofnęliśmy się i stworzyliśmy prostszy projekt z Uno. Jednak nadal uważamy, że nasze podejście jest bliskie współpracy z Mega z nieco więcej czasu.

Naszym celem jest, aby to wyjaśnienie napotkanych przez nas przeszkód było pomocne, jeśli pracujesz nad modyfikacją kodu Brokking. Nigdy też nie mieliśmy okazji spróbować zakodować żadnych funkcji sterowania autonomicznego w oparciu o GPS. To jest coś, co musisz rozgryźć po stworzeniu działającego drona z Mega. Jednak z niektórych wstępnych badań Google wygląda na to, że wdrożenie filtra Kalmana może być najbardziej stabilnym i dokładnym sposobem określania pozycji w locie. Sugerujemy, abyś trochę zbadał, w jaki sposób ten algorytm optymalizuje szacowanie stanu. Poza tym życzę powodzenia i daj nam znać, jeśli zajdziesz dalej niż byliśmy w stanie!

Zalecana: