Inhoudsopgave:

Bedelende robot met gezichtsherkenning en besturing door Xbox-controller - Arduino - Ajarnpa
Bedelende robot met gezichtsherkenning en besturing door Xbox-controller - Arduino - Ajarnpa

Video: Bedelende robot met gezichtsherkenning en besturing door Xbox-controller - Arduino - Ajarnpa

Video: Bedelende robot met gezichtsherkenning en besturing door Xbox-controller - Arduino - Ajarnpa
Video: DETROIT EVOLUTION - Детройт: станьте человеком, фанат фильм / фильм Reed900 2024, Juli-
Anonim
Image
Image
OpenCV en C++ installeren en configureren
OpenCV en C++ installeren en configureren

We gaan een bedelrobot maken. Deze robot zal proberen passerende mensen te irriteren of de aandacht te trekken. Het zal hun gezichten detecteren en lasers op hen proberen te schieten. Als je de robot een muntje geeft, zal hij een lied zingen en dansen. De robot heeft een arduino, een live-feed van een camera en een computer nodig om openCV op te draaien. De robot kan ook worden bestuurd door een xBox-controller als deze is aangesloten op de pc.

Stap 1: De materialen

Hardware Elektronisch

  • Arduino NANO of UNO
  • USB 2.0-camera
  • Startkabels (mannelijk en vrouwelijk)
  • 2 x servo - algemeen (submicroformaat)
  • 2 x LED - RGB KATHODE 5 mm
  • 2 x 5mW lasers
  • 1 x rode LED 5 mm
  • 1 x Breadboard
  • 4 x 220Ω weerstand
  • 1 x 1KΩ weerstand
  • 1 x protobord
  • 1 x Sonar-sensor 4 pinnen
  • Xbox-controller

Hardware analoog

  • Houten kist (15 x 15 x 7 cm)
  • Lijm
  • Elektrische tape

Software

  • Arduino IDE
  • Visuele studio 2017
  • 3Ds Max (of andere 3D-modelleringssoftware)
  • Preform 2.14.0 of hoger
  • OpenCV 3.4.0 of hoger

Gereedschap

  • Soldeer apparatuur
  • Zaag en boor
  • Draadknipper

Stap 2: OpenCV en C++ installeren en configureren

OpenCV en C++ installeren en configureren
OpenCV en C++ installeren en configureren

Stap 2.1: De software verkrijgen

Visual studio 2017: Download Visual studio Comunity 2017openCV 3.4.0 Win pack: Ga naar de officiële downloadpagina

Stap 2.2: OpenCV2.2.1 installeren: Pak het zipbestand uit op uw Windows(:C)-station.2.2.2: Ga naar uw geavanceerde systeeminstellingen. Dit is te vinden in uw win10-zoekfunctie.2.2.3: We moeten nieuwe omgevingsvariabelen instellen. Zoek de "Path"-omgeving en druk op edit.2.2.4: Nu moeten we de locatie van de "bin map" toevoegen aan een nieuwe variabele in de Path-omgeving. Als je openCV op je C-schijf hebt geïnstalleerd, kan het pad er als volgt uitzien: C:\opencv\build\x64\vc14\bin Plak het pad en druk op "OK" op alle vensters die je mogelijk hebt geopend tijdens dit proces.

Stap 2.3: Visual Studio C++2.3.1 configureren: Maak een nieuw Visual C++-project. Maak er een leeg win32-consoletoepassingsproject van. 2.3.2: Klik met de rechtermuisknop op het tabblad Bronbestanden en voeg een nieuw C++-bestand (.cpp) toe en noem het "main.cpp". 2.3.3: Klik met de rechtermuisknop op het project- naam in de Oplossingsverkenner en selecteer Eigenschappen.2.3.4: We moeten een extra Inclusief Directory's toevoegen. Dit is in het algemeen te vinden onder het tabblad C/C++. Kopieer het volgende pad: C:\opencv\build\include en plak het achter de "AID" en klik op toepassen.2.3.5: In hetzelfde venster moeten we selecteer het tabblad "Linker". onder algemeen moeten we een andere extra bibliotheekdirectory's maken. Plak het volgende pad achter de "AID" C:\opencv\build\x64\vc14\lib en druk nogmaals op Apply.2.3.6: Selecteer onder hetzelfde tabblad Linker het tabblad "Invoer". En druk op "Extra afhankelijkheden > bewerken" en plak het volgende bestand opencv_world320d.lib en xinput.lib (voor de controller) en druk nogmaals op toepassen. Sluit het venster. Nu is uw C++-bestand klaar om mee te werken.

Stap 3: De Arduino instellen

De Arduino instellen
De Arduino instellen
De Arduino instellen
De Arduino instellen
De Arduino instellen
De Arduino instellen
De Arduino instellen
De Arduino instellen

Voldoen aan de servo's: de servo's kunnen ~ 160° draaien. Ze moeten tussen de 4, 8 en 6, 0 Volt hebben om normaal te werken. De servo heeft 3 pinnen: aarde, 4, 8 - 6, 0 volt pin en een data pin. Voor ons project gaan we de datapinnen voor de servo's op DigitalPin 9 en 10 instellen.

Voldoen aan de RGB-leds: de RGB-leds hebben 4 pinnen. Rode, groene, blauwe en grondpin. Om wat ruimte op de arduino te besparen, kunnen we de 2 RGB-leds met elkaar verbinden. We zullen dus slechts 3 pinnen gebruiken. We kunnen de RGB-leds aansluiten en solderen op een protoboard zoals in de afbeelding. Rode pin => DigitalPin 3 (PWM) Groene pin => DigitalPin 4 Blauwe pin => DigitalPin 7

Ontmoeting met de piëzo-zoemer: onze kleine robot gaat wat lawaai maken. Om dit te doen moeten we hem een stem geven! We kunnen ervoor kiezen om hem heel luid te maken. Of we kunnen een 220Ω-weerstand voor de piëzo-zoemer plaatsen om hem een beetje minder irritant te maken. We laten de piëzo-zoemer op het breadboard staan. Solderen is dus niet nodig. We verbinden de datapin (+) met DigitalPin 2 en de massapin met massa op het breadboard.

De sonar ontmoeten: om te voorkomen dat de robot probeert te richten op een persoon die zich op 10 meter afstand bevindt. We kunnen de robot een afstandsbereik geven van waaruit hij op mensen kan richten. Dit doen we met een sonar sensor. VCC => 5 voltTrig => DigitalPin 6Echo => DigitalPin 5GND => aarde

Ontmoeting met de muntdetector: We gaan een muntdetector maken. De muntdetector zal werken door te detecteren of het circuit gesloten of onderbroken is. Het zal bijna werken als een schakelaar. Maar we moeten voorzichtig zijn. Als we dit verkeerd doen, kost het ons een arduino. Eerst: Sluit AnalogPin A0 aan op een 5 volt kabel. Maar zorg ervoor dat u er een weerstand van 1 KΩ tussen plaatst. Ten tweede: sluit een draad aan op aarde. We kunnen de draden en weerstand onmiddellijk op hetzelfde protoboard solderen als de RGB-leds. Als we nu de 2 draden samen aanraken, detecteert de arduino een gesloten circuit. Dit betekent dat er een munt is! Ontmoet de lasers van onheil. De robot heeft zijn wapens nodig om te vuren! Om wat ruimte te besparen heb ik de 2 lasers aan elkaar gesoldeerd. Ze passen perfect in het frame van de camera. Sluit ze aan op DigitalPin 11 en op aarde. Vuur weg kleine man!

Optionele gimmick. We kunnen een rode LED onder het muntslot plaatsen. Dit zal een leuke kleine gimmick zijn voor als het donker is. Sluit een draad aan op DigitalPin 8 en plaats een 220Ω weerstand tussen de LED en de draad om te voorkomen dat deze opblaast. Verbind de korte pin van de LED met aarde.

Stap 4: De C++-code

Stap 4.1: De main.cpp-code instellen4.1.1: Download "main.cpp" en kopieer de code naar uw eigen main.cpp.4.1.2: Verander op regel 14 de "com" in de com die de arduino gebruikt. "\.\COM(wijzig dit)"4.1.3: Stel op regel 21 en 22 het juiste pad in naar de bestanden "haarcascade_frontalface_alt.xml" en "haarcascade_eye_tree_eyeglasses.xml"Als openCV is geïnstalleerd op de C-schijf, deze bestanden kunnen hier worden gevonden: "C:\opencv\build\etc\haarcascades\" Houd de dubbele backslashes of voeg er een toe waar er maar één is.

Stap 4.2: Voeg tserial.h en Tserial.cpp toe Deze 2 bestanden zorgen voor de communicatie tussen de arduino en de PC.4.2.1: Download tserial.h en Tserial.cpp.4.2.2: Plaats deze 2 bestanden in het project map. Klik in de Oplossingenverkenner met de rechtermuisknop op het project en selecteer toevoegen > bestaand item. Selecteer in het pop-upvenster de twee bestanden die moeten worden toegevoegd.

Stap 4.2: CXBOXController.h en CXBOXController.h toevoegen Deze bestanden nemen het controllergedeelte van het project over.4.2.1: Klik in de Solution Explorer met de rechtermuisknop op het project en selecteer toevoegen > bestaand item. Selecteer in het pop-upvenster de twee bestanden die moeten worden toegevoegd. De C++-bestanden zijn ingesteld.

Stap 5: De Arduino-code

Stap 5.1: NewPing-bibliotheek 5.1.1: Download de ArduinoCode.ino en open deze in de arduino IDE.5.1.2: Ga naar "Schets > Bibliotheek opnemen > Bibliotheek beheren".5.1.3: Zoek in het filtervak naar "NewPing" en installeer deze bibliotheek.

Stap 5.2: Pitches-bibliotheek5.2.1: Download pitches.txt en kopieer de inhoud van pitches.txt.5.2.2: Druk in de Arduino IDE op CTRL+Shift+N om een nieuwe tab te openen.5.2.3: Plak de code uit de pitches.txt naar het nieuwe tabblad en sla het op als "pitches.h". De Arduino-code is ingesteld

Stap 6: 3D printen en de print verfijnen

3D printen en de print verfijnen
3D printen en de print verfijnen
3D printen en de print verfijnen
3D printen en de print verfijnen

Stap 6.1: Print het 3D-bestand Open het printfile.form en controleer of alles in orde is. Als alles in orde lijkt, stuur je de printopdracht naar de printer. Als er iets lijkt of als je het model wilt wijzigen. Ik heb de 3Ds Max-bestanden en OBJ-bestanden bijgevoegd die u kunt bewerken.

Stap 6.2: Verfijn het model6.2.1: Nadat het printen is voltooid, week je de 2 modellen in ongeveer 70% alcohol om eventuele printresten te verwijderen.6.2.2: Leg het model na het printen een paar uur in de zon om het UV-licht te laten het model verharden. Of u kunt een UV-lamp gebruiken om het model uit te harden. Dit moet worden gedaan omdat het model plakkerig zal zijn.

6.2.3: Verwijder het draagframe. Dit kan met een draadknipper. Of elk ander gereedschap dat plastic kan snijden.6.2.4: Sommige delen van de 3D-print kunnen nog zacht zijn. Zelfs als het model veel UV-licht heeft gehad. De delen die zacht kunnen zijn, zijn de delen die dicht bij de draagframes zaten. Leg het model in meer zon of UV-licht om uit te harden.6.2.5: Met een "dremel" kun je alle kleine oneffenheden van het frame wegschuren. Je kunt proberen de servo's in het frame te passen. Als ze niet passen, kunt u de Dremel gebruiken om materiaal weg te schuren. het passend maken.

Stap 7: De doos bouwen

De doos bouwen
De doos bouwen
De doos bouwen
De doos bouwen

Stap 7.1: De gaten maken Ik heb een blauwdruk van de doos in kwestie bijgevoegd. De blauwdruk is niet op schaal, maar alle maten zijn correct.7.1.1: Begin met het markeren van alle gaten op de juiste locaties.7.1.2: Boor alle gaten. De grotere gaten kunnen op maat worden gemaakt met een Dremel.7.1.3: De vierkante gaten kunnen ook worden geboord. Maar om ze vierkant te maken, kunt u de Dremel met een kleine vijl passen en scherpe hoeken uitvijlen.7.1.4: Probeer alle componenten te passen. als ze passen, ben je klaar om te gaan! 7.1.5: Pas op voor houtsplinters. Gebruik schuurpapier om ze te verwijderen.

Stap 7.2: Schilderen7.2.1: Begin met het schuren van het deksel. We hebben de verf nodig om te plakken.7.2.2: Neem een doek en doe er een beetje terpentine op om de doos schoon te maken.7.2.3: Nu kun je de doos in elke gewenste kleur spuiten.

Stap 8: Afwerking

Afronden
Afronden
Afronden
Afronden
Afronden
Afronden

Nu moeten we alles op zijn plaats zetten en het zijn werk laten doen. Stap 8.1: De muntdetector8.1.1: Lijm enkele metalen beugels voor de muntdetector vast.8.1.2: Soldeer elke draad van de connector aan een beugel.8.1.3: Test de verbinding met een munt. Als er geen gesloten circuit is, soldeer dan de draden meer aan de rand. Stap 8.2: Het protoboard en RGB-leds 8.2.1: Plaats het protoboard in de rechterbovenhoek en plak het vast! 8.2.2: Verbind de RGB-leds met de draden van het protoboard! 8.2.3: Sluit alle draden van het protoboard aan op de arduino. Stap 8.3: De sonarsensor 8.3.1: Plaats de sensor in de gaten die we ervoor hebben gemaakt. Als je mannelijke naar vrouwelijke jumpwires hebt, kun je deze overslaan 8.3.28.3.2: Knip enkele mannelijke en vrouwelijke draden doormidden en soldeer de vrouwelijke en mannelijke draden aan elkaar om een enkele kabel te maken die we kunnen gebruiken om de sensor op de Arduino aan te sluiten.8.3.3: Sluit de sensor aan op de Arduino

Stap 8.4: Lasers en camera8.4.1: Lijm het kleine frame op de camera. Zorg ervoor dat deze rechtop staat.8.4.2: Plaats de lasers ook in het frame. Lijm ze vast zodat de vijand ze niet zal stelen!

Stap 8.5: De servo's en 3D print8.5.1: Lijm de servo in het gat van het deksel8.5.2: Upload het arduino-bestand naar de arduino (hierdoor staan de servo's in de juiste positie) 8.5.3: Met de servo kwam een klein rond plateau. Plaats deze op de servo in het deksel.8.5.4: Plaats de grote 3D print op de servo en plateau en schroef ze stevig in elkaar met een schroef.8.5.5: Plaats de tweede servo op de kleine 3D print en lijm deze aan elkaar. 8.5.6: Zet de camera op zijn plaats en alles is klaar voor gebruik!

Stap 9: Start het programma

Om de robot te starten, opent u het C++-bestand in Visual studio. Zorg ervoor dat u zich in de "debug-modus" bevindt. Upload het arduino-bestand naar de arduino. Zodra dat is geüpload, drukt u op play in visuele studio. En de robot zal alle munten ter wereld afvuren en verzamelen!!!

Aanbevolen: