Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Uniwersalny pilot RC oparty na Arduino

Exmantion 22 Cze 2019 14:10 3408 10
  • Poradnik dotyczy radia RC czyli potocznie pilota do obsługi modelów zdalnie sterowanych. Jest oparty całkowicie na Arduino, a co za tym idzie można dowolnie go modyfikować i używać do więcej niż jednego urządzenia bez potrzeby wgrywania kodu.

    Co będziemy potrzebować?
    1)Po pierwsze potrzebujemy obudowy do samego radia - samej skorupy plastikowej od innego modelu (można być kreatywnym i samemu sobie coś zaprojektować/wydrukować w 3d lub w inny sposób, ale ja poszedłem na łatwiznę :)). Użyłem starego nadajnika od helikoptera, który jak to bywa przy modelach zdalnie sterowanych w rękach dzieci smutnie czeka na swój koniec na strychu po krytycznym zderzeniu z sosną. Ale samo urządzenie jest całe i po wyrzuceniu całej elektroniki, dostałem 3 potencjometry od dwóch drążków (później dodałem jeszcze czwarty żeby mieć pełne cztery osie kontroli), oraz jeden potencjometr chyba jakiś od regulacji parametru lotu, ale nie sądzę aby oryginalnie robił coś więcej niż jako atrapę. Do tego przełącznik zasilający, oraz 4 diody pokazujące poziom naładowania baterii których jednak nie wykorzystam, gdyż po testach wyszło, że pobierają znacznie za dużo prądu niż to warte. Ale zostaną bo bez nich pilot wygląda dziwnie. Dokupiłem też trzy przełączniki starego typu dźwigienkowego do włączania na przykład diodek led (lub czego dusza zapragnie).
    Uniwersalny pilot RC oparty na Arduino

    2) Po drugie, potrzebujemy jakiegoś Arduino, w moim wypadku klon Arduino Nano nadaje się świetnie. Do tego gwiazdka na torcie, czyli serce pilota nadajnik/odbiornik NRF24L01 PA LNA z anteną. Może być i bez niej, ale nadajnik powinien mieć tą moc i zasięg nadawczy. Ten działa teoretycznie do 1100m lecz przez to ma spory pobór prądu. Zasilany jest na tylko na 3.3V (!!!) i nominalnie pobiera ponad 100mA co dla biednych pinów Arduino będzie sporo za dużo.

    3) Więc, potrzebujemy jakiegoś dc-dc converter na 3.3V który podłączymy bezpośrednio pod baterię.

    4) Co do baterii, użyłem starego akumulatora od czegoś-tam który po paru testach wykazał (mimo lat) bardzo dobrą sprawność. Nominalnie ma 8.6V i całkowity pobór sprawnego pilota podczas nadawania wynosi w moim wypadku równe 100mA, czyli około 3h pracy na baterii - do drona wystarczająco długo. Oczywiście można czegokolwiek innego, jak na przykład paluszków AA, tylko połączyć je szeregowo aby uzyskać odpowiednie napięcie.

    5) Przydadzą się jakieś przewody oraz konektory (te od wiatraczków komputerowych) do połączenia potencjometrów i przełączników z Arduino, ale można bezpośrednio jak kto woli.

    Jak to wszystko złożyć?
    Polecam zacząć od potencjometrów: polutowałem wg schematu z tutoriali arduino: prawa nóżka to zasilanie 5V od Arduino, środkowa do pinu analogowego, lewa do ziemi. Przełączniki też w ten sam deseń, tyle że środkowy pin biegnie do pinu digital na płytce Arduino. Dodam, że pojęcie ‘lewa nóżka’ a ‘prawa nóżka’ jest czysto teoretyczne, więc jak komuś wygodniej można zamienić 5V na GND oraz GND na 5V, a później w kodzie to poprawić.
    Dla orientacji operacji samego radia umieściłem jeszcze jedną diodę RGB NeoPixel na jego froncie. Chwilowo świeci tylko na zielono, ale można dodać co się chce zwłaszcza, że moduły nadajnik/odbiornik których używam mogą działać w dwie strony więc diodzie można przypisać zadanie wyświetlania na przykład poziomu baterii drona.
    Uniwersalny pilot RC oparty na Arduino
    Płytkę Arduino oraz konektory przylutowałem na kawałku płytki prototypowej i przykręciłem do obudowy w miejscu starego sterownika. Baterię podpiąłem za pośrednictwem włącznika do pinu Vin Arduino, jako, że Nano posiada stabilizator do 12V. Do baterii również poszedł trzy i trzy voltowy dc converter. Opcjonalna dioda wymaga 5V i tak jak wszystkie potencjometry i przełączniki podpiąłem ją do pinu wyjściowego Arduino 5V. Ziemia (GND) wszędzie jest wspólna.
    Uniwersalny pilot RC oparty na Arduino
    Co do kodu, mam trzy przełączniki, czyli trzy piny cyfrowe: D2, D3, D4. 4 potencjometry plus jeden dodatkowy, czyli 5 pinów analogowych od A0 do A4. D7 stało się pinem dla diody rgb, a piny D13,D12, D11 to odpiwenio wyjścia nadajnika: SCK, MISO, MOSI i one muszą być tak ze względu na fakt że moduł wysyła pakiety za pomocą protokołu SPI. Pin D10 oraz D9, służą do zarządzaniem modułem i połączyłem je odpowiednio z CSN i CE na module. Te dwa ostatnie można z łatwością zmienić na inne, tylko należy pamiętać o zmianie również i w kodzie.
    Polecam po kolei sprawdzić czy Arduino prawidłowo odczytuje wartości wszystkich drążków i przełączników przed finalnym zamknięciem obudowy za pomocą przykładowych programów z Arduino IDE. na koniec wszystko jeszcze zabezpieczyłem klejem na ciepło.

    Kod za równo nadajnika jak i przykładowy odbiornika znajduje się poniżej, a biblioteki znajdziemy na GitHubie.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Test odbiornika:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Przyznaję, że trochę wzorowałem się na poradniku od electronoobs.com, ale ten pisany jest średnim angielskim i pomija sporo faktów, oraz informacji które przy budowie mojego pilota zmusiły mnie do intensywnego googlania.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    Pozdrawiam :)
    Exmantion napisał 4 postów o ocenie 11, pomógł 0 razy. Mieszka w mieście Warszawa. Jest z nami od 2017 roku.
  • #2
    pioteer
    Poziom 10  
    Temat może być ciekawy, ale proszę o trochę uporządkowania bo strasznie chaotycznie napisane ;-) i ciężko się to czyta.
    I na boga, ten sterownik do RC się nazywa radio a nie pilot(!), a gałki(!) to drążki sterowe.
  • #3
    Gandalf102
    Poziom 3  
    No nawet spoko. Mam jedno pytanie. Jak z zasięgiem.
  • #4
    pier
    Poziom 23  
    Exmantion napisał:

    Zasilany jest na 3.3V (!!!) tylko i nominalnie pobiera ponad 100mAh co dla biednych pinów Arduino będzie sporo za dużo

    A co ma piernik do wiatraka? Co Arduino obchodzi ile prądu zeżre radio, przecież procesor nie zasila radia. A po drugie jakie mAh?
  • #5
    Exmantion
    Poziom 2  
    pier napisał:
    Exmantion napisał:

    Zasilany jest na 3.3V (!!!) tylko i nominalnie pobiera ponad 100mAh co dla biednych pinów Arduino będzie sporo za dużo

    A co ma piernik do wiatraka? Co Arduino obchodzi ile prądu zeżre radio, przecież procesor nie zasila radia. A po drugie jakie mAh?


    piszę, aby ktoś nie podłączył zasilania całego modułu pod pin 3.3V w Arduino, bo to co prawda wygodne w innych wypadkach, ale spaliło by płytkę. Arduino UNO nadajnik bez zewnętrznej antenki da radę zasilić bez problemu.
  • #6
    KJ
    Poziom 31  
    Też mi się nie widzi używanie czegoś sklejonego z arduino, zawodnego modułu radiowego - padły mi już chyba 4 NRF24L01 w wersji z PA w różnych aplikacjach. Do tego poskładanego w dość mało estetyczny sposób na pająka. Sterowanie tym czegokolwiek większego niż szczotkowy dron zabawka ważący parę g to zdecydowanie lekkomyślny pomysł. Osobiście latam dronami klasy 250 a taka zabawka potrafi narobić sporo bałaganu lub nawet kogoś poważnie uszkodzić w razie utraty sterowania lub co gorsza odebrania błędnych danych. Ostatecznie wyeliminowałem całkowicie pasmo 2.4GHz z moich modeli kupując crossfire i dopiero teraz jestem w miarę spokojny o niezawodność systemu RC - na 2.4GHz zdażały się często dropy RSSI poniżej 20% i powiem szczerze że jestem pod wrażeniem niezawodności protokołu ACCST bo pomimo tego nigdy nie miałem problemów z kontrolą jednak stwierdziłem że tak być nie może. Moje zdanie jest takie że niezawodność systemu RC jest drugim najważniejszym czynnikiem wpływającym na bezpieczeństwo zabawy w jakiekolwiek modelarstwo RC ze szczególnym uwzględnieniem wszystkiego co lata (pierwszym są oczywiście kompetencje pilota/operatora) i pchanie czegokolwiek DIY nie może mieć tu miejsca, acz sam projekt jako edukacyjny czy ciekawostka w sumie ciekawy i na pewno bardziej ambitny niż 99% projektów z arduino w tytule, nie mniej jednak budowanie tego z zamiarem zastąpienia fabrycznej aparatury i odbiornika jest po prostu niebezpieczne nie tylko dla użytkownika ale przede wszystkim dla przypadkowych osób.
  • #7
    error105
    Poziom 10  
    Taki pakiet a tylko 3h ? Aparatury zazwyczaj działają miesiącami na pakietach, więc coś nie tak zaprojektowane masz :(
    Na wstępie pewnie Nano, po co ci chociażby USB w pilocie które zjada prądu aż miło i zajmuje sprzętowego UARTa ?
  • #8
    Exmantion
    Poziom 2  
    KJ napisał:
    Też mi się nie widzi używanie czegoś sklejonego z arduino, zawodnego modułu radiowego - padły mi już chyba 4 NRF24L01 w wersji z PA w różnych aplikacjach. Do tego poskładanego w dość mało estetyczny sposób na pająka. Sterowanie tym czegokolwiek większego niż szczotkowy dron zabawka ważący parę g to zdecydowanie lekkomyślny pomysł. Osobiście latam dronami klasy 250 a taka zabawka potrafi narobić sporo bałaganu lub nawet kogoś poważnie uszkodzić w razie utraty sterowania lub co gorsza odebrania błędnych danych. Ostatecznie wyeliminowałem całkowicie pasmo 2.4GHz z moich modeli kupując crossfire i dopiero teraz jestem w miarę spokojny o niezawodność systemu RC - na 2.4GHz zdażały się często dropy RSSI poniżej 20% i powiem szczerze że jestem pod wrażeniem niezawodności protokołu ACCST bo pomimo tego nigdy nie miałem problemów z kontrolą jednak stwierdziłem że tak być nie może. Moje zdanie jest takie że niezawodność systemu RC jest drugim najważniejszym czynnikiem wpływającym na bezpieczeństwo zabawy w jakiekolwiek modelarstwo RC ze szczególnym uwzględnieniem wszystkiego co lata (pierwszym są oczywiście kompetencje pilota/operatora) i pchanie czegokolwiek DIY nie może mieć tu miejsca, acz sam projekt jako edukacyjny czy ciekawostka w sumie ciekawy i na pewno bardziej ambitny niż 99% projektów z arduino w tytule, nie mniej jednak budowanie tego z zamiarem zastąpienia fabrycznej aparatury i odbiornika jest po prostu niebezpieczne nie tylko dla użytkownika ale przede wszystkim dla przypadkowych osób.


    to tylko projekt, ja robię drona też 250 na tych malutkich silnikach 1804, ale samo radio może być do wszystkiego, nie zamierzam latać w mieście i wychodzę z założenia że wszystko co zainwestowałem w tego drona może się skończyć podczas pierwszego lotu. Wiadomo, że jak ktoś na poważniej się rc latającymi zajmuje to kupi coś dobrego i sprawdzonego. Ale przy zdalnie sterowanym samochodziku raczej sytuacja ma się innaczej.
  • #9
    KJ
    Poziom 31  
    1804 do 250tki to tak trochę lipa. Najmniejsze co się wydaje sensowne to 2205. Jeżeli nie będziesz kombinował jak co poniektórzy z robieniem ramy z czegoś dziwnego to nie nie rozpadnie się przy pierwszym crashu nie rozpadnie się nawet przy setnym :P chyba że przywalisz w beton spadając ze 100m na fullthrottle na plecach :D W miarę pewną aparaturę można dziś nabyć za mniej niż 150zł.
  • #10
    zipzap
    Poziom 15  
    Co się dzieje w momencie, gdy dron wyleci poza zasięg?

    Z innej beczki, patrząc od strony języka to jest wg mnie źle. Tekst jest napisany byle jak. Można było poświęcić trochę czasu i go przeredagować. Teraz jest chaos. Przykład: "... przed finalnym zamknięciem obudowy za pomocą przykładowych programów z Arduino IDE". Wychodzi na to, że obudowę zamyka się programami. Wystarczyło przecież zmienić szyk zdania i byłoby to bardziej zrozumiałe i na pewno zgodne z intencją piszącego.

    Szanujmy się wzajemnie i przed opublikowaniem sprawdzajmy co piszemy.
  • #11
    endi1940
    Poziom 10  
    Exmantion napisał:
    pier napisał:
    Exmantion napisał:

    Zasilany jest na 3.3V (!!!) tylko i nominalnie pobiera ponad 100mAh co dla biednych pinów Arduino będzie sporo za dużo

    A co ma piernik do wiatraka? Co Arduino obchodzi ile prądu zeżre radio, przecież procesor nie zasila radia. A po drugie jakie mAh?


    piszę, aby ktoś nie podłączył zasilania całego modułu pod pin 3.3V w Arduino, bo to co prawda wygodne w innych wypadkach, ale spaliło by płytkę. Arduino UNO nadajnik bez zewnętrznej antenki da radę zasilić bez problemu.


    Używam Arduino Nano połączonego z modułem radiowym nRF24L01+ PA LNA 2,4GHz (tj. zewnętrzna antena). Moduł zasilam bezpośrednio z pinu 3,3V Arduino. Dodałem kondensator ale i bez niego śmiga. Niema obaw o spalenie Arduino, te 115mA pobiera tylko w piku.