Obsah:
- Krok 1: Čo budete potrebovať:
- Krok 2: Nastavenie prostredia Python:
- Krok 3: Skript Python:
- Krok 4: Arduino kód:
- Krok 5: Mechanizmus nakláňania:-
- Krok 6: Vytvorenie pripojení:
- Krok 7: TESTOVANIE:
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:56
V predchádzajúcom návode som zdieľal, ako môžete komunikovať medzi Arduino a Python pomocou modulu „pyserial“a ovládať LED diódu. Ak ste to nevideli, pozrite sa sem: KOMUNIKÁCIA MEDZI ARDUINO & PYTHON!
A ako môžete rozpoznať farbu objektu a sledovať ho na obrazovke, pozrite sa na to tu: DETEKCIA FARIEB pomocou OPENCV a PYTHONU.
V tomto návode vám ukážem, ako sledovať tváre pomocou Arduino a Python a prinútiť kameru, aby sledovala tvár. Môže to znieť ťažko, ale verte mi, že nie, stačí vám základné znalosti o Arduine a Pythone.
Začnime teda…
Krok 1: Čo budete potrebovať:
Požiadavky sú minimálne. Tu som poskytol čiastočný zoznam všetkého, čo potrebujete:
Hardvérová požiadavka:
- Arduino UNO (Amazon USA / Amazon EÚ)
- Webová kamera (Amazon USA / Amazon EÚ)
- Servo x 2 (Amazon USA / Amazon EÚ)
- Breadboard (Amazon USA / Amazon EÚ)
- Sada naklápania servo (Amazon USA / Amazon EÚ)
Požiadavka na softvér:
- Python 2.7 (Mal by byť nainštalovaný, operačný systém Linux ho má spravidla predinštalovaný)
- OpenCV (Môžete si ho stiahnuť samostatne alebo nainštalovať pomocou „pip install“Vysvetlené ďalej)
- pyserial (dá sa nainštalovať s pipom)
- otupený.
- Haarcascade.
Keď je všetko zhromaždené, môžeme prejsť na krok inštalácie …
Krok 2: Nastavenie prostredia Python:
Inštalácia Pythonu:
Najprv teda potrebujeme, aby bol spustený Python 2.7. Za týmto účelom najskôr stiahnite a nainštalujte python 2.7.14. Ak chcete skontrolovať, či je nainštalovaný správne, choďte na: Windows Search >> Napíšte „IDLE“>> Kliknite na Enter. Mala by sa objaviť škrupina Pythonu.
ALEBO
Do vyhľadávania zadajte „CMD“a stlačením klávesu Enter otvorte príkazový riadok. V CMD type >> python a hit enter by sa malo zobraziť rozhranie Python.
Ak sa vám v CMD zobrazí chyba, neprepadajte panike, pravdepodobne budete musieť nastaviť premennú prostredia. Môžete postupovať podľa tohto tutoriálu Tu a nastaviť premennú prostredia.
Inštalácia 'pyserial', 'OpenCV "a" numpy "v pythone:
Na inštaláciu týchto modulov použijeme príkaz pip install, Najprv otvorte CMD a zadajte nasledujúce kódy:-
pip install serial
pip install opencv-python> pip install numpy
tieto príkazy nainštalujú potrebné moduly. Teraz sa môžeme presunúť do kódovacej časti …
Krok 3: Skript Python:
Predtým, ako začnete písať kód, najskôr vytvorte nový priečinok, pretože všetok kód musí byť uložený v rovnakom priečinku. Vytvorte si teda nový priečinok, pomenujte ho ľubovoľne. a nižšie si stiahnite „Haarcascade“a vložte ju do priečinka.
Teraz otvorte poznámkový blok a napíšte nižšie uvedený skript. Uložte ho ako „face.py“do rovnakého priečinka ako haarcascade. (Kód, ktorý som poskytol ako súbor, si môžete stiahnuť nižšie):
#importujte všetky požadované moduly
import numpy as np import serial serial import time import sys import cv2 #Setup Komunikačná cesta pre arduino (Na miesto 'COM5' vložte port, ku ktorému je pripojené vaše arduino) arduino = serial. Sériový ('COM5', 9600) čas.spánok (2) vytlačiť („Pripojené k arduinu …“) #import Haarcascade na detekciu tváre face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Zachytenie video streamu z webovej kamery. cap = cv2. VideoCapture (0) #Prečítajte si nasnímaný obrázok, preveďte ho na sivý obrázok a nájdite tváre, pričom 1: ret, img = cap.read () cv2.resizeWindow ('img', 500, 500) cv2.line (obr., (500, 250), (0, 250), (0, 255, 0), 1) cv2.line (obr., (250, 0), (250, 500), (0, 255, 0), 1) cv2.circle (obr., (250, 250), 5, (255, 255, 255), -1) sivá = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) tváre = face_cascade.detectMultiScale (sivá, 1,3) # rozpoznajte tvár a urobte okolo nej obdĺžnik. pre (x, y, w, h) v plochách: cv2.rectangle (obr., (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = sivá [y: y+h, x: x+w] roi_color = img [y: y+h, x: x+w] arr = {y: y+h, x: x+w} print (arr) print ('X: '+str (x)) print (' Y: '+str (y)) print (' x+w: '+str (x+w)) print (' y+h: '+str (y+h)) # Stred roi (obdĺžnik) xx = int (x+(x+h))/2 rr = int (y+(y+w))/2 tlač (xx) tlač (rr) stred = (xx, rr) # odosielanie údajov do arduino print („Center of Rectangle is:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" +data + "'") arduino.write (údaje) #Zobrazte stream. cv2.imshow ('img', img) #Hit 'Esc' na ukončenie vykonávania k = cv2.waitKey (30) & 0xff ak k == 27: break
Akonáhle to bude hotové, pokračujte v písaní kódu pre arduino …
Krok 4: Arduino kód:
Potom, čo je skript pythonu pripravený, potrebujeme skicu arduina na ovládanie serva. Prečítajte si nižšie uvedený kód, vložte ho do Arduino IDE a uložte ako „servo.ino“do rovnakého priečinka ako face.py a haarcascade. nahrajte kód a pokračujte ďalším krokom k vytvoreniu spojení.
(Nižšie uvedený súbor na stiahnutie)
#zahrnúť
Servo servoVer; // Vertikálne servo servo servoHor; // Horizontálne servo int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Pripojte zvislé servo na kolík 5 servoHor.attach (6); // Pripojte horizontálne servo na pin 6 servoVer.write (90); servoHor.write (90); } neplatné Pos () {if (prevX! = x || prevY! = y) {int servoX = mapa (x, 600, 0, 70, 179); int servoY = mapa (y, 450, 0, 179, 95); servoX = min (servoX, 179); servoX = max (servoX, 70); servoY = min (servoY, 179); servoY = max (servoY, 95); servoHor.write (servoX); servoVer.write (servoY); }} void loop () {if (Serial.available ()> 0) {if (Serial.read () == 'X') {x = Serial.parseInt (); if (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} while (Serial.available ()> 0) {Serial.read (); }}}
Krok 5: Mechanizmus nakláňania:-
Použil som rýchlo dostupnú súpravu pre Pan-Tilt. Ak chcete, môžete si ho vyrobiť sami pomocou dreveného/plastového alebo dokonca 3D výtlačku.
Ten, ktorý som použil, je dosť lacný a jeho montáž je veľmi jednoduchá. Ak však chcete návod, ako to urobiť, nájdete ho tu.
Krok 6: Vytvorenie pripojení:
Okruh je veľmi jednoduchý. K arduinu stačí pripojiť dve servá.
- Zvislo na kolík 5
- Horizontálne k pinu 6
- Napájanie na +5V
- Zem na GND
Pozrite sa na schému zapojenia, kde nájdete referencie.
Krok 7: TESTOVANIE:
- Potom, čo je všetko hotové, posledná vec, ktorú musíte urobiť, je otestovať, či to funguje. Ak chcete najskôr otestovať, uistite sa, že sú servá správne pripojené k arduinu a nahráva sa skica.
- Po nahraní náčrtu zatvorte IDE, aby sa port mohol voľne pripojiť k pythonu.
- Teraz otvorte 'face.py' s Python IDLE a stlačením 'F5' spustite kód. Pripojenie k arduinu bude trvať niekoľko sekúnd, a potom by sa vám malo zobraziť okno streamujúce webovú kameru. Teraz kód rozpozná vašu tvár a serva ho budú sledovať a sledovať ho.
- Servo by sa malo pohybovať pri pohybe objektu. Teraz stačí pripevniť kameru k servám, aby sa pohybovala spolu so servami.
Ďakujem.
Odporúča:
ATtiny85 Nositeľné zariadenie na sledovanie vibrácií, sledovanie a programovanie ATtiny85 s Arduino Uno: 4 kroky (s obrázkami)
ATtiny85 Nositeľné hodinky na sledovanie vibrácií a programovanie ATtiny85 s Arduino Uno: Ako vyrobiť hodinky na sledovanie nositeľnej aktivity? Toto je nositeľný gadget navrhnutý tak, aby vibroval, keď zistí stagnáciu. Trávite väčšinu času pri počítači ako ja? Sedíte hodiny bez toho, aby ste si to uvedomovali? Potom je toto zariadenie
Sledovanie a sledovanie malých obchodov: 9 krokov (s obrázkami)
Track & trace pre malé obchody: Jedná sa o systém, ktorý je vytvorený pre malé obchody a ktorý sa má montovať na e-bicykle alebo e-skútre pri dodávkach na krátku vzdialenosť, napríklad v pekárni, ktorá chce dodávať pečivo. Čo znamená Track and Trace? Track and Trace je systém, ktorý používa približne
Zariadenie na sledovanie tváre! Python a Arduino: 5 krokov
Zariadenie na sledovanie tváre! Python a Arduino: Ahoj všetci, ktorí čítate tento návod. Toto je zariadenie na sledovanie tváre, ktoré funguje v knižnici pythonu s názvom OpenCV. Skratka CV znamená „Computer Vision“. Potom som nastavil sériové rozhranie medzi počítačom a Arduino UNO. To teda znamená, že
Pištoľ na sledovanie tváre: 4 kroky
Face Tracking Gun: Tento projekt je rozšírením projektu laserovej vypínacej drôtenej pištole zobrazeného tu-https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ? ALLSTEPS Jediným rozdielom je, že pištoľ sa nespustí laserom, ale
Inatel - SmartHome - SH2Y - Sledovanie systému a sledovanie okolitého prostredia: 6 krokov
Inatel - SmartHome - SH2Y - Sledovanie systému a okolité prostredie: Zobrazenie monitora a systém monitora a systému Ambiente " para Smart Homes, intuitívne monitorujúce aktuálny stav a teplotu "Temperatura", "Luminosidade" e " Senzor