I denne session skal vi interface et joystick med Raspberry Pi. Joystick bruges primært til at spille forskellige spil. Selvom USB-joystick er lette at tilslutte, men i dag skal vi forbinde joystick gennem Raspberry Pi GPIO-ben, dette vil være nyttigt i mange tilfælde.
Raspberry Pi og joystick-modul:
Joysticks fås i forskellige former og størrelser. Et typisk joystick-modul vises i nedenstående figur. Dette joystick-modul leverer typisk analoge udgange, og de udgangsspændinger, der leveres af dette modul, ændres konstant i henhold til den retning, vi bevæger det i. Og vi kan få bevægelsesretningen ved at fortolke disse spændingsændringer ved hjælp af en mikrokontroller. Tidligere har vi brugt AVR Microcontroller med joystick.
Dette joystick-modul har to akser, som du kan se. De er X-akse og Y-akse. Hver akse af JOY STICK er monteret på et potentiometer eller potte. Midtpunkterne i disse potter køres ud som Rx og Ry. Så Rx og Ry er variable punkter i disse potter. Når joysticket er i standby, fungerer Rx og Ry som spændingsdeler.
Når joysticket bevæges langs den vandrette akse, ændres spændingen ved Rx-pin. Tilsvarende ændres spændingen ved Ry-pin, når den bevæges langs den lodrette akse. Så vi har fire retninger af joystick på to ADC-udgange. Når stokken flyttes, går spændingen på hver stift høj eller lav afhængigt af retning.
Som vi ved, har Raspberry Pi ikke en intern ADC- mekanisme (Analog til Digital Converter). Så dette modul kan ikke tilsluttes direkte til Pi. Vi bruger Op-amp-baserede komparatorer til at kontrollere spændingsudgangene. Disse OP-forstærkere giver signaler til Raspberry Pi og Pi skifter lysdioderne afhængigt af signalerne. Her har vi brugt fire lysdioder til at indikere bevægelse af joystick i fire retninger. Tjek demonstrationsvideoen i slutningen.
Hver af de 17 GPIO-ben kan ikke tage spænding højere end + 3,3 V, så Op-amp-udgange kan ikke være højere end 3,3 V. Derfor har vi valgt op-amp LM324, denne IC har quad operationel forstærker, som kan arbejde ved 3V. Med denne IC har vi egnede output til output til vores Raspberry pi GPIO Pins. Lær mere om GPIO Pins of Raspberry Pi her. Tjek også vores Raspberry Pi Tutorial Series sammen med nogle gode IoT-projekter.
Nødvendige komponenter:
Her bruger vi Raspberry Pi 2 Model B med Raspbian Jessie OS. Alle de grundlæggende hardware- og softwarekrav er tidligere diskuteret, du kan slå det op i Raspberry Pi Introduktion og Raspberry PI LED Blinker for at komme i gang, bortset fra at vi har brug for:
- 1000 µF kondensator
- Joystick-modul
- LM324 Op-amp IC
- 1KΩ modstand (12 stykker)
- LED (4 stk.)
- 2.2KΩ modstand (4 stykker)
Kredsløbsdiagram:
Der er fire OP-AMP-komparatorer inde i LM324 IC til at detektere fire retninger af joystick. Nedenfor er diagrammet for LM324 IC fra databladet.
Forbindelserne, der foretages til interfacing joystick-modul med Raspberry Pi, vises i kredsløbsdiagrammet nedenfor. U1: A, U1: B, U1: C, U1: D angiver de fire komparatorer inde i LM324. Vi har vist hver komparator i kredsløbsdiagrammet med det tilsvarende pin nr. af LM324 IC.
Arbejdsforklaring:
Til detektion af joystickets bevægelse langs Y-aksen har vi OP-AMP1 eller U1: A og OP-AMP2 eller U1: B, og til at detektere joystickets bevægelse langs X-aksen har vi OP-AMP3 eller U1: C og OP-AMP4 eller U1: D.
OP-AMP1 registrerer nedadgående bevægelse af joystick langs Y-aksen:
Negativ terminal af komparator U1: A er forsynet med 2.3V (ved hjælp af spændingsdelerkredsløb med 1K og 2,2K), og positiv terminal er forbundet til Ry. Når joysticket flyttes ned langs Y-aksen, øges Ry-spændingen. Når denne spænding går højere end 2,3V, leverer OP-AMP + 3,3V output ved sin udgangsstift. Denne HIGH logiske output af OP-AMP detekteres af Raspberry Pi, og Pi reagerer ved at skifte en LED.
OP-AMP2 registrerer joystickets opadgående bevægelse langs Y-aksen:
Negativ terminal af komparator U1: B er forsynet med 1.0V (ved hjælp af spændingsdelerkredsløb med 2,2K og 1K), og den positive terminal er forbundet til Ry. Når joysticket flyttes op langs Y-aksen, falder Ry-spændingen. Når denne spænding går lavere end 1,0V, bliver OP-AMP-udgangen lav. Denne lave logiske output af OP-AMP vil blive detekteret af Raspberry Pi, og Pi reagerer ved at skifte en LED.
OP-AMP3 registrerer joystickets venstre bevægelse langs X-aksen:
Negativ terminal for komparator U1: C er forsynet med 2.3V (ved hjælp af spændingsdelerkredsløb med 1K og 2,2K), og positiv terminal er forbundet til Rx. Når joysticket flyttes til venstre langs sin x-akse, øges Rx-spændingen. Når denne spænding går højere end 2,3V, leverer OP-AMP + 3,3V output ved sin udgangsstift. Denne HIGH logiske output af OP-AMP detekteres af Raspberry Pi, og Pi reagerer ved at skifte en LED.
OP-AMP4 registrerer joystickets højre bevægelse langs X-aksen:
Negativ terminal af komparator U1: 4 er forsynet med 1.0V (ved hjælp af spændingsdelerkredsløb med 2,2K og 1K), og positiv terminal er forbundet til Rx. Når joysticket flyttes lige langs sin x-akse, falder Rx-spændingen. Når denne spænding går lavere end 1,0V, bliver OP-AMP-udgangen lav. Denne lave logiske output af OP-AMP vil blive detekteret af Raspberry Pi, og Pi reagerer ved at skifte en LED.
På denne måde bliver alle de fire logikker, der bestemmer joystickets fire retninger, forbundet til Raspberry Pi. Raspberry Pi tager output fra disse komparatorer som input og reagerer i overensstemmelse hermed ved at skifte lysdioder. Nedenfor er resultaterne vist på Raspberry Pi's terminal, da vi også har udskrevet retningen af joystick på terminalen ved hjælp af vores Python-kode.
Python-kode og video er angivet nedenfor. Koden er let og kan forstås af kommentarerne i koden.