İçindekiler:
- Adım 1: İhtiyacınız Olan Şeyler:
- Adım 2: Python Ortamını Ayarlama:
- 3. Adım: Python Komut Dosyası:
- Adım 4: Arduino Kodu:
- Adım 5: Pan-Tilt Mekanizması:-
- Adım 6: Bağlantıların Yapılması:
- 7. Adım: TEST ETME:
Video: ARDUINO İLE YÜZ TAKİP !!!: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Önceki bir talimatta, 'pyserial' modülünü kullanarak Arduino ve Python arasında nasıl iletişim kurabileceğinizi ve bir LED'i nasıl kontrol edebileceğinizi paylaştım. Görmediyseniz, buradan kontrol edin: ARDUINO & PYTHON ARASINDAKİ İLETİŞİM!
Ve bir nesnenin rengini nasıl tespit edip ekranda takip edebileceğinizi buradan kontrol edin: OPENCV VE PYTHON KULLANARAK RENK TESPİTİ.
Bu Eğitilebilir Kitapta size Arduino ve Python kullanarak yüzleri nasıl izleyeceğinizi ve Kameranın yüzü takip etmesini sağlayacağım. Bu kulağa zor gelebilir ama inanın bana öyle değil, Tek ihtiyacınız olan temel Arduino ve Python bilgisi.
O halde başlayalım…
Adım 1: İhtiyacınız Olan Şeyler:
Gereksinimler minimumdur. Burada ihtiyacınız olan her şeyin parça listesini sağladım:
Donanım Gereksinimi:
- Arduino UNO (Amazon ABD / Amazon AB)
- Web Kamerası (Amazon ABD / Amazon AB)
- Servolar x 2 (Amazon ABD / Amazon AB)
- Breadboard (Amazon ABD / Amazon AB)
- Servo Pan Tilt Kiti (Amazon ABD / Amazon AB)
Yazılım Gereksinimi:
- Python 2.7 (Yüklenmelidir, Linux işletim sistemi genellikle önceden yüklenmiştir)
- OpenCV (Ayrı olarak indirebilir veya 'pip kurulumunu' kullanarak kurabilirsiniz Daha fazla Açıklama)
- pyserial (pip ile kurulabilir)
- dizi.
- Haarcascade.
Her şey toplandıktan sonra Kurulum Adımına geçebiliriz…
Adım 2: Python Ortamını Ayarlama:
Python'u Yüklemek:
Bu yüzden önce Python 2.7'nin çalışır durumda olmasına ihtiyacımız var. Bunu yapmak için önce python 2.7.14'ü indirin ve yükleyin. Doğru kurulup kurulmadığını kontrol etmek için Git: Windows Arama >> "IDLE" yazın >> Enter'a basın. Bir Python Kabuğu açılmalıdır.
VEYA
Aramaya 'CMD' yazın ve Komut İstemi'ni açmak için enter tuşuna basın. CMD yazın >> python ve enter tuşuna basın, Python arayüzü.
CMD'de bir hata görürseniz, Panik yapmayın, muhtemelen ortam değişkenini ayarlamanız gerekir. Ortam Değişkenini ayarlamak için bu öğreticiyi Buradan takip edebilirsiniz.
Python'da 'pyserial', 'OpenCV" ve "numpy" yükleme:
Bu modülleri kurmak için pip kurulumunu kullanacağız, Önce CMD'yi açın ve aşağıdaki kodları yazın: -
pip kurulum seri
pip opencv-python kurulumu >pip kurulumu numpy
bu komutlar gerekli modülleri kuracaktır. Artık kodlama kısmına geçebiliriz…
3. Adım: Python Komut Dosyası:
Kod yazmaya başlamadan önce yapılacak ilk şey, tüm kodun aynı klasörde saklanması gerektiğinden yeni bir klasör oluşturmaktır. Bu yüzden yeni bir klasör oluşturun, istediğiniz herhangi bir ad verin. ve aşağıdan 'Haarcascade'i indirin ve klasöre yapıştırın.
Şimdi not defterini açın ve aşağıda verilen betiği yazın, haarcascade ile aynı klasöre 'face.py' olarak kaydedin. (Dosyayı verdiğim kodu aşağıdan indirebilirsiniz):
#gerekli tüm modülleri içe aktar
numpy as np import seri import time import sys import cv2 #Setup arduino için iletişim yolu ('COM5' yerine arduino'nuzun bağlı olduğu portu koyun) arduino = serial. Serial('COM5', 9600) time.sleep (2) print("Arduino'ya bağlandı…") #yüz algılama için Haarcascade'i içe aktarma face_cascade = cv2. CascadeClassifier('haarcascade_frontalface_default.xml') #Web kamerasından video akışını yakalamak için. cap = cv2. VideoCapture(0) #Yakalanan görüntüyü okuyun, Gray görüntüye dönüştürün ve yüzleri bulun while 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) grey = cv2.cvtColor(img, cv2. COLOR_BGR2GRAY) yüzler = face_cascade.detectMultiScale(gri, 1.3) # yüzü tespit edin ve etrafına bir dikdörtgen yapın. yüzlerde (x, y, w, h) için: cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = grey[y:y+h, x:x+w] roi_color = img[y:y+h, x:x+w] dizi = {y:y+h, x:x+w} yazdır (dizi) yazdır ('X:' +str(x)) print ('Y:'+str(y)) print ('x+w:' +str(x+w)) print ('y+h:' +str(y+h))) # ROi'nin merkezi (Dikdörtgen) xx = int(x+(x+h))/2 yy = int(y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # arduinoya veri gönderme print("Dikdörtgenin Merkezi:", merkez) data = "X{0:d}Y{1:d}Z".format(xx, yy) print ("output = '" +data+ "'") arduino.write(data) #Akışı göster. cv2.imshow('img', img) #Yürütmeyi sonlandırmak için 'Esc' tuşuna basın k = cv2.waitKey(30) & k == 27 ise 0xff: break
Bu yapıldıktan sonra, arduino için kod yazmaya devam edin…
Adım 4: Arduino Kodu:
Python betiği hazır olduktan sonra servoyu kontrol etmek için arduino taslağına ihtiyacımız var. Aşağıdaki koda bakın, Arduino IDE'ye yapıştırın ve face.py ve haarcascade ile aynı klasöre 'servo.ino' olarak kaydedin. kodu yükleyin ve bağlantıları yapmak için bir sonraki adıma geçin.
(Aşağıda verilen indirilebilir dosya)
#Dahil etmek
Servo servoVer; //Dikey Servo Servo servoHor; //Yatay Servo int x; int y; int öncekiX; int önceki; geçersiz kurulum() { Serial.begin(9600); servoVer.attach(5); //Dikey Servoyu Pin 5'e servoHor.attach(6) ekleyin; //Yatay Servo'yu Pin 6 servoVer.write(90)'a ekleyin; servoHor.write(90); } void Pos() { if(öncekiX != x || önceki != y) { int servoX = harita(x, 600, 0, 70, 179); int servoY = map(y, 450, 0, 179, 95); servoX = min(servoX, 179); servoX = maks(servoX, 70); servoY = min(servoY, 179); servoY = maks(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(); konum(); } } while(Serial.available() > 0) { Serial.read(); } } }
Adım 5: Pan-Tilt Mekanizması:-
Pan-Tilt için hazır bir kit kullandım. İsterseniz ahşap/Plastik veya hatta 3D baskı kullanarak kendiniz yapabilirsiniz.
Benim kullandığım oldukça ucuz ve montajı çok kolay. Yine de bunun nasıl yapılacağına dair talimatlar istiyorsanız, onu burada bulabilirsiniz.
Adım 6: Bağlantıların Yapılması:
Devre oldukça basittir. Sadece arduino'ya iki servo takın.
- Pin 5'e Dikey
- Pin 6'ya yatay
- +5V'a kadar güç
- GND'ye toprak
Referans için devre şemasını kontrol edin.
7. Adım: TEST ETME:
- Her şey yapıldıktan sonra yapılacak son şey çalışıp çalışmadığını test etmektir. Test etmek için önce servoların arduino'ya doğru şekilde bağlandığından ve çizimin yüklendiğinden emin olun.
- Çizim yüklendikten sonra, bağlantı noktasının python'a bağlanmak için ücretsiz olması için IDE'yi kapattığınızdan emin olun.
- Şimdi Python IDLE ile 'face.py' dosyasını açın ve kodu çalıştırmak için 'F5' tuşuna basın. Arduino'ya bağlanmak birkaç saniye sürecek ve ardından web kamerasını yayınlayan bir pencere görebilmelisiniz. Şimdi kod yüzünüzü algılayacak ve servolar onu takip edecek.
- Siz nesneyi hareket ettirirken Servo hareket etmelidir. Şimdi sadece kamerayı servolara bağlayın, böylece servolarla birlikte hareket edecek.
Teşekkürler.
Önerilen:
5'i 1 Arada Arduino Robotu - Beni Takip Et - Satır Takip - sumo - Çizim - Engelden Kaçınma: 6 Adım
5'i 1 Arada Arduino Robotu | Beni Takip Et | Satır Takip | sumo | Çizim | Engelden Kaçınma: Bu robot kontrol panosu, bir ATmega328P mikro denetleyici ve bir L293D motor sürücüsü içerir. Elbette bir Arduino Uno kartından farkı yok ama motoru sürmek için başka bir kalkana ihtiyaç duymadığı için daha kullanışlı! Zıplamaktan muaftır
Küçük Mağazalar İçin Takip ve Takip: 9 Adım (Resimli)
Küçük Dükkanlar için Takip ve Takip: Kısa mesafeli teslimatlar için e-bisiklet veya e-scooter üzerine monte edilmesi gereken küçük dükkanlar için yapılmış bir sistemdir, örneğin hamur işleri teslim etmek isteyen bir fırın. Track and Trace ne anlama geliyor?Track and Trace ca tarafından kullanılan bir sistemdir
Yüz Takip Cihazı! Python ve Arduino: 5 Adım
Yüz Takip Cihazı! Python ve Arduino: Bu talimatı okuyan herkese merhaba. Bu, OpenCV adlı bir python kütüphanesi üzerinde çalışan bir yüz takip cihazıdır. CV, 'Bilgisayar Görüşü' anlamına gelir. Sonra bilgisayarım ve Arduino UNO'm arasında bir seri arayüz kurdum. Yani bu şu anlama geliyor
Yüz Takip Tabancası: 4 Adım
Yüz İzleme Tabancası: Bu proje, burada gösterilen lazer tetikli tel tabanca projesinden bir genişletmedir - https://www.instructables.com/id/Building-a-Sentry-Gun-with-Laser-Trip-Wire-System-/ ?ALLSTEPS Tek fark, silahın lazerle değil, lazerle tetiklenecek olmasıdır
Xbox Controller ile Yüz Takip ve Kontrollü Dilenci Robotu - Arduino: 9 Adım (Resimli)
Xbox Controller'dan Yüz Takip ve Kontrollü Dilenci Robotu - Arduino: Bir dilenci robotu yapacağız. Bu robot geçen insanları rahatsız etmeye veya dikkatini çekmeye çalışacaktır. Yüzlerini algılayacak ve onlara lazerler atmaya çalışacak. Robota bir jeton verirseniz, bir şarkı söyler ve dans eder. Robotun bir