Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Uniwersalny pilot RC oparty na Arduino

Exmantion 22 Jun 2019 14:10 5460 10
IGE-XAO
  • 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.
    Code: c
    Log in, to see the code

    Test odbiornika:
    Code: c
    Log in, to see the code

    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.

    Cool? Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    Exmantion
    Level 2  
    Offline 
    Exmantion wrote 4 posts with rating 11, helped 0 times. Live in city Warszawa. Been with us since 2017 year.
  • IGE-XAO
  • #2
    pioteer
    Level 11  
    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.
  • IGE-XAO
  • #4
    pier
    Level 23  
    Exmantion wrote:

    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
    Level 2  
    pier wrote:
    Exmantion wrote:

    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
    Level 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.
  • #8
    Exmantion
    Level 2  
    KJ wrote:
    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
    Level 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
    Level 16  
    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
    Level 11  
    Exmantion wrote:
    pier wrote:
    Exmantion wrote:

    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.