INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
Cześć!
Chciałbym zaprezentować Wam mój projekt – napędzane przez Malinkę, auto Lego Technics sterowane padem od Xboxa.
Krótka geneza powstania tego projektu jest taka:
2 lata temu na urodziny dostałem pad do Xbox one, w tym roku na urodziny dostałem klocki Lego a na Święta Raspberry PI Zero W.
Pomyślałem, że można połączyć to w całość. Tak też powstał ten twór potrafiący jeździć, skręcać oraz wykrywać przeszkody podczas cofania.
Efekt końcowy prezentuje się tak:
Składniki:
- Raspberry PI Zero W
- Xbox one pad
- Silnik N20-BT13
- Pololu TB6612FNG – sterownik silnika
- Serwomechanizm SG-90
- Czujnik odległości HC-SR04 + uchwyt
- LEGO – Technic First Responder ( lub inny 😊)
- Power bank, Bateria 9v, dioda LED + rezystor (330-1000 Ω) lub buzzer dla czujnika parkowania
- Kable, lutownica
Dla chętnych krótka instrukcja wykonania plus kompletny kod:
Misja 1 – połącznie pada z Raspberry PI
Sprawa jest relatywnie prosta gdyż Malinka Zero W ma wbudowany moduł Bluetooth a zaletą nowego pada Xboxa jest to, że nie potrzebuje dodatkowych adapterów. Niestety są też wady, ale o tym później. Pamiętamy aby ustawić pada w tryb parowania! Połączenie wykonujemy kilkoma komendami w terminalu:
1 |
echo 'options bluetooth disable_ertm=Y' | sudo tee -a /etc/modprobe.d/bluetooth.conf |
ertn (Enhanced Re-Transmission Mode) nie jest zbyt dobrze obsługiwane i może powodować rozłączanie pada. Restarcik:
1 |
sudo reboot |
Włączamy agenta bluetooth i skanujemy:
1 2 3 |
sudo bluetoothctl scan on |
pojawi się lista dostępnych urządzeń. Wśród nich znajdziemy pada (o ile jest włączony i ustawiony w tryb parowania).
1 2 3 4 5 |
pair MAC_ADDRESS trust MAC_ADDRESS connect MAC_ADDRESS |
Do obsługi I “czytania” pada użyłem joystick API. Wiem, że xboxdrv bardzo dobrze się sprawdza i wiele ułatwia, niestety nie obsługuje nowych kontrolerów – to jest właśnie wypomniana wada:).
Instalujemy joystick API:
1 |
sudo apt-get install joystick |
Później pozostaje nam już tylko skopiować repozytorium:
git clone https://github.com/Miker91/LegoPyCar
Kod nie jest doskonały, ale zapewnia stabilną pracę autka. Będę go jeszcze rozwijał.
Program uruchamiamy w następujący sposób:
1 2 |
cd LegoPyCar/ python3 main.py |
No więc pozostało nam już tylko ładnie podłączyć wszystkie części:
Serwomechanizm będzie odpowiedzialny za skręcanie, silniczek oczywiście za napęd, dioda LED, miga coraz szybciej wraz ze zbliżaniem się do przeszkody:
Wiem, ze schematy są tragiczne, ale to moje pierwsze podejście.
Upchnięcie wszystkiego do tak małego modelu wcale nie jest takie proste, ale poniżej kilka materiałów, które mogą być pomocne przy budowie własnego. Dodam tylko, że silnik ma 3mm wał co idealnie pasowało do klocka z układu napędowego autka i oszczędziło wiele trudu. Osobiście nie polecam „adapterów” Lego typu PLL-00145. Z moimi silnikami totalnie nie chciał współpracować.
Sposób działania serwa:
Sposób działania napędu:
Tył:
Mam szczerą nadzieję, że ten artykuł komuś pomoże lub zainspiruje. W razie jakichkolwiek pytań wiecie co robić 😊
Oczywiście musimy wszystko zlutować i upakować do modelu co nie jest łatwym zadaniem.
INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(