In questa sessione interfacciamo un joystick con Raspberry Pi. Il joystick viene utilizzato principalmente per giocare a vari giochi. Sebbene i joystick di tipo USB siano facili da collegare, ma oggi collegheremo il Joystick tramite i pin GPIO Raspberry Pi, questo tornerà utile in molti casi.
Modulo Raspberry Pi e Joystick:
I joystick sono disponibili in diverse forme e dimensioni. Un tipico modulo Joystick è mostrato nella figura seguente. Questo modulo Joystick fornisce tipicamente uscite analogiche e le tensioni di uscita fornite da questo modulo continuano a cambiare in base alla direzione in cui lo spostiamo. E possiamo ottenere la direzione del movimento interpretando questi cambiamenti di tensione usando un microcontrollore. In precedenza abbiamo utilizzato il microcontrollore AVR con Joystick.
Questo modulo joystick ha due assi come puoi vedere. Sono asse X e asse Y. Ogni asse di JOY STICK è montato su un potenziometro o pentola. I punti medi di questi piatti vengono eliminati come Rx e Ry. Quindi Rx e Ry sono punti variabili per questi piatti. Quando il Joystick è in standby, Rx e Ry agiscono come divisori di tensione.
Quando il joystick viene spostato lungo l'asse orizzontale, la tensione sul pin Rx cambia. Allo stesso modo, quando viene spostato lungo l'asse verticale, la tensione sul pin Ry cambia. Quindi abbiamo quattro direzioni del Joystick su due uscite ADC. Quando lo stick viene spostato, la tensione su ciascun pin aumenta o diminuisce a seconda della direzione.
Come sappiamo, Raspberry Pi non ha un meccanismo ADC (convertitore analogico-digitale) interno. Quindi questo modulo non può essere collegato direttamente al Pi. Useremo comparatori basati su amplificatori operazionali per controllare le uscite di tensione. Questi amplificatori operazionali forniscono segnali a Raspberry Pi e Pi commuta i LED a seconda dei segnali. Qui abbiamo utilizzato quattro LED per indicare il movimento del Joystick in quattro direzioni. Guarda il video dimostrativo alla fine.
Ciascuno dei 17 pin GPIO non può assumere una tensione superiore a + 3,3 V, quindi le uscite dell'amplificatore operazionale non possono essere superiori a 3,3 V. Quindi abbiamo scelto l' amplificatore operazionale LM324, questo IC ha un amplificatore operazionale quadruplo che può funzionare a 3V. Con questo IC, abbiamo uscite adatte per le uscite per i nostri pin GPIO Raspberry pi. Ulteriori informazioni sui pin GPIO di Raspberry Pi qui. Controlla anche la nostra serie di tutorial Raspberry Pi insieme ad alcuni buoni progetti IoT.
Componenti richiesti:
Qui stiamo usando Raspberry Pi 2 Model B con Raspbian Jessie OS. Tutti i requisiti hardware e software di base sono stati discussi in precedenza, puoi cercarli nell'introduzione di Raspberry Pi e LED Raspberry PI lampeggiante per iniziare, oltre a quello di cui abbiamo bisogno:
- Condensatore da 1000µF
- Modulo joystick
- IC amplificatore operazionale LM324
- Resistenza da 1KΩ (12 pezzi)
- LED (4 pezzi)
- Resistenza da 2,2 KΩ (4 pezzi)
Schema elettrico:
Ci sono quattro comparatori OP-AMP all'interno dell'LM324 IC per rilevare quattro direzioni del Joystick. Di seguito è riportato lo schema dell'LM324 IC dalla sua scheda tecnica.
Le connessioni che vengono eseguite per l' interfacciamento del modulo Joystick con Raspberry Pi sono mostrate nello schema del circuito sottostante. U1: A, U1: B, U1: C, U1: D indica i quattro comparatori all'interno di LM324. Abbiamo mostrato ogni comparatore nello schema elettrico con il corrispondente Pin n. di LM324 IC.
Spiegazione di lavoro:
Per rilevare il movimento del Joystick lungo l'asse Y, abbiamo OP-AMP1 o U1: A e OP-AMP2 o U1: B, e per rilevare il movimento del Joystick lungo l'asse X, abbiamo OP-AMP3 o U1: C e OP-AMP4 o U1: D.
OP-AMP1 rileva il movimento verso il basso del joystick lungo l'asse Y:
Terminale negativo del comparatore U1: A è dotato di 2,3 V (utilizzando il circuito divisore di tensione da 1K e 2,2K) e il terminale positivo è collegato a Ry. Spostando il joystick verso il basso lungo il suo asse Y, la tensione Ry aumenta. Una volta che questa tensione supera i 2,3 V, OP-AMP fornisce un'uscita di + 3,3 V al suo pin di uscita. Questa uscita logica ALTA di OP-AMP verrà rilevata da Raspberry Pi e Pi risponde attivando un LED.
OP-AMP2 rileva il movimento verso l'alto del joystick lungo l'asse Y:
Il terminale negativo del comparatore U1: B è fornito con 1.0V (utilizzando il circuito divisore di tensione da 2.2K e 1K) e il terminale positivo è collegato a Ry. Spostando il joystick verso l'alto lungo il suo asse Y, la tensione Ry diminuisce. Una volta che questa tensione scende al di sotto di 1,0 V, l'uscita OP-AMP diventa Bassa. Questa uscita logica BASSA di OP-AMP verrà rilevata da Raspberry Pi e Pi risponde attivando un LED.
OP-AMP3 rileva il movimento del lato sinistro del joystick lungo l'asse X:
Il terminale negativo del comparatore U1: C è dotato di 2,3 V (utilizzando il circuito divisore di tensione da 1K e 2,2K) e il terminale positivo è collegato a Rx. Spostando il joystick a sinistra lungo il suo asse x, la tensione Rx aumenta. Una volta che questa tensione supera i 2,3 V, OP-AMP fornisce un'uscita di + 3,3 V al suo pin di uscita. Questa uscita logica ALTA di OP-AMP verrà rilevata da Raspberry Pi e Pi risponde attivando un LED.
OP-AMP4 rileva il movimento del lato destro del joystick lungo l'asse X:
Il terminale negativo del comparatore U1: 4 è fornito con 1.0V (utilizzando il circuito divisore di tensione da 2.2K e 1K) e il terminale positivo è collegato a Rx. Spostando il joystick a destra lungo il suo asse x, la tensione Rx diminuisce. Una volta che questa tensione scende al di sotto di 1,0 V, l'uscita OP-AMP diventa Bassa. Questa uscita logica BASSA di OP-AMP verrà rilevata da Raspberry Pi e Pi risponde attivando un LED.
In questo modo tutte e quattro le logiche, che determinano le quattro direzioni del Joystick, vengono collegate a Raspberry Pi. Raspberry Pi prende le uscite di questi comparatori come ingressi e risponde di conseguenza attivando i LED. Di seguito sono riportati i risultati mostrati sul terminale del Raspberry Pi, poiché abbiamo anche stampato la direzione del Joystick sul terminale utilizzando il nostro codice Python.
Di seguito sono riportati il codice e il video Python. Il codice è semplice e può essere compreso dai commenti forniti nel codice.