- Conditions préalables:
- Concept derrière le projet:
- Schéma:
- Programmation de votre Arduino:
- Programmation de votre Python:
- Ordinateur contrôlé par gestes en action:
Récemment, les ordinateurs portables ou ordinateurs à commande gestuelle sont devenus très célèbres. Cette technique s'appelle Leap motion qui nous permet de contrôler certaines fonctions de notre ordinateur / ordinateur portable en agitant simplement la main devant lui. C'est très cool et amusant de le faire, mais ces ordinateurs portables sont vraiment très chers. Donc, dans ce projet, essayons de construire notre propre ordinateur portable / ordinateur de contrôle gestuel en combinant la puissance d'Arduino et de Python.
Nous utiliserons deux capteurs à ultrasons pour déterminer la position de notre main et contrôler un lecteur multimédia (VLC) en fonction de la position. Je l'ai utilisé pour la démonstration, mais une fois que vous avez compris le projet, vous pouvez tout faire en changeant simplement quelques lignes de code et contrôler votre application préférée de votre manière préférée.
Conditions préalables:
Nous avons déjà couvert quelques projets combinant Arduino avec Python. Je suppose donc que vous avez déjà installé Python et sa bibliothèque série et que vous avez essayé avec succès quelques projets de base comme le clignotement de la LED. Sinon, ne vous inquiétez pas, vous pouvez vous rabattre sur ce tutoriel de contrôle LED Arduino-Python et vous en tirer. Assurez-vous donc d'avoir installé Python et la bibliothèque pyserial avant de continuer.
Concept derrière le projet:
Le concept derrière le projet est très simple. Nous placerons deux capteurs à ultrasons (US) sur le dessus de notre moniteur et lirons la distance entre le moniteur et notre main en utilisant Arduino, en fonction de cette valeur de distance, nous effectuerons certaines actions. Pour effectuer des actions sur notre ordinateur, nous utilisons la bibliothèque Python pyautogui. Les commandes d'Arduino sont envoyées à l'ordinateur via le port série (USB). Ces données seront ensuite lues par python qui s'exécute sur l'ordinateur et en fonction des données lues, une action sera effectuée.
Schéma:
Pour contrôler le PC avec des gestes de la main, connectez simplement les deux capteurs à ultrasons avec Arduino. Nous savons que les capteurs américains fonctionnent avec 5V et sont donc alimentés par le régulateur de tension embarqué d'Arduino. L'Arduino peut être connecté au PC / ordinateur portable pour alimenter le module et également pour la communication série. Une fois les connexions effectuées, placez-les sur votre moniteur comme indiqué ci-dessous. J'ai utilisé un ruban adhésif double face pour le coller sur mon moniteur, mais vous pouvez utiliser votre propre créativité. Après l'avoir sécurisé dans un endroit, nous pouvons procéder à la programmation.
Programmation de votre Arduino:
L'Arduino doit être programmé pour lire la distance entre la main et le capteur américain. Le programme complet est donné à la fin de cette page; juste en dessous, j'ai donné l'explication du programme. Si vous êtes nouveau dans le capteur à ultrasons, passez simplement par la mesure de distance basée sur un capteur à ultrasons et Arduino.
En lisant la valeur de la distance, nous pouvons arriver à certaines actions à contrôler avec des gestes, par exemple dans ce programme j'ai programmé 5 actions en démonstration.
Action 1: Lorsque les deux mains sont placées devant le capteur à une distance particulière, la vidéo du lecteur VLC doit être Lecture / Pause.
Action 2: Lorsque la main droite est placée devant le capteur à une distance particulière, la vidéo doit avancer rapidement d'un pas.
Action 3: Lorsque la main gauche est placée devant le capteur à une distance particulière, la vidéo doit rembobiner d'un pas.
Action 4: Lorsque la main droite est placée devant le capteur à une distance particulière de près, puis si elle est déplacée vers le capteur, la vidéo doit avancer rapidement et si elle est éloignée, la vidéo doit être rembobinée.
Action 5: Lorsque la main gauche est placée devant le capteur à une distance particulière, puis si elle est déplacée vers le capteur, le volume de la vidéo doit augmenter et si elle est éloignée, le volume doit diminuer.
Voyons comment le programme est écrit pour effectuer les actions ci-dessus. Ainsi, comme tous les programmes, nous commençons par définir les broches d'E / S comme indiqué ci-dessous. Les deux capteurs américains sont connectés aux broches numériques 2,3,4 et 5 et sont alimentés par une broche + 5V. Les broches de déclenchement sont des broches de sortie et les broches d'écho sont des broches d'entrée.
La communication série entre Arduino et python s'effectue à une vitesse de transmission de 9600.
const int trigger1 = 2; // Trigger pin du 1er Sesnor const int echo1 = 3; // Broche d'écho du 1er Sesnor const int trigger2 = 4; // Trigger pin of 2nd Sesnor const int echo2 = 5; // Broche d'écho du 2nd Sesnor void setup () {Serial.begin (9600); pinMode (trigger1, OUTPUT); pinMode (echo1, INPUT); pinMode (trigger2, OUTPUT); pinMode (echo2, INPUT); }
Nous devons calculer la distance entre le capteur et la main à chaque fois avant de conclure sur une action. Nous devons donc le faire plusieurs fois, ce qui signifie que ce code doit être utilisé comme une fonction. Nous avons écrit une fonction nommée Calculate_distance () qui nous retournera la distance entre le capteur et la main.
/ * ### Fonction pour calculer la distance ### * / void Calculate_distance (int trigger, int echo) {digitalWrite (trigger, LOW); delayMicrosecondes (2); digitalWrite (déclencheur, HIGH); delayMicrosecondes (10); digitalWrite (déclencheur, LOW); time_taken = pulseIn (écho, HIGH); dist = prise de temps * 0,034 / 2; si (dist> 50) dist = 50; }
Dans notre boucle principale , nous vérifions la valeur de la distance et effectuons les actions mentionnées ci-dessus. Avant cela, nous utilisons deux variables distL et distR qui sont mises à jour avec la valeur de distance actuelle.
calculer_distance (trigger1, echo1); distL = dist; // obtenir la distance du capteur gauche. Calculate_distance (trigger2, echo2); distR = dist; // obtenir la distance du bon capteur
Puisque nous connaissons la distance entre les deux capteurs, nous pouvons maintenant la comparer avec des valeurs prédéfinies et arriver à certaines actions. Par exemple, si les deux mains sont placées à une distance de 40 mc, nous lisons / mettons la vidéo en pause. Ici, le mot «Lecture / Pause» sera envoyé via le port série
if ((distL> 40 && distR> 40) && (distL <50 && distR <50)) // Détecter les deux mains {Serial.println ("Play / Pause"); retard (500);}
Si la main droite seule est placée avant le module, nous faisons avancer rapidement la vidéo d'un pas et si c'est la main gauche, nous rembobinons d'un pas. En fonction de l'action, ici le mot «Rewind» ou «Forward» sera envoyé via le port série
if ((distL> 40 && distL <50) && (distR == 50)) // Détecter la main gauche {Serial.println ("Rewind"); delay (500);} if ((distR> 40 && distR <50) && (distL == 50)) // Détecter la main droite {Serial.println ("Forward"); retard (500);}
Pour un contrôle détaillé du volume et de la piste, nous utilisons une méthodologie différente afin d'éviter les faux déclenchements. Pour contrôler le volume, nous devons placer la main gauche env. A une distance de 15 cm, alors vous pouvez soit le déplacer vers le capteur pour diminuer le volume, soit l'éloigner du capteur pour augmenter le volume. Le code correspondant est indiqué ci-dessous. En fonction de l'action, ici le mot «Vup» ou «Vdown» sera envoyé via le port série
// Verrouiller à gauche - Mode de contrôle if (distL> = 13 && distL <= 17) {delay (100); // Temps de maintien de la main Calculate_distance (trigger1, echo1); distL = dist; if (distL> = 13 && distL <= 17) {Serial.println ("Left Locked"); while (distL <= 40) {Calculate_distance (trigger1, echo1); distL = dist; if (distL <10) // Hand enfoncé {Serial.println ("Vup"); delay (300);} if (distL> 20) // Main retirée {Serial.println ("Vdown"); délai (300);}}}}
Nous pouvons également utiliser la même méthode pour le capteur côté droit, pour contrôler la piste de la vidéo. C'est-à-dire que si nous déplaçons la main droite vers le capteur, le film avance rapidement et si vous l'éloignez du capteur, il rembobine le film. En fonction de l'action, ici le mot «Rewind» ou «Forward» sera envoyé via le port série
Vous pouvez maintenant lire le code complet de ce PC contrôlé par gestes donné à la fin de la page et essayer de le comprendre dans son ensemble, puis le copier dans votre IDE Arduino.
Programmation de votre Python:
Le programme python pour ce projet est très simple. Nous devons simplement établir une communication série avec Arduino via le débit en bauds correct, puis effectuer certaines actions de base au clavier. La première étape avec python serait d'installer le module p yautogui . Assurez-vous de suivre cette étape car le programme ne fonctionnera pas sans le module pyautogui.
Installation du module pyautogui pour Windows:
Suivez les étapes ci-dessous pour installer pyautogui pour Windows. Si vous utilisez d'autres plates-formes, les étapes seront également plus ou moins similaires. Assurez-vous que votre ordinateur / ordinateur portable est connecté à Internet et procédez aux étapes ci-dessous
Étape 1: Ouvrez l'invite de commande Windows et remplacez le répertoire par le dossier dans lequel vous avez installé python. Par défaut, la commande doit être
cd C: \ Python27
Étape 2: Dans votre répertoire python, utilisez la commande python –m pip install –upgrade pip pour mettre à niveau votre pip. Pip est un outil en python qui nous aide à installer facilement des modules python. Une fois ce module mis à niveau (comme indiqué dans l'image ci-dessous), passez à l'étape suivante.
python –m pip install –upgrade pip
Étape 3: Utilisez la commande « python –m pip install pyautogui » pour installer le module pyautogui. Une fois le processus réussi, vous devriez voir un écran similaire à celui ci-dessous.
python –m pip install –upgrade pip
Maintenant que le module pyautogui et le module pyserial (installés dans le tutoriel précédent) sont installés avec succès avec python, nous pouvons continuer avec le programme python. Le code python complet est donné à la fin du didacticiel, mais l'explication est la suivante.
Importons les trois modules requis pour ce projet. Ce sont pyautogui, python série et time.
import serial #Serial importé pour le temps d'importation de la communication série #Requis pour utiliser les fonctions de retard import pyautogui
Ensuite, nous établissons la connexion avec l'Arduino via le port COM. Dans mon ordinateur, l'Arduino est connecté à COM 18. Utilisez le gestionnaire de périphériques pour trouver à quel port COM votre Arduino est connecté et corrigez la ligne suivante en conséquence.
ArduinoSerial = serial.Serial ('com18', 9600) #Create Objet de port série appelé arduinoSerialData time.sleep (2) # attendez 2 secondes pour que la communication s'établisse
À l'intérieur de la boucle while infinie, nous écoutons à plusieurs reprises le port COM et comparons les mots clés avec toutes les œuvres prédéfinies et faisons des pressions sur le clavier en conséquence.
while 1: incoming = str (ArduinoSerial.readline ()) #lisez les données série et imprimez-les en tant qu'impression de ligne entrante si 'Lecture / Pause' en entrant: pyautogui.typewrite (, 0.2) si 'Rewind' en entrant: pyautogui. raccourci clavier ('ctrl', 'left') si 'Forward' en entrée: pyautogui.hotkey ('ctrl', 'right') si 'Vup' en entrée: pyautogui.hotkey ('ctrl', 'down') if ' Vdown 'en entrée: pyautogui.hotkey (' ctrl ',' up ')
Comme vous pouvez le voir, pour appuyer sur une touche, nous devons simplement utiliser la commande «pyautogui.typewrite (, 0.2)» qui appuiera sur l'espace des touches pendant 0,2sec. Si vous avez besoin de touches de raccourci comme ctrl + S, vous pouvez utiliser la commande de raccourci clavier «pyautogui.hotkey ('ctrl', 's')».
J'ai utilisé ces combinaisons parce qu'elles fonctionnent sur le lecteur multimédia VLC, vous pouvez les modifier comme vous le souhaitez pour créer vos propres applications pour contrôler tout ce qui se trouve dans l'ordinateur avec des gestes.
Ordinateur contrôlé par gestes en action:
Effectuez les connexions comme défini ci-dessus et téléchargez le code Arduino sur votre carte Arduino. Ensuite, utilisez le script python ci-dessous et lancez le programme sur votre ordinateur portable / ordinateur.
Vous pouvez maintenant lire n'importe quel film sur votre ordinateur à l'aide du lecteur multimédia VLC et utiliser votre main pour contrôler le film comme indiqué dans la vidéo ci-dessous.
J'espère que vous avez compris le projet et que vous avez aimé jouer avec. Ceci est juste une démo et vous pouvez utiliser votre créativité pour créer des éléments beaucoup plus cool contrôlés par les gestes autour de cela. Faites-moi savoir si cela a été utile et ce que vous allez créer en utilisant cela dans la section des commentaires et je serai heureux de le savoir.