- Erforderliche Materialien:
- 3D-Druck der erforderlichen Teile (optional):
- Schema und Hardware:
- Einrichten Ihrer Android-Anwendung:
- Programmieren Ihres Arduino:
- Arbeiten:
Wollten Sie schon immer einen Face Tracking Robotic Arm oder Robot bauen, indem Sie einfach Arduino verwenden und keine andere Programmierung wie OpenCV, Visual Basics C # usw.? Dann lesen Sie mit, in diesem Projekt werden wir die Gesichtserkennung implementieren, indem wir die Leistung von Arduino und Android kombinieren. In diesem Projekt bewegt sich die mobile Kamera mithilfe von Servos mit Ihrem Gesicht. Der Vorteil der Verwendung des Android-Mobiltelefons besteht darin, dass Sie nicht in ein Kameramodul investieren müssen und die gesamte Bilderkennungsarbeit im Telefon selbst ausgeführt werden kann. Dazu muss Ihr Arduino nicht an Ihren Computer angeschlossen sein. Hier haben wir das Bluetooth-Modul mit Arduino verwendet, um drahtlos mit Mobile zu kommunizieren.
Die in diesem Projekt verwendete Android-Anwendung wurde mit Processing Android erstellt. Sie können die Anwendung entweder direkt installieren, indem Sie die APK-Datei herunterladen (siehe Link weiter) oder Ihre Programmierkappe aufsetzen und Ihre eigene ansprechendere Android-Anwendung mit dem angegebenen Verarbeitungscode erstellen weiter im Tutorial. Weitere Informationen zur Verarbeitung finden Sie in unseren vorherigen Verarbeitungsprojekten.
Am Ende dieses Tutorials haben Sie einen Mini Tilt and Span Robotic Arm, der Ihr Gesicht verfolgen und sich mitbewegen kann. Sie können dies (mit weiteren Fortschritten) verwenden, um Ihre Vlog-Videos aufzunehmen oder sogar ein Selfie mit der Rückkamera Ihres Mobiltelefons aufzunehmen, da Ihr Gesicht genau in der Mitte Ihres mobilen Bildschirms positioniert ist. Damit!! Klingt interessant? Überprüfen Sie das Demo-Video am Ende dieses Tutorials, um zu sehen, ob es funktioniert. Mal sehen, wie wir einen bauen können…
Ich habe mein Bestes getan, um dieses Projekt so einfach wie möglich zu gestalten. Jeder mit minimalen Kenntnissen über Hardware oder Codierung kann diese Richtlinien verwenden, damit dieses Projekt in kürzester Zeit funktioniert. Sobald Sie es jedoch geschafft haben, empfehle ich Ihnen, sich hinter die Codes zu setzen, damit Sie wirklich wissen, was dieses Ding funktioniert und wie.
Erforderliche Materialien:
- Arduino Nano
- Servomotor SG90 - 2Nos
- Android Phone mit anständiger Kamera
- Bluetooth-Modul HC-05 / HC-06
- Computer zum Programmieren
- 3D-Drucker (optional)
- 9V Batterie
3D-Druck der erforderlichen Teile (optional):
Zum Schwenken und Neigen unseres Mobiltelefons benötigen wir einige mechanische Strukturen wie einen Handyhalter und einige Servohalterungen. Sie können einen Karton verwenden, um einen herzustellen. Da ich einen 3D-Drucker habe, habe ich beschlossen, diese Teile in 3D zu drucken.
Der 3D-Druck ist ein erstaunliches Werkzeug, das beim Erstellen von Prototypenprojekten oder beim Experimentieren mit neuen mechanischen Konstruktionen viel beitragen kann. Wenn Sie die Vorteile eines 3D-Druckers oder dessen Funktionsweise noch nicht entdeckt haben, lesen Sie den Anfängerleitfaden zum 3D-Druck.
Wenn Sie einen 3D-Drucker besitzen oder Zugriff darauf haben, können Sie die STL-Dateien, die von hier heruntergeladen werden können, verwenden, um sie direkt zu drucken und zusammenzustellen. Einige Teile wie der Handyhalter müssen jedoch möglicherweise aufgrund der Abmessungen Ihres Telefons geändert werden. Ich habe es für mein MOTO G-Handy entworfen. Ich habe einen sehr einfachen Drucker verwendet, um alle Teile zu drucken. Der Drucker ist FABX v1 von 3ding, der zu einem erschwinglichen Preis mit einem Druckvolumen von 10 Kubikzentimetern erhältlich ist. Der günstige Preis ist mit einem Kompromiss bei niedriger Druckauflösung und ohne SD-Karte oder Funktion zur Wiederaufnahme des Drucks verbunden. Ich verwende eine Software namens Cura, um die STL-Dateien zu drucken. Die Einstellungen, die ich zum Drucken der Materialien verwendet habe, sind unten angegeben. Sie können dieselben verwenden oder sie je nach Drucker ändern.
Sobald Sie alle erforderlichen Materialien gedruckt haben, können Sie sie mit Schrauben und etwas Heißkleber in Position bringen. Nachdem die Montage abgeschlossen ist, sollte es ungefähr so aussehen.
Schema und Hardware:
Die Schaltung für dieses Projekt zur Gesichtsverfolgung auf Smartphones ist in der folgenden Abbildung dargestellt:
Die Schaltung besteht aus zwei Servomotoren, von denen einer zum Bewegen des Mobiltelefons nach links / rechts und der andere zum Kippen des Mobiltelefons nach oben / unten verwendet wird. Die Richtung, in die sich das Servo bewegen muss, wird vom Arduino Nano festgelegt, der selbst Informationen vom Bluetooth-Modul (HC-05) erhält. Der gesamte Stromkreis wird von einer 9-V-Batterie gespeist.
Diese Schaltung kann einfach an Ihr Steckbrett angeschlossen werden oder Sie können diese auch auf eine kleine Perf-Platine löten, wie ich es hier getan habe.
Einrichten Ihrer Android-Anwendung:
Wie ich bereits sagte, ist diese Android-Anwendung das wichtigste Gehirn hinter diesem Projekt. Diese Android-Anwendung wurde mit Processing Android entwickelt. Sie können diese Anwendung direkt auf Ihrem Mobiltelefon installieren und starten, indem Sie die folgenden Schritte ausführen.
- Laden Sie hier die APK-Datei herunter.
- Schalten Sie die oben gezeigte Schaltung ein.
- Suchen Sie in Ihren Telefoneinstellungen nach dem Bluetooth-Modul "HC-05".
- Wenn Sie es anders als "HC-05" benannt haben, ändern Sie es wieder in "HC-05", da nur dann die Anwendung funktioniert.
- Koppeln Sie mit Ihrem Bluetooth-Modul das Passwort „1234“ oder „0000“.
- Starten Sie nun die Anwendung im Hochformat. Sie sollten Ihren Kamerabildschirm und oben auf Ihrem Bildschirm auch „Verbunden mit: HC-05“ sehen.
- Wenn Sie versuchen, Ihre Kamera über ein Gesicht zu bewegen, sollte ein grünes Kästchen darüber angezeigt werden. Die Position wird auch in der oberen linken Ecke Ihres Bildschirms angezeigt, wie unten gezeigt.
Sie können dieses Arduino Face Tracking-Projekt auf die nächste Stufe heben, indem Sie viele Verbesserungen einbringen, für die Sie keine eigene Android-Anwendung codieren müssen. Das Erstellen einer Android-Anwendung mag schwierig klingen, aber vertrauen Sie mir, mit Hilfe von Processing können Sie es in kürzester Zeit lernen. Der vollständige Verarbeitungscode, der zum Erstellen dieser Anwendung verwendet wird, kann hier heruntergeladen werden. Sie können sich mit Ihrer eigenen Kreativität weiterentwickeln. Überprüfen Sie die folgenden Projekte, um mehr über die Verarbeitung zu erfahren:
- Virtuelle Realität mit Arduino und Verarbeitung
- Ping-Pong-Spiel mit Arduino
- Smartphonegesteuertes FM-Radio mit Verarbeitung.
- Arduino-Radarsystem mit Verarbeitungs- und Ultraschallsensor
Programmieren Ihres Arduino:
Die Android-Anwendung erkennt das Gesicht und seine Position auf dem Bildschirm. Anschließend wird anhand der Position des Gesichts entschieden, in welche Richtung es sich bewegen soll, damit das Gesicht in die Mitte des Bildschirms gelangt. Diese Richtung wird dann über ein Bluetooth-Modul an das Arduino gesendet.
Das Arduino-Programm für dieses Projekt ist ziemlich einfach. Wir müssen lediglich die Richtung der beiden Servomotoren anhand der vom Bluetooth-Modul empfangenen Werte steuern. Den vollständigen Code finden Sie am Ende dieses Tutorials. Ich habe auch einige wichtige Zeilen unten erläutert.
Die folgende Codezeile stellt eine serielle Verbindung mit den Pins D12 als RX und D11 als TX her. Daher muss der Pin D12 mit dem TX des BT-Moduls und der Pin D11 mit dem RX des BT-Moduls verbunden sein.
SoftwareSerial cam_BT (12, 11); // RX, TX
Dann haben wir das Bluetooth-Modul mit einer Baudrate von 9600 initialisiert. Stellen Sie sicher, dass Ihr Modul auch mit derselben Baudrate arbeitet. Andernfalls ändern Sie es entsprechend.
cam_BT.begin (9600); // Starten Sie die Bluetooth-Kommunikation bei 9600 Baudrate cam_BT.println ("Bereit, Befehle entgegenzunehmen");
In der folgenden Zeile wird angezeigt, was über das Bluetooth-Modul eingeht. Auch die Daten werden in der Variablen „BluetoothData“ gespeichert.
if (cam_BT.available ()) // Lies, was über Bluetooth eingeht {BluetoothData = cam_BT.read (); Serial.print ("Eingehend von BT:"); Serial.println (BluetoothData); }}
Basierend auf den vom Bluetooth empfangenen Daten wird die Motorrichtung gesteuert. Um einen Motor nach links zu drehen, wird der Motor von seiner vorherigen Position um einen Wert von 2 dekrementiert. Sie können diesen Wert um 2 auf 4 oder 6 erhöhen, wenn sich der Arm schneller bewegen soll. Es kann jedoch zu Ruckeln kommen, die die Kamera instabil machen.
if (BluetoothData == 49) // Biegen Sie links ab {pos1 + = 2; servo1.write (pos1);} if (BluetoothData == 50) // Rechts abbiegen {pos1- = 2; servo1.write (pos1);} if (BluetoothData == 51) // Aufdrehen {pos2- = 2; servo2.write (pos2);} if (BluetoothData == 52) // Turn down {pos2 + = 2; servo2.write (pos2);}
Arbeiten:
Sobald wir mit unserer Hardware, unserem Code und unserer Android-Anwendung fertig sind, ist es Zeit für Maßnahmen. Schalten Sie einfach Ihr Arduino ein und öffnen Sie die Android-Anwendung. Die Anwendung stellt automatisch eine Verbindung zum Bluetooth-Modul HC-05 (muss HC-05 heißen) her und wartet, bis ein Gesicht erkannt wird. Legen Sie das Telefon einfach in unseren Handyhalter und setzen Sie sich davor. Sie sollten bemerken, dass Ihre Servomotoren Ihr Telefon so bewegen, dass Ihr Gesicht in der Mitte des Bildschirms platziert wird. Bewegen Sie sich nun innerhalb der Reichweite der Kamera und Ihr Mobiltelefon folgt Ihren Bewegungen. Sie können es auch versuchen, indem Sie ein Bild platzieren und verschieben.
Die vollständige Arbeitsweise des Projekts ist im folgenden Video dargestellt. Sie können viel bauen