V této relaci se chystáme na rozhraní joysticku s Raspberry Pi. Joystick se primárně používá k hraní různých her. I když se joysticky typu USB snadno připojují, dnes však budeme Joystick připojovat pomocí pinů GPIO Raspberry Pi, to se v mnoha případech bude hodit.
Modul Raspberry Pi a joystick:
Joysticky jsou k dispozici v různých tvarech a velikostech. Typický modul Joystick je zobrazen na obrázku níže. Tento modul joysticku obvykle poskytuje analogové výstupy a výstupní napětí poskytovaná tímto modulem se neustále mění podle směru, kterým jej pohybujeme. A můžeme získat směr pohybu interpretací těchto změn napětí pomocí nějakého mikrokontroléru. Dříve jsme používali mikrokontrolér AVR s joystickem.
Tento modul joysticku má dvě osy, jak vidíte. Jsou to osa X a osa Y. Každá osa JOY STICK je namontována na potenciometr nebo hrnec. Střední body těchto baněk jsou vyhnány jako Rx a Ry. Rx a Ry jsou tedy variabilní body k těmto bankům. Když je joystick v pohotovostním režimu, fungují Rx a Ry jako dělič napětí.
Když se joystick pohybuje podél vodorovné osy, napětí na kolíku Rx se mění. Podobně, když se pohybuje podél svislé osy, mění se napětí na Ry pin. Takže máme čtyři směry Joysticku na dvou výstupech ADC. Když se hůl pohybuje, napětí na každém čepu klesá nebo klesá v závislosti na směru.
Jak víme, Raspberry Pi nemá interní mechanismus ADC (Analog to Digital Converter). Tento modul tedy nelze připojit přímo k Pi. Ke kontrole napěťových výstupů použijeme komparátory založené na operačních zesilovačích. Tyto OP zesilovače poskytují signály pro Raspberry Pi a Pi přepíná LED v závislosti na signálech. Zde jsme použili čtyři LED k indikaci pohybu joysticku ve čtyřech směrech. Na konci zkontrolujte ukázkové video.
Každý ze 17 pinů GPIO nemůže mít napětí vyšší než +3,3 V, takže výstupy operačního zesilovače nemohou být vyšší než 3,3 V. Proto jsme si vybrali operační zesilovač LM324, tento IC má čtyřnásobný operační zesilovač, který může pracovat při 3V. S tímto IC máme vhodné výstupy pro výstupy pro naše GPIO piny Raspberry pi. Další informace o pinech GPIO Raspberry Pi najdete zde. Podívejte se také na naši sérii kurzů Raspberry Pi spolu s některými dobrými projekty IoT.
Požadované komponenty:
Zde používáme Raspberry Pi 2 Model B s Raspbian Jessie OS. Všechny základní hardwarové a softwarové požadavky jsou již dříve diskutovány, můžete si je vyhledat v Raspberry Pi Introduction a Raspberry PI LED Blinking pro začátek, kromě toho, co potřebujeme:
- 1000µF kondenzátor
- Modul joysticku
- Integrovaný obvod zesilovače LM324
- 1KΩ rezistor (12 kusů)
- LED (4 kusy)
- 2.2KΩ rezistor (4 kusy)
Kruhový diagram:
Uvnitř LM324 IC jsou čtyři komparátory OP-AMP pro detekci čtyř směrů joysticku. Níže je uveden diagram LM324 IC z jeho datového listu.
Připojení, která se provádí pro modul Joystick s rozhraním Raspberry Pi, jsou uvedena v schématu zapojení níže. U1: A, U1: B, U1: C, U1: D označuje čtyři komparátory uvnitř LM324. Ukázali jsme každý komparátor v schématu zapojení s odpovídajícím pinem č. LM324 IC.
Pracovní vysvětlení:
Pro detekci pohybu joysticku podél osy Y máme OP-AMP1 nebo U1: A a OP-AMP2 nebo U1: B a pro detekci pohybu joysticku podél osy X máme OP-AMP3 nebo U1: C a OP-AMP4 nebo U1: D.
OP-AMP1 detekuje pohyb joysticku dolů podél osy Y:
Záporná svorka komparátoru U1: A je opatřena 2,3 V (pomocí obvodu děliče napětí o 1 K a 2,2 K) a kladná svorka je připojena k Ry. Při pohybu joysticku dolů podél jeho osy Y se zvyšuje napětí Ry. Jakmile toto napětí stoupne nad 2,3 V, poskytuje OP-AMP výstup + 3,3 V na svém výstupním kolíku. Tento VYSOKÝ logický výstup OP-AMP bude detekován Raspberry Pi a Pi reaguje přepnutím LED.
OP-AMP2 detekuje horní pohyb joysticku podél osy Y:
Záporná svorka komparátoru U1: B je opatřena 1,0 V (pomocí obvodu děliče napětí o 2,2 K a 1 K) a kladná svorka je připojena k Ry. Při pohybu joysticku nahoru podél jeho osy Y napětí Ry klesá. Jakmile toto napětí poklesne na méně než 1,0 V, výstup OP-AMP poklesne. Tento LOW logický výstup OP-AMP bude detekován Raspberry Pi a Pi reaguje přepnutím LED.
OP-AMP3 detekuje pohyb joysticku po levé straně podél osy X:
Záporná svorka komparátoru U1: C je opatřena 2,3 V (pomocí obvodu děliče napětí o 1 K a 2,2 K) a kladná svorka je připojena k Rx. Pohybem joysticku doleva podél jeho osy x se zvyšuje napětí Rx. Jakmile toto napětí stoupne nad 2,3 V, poskytuje OP-AMP výstup + 3,3 V na svém výstupním kolíku. Tento VYSOKÝ logický výstup OP-AMP bude detekován Raspberry Pi a Pi reaguje přepnutím LED.
OP-AMP4 detekuje pohyb joysticku na pravé straně podél osy X:
Záporná svorka komparátoru U1: 4 je dodávána s napětím 1,0 V (s použitím děliče napětí o 2,2 K a 1 K) a kladná svorka je připojena k Rx. Při pohybu joysticku doprava podél jeho osy x napětí Rx klesá. Jakmile toto napětí poklesne na méně než 1,0 V, výstup OP-AMP poklesne. Tento LOW logický výstup OP-AMP bude detekován Raspberry Pi a Pi reaguje přepnutím LED.
Tímto způsobem se všechny čtyři logiky, které určují čtyři směry Joysticku, připojí k Raspberry Pi. Raspberry Pi bere výstupy těchto komparátorů jako vstupy a odpovídajícím způsobem reaguje přepínáním LED. Níže jsou uvedeny výsledky zobrazené na terminálu Raspberry Pi, protože jsme také vytiskli směr Joysticku na terminálu pomocí našeho Pythonského kódu.
Pythonský kód a video jsou uvedeny níže. Kód je snadný a lze jej pochopit podle komentářů v kódu.