Mündəricat:

ARDUINO İSTİFADƏ EDƏN YÜZ TƏQDİM !!!: 7 addım
ARDUINO İSTİFADƏ EDƏN YÜZ TƏQDİM !!!: 7 addım

Video: ARDUINO İSTİFADƏ EDƏN YÜZ TƏQDİM !!!: 7 addım

Video: ARDUINO İSTİFADƏ EDƏN YÜZ TƏQDİM !!!: 7 addım
Video: 7 projects Build LED LCD Alarm Clock using DS1307 with Arduino | Lesson 105 2024, Iyul
Anonim
ARDUINO İSTİFADƏ EDƏN FACE TAKİB !!!
ARDUINO İSTİFADƏ EDƏN FACE TAKİB !!!

Əvvəlki bir təlimatda, 'pyserial' modulundan istifadə edərək Arduino və Python arasında necə ünsiyyət qura biləcəyinizi və bir LED -i idarə edə biləcəyinizi paylaşdım. Görməmisinizsə bura baxın: ARDUINO & PYTHON ARASINDAKİ MÜLAHİBƏ!

Və bir cismin rəngini necə aşkar edə və ekranda izləyə biləcəyinizə buradan baxın: OPENCV VƏ PİTON İSTİFADƏ EDƏN RENK TƏDBİR.

Bu Təlimat kitabında Arduino və Python istifadə edərək üzləri necə izlədiyinizi və Kameranın üzünü izləməsini sizə göstərəcəyəm. Bu çətin görünə bilər, amma inanın ki, belə deyil, sizə lazım olan tək şey Arduino və Python haqqında əsas biliklərdir.

Beləliklə başlayaq…

Addım 1: Ehtiyac duyacağınız şeylər:

Ehtiyac duyacağınız şeylər
Ehtiyac duyacağınız şeylər
Ehtiyac duyacağınız şeylər
Ehtiyac duyacağınız şeylər
Ehtiyac duyacağınız şeylər
Ehtiyac duyacağınız şeylər

Tələblər minimumdur. Burada ehtiyacınız olan hər şeyin bir hissə siyahısını təqdim etdim:

Avadanlıq Tələbi:

  • Arduino UNO (Amazon ABŞ / Amazon AB)
  • Veb Kamera (Amazon ABŞ / Amazon AB)
  • Servos x 2 (Amazon ABŞ / Amazon AB)
  • Çörək paneli (Amazon ABŞ / Amazon AB)
  • Servo Pan Tilt Kit (Amazon US / Amazon EU)

Proqram Tələbləri:

  1. Python 2.7 (Qurulmalıdır, Linux OS ümumiyyətlə əvvəlcədən quraşdırılmışdır)
  2. OpenCV (Ayrı olaraq yükləyə və ya 'pip install' istifadə edərək quraşdıra bilərsiniz Daha sonra izah ediləcək)
  3. pyserial (pip ilə quraşdırıla bilər)
  4. əsəbi
  5. Haarcascade.

Hər şey toplandıqdan sonra Quraşdırma Adımına keçə bilərik …

Addım 2: Python mühitinin qurulması:

Python mühitinin qurulması
Python mühitinin qurulması
Python mühitinin qurulması
Python mühitinin qurulması
Python mühitinin qurulması
Python mühitinin qurulması

Python quraşdırılır:

Beləliklə, əvvəlcə Python 2.7 -nin işə salınması lazımdır. Bunu etmək üçün əvvəlcə python 2.7.14 yükləyin və quraşdırın. Düzgün quraşdırıldığını yoxlamaq üçün Goto: Windows Axtarış >> "IDLE" yazın >> Enter düyməsini basın. Python Shell açılmalıdır.

OR

Axtarışa 'CMD' yazın və Komanda İstemini açmaq üçün enter düyməsini basın. CMD tipində >> python və enter düyməsini basın, Python interfeysi göstərilməlidir.

CMD -də bir səhv görürsünüzsə, çaxnaşma, ehtimal ki, mühit dəyişənini təyin etməlisiniz. Ətraf Mühit Dəyişənini qurmaq üçün buradakı təlimatı izləyə bilərsiniz.

Pythonda 'pyserial', 'OpenCV' və 'numpy' qurmaq:

Bu modulları quraşdırmaq üçün pip install istifadə edəcəyik, Əvvəlcə CMD açın və aşağıdakı kodları yazın:-

pip quraşdırma seriyası

pip quraşdırma opencv-python> pip quraşdırma numpy

bu əmrlər lazımi modulları quraşdıracaq. İndi kodlaşdırma hissəsinə keçə bilərik …

Addım 3: Python Script:

Python Skript
Python Skript

Kod yazmağa başlamazdan əvvəl etməli olduğunuz şey yeni bir qovluq yaratmaqdır, çünki bütün kodların eyni qovluqda saxlanılması lazımdır. Buna görə yeni bir qovluq yaradın, istədiyiniz hər şeyi adlandırın. və aşağıdan 'Haarcascade' yükləyin və qovluğa yapışdırın.

İndi notepad açın və aşağıda verilən skript yazın, haarcascade ilə eyni qovluqda 'face.py' olaraq qeyd edin. (Aşağıdakı fayla verdiyim kodu yükləyə bilərsiniz):

#bütün lazımi modulları idxal edin

np kimi idxal edin serial ardıcıl idxal vaxtı idxal sys idxal cv2 #Quraşdırma arduino üçün əlaqə yolu ('COM5' yerinə arduinonun bağlı olduğu portu qoyun) arduino = serial. Serial ('COM5', 9600) time.sleep (2) çap et ("Arduino ilə əlaqə quruldu …") #üz tanıma üçün Haarcascade idxal face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Videokameradan video axını çəkmək üçün. cap = cv2. VideoCapture (0) #Çəkilən şəkli oxuyun, Boz görüntüyə çevirin və 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) boz = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) üzlər = face_cascade.detectMultiScale (boz, 1.3) # üzü aşkar edin və ətrafında bir düzbucaq düzəldin. üzlərdə (x, y, w, h) üçün: cv2.dörtgen (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = boz [y: y+h, x: x+w] roi_color = img [y: y+h, x: x+w] arr = {y: y+h, x: x+w} çap (arr) çap ('X: '+str (x)) çap (' Y: '+str (y)) çap (' x+w: '+str (x+w)) çap (' y+h: '+str (y+h))) # Roi Mərkəzi (Dikdörtgen) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # məlumatların arduino çapına göndərilməsi ("Dikdörtgenin Mərkəzi:", mərkəz) data = "X {0: d} Y {1: d} Z".format (xx, yy) çap ("çıxış = '" +data + "'") arduino.write (data) #Axını göstər. cv2.imshow ('img', img) #İcranı sonlandırmaq üçün 'Esc' düyməsinə k = cv2.waitKey (30) & 0xff əgər k == 27: break

Bunu etdikdən sonra arduino kodunu yazmağa davam edin …

Addım 4: Arduino Kodu:

Arduino Kodu
Arduino Kodu

Python skript hazır olduqdan sonra servo idarə etmək üçün arduino eskizinə ehtiyacımız var. Aşağıdakı kodu daxil edin, Arduino IDE -ə yapışdırın və face.py və haarcascade ilə eyni qovluqda 'servo.ino' olaraq qeyd edin. kodu yükləyin və əlaqələr qurmaq üçün növbəti addıma keçin.

(Yüklənə bilən fayl aşağıda verilmişdir)

#daxil edin

Servo servoVer; // Şaquli Servo Servo servoHor; // Yatay Servo int x; int y; int prevX; int əvvəlki; void setup () {Serial.begin (9600); servoVer.attach (5); // 5 nömrəli servoHor.attach -a Vertikal Servo əlavə edin (6); // 6 nömrəli servoVer.write -ə Yatay Servo əlavə edin (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = map (x, 600, 0, 70, 179); int servoY = xəritə (y, 450, 0, 179, 95); servoX = min (servoX, 179); servoX = maksimum (servoX, 70); servoY = min (servoY, 179); servoY = maksimum (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 (); }} isə (Serial.available ()> 0) {Serial.read (); }}}

Addım 5: Pan-Tilt Mexanizmi:-

Pan-Tilt Mexanizmi
Pan-Tilt Mexanizmi
Pan-Tilt Mexanizmi
Pan-Tilt Mexanizmi

Pan-Tilt üçün hazır olan dəstdən istifadə etdim. İstəyirsinizsə, ağacdan/Plastikdən və ya hətta 3D çapdan istifadə edərək özünüz edə bilərsiniz.

İstifadə etdiyim olduqca ucuzdur və yığmaq çox asandır. Ancaq bunun necə ediləcəyi ilə bağlı təlimatlar istəyirsinizsə, burada tapa bilərsiniz.

Addım 6: Bağlantılar qurun:

Əlaqələr qurmaq
Əlaqələr qurmaq
Əlaqələr qurmaq
Əlaqələr qurmaq

Dövrə olduqca sadədir. Arduinoya iki servo əlavə edin.

  1. Pin 5 -ə dik
  2. Pin 6 -dan üfüqi
  3. +5V -a qədər güc
  4. GND üçün əsas

İstinad üçün dövrə diaqramını yoxlayın.

Addım 7: TEST:

  • Hər şey bitdikdən sonra ən son işin olub olmadığını yoxlamaqdır. Test etmək üçün əvvəlcə servoların arduinoya düzgün bağlandığından və eskizin yükləndiyindən əmin olun.
  • Eskiz yükləndikdən sonra IDE -ni bağladığınızdan əmin olun ki, liman pythona qoşulsun.
  • İndi Python IDLE ilə 'face.py' açın və kodu işə salmaq üçün 'F5' düyməsini basın. Arduinoya qoşulmaq bir neçə saniyə çəkəcək və sonra veb kameranı axan bir pəncərə görməliyik. İndi kod üzünüzü aşkar edəcək və servolar onu izləyəcək.
  • Obyekti hərəkət etdirərkən Servo hərəkət etməlidir. İndi kameranı servolara bağlayın ki, servo ilə birlikdə hərəkət etsin.

Çox sağ ol.

Tövsiyə: