Tartalomjegyzék:
- 1. lépés: Amire szüksége lesz:
- 2. lépés: A Python környezet beállítása:
- 3. lépés: Python -szkript:
- 4. lépés: Arduino kód:
- 5. lépés: Pan-Tilt mechanizmus:-
- 6. lépés: Kapcsolatok létrehozása:
- 7. lépés: TESZTELÉS:
Videó: ARCKÖVETÉS ARDUINO HASZNÁLATÁVAL !!!: 7 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
Egy korábbi utasításban megosztottam, hogyan kommunikálhat az Arduino és a Python között a 'pyserial' modul használatával és vezérelhet egy LED -et. Ha még nem látta, nézze meg itt: ARDUINO & PYTHON KÖZLEMÉNYE!
És hogyan lehet észlelni egy objektum színét és nyomon követni azt a képernyőn, nézze meg itt: SZÍNFELISMERÉS OPENCV ÉS PYTHON HASZNÁLATÁVAL.
Ebben az utasításban megmutatom, hogyan kell nyomon követni az arcokat az Arduino és a Python segítségével, és hogy a kamera kövesse az arcot. Ez nehéznek tűnhet, de higgye el, hogy nem az. Csak az Arduino és a Python alapvető ismereteire van szüksége.
Tehát kezdjük…
1. lépés: Amire szüksége lesz:
A követelmények minimálisak. Itt megadtam az alkatrészek listáját, amire szüksége van:
Hardverkövetelmény:
- Arduino UNO (Amazon USA / Amazon EU)
- Webkamera (Amazon USA / Amazon EU)
- Szervók x 2 (Amazon USA / Amazon EU)
- Kenyeretábla (Amazon USA / Amazon EU)
- Szervo pan billenő készlet (Amazon USA / Amazon EU)
Szoftverkövetelmény:
- Python 2.7 (telepíteni kell, a Linux operációs rendszer általában előre telepíti)
- OpenCV (Letöltheti külön, vagy telepítheti a „pip install” használatával További magyarázat)
- pyserial (pipával felszerelhető)
- szar.
- Haarcascade.
Miután mindent összegyűjtöttünk, folytathatjuk a telepítési lépést…
2. lépés: A Python környezet beállítása:
A Python telepítése:
Tehát először a Python 2.7 programra van szükség. Ehhez először töltse le és telepítse a python 2.7.14 -et. A telepítés helyességének ellenőrzéséhez lépjen: Windows Keresés >> Írja be az "IDLE" >> Nyomja meg az Enter billentyűt. Meg kell jelennie egy Python Shellnek.
VAGY
A keresés során írja be a "CMD" parancsot, és nyomja meg az Enter billentyűt a parancssor megnyitásához. CMD típusban >> python és nyomja meg az Enter billentyűt, a Python felületnek meg kell jelennie.
Ha hibát lát a CMD -ben, ne essen pánikba, valószínűleg környezeti változót kell beállítania. A környezeti változó beállításához kövesse ezt az oktatóanyagot.
A 'pyserial', 'OpenCV' és a 'numpy' telepítése a pythonba:
Ezen modulok telepítéséhez a pip install, Először nyissa meg a CMD-t, és írja be a következő kódokat:-
pip install serial
pip install opencv-python> pip install numpy
ezek a parancsok telepítik a szükséges modulokat. Most áttérhetünk a kódoló részre…
3. lépés: Python -szkript:
Mielőtt elkezdené írni a kódot, először létre kell hoznia egy új mappát, mivel az összes kódot ugyanabban a mappában kell tárolni. Tehát hozzon létre egy új mappát, nevezzen el bármit. és töltse le a „Haarcascade” alulról, és illessze be a mappába.
Most nyissa meg a Jegyzettömböt, és írja be az alábbi szkriptet. Mentse el 'face.py' néven ugyanabba a mappába, mint a haarcascade. (Az általam megadott kódot letöltheti az alábbi fájlból):
#importálja az összes szükséges modult
import numpy mint np import sorozat importálás ideje import sys import cv2 #Setup Kommunikációs útvonal az arduino számára (A „COM5” helyett adja meg azt a portot, amelyhez az arduino csatlakozik) arduino = serial. Serial („COM5”, 9600) time.sleep (2) print ("Connected to arduino…") #importing a Haarcascade arcfelismerésre face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #A videofolyam webkameráról történő rögzítéséhez. cap = cv2. VideoCapture (0) #Olvassa el a rögzített képet, alakítsa át szürke színűvé, és keressen arcokat, míg 1: ret, img = cap.read () cv2.resizeWindow ('img', 500, 500) cv2.line (img, (500, 250), (0, 250), (0, 255, 0), 1) cv2.line (img, (250, 0), (250, 500), (0, 255, 0), 1) cv2.circle (img, (250, 250), 5, (255, 255, 255), -1) szürke = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) arcok = face_cascade.detectMultiScale (szürke, 1.3) # észleli az arcot, és téglalapot készít köré. (x, y, w, h) esetén arcon: cv2.téglalap (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = szürke [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))) # Roi középpontja (téglalap) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # adatok küldése arduino printre ("A téglalap központja:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" +data + "" ") arduino.write (data) #A stream megjelenítése. cv2.imshow ('img', img) #Hit 'Esc' a végrehajtás befejezéséhez k = cv2.waitKey (30) & 0xff, ha k == 27: break
Ha ez megtörtént, írja le az arduino kódját…
4. lépés: Arduino kód:
Miután a python parancsfájl készen áll, szükségünk van arduino vázlatra a szervó vezérléséhez. Olvassa el az alábbi kódot, illessze be az Arduino IDE -be, és mentse el „servo.ino” néven ugyanabba a mappába, mint a face.py és a haarcascade. töltse fel a kódot, és folytassa a következő lépéssel a kapcsolatok létrehozásához.
(Az alábbiakban letölthető fájl)
#befoglalni
Szervo szervoVer; // Függőleges szervo szervo szervoHor; // Vízszintes szervo int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Csatlakoztassa a függőleges szervót az 5 -ös csaphoz servoHor.attach (6); // Csatlakoztassa a vízszintes szervót a 6. csaphoz servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = térkép (x, 600, 0, 70, 179); int servoY = térkép (y, 450, 0, 179, 95); servoX = min (servoX, 179); servoX = max (servoX, 70); servoY = min (servoY, 179); szervoY = max (szervoY, 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 (); Pozíció(); }} while (Serial.available ()> 0) {Serial.read (); }}}
5. lépés: Pan-Tilt mechanizmus:-
Egy könnyen elérhető készletet használtam a Pan-Tilthez. Ha szeretné, saját maga készítheti el fa/műanyag vagy akár 3D nyomtatással.
Az általam használt nagyon olcsó, és nagyon könnyen összeszerelhető. Ha azonban utasításokat szeretne, hogyan kell ezt megtenni, akkor itt megtalálja.
6. lépés: Kapcsolatok létrehozása:
Az áramkör nagyon egyszerű. Csatlakoztasson két szervót az arduino -hoz.
- Függőleges az 5 -ös csaphoz
- Vízszintes a 6. csaphoz
- Teljesítmény +5V
- Földelés a GND -hez
Ellenőrizze a kapcsolási rajzot.
7. lépés: TESZTELÉS:
- Miután minden kész, az utolsó dolog, amit meg kell vizsgálni, hogy működik -e. A teszteléshez először győződjön meg arról, hogy a szervók megfelelően csatlakoznak az arduino -hoz, és a vázlat feltöltésre került.
- A vázlat feltöltése után zárja be az IDE -t, hogy a port szabadon kapcsolódhasson a pythonhoz.
- Most nyissa meg a "face.py" fájlt a Python IDLE segítségével, és nyomja meg az "F5" gombot a kód futtatásához. Néhány másodpercig tart az arduino -hoz való csatlakozás, majd látnia kell egy ablakot, amely a webkamerát közvetíti. Most a kód felismeri az arcát, és a szervók nyomon követik.
- A szervónak mozognia kell az objektum mozgatásakor. Most csak csatlakoztassa a kamerát a szervókhoz, hogy együtt mozogjon a szervókkal.
Köszönöm.
Ajánlott:
A gyorsulás felügyelete a Raspberry Pi és az AIS328DQTR használatával Python használatával: 6 lépés
A gyorsulás nyomon követése a Raspberry Pi és az AIS328DQTR használatával Python használatával: A gyorsulás véges, azt hiszem, a fizika egyes törvényei szerint.- Terry Riley A gepárd elképesztő gyorsulást és gyors sebességváltozásokat használ üldözés közben. A leggyorsabb lény a parton időnként kihasználja csúcssebességét a zsákmány elkapására. Az
Arckövetés és mosolyfelismerő Halloween robotok: 8 lépés (képekkel)
Arckövetés és mosolyfelismerő Halloween robotok: Halloween közeleg! Úgy döntöttünk, hogy valami klasszat építünk. Ismerje meg a Ghosty és a Skully robotokat. Követhetik az arcodat, és tudják, mikor mosolyogsz, hogy veled nevessenek! Ez a projekt egy másik példa az iRobbie alkalmazás használatára, amely átalakítja az iPhone -t
Neopixel Ws2812 Rainbow LED izzás M5stick-C - Szivárvány futtatása a Neopixel Ws2812 készüléken az M5stack M5stick C használatával Arduino IDE használatával: 5 lépés
Neopixel Ws2812 Rainbow LED izzás M5stick-C | Szivárvány futása a Neopixel Ws2812-en az M5stack M5stick C használatával Arduino IDE használatával: Sziasztok, srácok, ebben az oktatási útmutatóban megtanuljuk, hogyan kell használni a neopixel ws2812 LED-eket, vagy led szalagot vagy led mátrixot vagy led gyűrűt m5stack m5stick-C fejlesztőtáblával Arduino IDE-vel, és elkészítjük szivárványos mintát vele
RF 433MHZ rádióvezérlés HT12D HT12E használatával - Rf távirányító készítése HT12E és HT12D használatával 433 MHz -en: 5 lépés
RF 433MHZ rádióvezérlés HT12D HT12E használatával | Rf távirányító létrehozása HT12E és HT12D használatával 433 MHz -en: Ebben az oktatóanyagban megmutatom, hogyan készítsünk RADIO távirányítót a 433 MHz -es adó vevőmodul használatával HT12E kódolással & HT12D dekódoló IC. Ebben az utasításban nagyon olcsó komponenseket küldhet és fogadhat, mint például: HT
Vezeték nélküli távirányító 2,4 GHz -es NRF24L01 modul használatával Arduino - Nrf24l01 4 csatorna / 6 csatornás adó vevő négykópás - Rc Helikopter - Rc sík az Arduino használatával: 5 lépés (képekkel)
Vezeték nélküli távirányító 2,4 GHz -es NRF24L01 modul használatával Arduino | Nrf24l01 4 csatorna / 6 csatornás adó vevő négykópás | Rc Helikopter | Rc sík Arduino használatával: Rc autó működtetése | Quadcopter | Drone | RC sík | RC csónak, mindig szükségünk van vevőre és adóra, tegyük fel, hogy az RC QUADCOPTER esetében szükségünk van egy 6 csatornás adóra és vevőre, és az ilyen típusú TX és RX túl költséges, ezért készítünk egyet