- Voraussetzungen:
- Konzept hinter dem Projekt:
- Schaltplan:
- Programmieren Ihres Arduino:
- Programmieren Sie Ihren Python:
- Gestengesteuerter Computer in Aktion:
In letzter Zeit werden gestengesteuerte Laptops oder Computer sehr berühmt. Diese Technik wird als Sprungbewegung bezeichnet, mit der wir bestimmte Funktionen auf unserem Computer / Laptop steuern können, indem wir einfach mit der Hand davor winken. Es ist sehr cool und macht Spaß, aber diese Laptops sind wirklich sehr teuer. Lassen Sie uns in diesem Projekt versuchen, unseren eigenen Laptop / Computer mit Gestensteuerung zu bauen, indem wir die Leistung von Arduino und Python kombinieren.
Wir werden zwei Ultraschallsensoren verwenden, um die Position unserer Hand zu bestimmen und einen Media Player (VLC) basierend auf der Position zu steuern. Ich habe dies zur Demonstration verwendet, aber sobald Sie das Projekt verstanden haben, können Sie alles tun, indem Sie nur einige Codezeilen ändern und Ihre Lieblingsanwendung auf Ihre Lieblingsart steuern.
Voraussetzungen:
Wir haben bereits einige Projekte behandelt, die Arduino mit Python kombinieren. Ich gehe also davon aus, dass Sie Python und seine serielle Bibliothek bereits installiert und einige grundlegende Projekte wie das Blinken der LED erfolgreich ausprobiert haben. Wenn nicht, machen Sie sich keine Sorgen, Sie können auf dieses Tutorial zur Arduino-Python-LED-Steuerung zurückgreifen und damit umgehen. Stellen Sie daher sicher, dass Sie Python und die Pyserial-Bibliothek installiert haben, bevor Sie fortfahren.
Konzept hinter dem Projekt:
Das Konzept hinter dem Projekt ist sehr einfach. Wir werden zwei Ultraschallsensoren (US) auf unseren Monitor legen und den Abstand zwischen dem Monitor und unserer Hand mit Arduino ablesen. Basierend auf diesem Abstandswert werden wir bestimmte Aktionen ausführen. Um Aktionen auf unserem Computer auszuführen, verwenden wir die Python- Pyautogui- Bibliothek. Die Befehle von Arduino werden über die serielle Schnittstelle (USB) an den Computer gesendet. Diese Daten werden dann von Python gelesen, das auf dem Computer ausgeführt wird, und basierend auf den gelesenen Daten wird eine Aktion ausgeführt.
Schaltplan:
Um den PC mit Handgesten zu steuern, verbinden Sie einfach die beiden Ultraschallsensoren mit Arduino. Wir wissen, dass US-Sensoren mit 5 V arbeiten und daher vom integrierten Spannungsregler von Arduino gespeist werden. Der Arduino kann zur Stromversorgung des Moduls und zur seriellen Kommunikation an den PC / Laptop angeschlossen werden. Sobald die Verbindungen hergestellt sind, platzieren Sie sie wie unten gezeigt auf Ihrem Monitor. Ich habe ein doppelseitiges Klebeband verwendet, um es auf meinen Monitor zu kleben, aber Sie können Ihre eigene Kreativität einsetzen. Nachdem wir es an einem Ort gesichert haben, können wir mit der Programmierung fortfahren.
Programmieren Ihres Arduino:
Der Arduino sollte so programmiert sein, dass er die Entfernung der Hand vom US-Sensor abliest. Das vollständige Programm finden Sie am Ende dieser Seite. Gleich unten habe ich die Erklärung für das Programm gegeben. Wenn Sie mit Ultraschallsensoren noch nicht vertraut sind, führen Sie einfach die auf Arduino und Ultraschallsensoren basierende Entfernungsmessung durch.
Durch Lesen des Entfernungswerts können wir zu bestimmten Aktionen gelangen, die mit Gesten gesteuert werden sollen. In diesem Programm habe ich beispielsweise 5 Aktionen als Demo programmiert.
Aktion 1: Wenn beide Hände in einer bestimmten Entfernung vor dem Sensor platziert sind, sollte das Video im VLC-Player abgespielt / angehalten werden.
Aktion 2: Wenn die rechte Hand in einer bestimmten Entfernung vor dem Sensor platziert ist, sollte das Video einen Schritt vorspulen.
Aktion 3: Wenn die linke Hand in einer bestimmten Entfernung vor dem Sensor platziert ist, sollte das Video einen Schritt zurückspulen.
Aktion 4: Wenn die rechte Hand in einem bestimmten Abstand vor dem Sensor platziert ist und sich dann in Richtung Sensor bewegt, sollte das Video schnell vorspulen und wenn es wegbewegt wird, sollte das Video zurückgespult werden.
Aktion 5: Wenn die linke Hand in einem bestimmten Abstand vor dem Sensor platziert ist und sich dann in Richtung des Sensors bewegt, sollte sich die Lautstärke des Videos erhöhen, und wenn sie wegbewegt wird, sollte sich die Lautstärke verringern.
Lassen Sie uns sehen, wie das Programm geschrieben ist, um die oben genannten Aktionen auszuführen. Wie bei allen Programmen beginnen wir also mit der Definition der E / A-Pins wie unten gezeigt. Die beiden US-Sensoren sind mit den Digitalpins 2,3,4 und 5 verbunden und werden über einen + 5V-Pin gespeist. Die Trigger-Pins sind Ausgangs-Pins und Echo-Pins sind Eingangs-Pins.
Die serielle Kommunikation zwischen Arduino und Python erfolgt mit einer Baudrate von 9600.
const int trigger1 = 2; // Trigger Pin des 1. Sesnor const int echo1 = 3; // Echo Pin des 1. Sesnor const int trigger2 = 4; // Trigger-Pin des 2. Sesnor const int echo2 = 5; // Echo-Pin des 2. Sesnor void setup () {Serial.begin (9600); PinMode (Trigger1, OUTPUT); pinMode (echo1, INPUT); PinMode (Trigger2, OUTPUT); pinMode (echo2, INPUT); }}
Wir müssen jedes Mal den Abstand zwischen dem Sensor und der Hand berechnen, bevor wir eine Aktion abschließen können. Wir müssen es also viele Male tun, was bedeutet, dass dieser Code als Funktion verwendet werden sollte. Wir haben eine Funktion namens berechne_distanz () geschrieben, die uns den Abstand zwischen dem Sensor und der Hand zurückgibt.
/ * ### Funktion zum Berechnen der Entfernung ### * / void berechne_Distanz (int Trigger, int Echo) {digitalWrite (Trigger, LOW); delayMicroseconds (2); digitalWrite (Trigger, HIGH); delayMicroseconds (10); digitalWrite (Trigger, LOW); time_taken = pulsIn (echo, HIGH); dist = time_taken * 0,034 / 2; wenn (dist> 50) dist = 50; }}
In unserer Hauptschleife wir überprüfen für den Wert der Entfernung und führen Sie die Aktionen oben erwähnt. Vorher verwenden wir zwei Variablen distL und distR, die mit dem aktuellen Entfernungswert aktualisiert werden.
berechne_Distanz (Trigger1, Echo1); distL = dist; // Abstand des linken Sensors ermitteln berechne_Distanz (Trigger2, Echo2); distR = dist; // Abstand zum rechten Sensor ermitteln
Da wir den Abstand zwischen beiden Sensoren kennen, können wir ihn jetzt mit vordefinierten Werten vergleichen und zu bestimmten Aktionen gelangen. Wenn sich zum Beispiel beide Hände in einem Abstand von 40 mc befinden, wird das Video abgespielt / angehalten. Hier wird das Wort „Play / Pause“ über die serielle Schnittstelle gesendet
if ((distL> 40 && distR> 40) && (distL <50 && distR <50)) // Beide Hände erkennen {Serial.println ("Play / Pause"); Verzögerung (500);}
Wenn nur die rechte Hand vor dem Modul platziert ist, spulen wir das Video um einen Schritt vor und wenn es die linke Hand ist, spulen wir um einen Schritt zurück. Basierend auf der Aktion wird hier das Wort "Rücklauf" oder "Weiterleiten" über die serielle Schnittstelle gesendet
if ((distL> 40 && distL <50) && (distR == 50)) // Linke Hand erkennen {Serial.println ("Rewind"); delay (500);} if ((distR> 40 && distR <50) && (distL == 50)) // Rechte Hand erkennen {Serial.println ("Forward"); Verzögerung (500);}
Für die detaillierte Kontrolle von Lautstärke und Spur verwenden wir eine andere Methode, um falsche Auslöser zu vermeiden. Um die Lautstärke zu regeln, müssen wir die linke Hand ca. In einem Abstand von 15 cm können Sie ihn entweder in Richtung Sensor bewegen, um die Lautstärke zu verringern, indem Sie ihn vom Sensor wegbewegen, um die Lautstärke zu erhöhen. Der Code dafür ist unten gezeigt. Basierend auf der Aktion wird hier das Wort "Vup" oder "Vdown" über die serielle Schnittstelle gesendet
// Links sperren - Steuermodus if (distL> = 13 && distL <= 17) {delay (100); // Handhaltezeit berechne_Distanz (Trigger1, Echo1); distL = dist; if (distL> = 13 && distL <= 17) {Serial.println ("Left Locked"); while (distL <= 40) {berechne_Distanz (Trigger1, Echo1); distL = dist; if (distL <10) // Hand hineingeschoben {Serial.println ("Vup"); delay (300);} if (distL> 20) // Hand herausgezogen {Serial.println ("Vdown"); Verzögerung (300);}}}}
Wir können dieselbe Methode auch für den rechten Sensor verwenden, um die Spur des Videos zu steuern. Wenn wir also die rechte Hand in Richtung Sensor bewegen, wird der Film schnell vorgespult, und wenn Sie ihn vom Sensor wegbewegen, wird der Film zurückgespult. Basierend auf der Aktion wird hier das Wort "Rücklauf" oder "Weiterleiten" über die serielle Schnittstelle gesendet
Sie können jetzt den vollständigen Code für diesen gestengesteuerten PC am Ende der Seite lesen und versuchen, ihn als Ganzes zu verstehen und ihn dann in Ihre Arduino IDE zu kopieren.
Programmieren Sie Ihren Python:
Das Python-Programm für dieses Projekt ist sehr einfach. Wir müssen nur eine serielle Kommunikation mit Arduino über die richtige Baudrate herstellen und dann einige grundlegende Tastaturaktionen ausführen. Der erste Schritt mit Python wäre die Installation des P yautogui- Moduls. Stellen Sie sicher, dass Sie diesen Schritt ausführen, da das Programm ohne das Pyautogui-Modul nicht funktioniert.
Pyautogui-Modul für Windows installieren:
Führen Sie die folgenden Schritte aus, um pyautogui für Windows zu installieren. Wenn Sie andere Plattformen verwenden, sind die Schritte ebenfalls mehr oder weniger ähnlich. Stellen Sie sicher, dass Ihr Computer / Laptop mit dem Internet verbunden ist, und fahren Sie mit den folgenden Schritten fort
Schritt 1: Öffnen Sie die Windows-Eingabeaufforderung und ändern Sie das Verzeichnis in den Ordner, in dem Sie Python installiert haben. Standardmäßig sollte der Befehl sein
CD C: \ Python27
Schritt 2: Verwenden Sie in Ihrem Python-Verzeichnis den Befehl python –m pip install –upgrade pip , um Ihr pip zu aktualisieren. Pip ist ein Tool in Python, mit dem wir Python-Module einfach installieren können. Sobald dieses Modul aktualisiert wurde (siehe Abbildung unten), fahren Sie mit dem nächsten Schritt fort.
python –m pip install –upgrade pip
Schritt 3: Verwenden Sie den Befehl „ python –m pip install pyautogui “, um das pyautogui-Modul zu installieren. Sobald der Vorgang erfolgreich ist, sollte unten ein ähnlicher Bildschirm angezeigt werden.
python –m pip install –upgrade pip
Nachdem das Pyautogui- Modul und das Pyserial- Modul (im vorherigen Tutorial installiert) erfolgreich mit Python installiert wurden, können wir mit dem Python-Programm fortfahren. Der vollständige Python-Code wird am Ende des Tutorials angegeben, aber die Erklärung dafür lautet wie folgt.
Importieren wir alle drei erforderlichen Module für dieses Projekt. Sie sind Pyautogui, Serienpython und Zeit.
Seriennummer importieren # Seriennummer importiert für serielle Kommunikation Importzeit # Erforderlich, um Verzögerungsfunktionen zu verwenden Import pyautogui
Als nächstes stellen wir eine Verbindung mit dem Arduino über den COM-Port her. In meinem Computer ist das Arduino mit COM 18 verbunden. Verwenden Sie den Geräte-Manager, um herauszufinden, an welchen COM-Port Ihr Arduino angeschlossen ist, und korrigieren Sie die folgende Zeile entsprechend.
ArduinoSerial = serial.Serial ('com18', 9600) #Create Serial Port-Objekt mit dem Namen arduinoSerialData time.sleep (2) #Warten Sie 2 Sekunden, bis die Kommunikation hergestellt ist
Innerhalb der Endlos- while- Schleife hören wir wiederholt auf den COM-Port und vergleichen die Schlüsselwörter mit allen vordefinierten Werken und drücken die Tastatur entsprechend.
while 1: incoming = str (ArduinoSerial.readline ()) #lesen Sie die seriellen Daten und drucken Sie sie als eingehenden Zeilendruck, wenn 'Play / Pause' in eingehend: pyautogui.typewrite (, 0.2) wenn 'Rewind' in eingehend: pyautogui. Hotkey ('Strg', 'Links') wenn 'Weiterleiten' bei eingehenden Daten: pyautogui.hotkey ('Strg', 'rechts') wenn 'Vup' bei eingehenden Nachrichten: pyautogui.hotkey ('Strg', 'Abwärts') wenn ' Vdown 'im Eingang: pyautogui.hotkey (' ctrl ',' up ')
Wie Sie sehen können, müssen wir zum Drücken einer Taste einfach den Befehl „pyautogui.typewrite (, 0.2)“ verwenden, der den Tastenraum für 0,2 Sekunden drückt. Wenn Sie Hotkeys wie Strg + S benötigen, können Sie den Hotkey- Befehl "pyautogui.hotkey ('ctrl', 's')" verwenden.
Ich habe diese Kombinationen verwendet, weil sie auf dem VLC Media Player funktionieren. Sie können sie beliebig optimieren, um Ihre eigenen Anwendungen zu erstellen und alles im Computer mit Gesten zu steuern.
Gestengesteuerter Computer in Aktion:
Stellen Sie die oben definierten Verbindungen her und laden Sie den Arduino-Code auf Ihr Arduino-Board hoch. Verwenden Sie dann das unten stehende Python-Skript und starten Sie das Programm auf Ihrem Laptop / Computer.
Jetzt können Sie mit dem VLC Media Player jeden Film auf Ihrem Computer abspielen und den Film mit der Hand steuern, wie im folgenden Video gezeigt.
Ich hoffe, Sie haben das Projekt verstanden und es genossen, damit zu spielen. Dies ist nur eine Demo und Sie können Ihre Kreativität nutzen, um viel mehr coole gestengesteuerte Dinge zu erstellen. Lassen Sie mich wissen, ob dies nützlich war und was Sie damit im Kommentarbereich erstellen werden, und ich werde es gerne wissen.