Elektroda.pl
Elektroda.pl
X

Search our partners

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

Pilot do samochodu RC JoyStick Shield Funduino

marcingebus 30 Dec 2018 20:23 597 2
Optex
  • #1
    marcingebus
    Level 10  
    Chcę syna zarazić programowaniem/Arduino. Samodzielnie popełniłem jakie proste projekty na Arduino. Zakupiłem mu:
    - podwozie z 4 silnikami i kołami. Mamy do tego zamocowane
    - Arduino Uno i na nim
    - Shield z mostkami H na L293D.
    Jakiś przykład sterowanie silnikami działa, ale czas aby tym sterować zdalnie. Mam
    - Joystick Shield Funduino, taki z 4 przyciskami., wiem, że to są tylko dwa potencjometry i kilka Switchy. Z odczytem tego przez Nano, albo ProMini sobie poradzę. Oprogramować kilka diód, aby różnie migały bez funkcji delay(), a pomocą milis() opanowane.
    Na potrzeby transmisji radiowej mam 3 wersje Transmiter+Odbiornik kupione u Majfriendów.
    - jeden 315MHz,
    - drugi 433MHz i
    - trzeci 433MHz superheterodyne - takie po 2-3zł/komplet.
    Jak zrobić transmisje z ich pomocą - jakieś poradniki widziałem. Teraz mam pytanie, jak to oprogramować.

    Szukałem jakiś poradników/przykładów, ale nic nie znalazłem. Wyobrażam sobie to tak, że definiuję rozkazy z argumentami i cały czas je wysyłam z pilota do pojazdu. W pojeździe jak nie będzie rozkazów przez określony okres czasu, to wszystko staje.

    Dylematów mam mnóstwo, jeden to taki, czy lepiej pozycje potencjometru przerabiać na komendy do silników w pilocie, czy lepiej w pojeździe. Nie mam modułu Bluetooth, ani Wifi, więc na razie chcę przećwiczyć te moduły radiowe, które mam.

    Spodziewam się, że rafy po drodze różne spotkam, ale nie sądzę, abym był pierwszy, który takie rozwiązanie planuje zrealizować. Może ktoś trafił kiedyś na jakiś fajny przykład jak to ktoś zrealizował. Jak wspomniałem wyżej podwozie ma 4 silniki, więc kierunek będziemy realizowali poprzez różne prędkości obrotowe silników po prawej i lewej. Może jak to opanujemy, to dołożymy jakąś kamerkę obrotową serwo, albo zrobimy z tego dźwig... się zobaczy, jakieś silniki krokowe są. Chęci na razie Taty też, zobaczymy jak chęci syna (4 klasa podstawówki).

    Dodano po 39 [minuty]:

    Gdyby ktoś nie miał niczego w naszym języku, to znalazłem taką stronkę: http://rctractorguy.com/basic-arduino-based-rc-controller-library

    Dodano po 17 [godziny] 45 [minuty]:

    Znalazłem jeszcze pokrewne artykuły:
    https://majsterkowo.pl/zdalnie-sterowany-samochodzik/
    https://www.elektroda.pl/rtvforum/topic3100879.html

    I jeszcze dla potomnych: moduły NRF24L01, to chyba wyższa półka w podobnej cenie. Można mieć wiele urządzeń, każdemu przypisać inny adres, dodatkowo są definiowalne jakieś Pipe, które chyba umożliwiają wielokanałowość. Każde urządzenie jest dwukierunkowe, więc zarówno w nadajniki jak i odbiorniku mamy ten sam hardware i każde może działac dwukierunkowo. Można więc z pilota nadawać komendy do pojazdu, a z pojazdu otrzymywać jakieś dane (z czujników na przykład). Możemy chyba mieć wiele pilotów, wiele urządzeń i wzajmnie się będą wcale lub niewiele zakłócać. Poniewąż NRF24L01 nie posiadam, to głębiej tematu nie zgłębiałem, choć mnie kusi, bo w tym Shield, jest od razu przygotowana pinologia pod ten nadajnik/odbiornik.

    Natomiast komplety nadajnik/odbiornik, które ja mam, to analogowa wersja jednokierunkowa komunikacji. Zobaczymy co z tego wyjdzie.

    Dodano po 42 [minuty]:

    I jeszcze dosyć szczegółowy opis modułu NFR24L01: http://uczymy.edu.pl/wp/na-warsztacie/modul-nrf24l01/
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • Optex
  • #2
    marcingebus
    Level 10  
    Szkoda, że nie ma tutaj majsterkowiczów z branży pojazdy RC/Arduino. Napiszę więc, co zrobiłem i jakie rafy.

    1. Wybór biblioteki do sterowania silnikami. Jedyna działająca z PWM na silniki, na którą trafiłem, to ta: https://sites.google.com/site/analogmc/. Jest dosyć stara i trzeba w niej zmienić dołączaną bibliotekę WProgram.h, która na przestrzeni lat zmieniła nazwę na arduino.h.

    2. Moduły radiowe, które mam są analogowe (można z ich pomocą transmitować także głos: https://www.youtube.com/watch?v=m_Znp9D-q4Y&t=84s), ale tutaj wykorzystuję bibliotekę opisaną tutaj https://www.youtube.com/watch?v=3rRlp79qHIs i tutaj: https://www.youtube.com/watch?v=ilA4Bwhsy88

    Nadajnik wysyła w jednym stringu stan potencjometru X, stan Y oraz w postaci jednej liczby typu Byte, zapisałem stan wszystkich 7 wyłączników, które są na tym joystickShield (http://roboblog.eu/2016/04/29/arduino-poradnik-9-funduino-joystick/)

    Nadajnik zrobiłem na Arduino Pro Mini, bo taki miałem, ale najlepiej byłoby zrobić, to na Uno/Leonardo, bo Shield z Joystickiem, łączy się z Arduino bez lutowania. Poniewż shield ma gniazda na ten moduł cyfrowy, to następną wersję zrobiłbym z tym modułem 2.4G NRF24L01.

    Wartości PWM do silników przeliczam w "komputerze samochodu". "Komputer Joystika/pilota, odczytuje jedynie stan przycisków (wszystkich 7) oraz stan joystiska. Być może można by go usypiać i budzić na przerwaniach, ale ponieważ zasilam to 18650, to na teraz temat olewam. Jedyny argument jaki mam, aby przeliczenia PWM robić w samochodzie, to taki, że łatwiej mi było samochód podłączać do komputera, bo tam miałem Uno, a więcej roboty jest z przeliczaniem wartości z Joysticka na silniki, niż tylko odczyt potencjometrów i nadawanie tego dalej.

    Pojazd generalnie działa, ale problemy miałem następujące:
    1. Miałem 3 pary modułów radiowych RF433kHz. Pierwsza para na początku nie działała. Śrubokręt w rękę i jakoś dostroiłem. Chwile działało, ale później, coś się znowu rozkalibrowało i zanim zdążyłem dobrze skalibrować, to szczęśliwie zamieniłem Vcc z GND do jego zasilania i go spaliłem. Drugi egzemplarz działał od strzału, ale przy odległości kilku metrów czasami gubi zasięg. W samochodzie w pętli wrzuciłem zmniejszanie prędkości silników jeśli nie ma komunikatów z nadajnika. Silniki powoli zwalniają do zera. Za szybko nie można, bo wówczas jeśli są przerwy w transmisji, to jest pulsacja, a zdarzają się takie milisekundowe.

    2. Skręcanie pojazdem na podwoziu (https://abc-rc.pl/product-pol-6344-Podwozie-robota-4WD-ZK-03-260mm-4-silniki-z-enkoderami-platforma-mobilna.html) w trakcie jazdy "na wprost" działa słabo. Mimo usilnych prób, nie udało mi się zrobić, aby skręcanie było płynne. Pojazd albo skręca minimalnie podczas jazdy na wprost, albo jak zwolni, to skręca mocno (lewe koła do przodu, a prawe do tyłu). Może powinienem zrezygnować z biegu "wstecznego" podczas skręcania po jednej stronie. Generalnie sądzę, że może by to działało płynnie, gdybym odczytywał prędkość obrotową kół/koła prawego i lewego i utrzymywał prędkość w zależności od stanu joysticka, a nie PWM od stanu joysticka. No, ale to trudniejsza sprawa, pewno, to sprawdzimy.

    Reasumując:
    1. Zakupię sobie te moduły NRF24L01 (trzeba 2 sztuki na auto+nadajnik) i może nie będzie gubił zasięgu, więc reagował sprawniej na ruchy joysticka.
    2. Może dobuduję odczyt prędkości obrotowej silnika.
  • #3
    marcingebus
    Level 10  
    Zamówiłem te nRF24L01, są wersje za parę złotych bez dużej anteny i za parenaście z dużą anteną. Zaszalałem i kupiłem obie wersje, po 2 sztuki. Zobaczymy jak będzie z zasięgami. I dla sportu zamówiłem też bliźniaczy produkt SE8R01. Zamówiłem też silniki MT78, może z uwagi na wyższe napięcie (9V) będą miały większy moment obrotowy przy niskim PWM, gdy chcemy delikatnie skręcić. Obecnie autko się zacina, zwiększamy PWM i jak ruszy to z tupetem, więc brak precyzji.

    Dodano po 13 [minuty]:

    Syn mi jeszcze mówi: Tata, a zróbmy mu biegi, aby można było wolniej jeździć. No to komputer w ręce syna: "podłączaj USB, Arduino IDE i pisz, będę dyktował". Dwa IF'y dopisał i jeśli przycisk UP nie jest naciśnięty, to prędkości silników /2. Czyli jeśli naciśnie UP, to auto nie zwalnia. Normalnie więc się nie naciska UP. Jeśli wówczas naciśnie DOWN, to speed/2, czyli zwalnia PWM jeszcze 2-krotnie.
    Jeździ się teraz przyjemniej, bo Joystick nie ma zbyt dużego ruchu, co nie daje dużej precyzji. Prosto szybko i skutecznie.

    Acha jeszcze w tym zamówieniu zamówiłem też dwa rodzaje transoptorów szczelinowych, zobaczymy z którą wersją pójdzie łatwiej. Abc-rc, to super sklep. Jak porównywałem ceny na allegro, to mają zawsze o parę pln taniej.

    Radyjka:
    https://abc-rc.pl/product-pol-7669-Modul-bezp...4L01-wzmacniacz-i-antena-zasieg-do-1-1km.html
    https://abc-rc.pl/product-pol-6407-Modul-sieciowy-2-4GHz-nRF24L01-sterowanie-SPI-Arduino.html
    https://abc-rc.pl/product-pol-10021-Modul-SE8...zprzewodowej-podobny-do-modulow-nRF24I01.html

    Silnik 9V
    https://abc-rc.pl/product-pol-7838-Silnik-szczotkowy-MT78-T2-9V-do-napedow-TT-robotow.html

    Transoptory
    https://abc-rc.pl/product-pol-7652-Modul-czuj...transoptor-5mm-detektor-komparator-LM393.html
    https://abc-rc.pl/product-pol-7062-Czujnik-optyczny-TCST2103-transoptor-szczelinowy.html

    Obecnie mam używam kupiony na Ali to radyjko, które można kupić także u nich.
    https://abc-rc.pl/product-pol-6140-Modul-radi...MHz-Arduino-nadajnik-i-odbiornik-Arduino.html
    Niby 2x tańsze od tych na nRF (bo od razu mamy komplet), ale:
    - transmisja jednokierunkowa,
    - problemy z zasięgiem,
    - analog, czyli nawet jeśli mamy parę zestrojoną, to "połówki" kupione oddzielnie nie muszą razem działać,
    - nie uruchomimy dwu pojazdów w domu, bo radia będą się zakłócać

    Zalety jakie widzę, w tych radiach nRF24L01:
    - większy zasięg (na pewno dla wersji z antenką)
    - łączność dwukierunkowa, choć tego akurat nie potrzebuję
    - możliwość kilku nadajników/odbiorników działających na tym samym terenie (przyjnamniej teraz mi się wydaje, że to będzie tak działało), bo to używa kilku (może więcej), kanałów, a poza tym urządzenia adresujemy i dodatkowo jeszcze można jakieś Pipe włączyć (zakładam, że to taki adres w urządzeniu), więc full-wypas,
    - moduł Joysticka ma od razu gniazda na ten nR24L01.

    Jeszcze o cenach. Od jakiegoś miesiąca widzę, że można na Allegro kupić niewiele drożej takie drobiazgi, co u Chińczyka. Nie ma sensu obecnie kupować u Chińczyka, jeśli coś jest już dostępne w PL, a prawie wszystko, co potrzebowałem ostatnio jest na Allego, albo w ABR-RC w b. podobnych cenach. W Chinach jest większy wybór, są nowości, których jeszcze nie ma u nas.

    Żegnal Aliexpress, witaj abc-rc. ;-)