V tej seji bomo predstavili vmesnik igralne palice z Raspberry Pi. Joystick se uporablja predvsem za igranje različnih iger. Čeprav je krmilnih palčk USB enostavno povezati, danes pa bomo Joystick povezali prek zatičev Raspberry Pi GPIO, bo to v mnogih primerih prišlo prav.
Modul Raspberry Pi in Joystick:
Joysticks so na voljo v različnih oblikah in velikostih. Tipičen modul Joystick je prikazan na spodnji sliki. Ta modul Joystick običajno zagotavlja analogne izhode in izhodne napetosti, ki jih zagotavlja ta modul, se spreminjajo glede na smer, v katero ga premikamo. In smer gibanja lahko dobimo z interpretacijo teh sprememb napetosti z uporabo nekaterih mikrokrmilnikov. Prej smo uporabljali mikrokrmilnik AVR z igralno palico.
Ta modul krmilne palice ima dve osi, kot vidite. So osi X in Y. Vsaka os JOY STICK je nameščena na potenciometer ali lonec. Srednji točki teh loncev sta izločeni kot Rx in Ry. Torej sta Rx in Ry spremenljivi točki teh loncev. Ko je igralna palica v pripravljenosti, Rx in Ry delujeta kot delilnik napetosti.
Ko krmilno palčko premikate vzdolž vodoravne osi, se napetost na zatiču Rx spremeni. Podobno se pri premikanju vzdolž navpične osi napetost na zatiču Ry spremeni. Tako imamo štiri smeri igralne palice na dveh izhodih ADC. Ko se palica premakne, napetost na vsakem zatiču postane visoka ali nizka, odvisno od smeri.
Kot vemo, Raspberry Pi nima notranjega mehanizma ADC (analogni v digitalni pretvornik). Torej tega modula ni mogoče priključiti neposredno na Pi. Za preverjanje napetostnih izhodov bomo uporabili primerjalnike na osnovi op-amp. Ti OP-ojačevalniki oddajajo signale Raspberry Pi, Pi pa preklopi LED, odvisno od signalov. Tu smo uporabili štiri LED, ki označujejo gibanje igralne palice v štirih smereh. Na koncu preverite predstavitveni video.
Vsak od 17 zatičev GPIO ne more sprejeti napetosti, višje od + 3,3 V, zato izhodi Op-amp ne smejo biti višji od 3,3 V. Zato smo izbrali op-amp LM324, ta IC ima štiri operacijski ojačevalnik, ki lahko deluje na 3V. S tem IC imamo primerne izhode za izhode za naše Raspberry pi GPIO Pins. Več o GPIO zatičih Raspberry Pi preberite tukaj. Oglejte si tudi našo vadnico Raspberry Pi skupaj z nekaj dobrimi IoT projekti.
Potrebne komponente:
Tu uporabljamo model Raspberry Pi 2 Model B z OS Raspbian Jessie. Vse osnovne zahteve glede strojne in programske opreme so že obravnavane, za začetek si jih lahko ogledate v Uvodu Raspberry Pi in Utripajoči LED Raspberry PI, razen tistega, kar potrebujemo:
- 1000µF kondenzator
- Modul igralne palice
- LM324 Op-amp IC
- 1KΩ upor (12 kosov)
- LED (4 kosi)
- 2.2KΩ upor (4 kosi)
Shema vezja:
V LM324 IC so štirje primerjalniki OP-AMP za zaznavanje štirih smeri igralne palice. Spodaj je diagram LM324 IC iz njegovega obrazca.
Povezave modula Interfacing Joystick z Raspberry Pi so prikazane na spodnjem vezju. U1: A, U1: B, U1: C, U1: D označuje štiri primerjalnike znotraj LM324. Vsak primerjalnik smo prikazali v vezju z ustreznim Pin št. LM324 IC.
Delovna razlaga:
Za zaznavanje gibanja igralne palice vzdolž osi Y imamo OP-AMP1 ali U1: A in OP-AMP2 ali U1: B, za zaznavanje gibanja igralne palice po osi X pa OP-AMP3 ali U1: C in OP-AMP4 ali U1: D.
OP-AMP1 zazna gibanje krmilne palice navzdol po osi Y:
Negativni priključek primerjalnika U1: A je opremljen z 2,3 V (z uporabo napetostnega delilnega vezja za 1K in 2,2K), pozitivni priključek pa je povezan z Ry. Ko krmilno palčko premaknete navzdol po osi Y, se napetost Ry poveča. Ko je ta napetost višja od 2,3 V, OP-AMP na izhodnem zatiču zagotovi + 3,3 V Ta HIGH logični izhod OP-AMP zazna Raspberry Pi, Pi pa se odzove s preklopom LED.
OP-AMP2 zazna gibanje krmilne palice navzgor po osi Y:
Negativni priključek primerjalnika U1: B je opremljen z 1,0V (z uporabo vezja delilnika napetosti za 2,2K in 1K), pozitivni priključek pa je povezan z Ry. Ko krmilno palčko premaknete navzgor po osi Y, se napetost Ry zmanjša. Ko je ta napetost nižja od 1,0 V, se izhod OP-AMP zmanjša. Ta LOW logični izhod OP-AMP zazna Raspberry Pi, Pi pa se odzove s preklopom LED.
OP-AMP3 zazna gibanje krmilne palice na levi strani vzdolž osi X:
Negativni priključek primerjalnika U1: C je opremljen z 2,3 V (z uporabo vezja delilnika napetosti za 1K in 2,2K), pozitivni priključek pa je povezan z Rx. Ko premikate krmilno palčko levo vzdolž osi x, se napetost Rx poveča. Ko je ta napetost višja od 2,3 V, OP-AMP na izhodnem zatiču zagotovi + 3,3 V Ta HIGH logični izhod OP-AMP zazna Raspberry Pi, Pi pa se odzove s preklopom LED.
OP-AMP4 zazna gibanje krmilne palice na desni strani vzdolž osi X:
Negativni priključek primerjalnika U1: 4 je opremljen z 1,0 V (z uporabo napetostnega delilnega vezja za 2,2 K in 1 K), pozitivni priključek pa je povezan z Rx. Ko premikate krmilno palčko desno vzdolž osi x, se napetost Rx zmanjša. Ko je ta napetost nižja od 1,0 V, se izhod OP-AMP zmanjša. Ta LOW logični izhod OP-AMP zazna Raspberry Pi, Pi pa se odzove s preklopom LED.
Na ta način se vse štiri logike, ki določajo štiri smeri igralne palice, povežejo z Raspberry Pi. Raspberry Pi izhode teh primerjalnikov jemlje kot vhode in se ustrezno odzove s preklopom LED. Spodaj so prikazani rezultati na terminalu Raspberry Pi, saj smo s pomočjo naše kode Python na terminal natisnili tudi smer igralne palice.
Koda Python in video sta podana spodaj. Koda je enostavna in jo lahko razumemo s komentarji, navedenimi v kodi.