- Vereiste materialen:
- 3D-printen van de vereiste onderdelen (optioneel):
- Schema en hardware:
- Uw Android-applicatie instellen:
- Programmeren van uw Arduino:
- Werken:
Ooit een Face Tracking Robotarm of Robot willen bouwen door simpelweg Arduino te gebruiken en geen andere programmering zoals OpenCV, visuele basis C # enz.? Lees dan verder, in dit project gaan we gezichtsdetectie implementeren door de kracht van Arduino en Android te combineren. In dit project beweegt de mobiele camera met behulp van servo's mee met je gezicht. Het voordeel van het gebruik van de Android Mobile Phone hier is dat je niet hoeft te investeren in een cameramodule en dat het hele beelddetectiewerk in de telefoon zelf kan worden gedaan, je hebt hiervoor niet je Arduino aangesloten op je computer nodig. Hier hebben we Bluetooth-module met Arduino gebruikt om draadloos met Mobile te communiceren.
De Android-applicatie die in dit project wordt gebruikt, is gemaakt met behulp van Processing Android, je kunt de applicatie rechtstreeks installeren door het APK-bestand te downloaden (lees verder voor de link) of je programmeerpet plaatsen en je eigen aantrekkelijkere Android-applicatie maken met behulp van de gegeven verwerkingscode verder in de Tutorial. Lees meer over verwerking door onze vorige verwerkingsprojecten te bekijken.
Aan het einde van deze tutorial heb je een Mini Tilt and Span Robotarm die je gezicht kan volgen en ermee kan bewegen. U kunt dit (met verdere vooruitgang) gebruiken om uw vlog-video's op te nemen of zelfs een selfie te maken met de camera aan de achterzijde van uw mobiele telefoon, aangezien uw gezicht precies in het midden van uw mobiele scherm wordt geplaatst. Zo!! Klinkt interessant? Bekijk de demovideo aan het einde van deze tutorial om te zien hoe deze werkt. Laten we eens kijken hoe we er een kunnen bouwen…
Ik heb mijn best gedaan om dit project zo eenvoudig mogelijk te laten werken, iedereen met minimale kennis van hardware of codering kan deze richtlijnen gebruiken om dit project in een mum van tijd te laten werken. Maar als je het eenmaal hebt gemaakt, raad ik je aan om achter de codes te gaan staan, zodat je echt kunt weten waardoor dit ding werkt en hoe.
Vereiste materialen:
- Arduino Nano
- Servomotor SG90 - 2 nrs
- Android-telefoon met fatsoenlijke camera
- HC-05 / HC-06 Bluetooth-module
- Computer om te programmeren
- 3D-printer (optioneel)
- 9V batterij
3D-printen van de vereiste onderdelen (optioneel):
Om onze mobiele telefoon te pannen en te kantelen, hebben we enkele mechanische constructies nodig, zoals een mobiele houder en een paar servohaken. Je kunt een karton gebruiken om er een te maken, aangezien ik een 3D-printer heb, heb ik besloten om deze onderdelen in 3D te printen.
3D-printen is een geweldige tool die veel kan bijdragen bij het bouwen van prototypeprojecten of het experimenteren met nieuwe mechanische ontwerpen. Als je de voordelen van een 3D-printer of hoe deze werkt nog niet hebt ontdekt, kun je de beginnershandleiding voor 3D-printen lezen.
Als u een 3D-printer bezit of toegang heeft tot een 3D-printer, kunt u de STL-bestanden gebruiken die vanaf hier kunnen worden gedownload om ze direct af te drukken en samen te stellen. Er zijn echter enkele onderdelen, zoals de houder voor een mobiele telefoon, die enkele aanpassingen nodig hebben op basis van de afmetingen van uw telefoon. Ik heb het ontworpen voor mijn MOTO G mobiele telefoon. Ik heb een heel eenvoudige printer van mij gebruikt om alle onderdelen af te drukken. De printer is FABX v1 van 3ding die voor een betaalbare prijs wordt geleverd met een afdrukvolume van 10 kubieke cm. De goedkope prijs komt met een afweging met een lage afdrukresolutie en geen SD-kaart of functie voor het hervatten van afdrukken. Ik gebruik software genaamd Cura om de STL-bestanden af te drukken. De instellingen die ik heb gebruikt om de materialen af te drukken, worden hieronder gegeven, je kunt hetzelfde gebruiken of ze wijzigen op basis van je printer.
Zodra u alle benodigde materialen hebt afgedrukt, kunt u ze op hun plaats bevestigen met schroeven en wat hete lijm. Nadat de montage is voltooid, ziet het er hieronder ongeveer zo uit.
Schema en hardware:
Het circuit voor dit Face Tracking op Smart Phone- project wordt weergegeven in de onderstaande afbeelding:
Het circuit bestaat uit twee servomotoren, waarvan er één wordt gebruikt om de mobiele telefoon naar links / rechts te bewegen en de andere wordt gebruikt om de mobiele telefoon omhoog / omlaag te kantelen. De richting waarin de servo moet bewegen wordt aangegeven door de Arduino Nano die zelf informatie krijgt van de Bluetooth (HC-05) module. Het hele circuit wordt gevoed door een 9V-batterij.
Dit circuit is eenvoudig aan te sluiten op je breadboard of je kunt deze ook solderen op een klein Perf board zoals ik hier heb gedaan.
Uw Android-applicatie instellen:
Zoals ik al zei, is het belangrijkste brein achter dit project deze Android-applicatie. Deze Android-applicatie is ontwikkeld met behulp van Processing Android. U kunt deze applicatie rechtstreeks op uw mobiele telefoon installeren en starten door de onderstaande stappen te volgen.
- Download het APK-bestand vanaf hier.
- Schakel het hierboven getoonde circuit in.
- Zoek in je telefooninstellingen naar de Bluetooth-module met de naam 'HC-05'
- Als je het een andere naam hebt gegeven dan "HC-05", verander het dan terug naar HC-05, aangezien alleen dan de applicatie zal werken.
- Koppel met uw Bluetooth-module met het wachtwoord “1234” of “0000”.
- Start nu de applicatie in staande modus. Je zou je camerascherm moeten zien en ook "Verbonden met: HC-05" bovenaan je scherm.
- Beweeg uw camera over een gezicht en er zou een groen vak bovenop moeten verschijnen en de positie wordt ook in de linkerbovenhoek van uw scherm weergegeven, zoals hieronder wordt weergegeven.
Je kunt dit Arduino Face Tracking-project naar een hoger niveau tillen door veel verbeteringen aan te brengen waarvoor je je eigen Android-applicatie niet hoeft te coderen. Het maken van een Android-applicatie klinkt misschien moeilijk, maar geloof me, met behulp van Processing kun je het in een mum van tijd leren. De volledige verwerkingscode die is gebruikt om deze applicatie te bouwen, kan hier worden gedownload. U bent vrij om met uw eigen creativiteit vooruitgang te boeken. Bekijk onderstaande projecten voor meer informatie over Processing:
- Virtual Reality met behulp van Arduino en Processing
- Pingpongspel met Arduino
- Slimme telefoongestuurde FM-radio met behulp van verwerking.
- Arduino-radarsysteem met behulp van verwerking en ultrasone sensor
Programmeren van uw Arduino:
De Android-applicatie zal het gezicht en zijn positie op het scherm detecteren; het zal dan beslissen in welke richting het moet bewegen op basis van de positie van het gezicht, zodat het gezicht naar het midden van het scherm komt. Deze richting wordt vervolgens via Bluetooth-module naar de Arduino gestuurd.
Het Arduino-programma voor dit project is vrij eenvoudig, we hoeven alleen maar de richting van de twee servomotoren te regelen op basis van de waarden die zijn ontvangen van de Bluetooth-module. De volledige code is te vinden aan het einde van deze tutorial, ik heb hieronder ook enkele belangrijke regels uitgelegd.
Onderstaande coderegel brengt een seriële verbinding tot stand met pinnen D12 als RX en D11 als TX. Daarom moet pin D12 worden aangesloten op de TX van de BT-module en de pin D11 op de RX van de BT-module.
SoftwareSerial cam_BT (12, 11); // RX, TX
Vervolgens hebben we de Bluetooth module geïnitialiseerd op een baudrate van 9600. Zorg ervoor dat je module ook op dezelfde baudrate werkt. Wijzig het anders dienovereenkomstig.
cam_BT.begin (9600); // start de Bluetooth-communicatie op 9600 baudrate cam_BT.println ("Klaar om commando's te nemen");
Onderstaande regel leest wat er binnenkomt via de Bluetooth-module. Ook worden de gegevens opgeslagen in de variabele "BluetoothData".
if (cam_BT.available ()) // Lees wat er binnenkomt via Bluetooth {BluetoothData = cam_BT.read (); Serial.print ("Inkomend van BT:"); Serial.println (BluetoothData); }
Op basis van de ontvangen gegevens van Bluetooth wordt de motorrichting gestuurd. Om een motor naar links te draaien, wordt de motor verlaagd met een waarde van 2 ten opzichte van de vorige positie. U kunt deze waarde 2 verhogen naar 4 of 6 als u de arm nodig heeft om sneller te bewegen. Maar het kan enkele schokken veroorzaken waardoor de camera onstabiel wordt.
if (BluetoothData == 49) // Linksaf {pos1 + = 2; servo1.write (pos1);} if (BluetoothData == 50) // Rechtsaf {pos1- = 2; servo1.write (pos1);} if (BluetoothData == 51) // Turn Up {pos2- = 2; servo2.write (pos2);} if (BluetoothData == 52) // Turn Down {pos2 + = 2; servo2.write (pos2);}
Werken:
Zodra we klaar zijn met onze hardware, code en Android-applicatie, is het tijd voor wat actie. Schakel eenvoudig uw Arduino in en open de Android-applicatie. De applicatie maakt automatisch verbinding met de HC-05 (moet HC-05 heten) Bluetooth-module en wacht tot een gezicht wordt gedetecteerd. Plaats de telefoon gewoon in onze mobiele houder en ga ervoor zitten. Je zou moeten opmerken dat je servomotoren je telefoon bewegen, zodat je gezicht in het midden van het scherm komt te staan. Beweeg je nu binnen het bereik van de camera en je mobiele telefoon volgt je bewegingen. Je kunt het ook proberen door een foto te plaatsen en te verplaatsen.
De volledige werking van het project wordt getoond in de onderstaande video. Je kunt veel bouwen