V tejto relácii sa chystáme na prepojenie joysticku s Raspberry Pi. Joystick sa primárne používa na hranie rôznych hier. Aj keď sa joysticky typu USB dajú ľahko pripojiť, dnes sa však joystick chystáme pripájať cez GPP piny Raspberry Pi, toto sa v mnohých prípadoch bude hodiť.
Modul Raspberry Pi a joystick:
Joysticky sú k dispozícii v rôznych tvaroch a veľkostiach. Typický modul Joystick je zobrazený na obrázku nižšie. Tento modul joysticku zvyčajne poskytuje analógové výstupy a výstupné napätia poskytované týmto modulom sa neustále menia podľa smeru, ktorým ho pohybujeme. A smer pohybu môžeme získať interpretáciou týchto zmien napätia pomocou nejakého mikrokontroléra. Predtým sme používali mikrokontrolér AVR s joystickom.
Tento modul joysticku má dve osi, ako vidíte. Sú to os X a Y. Každá os JOY STICK je pripevnená k potenciometru alebo banke. Stredové body týchto hrncov sú vytlačené ako Rx a Ry. Rx a Ry sú teda variabilné body k týmto bankom. Keď je joystick v pohotovostnom režime, Rx a Ry pôsobia ako rozdeľovač napätia.
Keď sa joystick pohybuje pozdĺž vodorovnej osi, mení sa napätie na kolíku Rx. Podobne, keď sa pohybuje pozdĺž vertikálnej osi, mení sa napätie na kolíku Ry. Takže máme štyri smery navigačného tlačidla na dvoch ADC výstupy. Keď sa páčkou pohnete, napätie na každom kolíku sa zvýši alebo zníži v závislosti od smeru.
Ako vieme, Raspberry Pi nemá interný mechanizmus ADC (Analog to Digital Converter). Tento modul teda nemožno pripojiť priamo k Pi. Na kontrolu napäťových výstupov použijeme komparátory založené na Op-amp. Tieto OP zosilňovače poskytujú signály pre Raspberry Pi a Pi prepína LED diódy v závislosti od signálov. Tu sme použili štyri LED diódy na indikáciu pohybu joysticku v štyroch smeroch. Na konci si pozrite ukážkové video.
Každý zo 17 pinov GPIO nemôže brať napätie vyššie ako +3,3 V, takže výstupy operačného zosilňovača nemôžu byť vyššie ako 3,3 V. Preto sme si vybrali operačný zosilňovač LM324, tento IC má štvoritý operačný zosilňovač, ktorý môže pracovať pri 3V. S týmto IC máme vhodné výstupy pre výstupy pre naše GPIO piny Raspberry pi. Viac informácií o pinoch GPIO Raspberry Pi sa dozviete tu. Skontrolujte tiež našu sériu tutoriálov Raspberry Pi spolu s niekoľkými dobrými projektmi IoT.
Požadované komponenty:
Tu používame Raspberry Pi 2 Model B s Raspbian Jessie OS. Všetky základné hardvérové a softvérové požiadavky sú už predtým diskutované. Môžete si ich vyhľadať v úvode Raspberry Pi a blikaní Raspberry PI LED, okrem toho, čo potrebujeme:
- 1000µF kondenzátor
- Modul joysticku
- Integrovaný obvod zosilňovača LM324
- 1KΩ rezistor (12 kusov)
- LED (4 kusy)
- Rezistor 2,2 KΩ (4 kusy)
Schéma zapojenia:
Vo vnútri LM324 IC sa nachádzajú štyri komparátory OP-AMP na detekciu štyroch smerov joysticku. Nižšie je uvedený diagram LM324 IC z jeho údajového listu.
Pripojenia, ktoré sa vykonávajú pre modul Joystick s rozhraním Raspberry Pi, sú uvedené v schéme zapojenia nižšie. U1: A, U1: B, U1: C, U1: D označuje štyri komparátory vo vnútri LM324. Každý komparátor sme si ukázali v schéme zapojenia so zodpovedajúcim Pinom č. LM324 IC.
Pracovné vysvetlenie:
Na detekciu pohybu joysticku pozdĺž osi Y máme OP-AMP1 alebo U1: A a OP-AMP2 alebo U1: B a na detekciu pohybu joysticku pozdĺž osi X máme OP-AMP3 alebo U1: C a OP-AMP4 alebo U1: D.
OP-AMP1 detekuje pohyb joysticku dole pozdĺž osi Y:
Záporná svorka komparátoru U1: A je vybavená 2,3 V (s použitím obvodu deliča napätia o 1 K a 2,2 K) a kladná svorka je pripojená k Ry. Po posunutí joysticku nadol pozdĺž jeho osi Y sa zvýši napätie Ry. Akonáhle toto napätie stúpne nad 2,3 V, poskytuje OP-AMP na výstupnom kolíku výstup +3,3 V. Tento VYSOKÝ logický výstup OP-AMP bude detekovaný Raspberry Pi a Pi reaguje prepnutím LED.
OP-AMP2 detekuje horný pohyb joysticku pozdĺž osi Y:
Záporná svorka komparátoru U1: B je vybavená 1,0 V (s použitím obvodu deliča napätia o 2,2K a 1K) a kladná svorka je pripojená k Ry. Po posunutí joysticku hore pozdĺž jeho osi Y sa napätie Ry zníži. Akonáhle toto napätie klesne pod 1,0 V, výstup OP-AMP klesne na nízku hodnotu. Tento LOW logický výstup OP-AMP bude detegovaný Raspberry Pi a Pi reaguje prepnutím LED.
OP-AMP3 detekuje pohyb joysticku po ľavej strane pozdĺž osi X:
Záporná svorka komparátoru U1: C je vybavená 2,3 V (pomocou obvodu deliča napätia o 1 K a 2,2 K) a kladná svorka je pripojená k Rx. Pohybom joysticku vľavo pozdĺž osi x sa zvyšuje napätie Rx. Akonáhle toto napätie stúpne nad 2,3 V, poskytuje OP-AMP na výstupnom kolíku výstup +3,3 V. Tento VYSOKÝ logický výstup OP-AMP bude detekovaný Raspberry Pi a Pi reaguje prepnutím LED.
OP-AMP4 detekuje pohyb joysticku na pravej strane pozdĺž osi X:
Záporná svorka komparátoru U1: 4 je vybavená napätím 1,0 V (s použitím obvodu deliča napätia o 2,2 K a 1 K) a kladná svorka je pripojená k Rx. Pohybom joysticku doprava pozdĺž jeho osi x sa napätie Rx zníži. Akonáhle toto napätie klesne pod 1,0 V, výstup OP-AMP klesne na nízku hodnotu. Tento LOW logický výstup OP-AMP bude detekovaný Raspberry Pi a Pi reaguje prepnutím LED.
Týmto spôsobom sa všetky štyri logiky, ktoré určujú štyri smery joysticku, pripoja k Raspberry Pi. Raspberry Pi berie výstupy týchto komparátorov ako vstupy a zodpovedajúcim spôsobom reaguje prepínaním LED diód. Ďalej sú uvedené výsledky zobrazené na termináli Raspberry Pi, pretože sme tiež vytlačili smer joysticku na terminál pomocou nášho kódu Python.
Kód a video v jazyku Python sú uvedené nižšie. Kód je jednoduchý a dá sa pochopiť podľa komentárov v kóde.