Dans cette session, nous allons interfacer un joystick avec Raspberry Pi. Le joystick est principalement utilisé pour jouer à divers jeux. Bien que les joysticks de type USB soient faciles à connecter, mais aujourd'hui, nous allons connecter le joystick via des broches GPIO Raspberry Pi, cela sera utile dans de nombreux cas.
Module Raspberry Pi et Joystick:
Les joysticks sont disponibles en différentes formes et tailles. Un module Joystick typique est illustré dans la figure ci-dessous. Ce module Joystick fournit généralement des sorties analogiques et les tensions de sortie fournies par ce module changent en fonction de la direction dans laquelle nous le déplaçons. Et nous pouvons obtenir la direction du mouvement en interprétant ces changements de tension à l'aide d'un microcontrôleur. Auparavant, nous avons utilisé le microcontrôleur AVR avec joystick.
Ce module de joystick a deux axes comme vous pouvez le voir. Ce sont les axes X et Y. Chaque axe du JOY STICK est monté sur un potentiomètre ou un pot. Les points médians de ces pots sont chassés comme Rx et Ry. Donc Rx et Ry sont des points variables vers ces pots. Lorsque le joystick est en veille, Rx et Ry agissent comme un diviseur de tension.
Lorsque le joystick est déplacé le long de l'axe horizontal, la tension sur la broche Rx change. De même, lorsqu'il est déplacé le long de l'axe vertical, la tension sur la broche Ry change. Nous avons donc quatre directions de Joystick sur deux sorties ADC. Lorsque le bâton est déplacé, la tension sur chaque broche augmente ou diminue selon la direction.
Comme nous le savons, Raspberry Pi n'a pas de mécanisme ADC (convertisseur analogique-numérique) interne. Donc, ce module ne peut pas être connecté directement au Pi. Nous utiliserons des comparateurs basés sur les amplificateurs opérationnels pour vérifier les sorties de tension. Ces OP-Amps fournissent des signaux au Raspberry Pi et Pi fait basculer les LED en fonction des signaux. Ici, nous avons utilisé quatre LED pour indiquer le mouvement du joystick dans quatre directions. Vérifiez la vidéo de démonstration à la fin.
Chacune des 17 broches GPIO ne peut pas prendre une tension supérieure à + 3,3 V, de sorte que les sorties de l'amplificateur opérationnel ne peuvent pas être supérieures à 3,3 V. Par conséquent, nous avons choisi l' ampli-op LM324, ce circuit intégré a un amplificateur opérationnel quad qui peut fonctionner à 3V. Avec ce circuit intégré, nous avons des sorties adaptées pour les sorties de nos broches GPIO Raspberry pi. En savoir plus sur les broches GPIO de Raspberry Pi ici. Consultez également notre série de tutoriels Raspberry Pi ainsi que quelques bons projets IoT.
Composants requis:
Ici, nous utilisons Raspberry Pi 2 Model B avec le système d'exploitation Raspbian Jessie. Toutes les exigences matérielles et logicielles de base sont décrites précédemment, vous pouvez les rechercher dans l'introduction de Raspberry Pi et le clignotement du voyant Raspberry PI pour commencer, à part ce dont nous avons besoin:
- Condensateur 1000µF
- Module joystick
- Circuit intégré amplificateur opérationnel LM324
- Résistance 1KΩ (12 pièces)
- LED (4 pièces)
- Résistance 2,2KΩ (4 pièces)
Schéma:
Il y a quatre comparateurs OP-AMP à l'intérieur du LM324 IC pour détecter quatre directions du joystick. Voici le schéma du LM324 IC de sa fiche technique.
Les connexions qui sont effectuées pour l' interfaçage du module Joystick avec Raspberry Pi sont indiquées dans le schéma de circuit ci-dessous. U1: A, U1: B, U1: C, U1: D indique les quatre comparateurs à l'intérieur du LM324. Nous avons montré chaque comparateur dans le schéma de circuit avec la broche correspondante no. de LM324 IC.
Explication de travail:
Pour détecter le mouvement du joystick le long de l'axe Y, nous avons OP-AMP1 ou U1: A et OP-AMP2 ou U1: B, et pour détecter le mouvement du joystick le long de l'axe X, nous avons OP-AMP3 ou U1: C et OP-AMP4 ou U1: D.
OP-AMP1 détecte le mouvement vers le bas du joystick le long de l'axe Y:
La borne négative du comparateur U1: A est fournie avec 2,3 V (en utilisant un circuit diviseur de tension de 1K et 2,2K) et la borne positive est connectée à Ry. En déplaçant le joystick vers le bas le long de son axe Y, la tension Ry augmente. Une fois que cette tension dépasse 2,3 V, OP-AMP fournit une sortie + 3,3 V à sa broche de sortie. Cette sortie logique HIGH de OP-AMP sera détectée par Raspberry Pi et Pi répond en basculant une LED.
OP-AMP2 détecte le mouvement ascendant du joystick le long de l'axe Y:
La borne négative du comparateur U1: B est fournie avec 1.0V (en utilisant un circuit diviseur de tension de 2,2K et 1K) et la borne positive est connectée à Ry. En déplaçant le joystick le long de son axe Y, la tension Ry diminue. Une fois que cette tension est inférieure à 1,0 V, la sortie OP-AMP devient basse. Cette sortie logique LOW de OP-AMP sera détectée par Raspberry Pi et Pi répond en basculant une LED.
OP-AMP3 détecte le mouvement du côté gauche du joystick le long de l'axe X:
La borne négative du comparateur U1: C est fournie avec 2,3 V (en utilisant un circuit diviseur de tension de 1 K et 2,2 K) et la borne positive est connectée à Rx. En déplaçant le joystick vers la gauche le long de son axe x, la tension Rx augmente. Une fois que cette tension dépasse 2,3 V, OP-AMP fournit une sortie + 3,3 V à sa broche de sortie. Cette sortie logique HIGH de OP-AMP sera détectée par Raspberry Pi et Pi répond en basculant une LED.
OP-AMP4 détecte le mouvement du côté droit du joystick le long de l'axe X:
La borne négative du comparateur U1: 4 est fournie avec 1.0V (en utilisant un circuit diviseur de tension par 2.2K et 1K) et la borne positive est connectée à Rx. En déplaçant le joystick vers la droite le long de son axe x, la tension Rx diminue. Une fois que cette tension est inférieure à 1,0 V, la sortie OP-AMP devient basse. Cette sortie logique LOW de OP-AMP sera détectée par Raspberry Pi et Pi répond en basculant une LED.
De cette façon, toutes les quatre logiques, qui déterminent les quatre directions de Joystick, se connectent à Raspberry Pi. Raspberry Pi prend les sorties de ces comparateurs comme entrées et répond en conséquence en basculant les LED. Vous trouverez ci-dessous les résultats affichés sur le terminal du Raspberry Pi, car nous avons également imprimé la direction du joystick sur le terminal à l'aide de notre code Python.
Le code Python et la vidéo sont donnés ci-dessous. Le code est facile et peut être compris par les commentaires donnés dans le code.