În această sesiune vom interfața un joystick cu Raspberry Pi. Joystick-ul este utilizat în principal pentru a juca diverse jocuri. Deși joystick-urile de tip USB sunt ușor de conectat, dar astăzi vom conecta Joystick-ul prin pinii Raspberry Pi GPIO, acest lucru va fi util în multe cazuri.
Modul Raspberry Pi și Joystick:
Joystick-urile sunt disponibile în diferite forme și dimensiuni. Un modul tipic Joystick este prezentat în figura de mai jos. Acest modul Joystick oferă de obicei ieșiri analogice și tensiunile de ieșire furnizate de acest modul continuă să se schimbe în funcție de direcția în care îl deplasăm. Și putem obține direcția de mișcare interpretând aceste modificări de tensiune folosind un microcontroler. Anterior am folosit microcontrolerul AVR cu joystick.
Acest modul joystick are două axe, după cum puteți vedea. Acestea sunt axa X și axa Y. Fiecare axă JOY STICK este montată pe un potențiometru sau oală. Punctele de mijloc ale acestor oale sunt alungate ca Rx și Ry. Deci Rx și Ry sunt puncte variabile ale acestor pot-uri. Când joystick-ul este în standby, Rx și Ry acționează ca divizor de tensiune.
Când joystick-ul este deplasat de-a lungul axei orizontale, tensiunea la pinul Rx se schimbă. În mod similar, atunci când este deplasat de-a lungul axei verticale, tensiunea la pinul Ry se schimbă. Deci, avem patru direcții ale Joystick-ului pe două ieșiri ADC. Când butonul este mișcat, tensiunea pe fiecare știft crește sau scade în funcție de direcție.
După cum știm, Raspberry Pi nu are un mecanism intern ADC (Analog to Digital Converter). Deci, acest modul nu poate fi conectat direct la Pi. Vom folosi comparatoare bazate pe amplificatoare Op pentru a verifica ieșirile de tensiune. Aceste amplificatoare OP furnizează semnale către Raspberry Pi și Pi comută LED-urile în funcție de semnale. Aici am folosit patru LED-uri pentru a indica mișcarea Joystick-ului în patru direcții. Verificați videoclipul demonstrativ la final.
Fiecare dintre cei 17 pini GPIO nu poate lua o tensiune mai mare de + 3,3 V, deci ieșirile amplificatorului Op nu pot fi mai mari de 3,3 V. Prin urmare, am ales op-amp LM324, acest IC are un amplificator operațional quad care poate funcționa la 3V. Cu acest IC, avem ieșiri adecvate pentru ieșiri pentru pinii GPIO Raspberry pi. Aflați mai multe despre Pinii GPIO ai Raspberry Pi aici. Verificați, de asemenea, seria noastră de tutoriale Raspberry Pi, împreună cu câteva proiecte IoT bune.
Componente necesare:
Aici folosim Raspberry Pi 2 Model B cu Raspbian Jessie OS. Toate cerințele de bază privind hardware-ul și software-ul sunt discutate anterior, le puteți căuta în Introducere Raspberry Pi și LED-ul Raspberry PI Clipește pentru a începe, în afară de asta avem nevoie:
- Condensator 1000µF
- Modulul Joystick
- LM324 Op-amp IC
- Rezistor 1KΩ (12 bucăți)
- LED (4 bucăți)
- Rezistor de 2,2 KΩ (4 bucăți)
Diagrama circuitului:
Există patru comparatoare OP-AMP în LM324 IC pentru detectarea a patru direcții ale joystick-ului. Mai jos este diagrama LM324 IC din foaia sa tehnică.
Conexiunile realizate pentru modulul de interfațare a joystick-ului cu Raspberry Pi sunt prezentate în schema de circuit de mai jos. U1: A, U1: B, U1: C, U1: D indică cei patru comparatori din LM324. Am arătat fiecare comparator în schema circuitului cu pinul nr. de LM324 IC.
Explicație de lucru:
Pentru detectarea mișcării joystick-ului de-a lungul axei Y, avem OP-AMP1 sau U1: A și OP-AMP2 sau U1: B, iar pentru detectarea mișcării joystick-ului de-a lungul axei X, avem OP-AMP3 sau U1: C și OP-AMP4 sau U1: D.
OP-AMP1 detectează mișcarea de jos a joystick-ului de-a lungul axei Y:
Terminal negativ al comparatorului U1: A este furnizat cu 2,3V (utilizând circuitul divizor de tensiune de 1K și 2,2K), iar terminalul pozitiv este conectat la Ry. La deplasarea joystick-ului în jos de-a lungul axei sale Y, tensiunea Ry crește. Odată ce această tensiune depășește 2,3 V, OP-AMP oferă o ieșire de + 3,3 V la pinul de ieșire. Această ieșire logică HIGH a OP-AMP va fi detectată de Raspberry Pi și Pi răspunde prin comutarea unui LED.
OP-AMP2 detectează mișcarea în sus a joystick-ului de-a lungul axei Y:
Terminalul negativ al comparatorului U1: B este prevăzut cu 1.0V (utilizând circuitul de divizare a tensiunii de 2.2K și 1K), iar terminalul pozitiv este conectat la Ry. La deplasarea joystick-ului în sus de-a lungul axei sale Y, tensiunea Ry scade. Odată ce această tensiune scade sub 1,0V, ieșirea OP-AMP scade. Această ieșire logică LOW a OP-AMP va fi detectată de Raspberry Pi și Pi răspunde prin comutarea unui LED.
OP-AMP3 detectează mișcarea din stânga a joystick-ului de-a lungul axei X:
Terminalul negativ al comparatorului U1: C este prevăzut cu 2,3V (utilizând circuitul divizor de tensiune de 1K și 2,2K), iar terminalul pozitiv este conectat la Rx. La deplasarea joystick-ului la stânga de-a lungul axei sale X, tensiunea Rx crește. Odată ce această tensiune depășește 2,3 V, OP-AMP oferă o ieșire de + 3,3 V la pinul de ieșire. Această ieșire logică HIGH a OP-AMP va fi detectată de Raspberry Pi și Pi răspunde prin comutarea unui LED.
OP-AMP4 detectează mișcarea din dreapta a joystick-ului de-a lungul axei X:
Terminalul negativ al comparatorului U1: 4 este prevăzut cu 1.0V (utilizând circuitul divizor de tensiune de 2.2K și 1K), iar terminalul pozitiv este conectat la Rx. La deplasarea joystick-ului chiar de-a lungul axei sale X, tensiunea Rx scade. Odată ce această tensiune scade sub 1,0V, ieșirea OP-AMP scade. Această ieșire logică LOW a OP-AMP va fi detectată de Raspberry Pi și Pi răspunde prin comutarea unui LED.
În acest fel, toate cele patru logici, care determină cele patru direcții ale Joystick-ului, se conectează la Raspberry Pi. Raspberry Pi ia ieșirile acestor comparatoare ca intrări și răspunde în consecință prin comutarea LED-urilor. Mai jos sunt rezultatele afișate pe terminalul Raspberry Pi, deoarece am imprimat și direcția Joystick-ului pe terminal folosind codul nostru Python.
Codul și videoclipul Python sunt prezentate mai jos. Codul este ușor și poate fi înțeles prin comentariile date în cod.