Wie mache ich eine Arduino-basierte Handgestensteuerung deines Computers?
Handgestensteuerung ist keine neue Sache. Wir haben viele Roboter gesehen, die durch Handgesten gesteuert werden. Die Technologie bewegt sich so schnell, dass alles, woran wir denken, bereits auf dem Markt vorhanden ist. Ein sehr interessantes Projekt ist die Steuerung Ihres PCs oder Laptops mit einer kleinen Mikrocontroller-Karte namens Arduino Uno. Mit An Arduino können wir einige einfache Funktionen ausführen, indem wir einfach mit der Hand winken, anstatt eine Maus oder die Tastatur zu verwenden. Diese Funktionen umfassen das Verschieben von Bildern, das Scrollen auf den Seiten nach oben und unten, das Wechseln zwischen den Registerkarten eines Webbrowsers, das Abspielen oder Anhalten eines Videos, das Wechseln zwischen Desktopanwendungen usw.
Wie führe ich verschiedene Operationen auf dem PC mit Handgesten aus?
Nachdem wir nun die Zusammenfassung des Projekts kennen, lassen Sie uns vorwärts gehen und verschiedene Informationen sammeln, um mit der Arbeit zu beginnen. Wir werden zuerst eine Liste der Komponenten erstellen, sie dann kurz untersuchen und dann alle Komponenten zu einem funktionierenden System zusammenbauen.
Schritt 1: Sammeln der Komponenten
Der beste Ansatz, um ein Projekt zu starten, besteht darin, eine Liste der Komponenten zu erstellen und diese Komponenten kurz zu untersuchen, da niemand nur wegen einer fehlenden Komponente in der Mitte eines Projekts bleiben möchte. Eine Liste der Komponenten, die wir in diesem Projekt verwenden werden, finden Sie unten:
Schritt 2: Studieren der Komponenten
Da haben wir eine vollständige Liste aller Komponenten. Lassen Sie uns fortfahren und eine kurze Studie über die Funktionsweise aller Komponenten durchführen.
Arduino Nano ist eine Mikrocontroller-Karte, die verschiedene Operationen in verschiedenen Schaltkreisen ausführt. Es erfordert eine C-Code das sagt dem Board, welche Aufgaben wie auszuführen sind. Es verfügt über 13 digitale E / A-Pins, sodass wir 13 verschiedene Geräte bedienen können. Arduino Nano hat genau die gleiche Funktionalität wie Arduino Uno, ist jedoch recht klein. Der Mikrocontroller auf der Arduino Nano-Platine ist ATmega328p.Wenn Sie mehr als 13 Geräte steuern möchten, verwenden Sie Arduino Mega.
Die HC-SR04-Karte ist ein Ultraschallsensor, mit dem der Abstand zwischen zwei Objekten bestimmt wird. Es besteht aus einem Sender und einem Empfänger. Der Sender wandelt das elektrische Signal in ein Ultraschallsignal um und der Empfänger wandelt das Ultraschallsignal wieder in das elektrische Signal um. Wenn der Sender eine Ultraschallwelle sendet, wird diese nach einer Kollision mit einem bestimmten Objekt reflektiert. Die Entfernung wird anhand der Zeit berechnet, die das Ultraschallsignal benötigt, um vom Sender zum Empfänger zurückzukehren.
Schritt 3: Zusammenbau der Komponenten
Jetzt wissen wir, wie die Komponenten, die wir verwenden werden, hauptsächlich funktionieren. Beginnen wir mit der Montage der Komponenten, um ein endgültiges Arbeitsprodukt zu erhalten.
- Verbinden Sie die Vcc- und Erdungsstifte der beiden Ultraschallsensoren mit 5 V und Masse der Arduino Nano-Platine. Der Trigger- und Echo-Pin des ersten Ultraschallsensors ist mit Pin 11 bzw. Pin 10 von Arduino Nano verbunden. Der Trigger- und Echo-Pin des zweiten Ultraschallsensors ist mit Pin6 bzw. Pin5 des Arduino Nano verbunden.
- Befestigen Sie die Arduino Nano-Platine an der Rückseite des Klebebandes des Laptop-Bildschirms. Beide Ultraschallsensoren werden an beiden oberen Ecken des Laptops angebracht.
Schritt 4: Erste Schritte mit Arduino
Wenn Sie mit der Arduino IDE noch nicht vertraut sind, machen Sie sich keine Sorgen, da im Folgenden eine schrittweise Anleitung zum Einrichten und Verwenden der Arduino IDE mit einer Mikrocontroller-Karte erläutert wird.
- Laden Sie die neueste Version von Arduino IDE von Arduino herunter.
- Schließen Sie Ihr Arduino Nano-Board an Ihren Laptop an und öffnen Sie das Bedienfeld. Klicken Sie dann auf Hardware und Sound. Klicken Sie nun auf Geräte und Drucker.Hier finden Sie den Anschluss, an den Ihre Mikrocontroller-Karte angeschlossen ist. In meinem Fall ist es COM14aber es ist auf verschiedenen Computern unterschiedlich.
- Klicken Sie auf das Menü Tool und stellen Sie die Karte auf ein Arduino Nano aus dem Dropdown-Menü.
- Stellen Sie im selben Tool-Menü den Port auf die Portnummer ein, die Sie zuvor in der Geräte und Drucker.
- Stellen Sie im selben Tool-Menü den Prozessor auf ein ATmega328P (alter Bootloader).
- Laden Sie den unten angehängten Code herunter und fügen Sie ihn in Ihre Arduino IDE ein. Klick auf das hochladen Taste, um den Code auf Ihrer Mikrocontroller-Karte zu brennen.
Klicken Sie hier, um den Code herunterzuladen.
Schritt 5: Einstellen der Gesten
Wir möchten einen Code schreiben, der die Entfernung erkennt und in einen geeigneten Befehl zur Ausführung einer Aufgabe umwandelt.
Lassen Sie uns zunächst eine Liste aller Aufgaben erstellen, die wir mit Gesten ausführen möchten. Im Folgenden finden Sie eine Liste aller dieser Aufgaben.
- Wechseln Sie im Webbrowser zur nächsten Registerkarte oder zur vorherigen Registerkarte.
- Scrollen Sie auf der Webseite nach oben und unten.
- Videos im VLC Player abspielen und anhalten.
- Erhöhen und verringern Sie die Lautstärke.
- Wechseln Sie zwischen zwei Aufgaben.
Wir werden jetzt Gesten setzen, um alle diese Operationen auszuführen.
- Geste 1: Legen Sie Ihre Hand zwischen ca. 15 cm und 30 cm vor den rechten Ultraschallsensor. Ziehen Sie nach kurzer Zeit Ihre Hand weg. Dadurch wird die Webseite nach unten gescrollt und die Lautstärke verringert.
- Geste 2: Legen Sie Ihre Hand zwischen ca. 15 cm und 30 cm vor den rechten Ultraschallsensor. Schieben Sie nach kurzer Zeit Ihre Hand in Richtung Ultraschallsensor. Dadurch wird die Webseite nach oben gescrollt und die Lautstärke erhöht.
- Geste 3: Wischen Sie mit der Hand vor den rechten Ultraschallsensor, um zur nächsten Registerkarte zu gelangen.
- Geste 4: Wischen Sie mit der Hand vor den linken Ultraschallsensor, um zur vorherigen Registerkarte zu gelangen. Dadurch wird auch Ihr Video auf dem VLC-Player abgespielt / angehalten.
- Geste 5: Streichen Sie mit der Hand über beide Sensoren, um zwischen zwei Aufgaben zu wechseln.
Wir haben den Code geschrieben und alle Bedingungen basierend auf den obigen Gesten festgelegt. Und es sollte beachtet werden, dass wir verwenden Google Chrome als unser Webbrowser und VLC Media Player als unsere Medienanwendung.
Schritt 6: Den Arduino-Code verstehen
Wir haben einen Code geschrieben, der 5 Gesten in einen digitalen Befehl umwandelt. Dieser Befehl wird an die serielle Schnittstelle gesendet. Wir werden ein Python-Programm schreiben, um diese Befehle zu interpretieren und einige Tastaturfunktionen auszuführen, um verschiedene Aufgaben auszuführen.
1. Zu Beginn werden alle Pins initialisiert, die mit den Sensoren verbunden werden sollen. Es werden auch verschiedene Variablen initialisiert, um Daten für die Berechnung von Zeit und Entfernung zu speichern.
const int trigPin1 = 11; // Ausgangspin (Sensor 1) auslösen const int echoPin1 = 10; // Echo-Eingangspin (Sensor 1) const int trigPin2 = 6; // Ausgangspin (Sensor 2) auslösen const int echoPin2 = 5; // Echo-Eingangsstift (Sensor 2) // Variablen für die Entfernungsberechnung lange Dauer; int distance1, distance2; float r; vorzeichenlose lange Temperatur = 0; int temp1 = 0; int l = 0;
2. Wir haben eine Funktion geschrieben, void find_distance (void) um den Abstand der beiden Ultraschallsensoren zu berechnen. Es ist besser, nicht beide Ultraschallsensoren gleichzeitig auszulösen, da dies zu Störungen führen kann. Diese Funktion gibt den Abstand in cm zurück.
void find_distance (void) {digitalWrite (trigPin1, LOW); delayMicroseconds (2); digitalWrite (trigPin1, HIGH); delayMicroseconds (10); digitalWrite (trigPin1, LOW); Dauer = PulsIn (echoPin1, HIGH, 5000); r = 3,4 * Dauer / 2; // Berechnung, um die Messung in cm unter Verwendung der von der Pulsein-Funktion zurückgegebenen Zeit zu erhalten. Abstand1 = r / 100,00; digitalWrite (trigPin2, LOW); delayMicroseconds (2); digitalWrite (trigPin2, HIGH); delayMicroseconds (10); digitalWrite (trigPin2, LOW); Dauer = PulsIn (echoPin2, HIGH, 5000); r = 3,4 * Dauer / 2; Abstand2 = r / 100,00; Verzögerung (100); }}
3. void setup () ist eine Funktion, die alle Pins initialisiert, die als INPUT oder OUTPUT verwendet werden sollen. In dieser Funktion wird auch die Baudrate eingestellt. Die Baudrate ist die Geschwindigkeit, mit der die Mikrocontroller-Karte mit den angeschlossenen Sensoren kommuniziert.
void setup () {Serial.begin (9600); pinMode (trigPin1, OUTPUT); // Initialisiere die Trigger- und Echo-Pins des Sensors als Ein- und Ausgang: pinMode (echoPin1, INPUT); pinMode (trigPin2, OUTPUT); pinMode (echoPin2, INPUT); Verzögerung (1000); }}
4. void loop ()ist eine Funktion, die wiederholt in einer Schleife ausgeführt wird. In dieser Schleife berechnen wir in vielen Fällen die Entfernung und wenden Bedingungen an, um die Geste zu erkennen.
void loop () {find_distance (); if (distance2 <= 35 && distance2> = 15) {temp = millis (); while (millis () <= (temp + 300)) find_distance (); if (distance2 <= 35 && distance2> = 15) {temp = distance2; while (distance2 <= 50 || distance2 == 0) {find_distance (); if ((temp + 6)distance2) {Serial.println ("up"); }}} else {Serial.println ("next"); }} else if (distance1 <= 35 && distance1> = 15) {temp = millis (); while (millis () <= (temp + 300)) {find_distance (); if (distance2 <= 35 && distance2> = 15) {Serial.println ("change"); l = 1; Unterbrechung; }} if (l == 0) {Serial.println ("previous"); while (distance1 <= 35 && distance1> = 15) find_distance (); } l = 0; }}
Schritt 7: Python-Programmierung
Wir werden installieren PyAutoGUIund rufen Sie verschiedene Tastaturbefehle auf, indem Sie einfach eingehende serielle Daten lesen. Mit diesem Programm können wir viele Maus- und Tastaturoperationen wie Links- oder Rechtsklick auf die Maus oder einen beliebigen Tastendruck nachahmen.
Zuerst werden wir PIP auf unseren Fenstern installieren. Es ist ein einfaches Verfahren. Klicken Sie hier, um die Videoanleitung zum Installieren von pip auf Ihrem Computer zu öffnen. Nach der Installation von PIP auf unserem Computer werden wir fortfahren und pyAutoGUI installieren. Geben Sie dazu den folgenden Befehl in die Eingabeaufforderung ein
python -m pip install pyautogui
Dieser Befehl installiert puAutoGUI auf Ihrem Computer. Wenn bis jetzt alles gut läuft, schreiben wir ein Python-Programm, um verschiedene Tastaturbefehle aufzurufen. Da wir 5 verschiedene Befehle in der seriellen Eingabe durch den Arduino-Code erhalten, kann Python-Code diese Befehle wie folgt in bestimmte Tastaturbefehle konvertieren.
- Daten: "next" -> Aktion: "Strg + PgDn"
- Daten: "Vorherige" -> Aktion: "Strg + PgUp"
- Daten: “down” —–> Aktion: “Down Arrow”
- Daten: „up“ -> Aktion: „Up Arrow“
- Daten: „Ändern“ -> Aktion: „Alt + Tab“
Python kann zum Programmieren eines verwendet werdenArduino, einfach durch Importieren von Pyfirmata, die das Arduino mit Python verbinden können. Im Folgenden finden Sie den Python-Code, der zum Ausführen des Projekts erforderlich ist:
Seriennummer importieren # Serienbibliothek für serielle Kommunikation hinzufügen Pyautogui importieren # Pyautogui-Bibliothek zur programmgesteuerten Steuerung von Maus und Tastatur hinzufügen. Arduino_Serial = serial.Serial ('com12', 9600) # Initialisieren Sie das serielle und erstellen Sie das serielle Portobjekt Arduino_Serial, während 1: incoming_data = str (Arduino_Serial.readline ()) # die seriellen Daten lesen und als Zeilendruck eingehende_Daten drucken # eingehende serielle Daten, wenn 'next' in eingehenden_Daten ': # wenn eingehende Daten' next 'sind pyautogui.hotkey (' Strg ',' pgdn ') # Führen Sie die Operation "Strg + pgdn" aus, die zur nächsten Registerkarte wechselt, wenn' eingehen 'in eingehenden_Daten : # wenn eingehende Daten 'vorherige' sind pyautogui.hotkey ('Strg', 'pgup') # Führen Sie die Operation "Strg + pgup" aus, die zur vorherigen Registerkarte wechselt, wenn 'eingehend' in eingehenden Daten: # wenn eingehende Daten 'unten' sind. # pyautogui.press ('down') # führt eine "Abwärtspfeil" -Operation aus, bei der die Seite pyautogui.scroll (-100) nach unten gescrollt wird, wenn 'up' in incoming_data: # wenn eingehende Daten a ist 'up' # pyautogui.press ('up') # führt eine "Aufwärtspfeil" -Operation durch, die die Seite pyautogui.scroll (100) nach oben scrollt, wenn 'change' in incoming_data: # wenn eingehende Daten 'change' pyautogui.keyDown sind ('alt') # führt die Operation "alt + tab" aus, bei der die Registerkarte pyautogui.press ('tab') umgeschaltet wird. pyautogui.keyUp ('alt') incoming_data = ""; # löscht die Daten
Dies war die einfachste Möglichkeit, Ihren PC mithilfe von Handgesten zu steuern. Befolgen Sie alle oben genannten Schritte und steuern Sie Ihren PC lieber mit der Hand als mit Tastatur und Maus.