Steuerung des Computers durch Handgesten mit Arduino
Autoren: Lihui Liu, Junjie Lyu
Betreuer: Marc Ebmeyer
→ zurück zur Übersicht: WS 22/23: Angewandte Elektrotechnik (BSE)
Einleitung
Bei dem vorliegenden Artikel handelt es sich um ein Projekt aus dem Praktikum angewandte Elektrotechnik des Studiengangs Business and Systems Engineering (BSE). Ziel des Projektes ist es, die bestimmten Funktionen auf dem Computer durch Handgesten zu realisieren. Hierfür werden die Ultraschallsensoren (US) eingesetzt, um die Entfernung zwischen Monitor und Hande zu erfassen. Die Messdaten werden über die serielle Schnittstelle (USB) an den Computer gesendet, die von Python eingelesen werden. Während des Laufs der Pythonprogrammierung auf dem Computer werden die bestimmten Aktionen ausgeführt. Die Umsetzung des Projektes erfolgt nach dem V-Modell.
Anforderungen
ID | Inhalt | Ersteller | Datum | Geprüft von | Datum |
---|---|---|---|---|---|
Persönlichkeit | |||||
1.1 | Python Erkenntnisse | Lihui Liu | - | Junjie Lyu | - |
1.2 | Arduino Erkenntnisse | Lihui Liu | - | Junjie Lyu | - |
Hardware | |||||
2.1 | Arduino Uno | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
2.2 | Ultraschallsensor (3 stück) | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
2.3 | USB Kabel | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
2.4 | Laptop mit Python | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
Software | |||||
3.1 | Arduino IDE | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
3.2 | Python3 | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
3.3 | VLC media player | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
Funktionen des Systems | |||||
4.1 | Wenn die beide Hände in einer bestimmten Entfernung vor dem mittleren Sensor gehalten werden, sollte das Video abgespielt/angehalten werden. | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
4.2 | Wenn der Hand in einem bestimmten Abstand vor dem rechten Sensor platziert wird, sollte das Video einen Schritt vorwärts laufen. | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
4.3 | Wenn der Hand in einer bestimmten Entfernung vor dem linken Sensor platziert wird, sollte das Video um einen Schritt zurückgespult werden. | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
4.4 | Wenn der Hand in einem bestimmten Nahbereich vor dem rechten Sensor platziert wird und dann in Richtung des Sensors bewegt wird, sollte das Video vorgespult werden, und wenn es wegbewegt wird, sollte das Video zurückgespult werden. | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
4.5 | Wenn der Hand in einem bestimmten Nahbereich vor dem linken Sensor platziert wird und dann in Richtung des Sensors bewegt wird, sollte die Lautstärke des Videos zunehmen und wenn sie wegbewegt wird, sollte die Lautstärke abnehmen. | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
4.6 | Wenn die beide Hände in einer bestimmten Entfernung vor den mittleren Sensor gehalten werden, sollte das Video Vollbildschirm sein. | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
4.7 | Wenn der Hand in einer bestimmten Entfernung vor dem rechten Sensor platziert wird, sollte das Video stumm oder widerrufen werden. | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
4.8 | Wenn der Hand in einer bestimmten Entfernung vor dem mittleren Sensor platziert wird, sollte das letztes oder nächstes Video abgespielt werden. | Lihui Liu | 02.10.2022 | Junjie Lyu | 02.10.2022 |
Funktionaler Systementwurf/Technischer Systementwurf
Die Abb. 2 und 3 stellen einen funktionalen Systementwurf dar, mit dem die Zuschauer beim Video durch Handgesten die Lautstärke ändern oder vor-/rückwärtsspulen können. Auf dem Monitor werden drei Ultraschallsensoren angelegt, mit denen die Entfernung zwischen Monitor und Hand erfasst wird. Die Messsdaten werden über die serielle Schnittstelle (USB) an den Computer gesendet und mittels der Python Module pyautogui und pyserial mit dem Video player verknüpft.
-
Abbildung 2: Systementwurf - Projektskizze
-
Abbildung 3: Systementwurf - Signalfluss
Komponentenspezifikation
ID | Komponente | Eingänge | Ausgänge | Aufgabe | Art der Komponente |
---|---|---|---|---|---|
01 | Mikroprozessor | Signale des Sensors | Durchführung der entsprechenden Aktionen | Steuerung der Komponenten und Signale | Hardware |
02 | Ultraschall Sensor | Spannungsversorgung | Distanz von Händen | Messen der Distanz von den Händen | Hardware |
Umsetzung (HW/SW)
Hardware
Alle verwendeten Hardwarekomponenten können in der Stückliste in Tabelle 3 eingesehen werden.
Stückliste
ID | Anzahl | Kosten pro Stück € | Summe | Bezeichnung / Komponente | technische Bezeichnung | Abbildung |
---|---|---|---|---|---|---|
1 | 3x | 3,20 € | 9,60 € | Ultraschallsensoren | HY-SRF04 [1] | |
2 | 1x | 37,39€ | 37,39€ | Mikrocontroller | Arduino UNO R3 [2] | |
3 | 1x | 0,00€ | 0,00€ | Breadboard, Jumperkabel | Breadboard [3], Jumperkabel |
Verdrahtungsplan
Programmierung
Programmablaufpläne
Die nachfolgenden Programmablaufpläne veranschaulichen die Struktur des Programmcodes. Auf der linken Seite stellt Programmablauf im Arduino und rechte Seite im dar.
Arduino PAP | Python PAP |
---|---|
Programmcode
Aufbau
Die folgenden Abbildungen zeigt die Stirn- und Rückseite des Aufbaus. Auf der Rückseite sind 3 Ultraschallsensor auf dem oberen Seite des Laptops zu sehen. Während die Stirnseite sind mit Arduino und Breadboard zu verbinden.
Sensorik
Die Sensorik erfasst die Messwerte und bildet somit die Berechnungsgrundlage der Ausgangsvariablen des Mikrocontrollers. Der Ultraschallsensor strahlt zyklisch einen kurzen, hochfrequenten Schallimpuls aus. Dieser pflanzt sich mit Schallgeschwindigkeit in der Luft fort. Wenn der Ultraschall Sensor auf das Hand trifft, wird er dort reflektiert und gelangt als Echo zurück. Die verwendete 3 Sensoren sind Ultraschall Sensor HC SR04. Sie dienen zur Ermittlung der Abstandswerte zwischen der Hände. Arduino liest diese Werte ab und basierend auf diesem Abstandswerte werden die bestimmte Aktionen ausgeführt.
Komponententest
Nr. | Komponente | Erwartete Funktion | Ergebnis |
---|---|---|---|
1 | LEDs | Die LEDs sollen leuchten. | Die LEDs leuchten. |
2 | Peltier-Element | Das Peltier-Element soll warm werden und als Heizung dienen. | Beim anschließen des Peltier-Element wird dieses warm. |
3 | LCD-Display | Das Display soll verschiedene Werte anzeigen können. | Das Display kann beliebige Texte oder Werte der Sensoren anzeigen. |
4 | DHT11 Sensor | Der Sensor soll die Temperatur und die Luftfeuchtigkeit messen. | Der Sensor reagiert auf Körperwärme oder den "feuchten" Atem. |
5 | Helligkeitssensor | Der Helligkeitssensor soll den Lichteinfall messen. | Der Sensor reagiert auf Licht bzw. das Abdunkeln durch die Hand. |
6 | Taster | Der Taster soll ein "durchschalten" des Displays ermöglichen. | Der Tasterdruck wird erkannt und kann mitgezählt werden. |
7 | Lüfter | Der Lüfter soll sich drehen. | Der Lüfter kann angesteuert werden. Allerdings beeinflusst dieser die gemessene Luftfeuchtigkeit nicht. |
Ergebnis
Das Projekt konnte erfolgreich durchgeführt werden und wir konnten alle gesetzten Anforderungen erreichen. Eine Überprüfung der einzelnen Anforderungen aus Tabelle 1 lässt sich in Tabelle 5 einsehen.
Anforderungs-ID | Testinhalt | Testergebnis |
---|---|---|
001 | Wenn die beide Hände in einer bestimmten Entfernung vor dem mittleren Sensor gehalten werden, sollte das Video abgespielt/angehalten werden. | erfolgreich |
002 | Wenn der Hand in einem bestimmten Abstand vor dem rechten Sensor platziert wird, sollte das Video einen Schritt vorwärts laufen. | erfolgreich |
003 | Wenn der Hand in einer bestimmten Entfernung vor dem linken Sensor platziert wird, sollte das Video um einen Schritt zurückgespult werden. | erfolgreich |
004 | Wenn der Hand in einem bestimmten Nahbereich vor dem rechten Sensor platziert wird und dann in Richtung des Sensors bewegt wird, sollte das Video vorgespult werden, und wenn es wegbewegt wird, sollte das Video zurückgespult werden. | erfolgreich |
005 | Wenn der Hand in einem bestimmten Nahbereich vor dem linken Sensor platziert wird und dann in Richtung des Sensors bewegt wird, sollte die Lautstärke des Videos zunehmen und wenn sie wegbewegt wird, sollte die Lautstärke abnehmen. | erfolgreich |
006 | Wenn die beide Hände in einer bestimmten Entfernung vor den mittleren Sensor gehalten werden, sollte das Video Vollbildschirm sein. | erfolgreich |
007 | Wenn der Hand in einer bestimmten Entfernung vor dem rechten Sensor platziert wird, sollte das Video stumm oder widerrufen werden. | erfolgreich |
008 | Wenn der Hand in einer bestimmten Entfernung vor dem mittleren Sensor platziert wird, sollte das letztes oder nächstes Video abgespielt werden. | erfolgreich |
Zusammenfassung
Lessons Learned
Projektunterlagen
Projektplan
Projektdurchführung
Zu Beginn haben wir die Sensoren und Arduino sowie Breadboard und Jump Kabel bestellt. Nach dem Einsetzen der entsprechenden Bibliothek und werden die in Anforderungen geschriebene Funktionen mit den Hotkey bestimmt. Dann war die Implementierung mit Arduino und Python. Abschließend war der Test mit dem YouTube Videos
YouTube Video
Weblinks
Literatur
→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)
- ↑ https://www.amazon.de/AZDelivery-HC-SR04-Ultraschall-Entfernungsmesser-Raspberry/dp/B072N473HD/ref=sr_1_1_sspa?keywords=ultraschallsensor&qid=1670091640&s=computers&sprefix=ultascha%2Ccomputers%2C102&sr=1-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&th=1/UHL
- ↑ https://www.amazon.de/Elegoo-Einsteigerset-Stromversorgungsmodul-Servomotor-Erweiterungsplatine/dp/B01ILR6AX4/ref=sr_1_1_sspa?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2YSD9XEOFZF0B&keywords=arduino+uno&qid=1670089926&sprefix=arduino+uno%2Caps%2C112&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1/UHL
- ↑ https://www.amazon.de/Elegoo-Einsteigerset-Stromversorgungsmodul-Servomotor-Erweiterungsplatine/dp/B01ILR6AX4/ref=sr_1_1_sspa?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=2YSD9XEOFZF0B&keywords=arduino+uno&qid=1670089926&sprefix=arduino+uno%2Caps%2C112&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1/UHL