W tej sesji zamierzamy połączyć joystick z Raspberry Pi. Joystick służy przede wszystkim do grania w różne gry. Chociaż joysticki typu USB są łatwe do podłączenia, ale dzisiaj zamierzamy podłączyć Joystick przez piny GPIO Raspberry Pi, będzie to przydatne w wielu przypadkach.
Raspberry Pi i moduł joysticka:
Joysticki są dostępne w różnych kształtach i rozmiarach. Poniższy rysunek przedstawia typowy moduł joysticka. Ten moduł joysticka zwykle zapewnia wyjścia analogowe, a napięcia wyjściowe zapewniane przez ten moduł zmieniają się w zależności od kierunku, w którym go przesuwamy. Kierunek ruchu możemy uzyskać, interpretując te zmiany napięcia za pomocą mikrokontrolera. Wcześniej używaliśmy mikrokontrolera AVR z joystickiem.
Jak widać, ten moduł joysticka ma dwie osie. Są to oś X i oś Y. Każda oś JOY STICK jest przymocowana do potencjometru lub potencjometru. Punkty środkowe z tych pul są usuwane jako Rx i Ry. Zatem Rx i Ry są zmiennymi punktami w tych pulach. Gdy joystick jest w trybie gotowości, Rx i Ry działają jako dzielnik napięcia.
Poruszanie joystickiem wzdłuż osi poziomej powoduje zmianę napięcia na pinie Rx. Podobnie, gdy jest przesuwany wzdłuż osi pionowej, zmienia się napięcie na pinie Ry. Mamy więc cztery kierunki joysticka na dwóch wyjściach ADC. Kiedy drążek jest poruszany, napięcie na każdym pinie rośnie lub maleje w zależności od kierunku.
Jak wiemy, Raspberry Pi nie posiada wewnętrznego mechanizmu ADC (Analog to Digital Converter). Więc tego modułu nie można podłączyć bezpośrednio do Pi. Użyjemy komparatorów opartych na wzmacniaczu operacyjnym, aby sprawdzić wyjścia napięcia. Te wzmacniacze operacyjne dostarczają sygnały do Raspberry Pi, a Pi przełącza diody LED w zależności od sygnałów. Tutaj użyliśmy czterech diod LED do wskazania ruchu joysticka w czterech kierunkach. Sprawdź film demonstracyjny na końcu.
Każdy z 17 pinów GPIO nie może przyjmować napięcia wyższego niż + 3,3 V, więc wyjścia wzmacniacza operacyjnego nie mogą być wyższe niż 3,3 V. Dlatego wybraliśmy wzmacniacz operacyjny LM324, ten układ scalony ma poczwórny wzmacniacz operacyjny, który może pracować przy 3 V. Dzięki temu układowi scalonemu mamy odpowiednie wyjścia dla naszych pinów GPIO Raspberry pi. Dowiedz się więcej o pinach GPIO Raspberry Pi tutaj. Sprawdź również naszą serię samouczków Raspberry Pi oraz kilka dobrych projektów IoT.
Wymagane składniki:
Tutaj używamy Raspberry Pi 2 Model B z Raspbian Jessie OS. Wszystkie podstawowe wymagania sprzętowe i programowe zostały wcześniej omówione, możesz je sprawdzić we wprowadzeniu do Raspberry Pi i Miga dioda LED Raspberry PI, aby rozpocząć, poza tym, czego potrzebujemy:
- Kondensator 1000 µF
- Moduł joysticka
- Układ scalony wzmacniacza operacyjnego LM324
- Rezystor 1KΩ (12 sztuk)
- LED (4 sztuki)
- Rezystor 2,2 KΩ (4 sztuki)
Schemat obwodu:
W układzie scalonym LM324 znajdują się cztery komparatory OP-AMP do wykrywania czterech kierunków joysticka. Poniżej znajduje się schemat układu scalonego LM324 z arkusza danych.
Połączenia wykonane w celu połączenia modułu Joysticka z Raspberry Pi są pokazane na schemacie poniżej. U1: A, U1: B, U1: C, U1: D wskazuje cztery komparatory wewnątrz LM324. Pokazaliśmy każdy komparator na schemacie z odpowiednim pinem nr. LM324 IC.
Objaśnienie robocze:
Do wykrywania ruchu Joysticka wzdłuż osi Y mamy OP-AMP1 lub U1: A i OP-AMP2 lub U1: B, a do wykrywania ruchu Joysticka wzdłuż osi X mamy OP-AMP3 lub U1: C i OP-AMP4 lub U1: D.
OP-AMP1 wykrywa ruch joysticka w dół wzdłuż osi Y:
Zacisk ujemny komparatora U1: A jest zasilany napięciem 2,3 V (przy zastosowaniu obwodu dzielnika napięcia o 1K i 2,2K), a zacisk dodatni jest podłączony do Ry. Przesuwając joystick w dół wzdłuż osi Y, napięcie Ry wzrasta. Gdy to napięcie wzrośnie powyżej 2,3 V, OP-AMP zapewnia wyjście + 3,3 V na swoim pinie wyjściowym. To WYSOKIE wyjście logiczne OP-AMP zostanie wykryte przez Raspberry Pi, a Pi odpowie przełączając diodę LED.
OP-AMP2 wykrywa ruch joysticka w górę wzdłuż osi Y:
Zacisk ujemny komparatora U1: B jest zasilany napięciem 1,0 V (przy zastosowaniu obwodu dzielnika napięcia o 2,2 K i 1 K), a zacisk dodatni jest podłączony do Ry. Podczas przesuwania joysticka w górę wzdłuż osi Y, napięcie Ry spada. Gdy to napięcie spadnie poniżej 1,0 V, wyjście OP-AMP przechodzi w stan niski. To wyjście logiczne LOW OP-AMP zostanie wykryte przez Raspberry Pi, a Pi odpowie przełączając diodę LED.
OP-AMP3 wykrywa ruch joysticka w lewo wzdłuż osi X:
Zacisk ujemny komparatora U1: C jest zasilany napięciem 2,3 V (przy zastosowaniu obwodu dzielnika napięcia o 1K i 2,2K), a zacisk dodatni jest podłączony do Rx. Poruszając joystickiem w lewo wzdłuż osi X, napięcie Rx rośnie. Gdy to napięcie wzrośnie powyżej 2,3 V, OP-AMP zapewnia wyjście + 3,3 V na swoim pinie wyjściowym. To WYSOKIE wyjście logiczne OP-AMP zostanie wykryte przez Raspberry Pi, a Pi odpowie przełączając diodę LED.
OP-AMP4 wykrywa ruch joysticka w prawo wzdłuż osi X:
Zacisk ujemny komparatora U1: 4 jest zasilany napięciem 1,0 V (przy zastosowaniu obwodu dzielnika napięcia 2,2 K i 1 K), a zacisk dodatni jest podłączony do Rx. Poruszając joystickiem w prawo wzdłuż osi X, napięcie Rx spada. Gdy to napięcie spadnie poniżej 1,0 V, wyjście OP-AMP przechodzi w stan niski. To wyjście logiczne LOW OP-AMP zostanie wykryte przez Raspberry Pi, a Pi odpowie, przełączając diodę LED.
W ten sposób wszystkie cztery logiki, które określają cztery kierunki Joysticka, łączą się z Raspberry Pi. Raspberry Pi przyjmuje wyjścia tych komparatorów jako wejścia i odpowiednio reaguje, przełączając diody LED. Poniżej znajdują się wyniki pokazane na terminalu Raspberry Pi, ponieważ wydrukowaliśmy również kierunek joysticka na terminalu za pomocą naszego kodu Python.
Kod i wideo w Pythonie są podane poniżej. Kod jest łatwy i można go zrozumieć dzięki komentarzom podanym w kodzie.