Zdalne sterowanie kostką poprzez pad bluetooth

Mindstorms, WeDo, Lego Digital Desinger, Stud.io

Moderatorzy: Mod Team, Mod Team

Autor
Wiadomość
Awatar użytkownika
OmenGda
Posty: 873
Rejestracja: 2007-02-05, 21:58
Lokalizacja: Gdańsk
brickshelf: OmenGda

 

#61 Post autor: OmenGda »

Nieźle. Całkiem fajnie by się prowadziło np auto na 2 analogach a przyciskami zmieniało biegi :-)
Swoją drogą, widać, że lubisz PS skoro kupiłeś kolejną konsolę :-D
Nie jest sztuką trafić w muchę przednią szybą...
Sztuką jest, zrobić to boczną!

artpoz
Posty: 54
Rejestracja: 2014-08-12, 21:15
Lokalizacja: Kraków
brickshelf: Proszę uzupełnić

 

#62 Post autor: artpoz »

Udostępniam kod do PS4Explor3ra.
https://gist.github.com/artpoz/d66f72a6 ... 88dd6d1262

Parowanie jest jeszcze prostsze niż w padzie od PS3, gdyż nie wymaga kabla.
Trzeba wcisnąć na kilka sekund przyciski PS+Share i wyszukać na kostce "Wireless Controller".
Nieco inna jest numeracja przycisków. Przykładowo X ma numer 305.
Ostatnio zmieniony 2018-03-24, 23:51 przez artpoz, łącznie zmieniany 1 raz.

artpoz
Posty: 54
Rejestracja: 2014-08-12, 21:15
Lokalizacja: Kraków
brickshelf: Proszę uzupełnić

 

#63 Post autor: artpoz »

Utworzyłem stronę z projektem PS4explor3r na ev3dev.org.
Jest tam parę informacji o budowie, instalacji i przyciskach.
Poniżej link do strony projektu:
https://www.ev3dev.org/projects/2018/09/02/PS4Explor3r/

Pozdrawiam
artpoz

Awatar użytkownika
eric trax
Administrator
Posty: 2454
Rejestracja: 2011-02-28, 20:30
Lokalizacja: Wrocław
brickshelf: erictrax

 

#64 Post autor: eric trax »

Wyglada to bardzo fajnie. Czas pomyslec nad kostka i silnikami
Ostatnio zmieniony 2018-09-15, 09:57 przez eric trax, łącznie zmieniany 1 raz.
Na warsztacie:
- Grimme Varitron 270 - 10%
.

artpoz
Posty: 54
Rejestracja: 2014-08-12, 21:15
Lokalizacja: Kraków
brickshelf: Proszę uzupełnić

 

#65 Post autor: artpoz »

Lego wypuściło MicroPython dla EV3 na bazie ev3dev.
To oznacza, że sterowanie padem staje się jeszcze prostsze.
Nie potrzebna jest wiedza na temat linuxa, logowania,
przegrywania pliku, zmiany atrybutów itp.

Oto kolejne kroki

1. Budujemy pojazd (poniżej instrukcja, budujemy do kroku 14 z pominięciem 12).
http://robotsquare.com/2015/10/06/explo ... tructions/

2. Z poniższej strony pobieramy instrukcję i obraz ev3dev
https://education.lego.com/en-us/suppor ... on-for-ev3

3. Czytamy i wykonujemy kroki do strony 15. Punkt 2.5 można pominąć.

4. W Visual Studio Code po wybraniu "Create a new project" i wpisaniu nazwy projektu
na dysku utworzy nam się folder a w nim plik main.py.
Zamykamy program i otwieramy opcją "File->Open folder" i wybieramy utworzony folder.

5. Po uruchomieniu programu przykładowego powninniśmy usłyszeć dźwięk.

6. Z poniższej strony kopiujemy zawartość ps4explor3r.py i wklejamy do main.py. Zapisujemy (Ctrl+S)
https://gist.github.com/artpoz/d66f72a6 ... 088dd6d126

7. Wybieramy "Run and Download", odłączamy kabel, na kostce powninniśmy mieć nasz program.

8. Parujemy pada:
a. na padzie naciskamy przyciski PS+Share i czekamy, aż zacznie mrugać światełko
b. na kostce wybieramy Bluetooth, zaznaczamy opcje Powered, Visible i dajemy "Start Scan"
na dole pojawi nam się "Wireless controller", wybieramy go i dajemy "Pair".

9. Na kostce w File Browserze znajdujemy program main.py i uruchamiamy.

10. Cieszymy się z jazdy pojazdu sterowanego Dualshockiem :)

Pozdrawiam
artpoz

Awatar użytkownika
SERVATOR
VIP
Posty: 3607
Rejestracja: 2013-11-08, 11:51
Lokalizacja: Warszawa
Kontakt:

#66 Post autor: SERVATOR »

Tak przystępnie i porządnie, to rozpisałeś że na pewno wypróbuję. Bardzo dziękuję. :)

artpoz
Posty: 54
Rejestracja: 2014-08-12, 21:15
Lokalizacja: Kraków
brickshelf: Proszę uzupełnić

 

#67 Post autor: artpoz »

Koniecznie daj znać jak poszło :)

artpoz
Posty: 54
Rejestracja: 2014-08-12, 21:15
Lokalizacja: Kraków
brickshelf: Proszę uzupełnić

 

#68 Post autor: artpoz »

Jeszcze jedno. Po uruchomieniu kostki musimy poczekać na Brickmana, włączyć pada i poczekać, aż zaświecą się dwie zielone diody LED. Parowanie robimy tylko pierwszy raz. Następnym razem wystarczy nacisnąć przycisk PS na padzie. Po uruchomieniu programu czekamy na napis "Finding ps4 controller...Engine running!". Z programu wychodzimy kółkiem na padzie.
Ostatnio zmieniony 2019-04-17, 15:09 przez artpoz, łącznie zmieniany 4 razy.

Awatar użytkownika
OmenGda
Posty: 873
Rejestracja: 2007-02-05, 21:58
Lokalizacja: Gdańsk
brickshelf: OmenGda

 

#69 Post autor: OmenGda »

Elo. Ja w kwestii padów to zielony jestem. Pada od ps4 nie mam. Ale mam pada takiego jak do xbox one podłączonego obecnie do pc przez dongla na usb. Czy takiego pada też da się jakoś z kostką sparować?

Poozdr.
Michu
Nie jest sztuką trafić w muchę przednią szybą...
Sztuką jest, zrobić to boczną!

artpoz
Posty: 54
Rejestracja: 2014-08-12, 21:15
Lokalizacja: Kraków
brickshelf: Proszę uzupełnić

 

#70 Post autor: artpoz »

OmenGda pisze:Elo. Ja w kwestii padów to zielony jestem. Pada od ps4 nie mam. Ale mam pada takiego jak do xbox one podłączonego obecnie do pc przez dongla na usb. Czy takiego pada też da się jakoś z kostką sparować?
Ja nie mam pada od Xboxa One. Ale spróbuj, może się da. Wiem, że da się sparować pada od Xboxa 360 z Rasperry Pi.

Pozdrawiam
artpoz
Ostatnio zmieniony 2019-04-25, 16:31 przez artpoz, łącznie zmieniany 1 raz.

artpoz
Posty: 54
Rejestracja: 2014-08-12, 21:15
Lokalizacja: Kraków
brickshelf: Proszę uzupełnić

 

#71 Post autor: artpoz »

W najnowszej wersji Etchera (1.5.30) jest błąd uniemożliwiający poprawne nagranie systemu na kartę SD. Do momentu poprawienia go trzeba korzystać z ostatniej poprawnej wersji (1.5.26), którą można pobrać stąd:
https://github.com/balena-io/etcher/rel ... ag/v1.5.26

artpoz
Posty: 54
Rejestracja: 2014-08-12, 21:15
Lokalizacja: Kraków
brickshelf: Proszę uzupełnić

 

#72 Post autor: artpoz »

Błąd w Etcherze poprawiony, więc można brać najnowszą wersję ze strony głównej. Sprawdziłem wersję 1.5.33 i karta startuje bez problemu.
Ostatnio zmieniony 2019-04-30, 22:59 przez artpoz, łącznie zmieniany 1 raz.

Awatar użytkownika
OmenGda
Posty: 873
Rejestracja: 2007-02-05, 21:58
Lokalizacja: Gdańsk
brickshelf: OmenGda

 

#73 Post autor: OmenGda »

Dzięki za bieżący update. Pad xbox jest na wifi. Wprawdzie mam do ev3 dongla wifi na usb. Ale zakładam, że to już inna bajka taki soft do tej komunikacji :/
Na obecną chwile zatem mi zostaje szukać używki pada ps4 w dobrej cenie :)
Pozdrawiam
Michu
Nie jest sztuką trafić w muchę przednią szybą...
Sztuką jest, zrobić to boczną!

BJ
VIP
Posty: 999
Rejestracja: 2012-01-16, 21:42
Lokalizacja: Majdan/Warszawa

#74 Post autor: BJ »

Pad od Xboxa nie jest na wifi z tego co pamiętam lecz na jakiś inny sygnał radiowy. Pad od Xbox one s działa na 100% po BT, steruje nim sbricka przez telefon.
(19:28:58) Toltomeja: teraz powiem absolutnie serio, nawet jeśli zaraz będę żałował: trialowki wygrywają ten pojedynek

Awatar użytkownika
Aleksander Spyra
VIP
Posty: 237
Rejestracja: 2013-08-20, 18:41
Lokalizacja: Tarnowskie Góry

#75 Post autor: Aleksander Spyra »

To i ja dorzucę swoje dwa grosze :) Z racji że zbudowałem trialówkę na NXT, to zacząłem szukać sposobów na sterowanie nią przez pada. Wszystkie poniższe sposoby używają 'Direct Commands' (chociaż sposobu używającego RobotC nie jestem pewien), więc nie wymagają programowania kostki.

Jest kilka opcji:

1. NXT/EV3, komputer z Win8 wzwyż i Bluetoothem, pad kompatybilny z systemami Windows, aplikacja Mindstorms Remote

Najprostsza opcja. Wchodzimy na Microsoft Store, ściągamy darmową aplikację Mindstorms Remote. Wystarczy sparować kostkę z komputerem, podłączyć pada, włączyć aplikację. Całość działa dość przyjemnie, niestety na stałe ustawione jest sterowanie: L1/R1 sterują silnikiem A, lewy analog steruje silnikami B i C przód tył, prawy analog steruje różnicą prędkości silników B i C (sterowanie czołgowe). Od biedy można używać tylko lewego analoga i L1/R1, wtedy da się trialówką jakoś sterować.

2. NXT/EV3, telefon z Androidem, opcjonalnie trochę doświadczenia w kodowaniu

Mobilna opcja. Wiem że na iOSie i Androidzie da się napisać aplikację, która będzie czytać pada i sterować kostką, ale mam za mało doświadczenia z tymi systemami żeby się na to porwać. Może w przyszłości. Jednak są sposoby, żeby pisać aplikacje na Androida dużo prościej, niż ucząc się systemu i Javy. Mowa o MIT AppInventor i jego pochodnych.
Jeżeli ktoś programował w Scratchu, to powinien się łatwo odnaleźć. AppInventor ma wbudowane 'klocki' do sterowania NXT i EV3. Nie trzeba bawić się z Bluetoothem na niskim poziomie.
Sam 'napisałem' aplikację do sterowania NXT ekranowymi joystickami w jednym z klonów AppInventora - AppyBuilder. Ma on ten plus, że obsługuje wielodotyk.
Plik instalatora dla ciekawych można znaleźć tutaj: .APK
A tutaj jest plik do otwarcia w AppyBuilder, jeśli chcecie coś zmienić: .AIA

3. NXT, komputer z Bluetoothem, doświadczenie w programowaniu, pad Logitech, licencja RobotC

Ciut cięższa opcja, ale warta rozważenia. Język programowania i środowisko RobotC wspiera sterowanie robotem przez pady Logitech. W bibliotekach są już gotowe przykłady i zmienne, czytanie pada i przesyłanie informacji jest dość proste. Albo co najmniej takie się wydaje, z racji że RobotC jest płatne i tego że nie wiem czy metoda działa z innymi padami, nie przyglądałem jej się bliżej.

4. NXT/EV3, komputer z Bluetoothem, pad kompatybilny z Windows, darmowe środowisko Bricx Command Center.

Znów opcja bez programowania, ale bez możliwości konfiguracji. Środowisko Bricx Command Center służy głównie do programowania w NXC, ale posiada wbudowaną opcję sterowania joystickiem. Są dwie możliwości sterowania: czołgowe, i samochodowe. W tym drugim, jedna gałka analogowa steruje silnikiem do skrętu (z tego co pamiętam to prawa), a druga silnikiem napędowym. Minusy są dwa: nic tu nie można zmienić, i silnik napędowy możemy zaznaczyć... tylko jeden. Szkoda, bo gdyby minimalnie zmienić środowisko, stałoby się naprawdę dobrym sposobem na sterowanie trialówkami.

5. NXT/EV3, komputer z Bluetoothem, kompatybilny pad, doświadczenie w programowaniu

Jeśli żadna poprzednia opcja ci nie odpowiada, zawsze można samemu napisać program do sterowania. Jako że nikt nie chce się bawić z komunikacją Bluetooth, poszukałem gotowych bibliotek do komunikacji z NXT/EV3. Najbardziej rozwiniętą jest bazą jest według mnie MonoBrick: dostępną mamy bibliotekę do C++ i C#. Ja używałem tej drugiej, i wszystko działało jak powinno. Jak doszlifuję program, to go tutaj udostępnię. Z bibliotekami do innych języków jest trochę gorzej, nic pod Pythona nie znalazłem.

6. NXT/EV3, Arduino + HC05 lub ESP32, doświadczenie w programowaniu, lutowaniu

Opcja dla elektroników. Z mojego doświadczenia wiem, że taniutki moduł HC05 może łączyć się z NXT jako master. Jeżeli podepniemy go do Arduino, to możemy czytać najróżniejsze sygnały, np: pady ze starych konsol (PS2, Wii), aparatury RC, joysticki-samoróbki itd. Opcji jest tyle ile pomysłów.
ja sam zrobiłem 'przejściówkę' pomiędzy aparaturą RC a NXT. Działa to szybko, nie ma opóźnień. Całość jest dużo wygodniejsza od jakiegokolwiek Legowego systemu sterowania czy pada.
Tutaj są zdjęcia, a tutaj film.

ODPOWIEDZ