Zdalnie sterowany po WiFi robot z użyciem Raspberry Pi
Prawie każdy wie, że transformacja faceta w dziecko potrafi zostać zainicjowana klockami LEGO lub czymś co świeci, jeździ i ma w sobie dużo kabelków. W dobie dzisiejszej technologii spokojnie jesteśmy sobie w stanie sami wykonywać takowe zabawki. Bazując na platformie Raspberry Pi rozbudowanej o trochę fajnych rzeczy postaram się przedstawić krok po kroku jak stać się ojcem jeżdżącej platformy na podwoziu czołgu, sterowanej za pomocą dowolnego komputera w sieci. W dodatku powstały pojazd będzie miał sporo możliwości rozbudowy, ale o tym już dalej. Zapraszam więc!
Przygotowania
Potrzebować będziemy:
Raspberry Pi
Bardzo przyjemna płytka pozwalająca na całkiem sporo rzeczy. Myślę, że dokładniejszy opis jest zbędny – całkiem sporo rzeczy można o niej wyczytać w necie. Ja korzystam z wersji B (512MB RAM) i systemu Raspbian.
Moduł WiFi do Raspberry Pi. Przyda się żeby nie latać za maszyną z kablem.
PowerBank
Zwykły, czy to do telefonu, czy do tabletu – byleby dawał 5V i min. 2A. Osobiście korzystam z pqi power 7800mAh (pomimo 1.5A max. daje rade).
Sterownik silników TB6612FNG
Moduł dwukanałowy o maksymalnym ciągłym prądzie 1A/kanał. Na początek zdecydowanie wystarczająco.
Dodatki
Potrzebować też będziemy trochę przewodów połączeniowych (męsko-męskich jak i żeńsko-męskich), jakąś małą płytkę stykową, koszyk na baterie (choć równie dobrze można je połączyć “na krótko” ja zdecydowałem się wykorzystać coś, co mi zapewni pewien porządek na platformie) no i oczywiście 4 baterie AA.
Podwozie
…zostało żywcem wyciągnięte z mojej starej zabawki. Ma silniczki, gąsienice – jeździć będzie.
Część
Cena
Link
Ilość sztuk
Raspberry Pi (dowolna wersja, ja korzystam z wersji B)
Co do zasilania silniczków to powiem tak, bezpiecznym wyjściem jest zastosowanie połączenia 4xAA (NiMH) gdyż otrzymamy w ten sposób max. 5V. Gdyby było to za mało, wystarczy rozszerzyć pakiet o dodatkowe dwie bateryjki i już powinny silniczki chodzić bez problemu (większość silniczków DC toleruje 7-12V). U mnie 4x2200mAh wystarcza na kilkanaście minut jeżdżenia po całym mieszkaniu.
Sam zaczynałem wzorując się na dziele Cyryla i jego SPiBot’a i nie ukrywam, że bardzo mi to ułatwiło zadanie. Z tego miejsca też pragnę mu bardzo podziękować za wskazówki i wszelką pomoc przy tworzeniu. Zacznijmy więc!
Kabelki, kabelki, kabelki!
Na samym początku ważne jest połączenie przewodów. Do naszego sterownika dołączona jest instrukcja logiczna (tabela prawdy) oraz opis płytki:
Instrukcja logiczna:
Najpierw podłączmy silniczki i zasilanie silników do sterownika. W tym celu łączymy:
– (minus) koszyczka baterii z pinem GND znajdującym się po lewo na dole płytki (pod VMOT);
+ (plus) koszyczka baterii z pinemVMOT;
Przewód pierwszy pierwszego silnika z pinem AIN1
Przewód drugi pierwszego silnika z pinem AIN2
Przewód pierwszy drugiego silnika z pinem BIN1
Przewód drugi drugiego silnika z pinem BIN2
Ponownie sprawdzamy, czy wszystko jest ok i idziemy dalej. Ważne jest żeby w przypadku podziału na pierwszy i drugi przewód silnika obrać dla obydwu ten sam. Oszczędzi to nam później mieszania w kodzie. Korzystając z okazji wyjaśnię działanie pinu STBY. W momencie, gdy jest ustawiony na nim stan wysoki to maszyna będzie jeździć. Gdy jest stan niski to mimo wydawania poleceń nic się nie stanie. Piny PWMA i PWMB odpowiadają w naszym przypadku – najprościej mówiąc – za prędkość.
Teraz podłączamy sterownik do Raspberry.
STBY łączymy z PIN17
VCC łączymy z PIN 3,3V
GND łączymy z PIN GND ponad VCC
Dla prawego silniczka:
PWMA łączymy z PIN18
AIN1 łączymy z PIN23
AIN2 łączymy z PIN24
Dla lewego silniczka:
PWMB łączymy z PIN25
BIN1 łączymy z PIN21
BIN2 łączymy z PIN22
I kwestię połączeniową mamy z głowy! Plątanina kabli powinna wyglądać mniej-więcej tak:
Czas na serce robota – program
Jak łatwo się domyślić, nasz robot nie będzie jeszcze na tym etapie na tyle autonomiczny, by samemu obierać kierunek podróży. W celu zapanowania nad nim posłużymy się programem napisanym w pythonie. Będziemy do tego potrzebowali komendy sudo oraz pakietu RPi.GPIO.
Na początku najlepiej upewnić się, że wszystko jest dobrze połączone. Następnie wkładamy baterie do koszyczka i podpinamy PowerBank do Raspberry.
Gdy już zalogujemy się przez SSH, wklepujemy:
sudo python rc.py
I naszym oczom powinna ukazać się instrukcja sterowania. Oznacza to, że kod działa poprawnie i możemy w sumie śmigać! W tym celu naciskamy E w celu ustawienia pinu STBY w stan wysoki. Klawisze W / A / D odpowiadają za CIĄGŁĄ jazdę w danym kierunku. Klawisz S odpowiada za zatrzymanie się. Czołg powinien jeździć w każdym kierunku ale niestety ja uszkodziłem swój sterownik i nie mam możliwości.. cofania. Dlatego nie uwzględniłem tego w programie. Poniżej krótki filmik z małej podróży po podłodze (ponieważ nie miałem naładowanych baterii, skorzystałem z pakietu LiPo 3S – dało to trochę kopa ale sterownik nie jest przystosowany do natężenia prądu >1A i mimo wszystko lepiej jest użyć baterii).