Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Zdalnie sterowany czołg z Arduino i Raspberry Pi

ghost666 13 Oct 2015 23:29 11190 8
Optex
  • Zdalnie sterowany czołg z Arduino i Raspberry Pi
    PiTank to zdalnie sterowany czołg, kontrolowany poprzez sieć. Skonstruowany został w ramach szkolnego konkursu robotycznego. Realizacja projektu pochłonęła pięciu osobom około dwa tygodnie. Głównym pociskiem wystrzeliwanym przez działo pojazdu są piłeczki ping-pongowe - jest w stanie wystrzelić do 3 piłeczek naraz. Czołg sterowany jest poprzez interfejs webowy, jest w stanie przekazywać na żywo strumień wideo. Kontrolują go dwa moduły - Raspberry Pi i Arduino - wraz z szeregiem dodatkowych komponentów. Poniżej zaprezentowano dwa filmiki, przedstawiające działanie robota.








    Poniższy opis natomiast przedstawia - krok po kroku - jak zbudować podobnego robota we własnym zakresie. Opisano nawet najmniejsze detale projektu. W kwestiach, które nie zostały opisane, można odnieść się do poradników, do których zamieszczono w treści linki.

    Krok 1: Potrzebne elementy

    Zamieszczona poniżej lista potrzebnych do konstrukcji elementów jest dosyć ogólna i należy ją traktować jako spis najważniejszych elementów. Nie jest to na pewno spis wszystkich potrzebnych do konstrukcji drobiazgów, tym bardziej, że dużą część wykorzystanych materiałów można wymienić na inne, bardziej dostępne w Waszej okolicy.

    Elementy do podłączenia do Raspberry Pi:

    1 x Moduł Raspberry Pi - dowolna wersja
    1 x Kamera do Raspberry Pi
    1 x Karta Wifi
    1 x Moduł Adafruit Servo
    1 x Moduł Bateryjny USB - należy się upewnić, że może dawać 2A prądu na swoim wyjściu
    2 lub 3 x Serwomotory - 2 jeśli chcemy tylko obracać i podnosić działo, jeden dodatkowo do mechanizmu przeładowującego działo
    1 x Uchwyt pozwalający na przekręcanie w dwóch osiach
    Trochę kabelków, aby to wszystko połączyć.
    Taśma izolacyjna.
    Kable USB
    Kabel HDMI
    Translator poziomów zasilania - Raspberry Pi wymaga napięcia I/O 3,3 V na swoich cyfrowych GPIO.

    Z kolei wraz z Arduino nabyć musimy:

    1 x Moduł Arduino Uno
    1 x Shield Arduino Motor
    1 x Płytka przekaźnikowa
    Trochę kabelków do połączenia wszystkiego
    Silniki, jeśli nasze podwozie nie jest już w nie wyposażone
    1 x Zestaw dwóch baterii AA do zapalarki gazu
    1 x Zestaw sześciu baterii AA dla silników

    Finalnie, do konstrukcji działa potrzebne nam będą:

    Butelka po wodzie
    Rura z ABSu lub PVC o średnicy wewnętrznej odrobinę większej niż średnica pocisku.
    Trójnik do rur PVC
    Zapalarka do gazu
    Drewniane patyczki

    Finalnie, potrzebne będzie jakieś podwozie. Zastosować można w zasadzie dowolne, ale wskazane jest znalezienie robota z napędem na cztery koła, napęd na dwa spowoduje, że robot będzie wolniejszy.

    Dodatkowo potrzebne są następujące narzędzia:

    Śrubokręt
    Kombinerki
    Pistolet z lejem
    Super Glue
    Lutownica, cyna etc
    Wiertarka

    Krok 2: Opis systemu

    Zdalnie sterowany czołg z Arduino i Raspberry Pi


    W robocie wyróżnić możemy dwa główne elementy - systemy:

    Raspberry pi:

    Główny kontroler systemu.
    Jest hostem strony WWW służącej do kontroli robota.
    Kontroluje kamerę.
    Kontroluje serwa.
    Komunikuje się z Arduino poprzez interfejs szeregowy.

    Arduino

    Kontroluje silniki poruszające pojazdem.
    Kontroluje przekaźnik i zapalarkę do gazu.

    Krok 3: Budowa działa

    Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi


    Działo jest chyba najfajniejszym elementem całej konstrukcji. Wykonane jest ono z twardego, przeźroczystego plastiku (komora) z lufą z rury PVC i kilkoma dodatkowymi elementami zamocowanymi do komory. Zasada działania tej broni jest bardzo prosta - polega na spalaniu w komorze paliwa, co powoduje eksplozję i wyrzut pocisku.

    Lufa zamocowana jest do butelki z pomocą kleju, nakładanego na ciepło. Następnie do tej konstrukcji montuje się drewniane elementy, mające umożliwić montaż serwomotora, który obsługuje źródło paliwa, którym jest w tym przypadku dezodorant.

    W butelce wykonać trzeba dwa niewielkie otwory, do umieszczenia w środku przewodów zapalnika oraz jeden większy otwór, pozwalający na podawanie do komory spalania paliwa-dezodorantu. Wielkość tego drugiego otworu dobrać należy eksperymentalnie, tak aby uzyskać odpowiednią mieszankę powietrza i paliwa. Źródło paliwa - Axe Bullet - zamontowany został na serwomotorze, jak pokazano na zdjęciu powyżej. Gdy serwomotor zostanie aktywowany wciska on puszkę w komorę spalania działa i rozpyla w jej wnętrzu paliwo.

    Trójnik do rury PCV wykorzystany został do skonstruowania prostego magazynka, pokazanego na jednym ze zdjęć. Magazynek pokazany na zdjęciach jest w stanie przechowywać do trzech pocisków. Następnie wkręcamy śrubę w rurę PVC - lufę - co uniemożliwi piłeczce wyturlanie się samemu z komory. Podczas testowania komory (jak i budowy) warto mieć na sobie odpowiednie akcesoria ochronne.

    Krok 4: Raspberry Pi i jego podsystemy

    Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi


    Jak wspominano powyżej, RPi odpowiedzialne jest za komunikację z kontrolerem serwomotorów i z Arduino. Jego rolą jest także przechwytywanie obrazów z kamery.

    Płytka z serwomotorami

    Postępuj zgodnie z instrukcją zamieszczoną tutaj. Upewnij się, że masz podłączone zewnętrzne zasilanie dla serwomotorów. Komunikacja po I?C powinna zająć 4 przewody. Należy się upewnić jaką wersję Raspberry Pi ma się u siebie, gdyż od tego zleży z jakiego portu I?C korzysta się w systemie.

    Arduino

    Port TX/RX RPi połączony jest z analogicznym portem w module Arduino, co umożliwia im komunikację. Porty połączone są przez translator poziomów, ponieważ wyjścia RPi są w standardzie 3,3 V, a Arduino pracuje z napięciem 5 V. Translator taki można kupić w postaci gotowego modułu, albo zbudować samodzielnie - dokumentacja dostępna jest w internecie.

    Kamera

    Wystarczy skorzystać z tego tutoriala, i postępować krok po kroku, aby podłączyć dedykowaną kamerę do Raspberry Pi.

    Krok 5: Oprogramowanie dla Raspberry Pi

    Oprogramowanie dla Raspberry Pi jest odrobinę bardziej skomplikowane niż sprzęt w tym projekcie. Poniżej opisano krok po kroku jak je zrealizować.

    Najpierw z GitHuba pobrać należy oprogramowanie napisane przez autora. Znaleźć można je tutaj. System operacyjny Raspbian znajdziemy tutaj i załadujemy go z bootowalnej karty SD. Dalej musimy na systemie włączyć obsługę SSH, co opisano tutaj. Korzystając z Putty logować możemy się poprzez SSH na RPi, a FileZilla pomoże nam przesyłać pliki.

    Nasz system musi posiadać statyczne IP w naszej sieci, tak abyśmy za każdym razem mogli łatwo logować się poprzez SSH do RPi. Dzięki wykorzystaniu SSH nie musimy podłączać do komputera klawiatury ani monitora. Tutaj opisano w jaki sposób zrealizować taki system.

    Kamerę włączamy w raspi-config, podobnie czynimy z interfejsem I?C. Musimy to zrobić, inaczej system nie będzie działał poprawnie. Kamera wymaga 128 MB pamięci do działania, więc musimy w raspi-config zadedykować co najmniej tyle karcie graficznej Raspberry Pi. Jeśli nie korzystamy z Raspberry Pi 2, to autor doradza podkręcenie naszego komputera co najmniej do poziomu Medium.

    Płytka kontrolująca serwomotory

    Jeśli wszystko co opisano powyżej działa poprawnie, możemy przejść dalej. Z linka do GitHuba pobrać musimy, z foldery servo, dwa pliki: piservo.py i pimotor.py.

    Piservo.py zawiera kod kontrolujący serwomotory poruszające działem czołgu, a pimotor.py zawiera kod kontrolujący silniki poruszające czołgiem i serwo odpowiedzialne za przeładowanie. W plikach można dokonać niewielkich zmian, zależnie od potrzeb. Następnie, zależnie od ustawień portu I?C na naszej maszynie musimy ustawić konfigurację w pliku Adafruit_PWM_Servo_Driver.py:

    Code: python
    Log in, to see the code


    Folder skopiować należy na Raspberry Pi, można go potem przenieść w inną lokalizację na RPi. Można, korzystając z VI lub Nano, zautomatyzować uruchamianie powyższych programów, dodając w etc/rc.local using VI or Nano następujące linijki:

    [code:1]sudo python /your/file/location/piservo.py &
    sudo python /your/file/location/pimotor.py &[/code:1]

    Arduino

    W programie zawartym pimotor.py, otwieramy port komunikacji szeregowej pozwalający na wysyłanie komunikatów pomiędzy RPi a Arduino. Rozmaite komunikaty informują Arduino co powinno się teraz stać .

    Kontrola nad strumieniem wideo

    Ten etap jest chyba najtrudniejszym do skonfigurowania. Wykorzystano tutaj system opisany tutaj. Instalacja tego oprogramowania jest dosyć prosta. Program ten pozwala na nadawanie strumienia wideo bezpośrednio na stronę WWW. W przypadku tego robota strona ta została rozbudowana o przyciski do kontroli poczynań maszyny. Aby tak zrobić musimy, po kolei:
    Wchodzimy w html -> js ->php control scheme
    Musimy przeedytować kilka plików w /var/www.
    Kopiujemy jquery-2.1.1.min.js, pimotor.js oraz piservo.js so /var/www/js.
    Robimy kopię zapasową index.php w /var/www i nadpisujemy go tym, jaki pobraliśmy z GutHuba autora projektu.
    Kopiujemy pimotor.php i piservo.php do /var/www/.
    Kopiujemy layout.css do /var/ww/css.

    Krok 6: Hardware modułu Arduino

    Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi


    Arduino odpowiedzialne jest za kontrolę nad silnikami i przekaźnikami, odpowiedzialnymi za wystrzał piłeczki. Komunikuje się z RPi poprzez translator poziomów.

    Silnik
    Wystarczy postępować zgodnie z instrukcją postępowania zamontowanego shielda, obsługującego silniki.Trzeba pamiętać, aby dołączyć zewnętrzne zasilanie dla silnika.


    Zapalnik i przekaźnik
    Spójrzmy na diagram urządzenia. Zapalnik działa po naciśnięciu przycisku. Wewnątrz zapalnika znajdują się dwie baterie AA.

    Kro 7: Oprogramowanie dla Arduino

    Wystarczy wgrać na Arduino pobrany plik serialwithpi.ino.

    Krok 8: Składanie wszystkiego w całość

    Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi Zdalnie sterowany czołg z Arduino i Raspberry Pi


    Montaż całego czołgu najlepiej zrealizować metodą prób i błędów. Zależnie od wykorzystanych elementów dokładna instrukcja montażu będzie inna. Wystarczy spojrzeć na powyższe zdjęcia i wykorzystać je jako sugestię, jak to powinno wyglądać.

    Działo przymocowane jest do serwomotora z pomocą drewnianego patyczka i obejmy do rur, RPi zamontowane jest w systemie z pomocą kolejnego patyczka i kleju na gorąco

    Krok 9: Testowanie

    Jeśli wszystko zostało poprawnie połączone i zaprogramowane powinno móc wpisać adres IP RPi do przeglądarki i zobaczyć stronę WWW z przyciskami kontrolnymi i widokiem z kamery. Oczywiście trzeba uruchomić dwa wymienione powyżej skrypty Pythona. Jeśli chcemy, aby robota można było kontrolować z dowolnego miejsca na świecie, pozostaje nam jedynie ustawić forwardowanie odpowiednich portów na routerze.

    Źródło: http://www.instructables.com/id/PiTank-A-web-controlled-tank-with-real-time-video-/?ALLSTEPS

    Cool? Ranking DIY
    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
    About Author
    ghost666
    Translator, editor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 wrote 11803 posts with rating 9942, helped 157 times. Live in city Warszawa. Been with us since 2003 year.
  • Optex
  • #2
    Freddy
    Level 43  
    ghost666 wrote:
    Arduino odpowiedzialne jest za kontrolę na silnikami i przekaźnikami, odpowiedzialnymi za wystrzał piłeczki.
    To już kompletny bezsens i przekombinowanie.
    Czyżby Raspberry Pi nie dawał sobie z tym rady?
  • Optex
  • #3
    ADI-mistrzu
    Level 30  
    @Freddy nie dziw się, w dzisiejszych czasach po prostu fizyka szwankuje, coś co kiedyś można było zrobić na 32kB pamięci, dziś wymaga GB i i dwóch rdzeni.
    Słyszałem że niebawem moc obliczeniowa tak straci na "mocy" że do sterowania silnikami "lewo/prawo" będzie potrzeba co najmniej 4 rdzeni i androida na pokładzie bo inaczej nie zadziała.

    Projekt ogólnie ciekawy, ale trochę brakuje mu sztywności w podnoszeniu lufy i chyba odbywa się to ciut za szybko (czego efektem jest "gibanie" się).
  • #4
    Urgon
    Level 38  
    AVE...

    Bo to zły programista był. Zresztą teraz prawie każdy zagraniczny projekt ma w sobie przynajmniej jedno Arduino. Ewentualnie R-Pi do zadań, z którymi Arduino dałoby sobie radę. Im zwyczajnie jest taniej wydać pieniądze na nadmiarowy sprzęt, niż poświęcić godzinkę na myślenie o programowaniu.
  • #5
    Pittt
    Level 32  
    Czas konstruktora jest więcej wart niż płytko mikrokomputera.
    Szybciej i prościej może dla niego było zbudować coś nowego niż optymalizować coś starego.
  • #6
    elektro155
    Level 26  
    Teraz te wszystkie projekty są jak meble z Ikea. Wystarczy tylko poskładać/połączyć odpowiednie moduły według instrukcji i jest.
  • #7
    Urgon
    Level 38  
    AVE...

    Sama modularność nie jest zła, zwłaszcza jak to moduł z elementem w obudowie, którą ledwo co widzę, nie mówiąc o montażu. Problemem jest brak umiejętności programistycznych. Po co optymalizować kod lub używać ograniczonych zasobów, skoro można wsadzić mocniejszy mikrokontroler lub cały komputer? Po co optymalizować, skoro moc obliczeniowa jest relatywnie tania?
  • #8
    a_noob
    Level 23  
    Projekt może i ciekawy, ale jak wyżej koledzy wspomnieli gość patologicznie dobiera hardware... to jak użycie koparki do fundamentów pod bude dla psa - patologią w tym przypadku jest oczywiście już samo kopanie fundamentów pod budę...
  • #9
    ppc
    Level 17  
    A może po prostu kto inny zajmował się warstwą opartą na arduino, a kto inny na rpi? Jeżeli tak było, to bardzo fajnie im to wyszło - pięcioro uczniów w dwa tygodnie rozdzieliło między siebie pracę, dogadali się odnośnie połączenia warstw, uzgodniło protokół komunikacyjny i uruchomiło całość.

    Efekt edukacyjny z pewnością większy niż napisanie napisanie wszystkiego na jednej platformie, bo programowania to można nawet małpę nauczyć, ze skuteczną pracą w zespole już tak różowo nie jest.