I den här sessionen ska vi ansluta en joystick med Raspberry Pi. Joystick används främst för att spela olika spel. Även om USB-joysticks är lätta att ansluta, men idag ska vi ansluta joystick via Raspberry Pi GPIO-stift, detta kommer att vara till nytta i många fall.
Raspberry Pi och joystickmodul:
Joysticks finns i olika former och storlekar. En typisk joystickmodul visas i figuren nedan. Denna joystick-modul tillhandahåller vanligtvis analoga utgångar och de utgångsspänningar som tillhandahålls av den här modulen ändras i enlighet med den riktning vi rör den i. Och vi kan få rörelseriktningen genom att tolka dessa spänningsförändringar med hjälp av någon mikrokontroller. Tidigare har vi använt AVR Microcontroller med joystick.
Denna joystickmodul har två axlar som du kan se. De är X- och Y-axlar. Varje axel av JOY STICK är monterad på en potentiometer eller pot. Dessa krukors mittpunkter drivs ut som Rx och Ry. Så Rx och Ry är variabla punkter till dessa krukor. När joysticken är i beredskap fungerar Rx och Ry som spänningsdelare.
När joysticken flyttas längs den horisontella axeln ändras spänningen vid Rx-stiftet. På samma sätt, när den flyttas längs den vertikala axeln, ändras spänningen vid Ry-stiftet. Så vi har fyra riktningar av joystick på två ADC-utgångar. När pinnen flyttas går spänningen på varje stift hög eller låg beroende på riktning.
Som vi vet har Raspberry Pi ingen intern ADC- mekanism (Analog till Digital Converter). Så den här modulen kan inte anslutas direkt till Pi. Vi kommer att använda Op-amp-baserade komparatorer för att kontrollera spänningsutgångarna. Dessa OP-förstärkare ger signaler till Raspberry Pi och Pi växlar lysdioderna beroende på signalerna. Här har vi använt fyra lysdioder för att indikera joystickens rörelse i fyra riktningar. Kolla demonstrationsvideon i slutet.
Var och en av de 17 GPIO-stiften kan inte ta en spänning högre än + 3,3 V, så Op-amp-utgångarna kan inte vara högre än 3,3 V. Därför har vi valt op-amp LM324, denna IC har fyrdriftsförstärkare som kan fungera vid 3V. Med denna IC har vi lämpliga utgångar för utgångar till våra Raspberry pi GPIO Pins. Läs mer om GPIO Pins of Raspberry Pi här. Kolla också vår Raspberry Pi-handledningsserie tillsammans med några bra IoT-projekt.
Komponenter som krävs:
Här använder vi Raspberry Pi 2 Model B med Raspbian Jessie OS. Alla grundläggande hårdvaru- och mjukvarukrav har tidigare diskuterats, du kan slå upp det i Raspberry Pi Introduction och Raspberry PI LED Blinking för att komma igång, annat än vad vi behöver:
- 1000 µF kondensator
- Joystick-modul
- LM324 Op-amp IC
- 1KΩ motstånd (12 delar)
- LED (4 delar)
- 2,2KΩ motstånd (4 delar)
Kretsschema:
Det finns fyra OP-AMP-komparatorer inuti LM324 IC för att detektera fyra riktningar av joystick. Nedan är diagrammet för LM324 IC från dess datablad.
Anslutningarna som görs för interfacering av joystickmodul med Raspberry Pi visas i kretsschemat nedan. U1: A, U1: B, U1: C, U1: D anger de fyra komparatorerna inuti LM324. Vi har visat varje komparator i kretsschemat med motsvarande stift nr. av LM324 IC.
Arbetsförklaring:
För att detektera joystickens rörelse längs Y-axeln har vi OP-AMP1 eller U1: A och OP-AMP2 eller U1: B, och för att detektera joystickens rörelse längs X-axeln har vi OP-AMP3 eller U1: C och OP-AMP4 eller U1: D.
OP-AMP1 upptäcker nedåtgående rörelse för joystick längs Y-axeln:
Negativ terminal för komparator U1: A är försedd med 2.3V (använder spänningsdelarkrets med 1K och 2,2K) och positiv terminal är ansluten till Ry. När du flyttar joysticken längs Y-axeln ökar Ry-spänningen. När denna spänning väl är högre än 2,3V, ger OP-AMP + 3,3V utgång vid sin utgångsstift. Denna HÖGA logiska utgång av OP-AMP kommer att upptäckas av Raspberry Pi och Pi svarar genom att växla en LED.
OP-AMP2 detekterar joystickens uppåtgående rörelse längs Y-axeln:
Negativ terminal för komparator U1: B är försedd med 1.0V (använder spänningsdelarkrets med 2,2K och 1K) och positiv terminal är ansluten till Ry. När du flyttar joysticken längs Y-axeln minskar Ry-spänningen. När denna spänning är lägre än 1,0V blir OP-AMP-utgången låg. Denna LÅGA logiska utgång för OP-AMP kommer att upptäckas av Raspberry Pi och Pi svarar genom att växla en LED.
OP-AMP3 detekterar joystickens vänsterrörelse längs X-axeln:
Negativ terminal för komparator U1: C är försedd med 2.3V (med spänningsdelarkrets med 1K och 2,2K) och positiv terminal är ansluten till Rx. När du flyttar joysticken åt vänster längs sin x-axel ökar Rx-spänningen. När denna spänning väl är högre än 2,3V, ger OP-AMP + 3,3V utgång vid sin utgångsstift. Denna HÖGA logiska utgång av OP-AMP kommer att upptäckas av Raspberry Pi och Pi svarar genom att växla en LED.
OP-AMP4 detekterar joystickens högerrörelse längs X-axeln:
Negativ terminal för komparatorn U1: 4 är försedd med 1.0V (med spänningsdelarkrets med 2,2K och 1K) och den positiva terminalen är ansluten till Rx. När du flyttar joysticken längs sin x-axel minskar Rx-spänningen. När denna spänning är lägre än 1,0V blir OP-AMP-utgången låg. Denna LÅGA logiska utgång för OP-AMP kommer att upptäckas av Raspberry Pi och Pi svarar genom att växla en LED.
På så sätt ansluts alla fyra logik, som bestämmer joystickens fyra riktningar, till Raspberry Pi. Raspberry Pi tar utgångarna från dessa komparatorer som ingångar och svarar därefter genom att växla lysdioderna. Nedan visas resultaten på Raspberry Pi-terminalen, eftersom vi också har tryckt joystickens riktning på terminalen med vår Python-kod.
Python-kod och video ges nedan. Koden är enkel och kan förstås av kommentarerna i koden.