Სარჩევი:

სახის თვალყურის დევნება ARDUINO !!!: 7 ნაბიჯი
სახის თვალყურის დევნება ARDUINO !!!: 7 ნაბიჯი

ვიდეო: სახის თვალყურის დევნება ARDUINO !!!: 7 ნაბიჯი

ვიდეო: სახის თვალყურის დევნება ARDUINO !!!: 7 ნაბიჯი
ვიდეო: ვინ მადევნებს თვალყურს ფარულად და რა მიზნით?🗝🎭🔮💎 2024, ნოემბერი
Anonim
სახის თვალყურის დევნება არდუინოს გამოყენებით !!!
სახის თვალყურის დევნება არდუინოს გამოყენებით !!!

წინა ინსტრუქციებში მე გაგიზიარეთ, თუ როგორ შეგიძლიათ დაუკავშირდეთ Arduino– ს და Python– ს შორის „pyserial“მოდულის გამოყენებით და გააკონტროლოთ LED. თუ არ გინახავთ, გადაამოწმეთ აქ: კომუნიკაცია არდუინოს და პაითონს შორის!

და როგორ შეგიძლიათ აღმოაჩინოთ ობიექტის ფერი და თვალყური ადევნოთ მას ეკრანზე, შეამოწმეთ ეს აქ: ფერის ამოცნობა OPENCV და PYTHON- ის გამოყენებით.

ამ ინსტრუქციებში მე გაჩვენებთ თუ როგორ აკონტროლოთ სახეები Arduino & Python– ის გამოყენებით და აიძულოთ კამერა დაიცვას სახე. ეს შეიძლება რთულად ჟღერდეს, მაგრამ მერწმუნეთ ეს ასე არ არის, ყველაფერი რაც თქვენ გჭირდებათ არის არდუინოს და პითონის ძირითადი ცოდნა.

ასე რომ დავიწყოთ…

ნაბიჯი 1: ის, რაც დაგჭირდებათ:

ნივთები რაც დაგჭირდებათ
ნივთები რაც დაგჭირდებათ
ნივთები რაც დაგჭირდებათ
ნივთები რაც დაგჭირდებათ
ნივთები რაც დაგჭირდებათ
ნივთები რაც დაგჭირდებათ

მოთხოვნები მინიმალურია. აქ მე მოგაწოდეთ ყველაფერი, რაც გჭირდებათ:

აპარატურის მოთხოვნა:

  • Arduino UNO (ამაზონი აშშ / ამაზონი ევროკავშირი)
  • ვებ კამერა (ამაზონი აშშ / ამაზონი ევროკავშირი)
  • Servos x 2 (Amazon US / Amazon EU)
  • პურის დაფა (ამაზონი აშშ / ამაზონი ევროკავშირი)
  • Servo Pan Tilt Kit (Amazon US / Amazon EU)

პროგრამული უზრუნველყოფის მოთხოვნა:

  1. პითონი 2.7 (უნდა იყოს დაინსტალირებული, Linux OS– ს ჩვეულებრივ აქვს წინასწარ დაინსტალირებული)
  2. OpenCV (შეგიძლიათ გადმოწეროთ ცალკე ან დააინსტალიროთ „pip install“- ის გამოყენებით ახსნილი შემდგომი)
  3. pyserial (შეიძლება დამონტაჟდეს პიპით)
  4. დაბუჟებული
  5. ჰარკასკადი.

მას შემდეგ რაც ყველაფერი შეგროვდება, ჩვენ შეგვიძლია გადავიდეთ ინსტალაციის ეტაპზე…

ნაბიჯი 2: პითონის გარემოს დაყენება:

პითონის გარემოს დაყენება
პითონის გარემოს დაყენება
პითონის გარემოს დაყენება
პითონის გარემოს დაყენება
პითონის გარემოს დაყენება
პითონის გარემოს დაყენება

პითონის დაყენება:

ასე რომ, პირველ რიგში ჩვენ გვჭირდება Python 2.7 და მუშაობს. ამისათვის ჯერ გადმოწერეთ და დააინსტალირეთ პითონი 2.7.14. იმის შესამოწმებლად, სწორად არის თუ არა დაინსტალირებული გადადით: Windows Search >> ჩაწერეთ "IDLE" >> დააჭირეთ Enter. პითონის შელი უნდა გამოჩნდეს.

ან

ძებნისას ჩაწერეთ 'CMD' და დააჭირეთ Enter- ს, რათა გაიხსნას ბრძანების სტრიქონი. CMD ტიპის >> პითონი და დააჭირეთ enter, პითონის ინტერფეისი უნდა გამოჩნდეს.

თუ თქვენ ხედავთ შეცდომას CMD– ში, ნუ დაპანიკდებით, თქვენ ალბათ დაგჭირდებათ გარემოს ცვლადის დაყენება. თქვენ შეგიძლიათ მიყევით ამ გაკვეთილს აქ გარემოს ცვლადის შესაქმნელად.

პითონში "pyserial", "OpenCV" და "numpy" დაყენება:

ამ მოდულების დასაყენებლად ჩვენ გამოვიყენებთ pip install– ს, ჯერ გახსენით CMD და ჩაწერეთ შემდეგი კოდები:-

pip ინსტალაციის სერიული

pip install opencv-python> pip install numpy

ეს ბრძანებები დააინსტალირებს საჭირო მოდულებს. ახლა ჩვენ შეგვიძლია გადავიდეთ კოდირების ნაწილზე…

ნაბიჯი 3: პითონის სკრიპტი:

პითონის სკრიპტი
პითონის სკრიპტი

კოდის წერის დაწყებამდე პირველი რაც უნდა გააკეთოთ არის ახალი საქაღალდის შექმნა, რადგან ყველა კოდი უნდა იყოს შენახული იმავე საქაღალდეში. ასე რომ შექმენით ახალი საქაღალდე, დაასახელეთ ის რაც გსურთ. და გადმოწერეთ 'Haarcascade' ქვემოდან და ჩასვით საქაღალდეში.

ახლა გახსენით ბლოკნოტი და ჩაწერეთ ქვემოთ მოცემული სკრიპტი, შეინახეთ როგორც 'face.py' იმავე საქაღალდეში, როგორც haarcascade. (თქვენ შეგიძლიათ გადმოწეროთ ქვემოთ მოყვანილი ფაილი):

#იმპორტი ყველა საჭირო მოდული

იმპორტი numpy როგორც np იმპორტი სერიული იმპორტი დრო იმპორტი sys იმპორტი cv2 #დაყენება საკომუნიკაციო გზა arduino– სთვის ("COM5" - ის ნაცვლად დააყენეთ პორტი, რომელთანაც თქვენი arduino არის დაკავშირებული) arduino = სერიული. სერიული ("COM5", 9600) დრო. ძილი (2) ბეჭდვა ("დაკავშირებულია არდუინოსთან …") #Haarcascade- ის იმპორტირება სახის გამოვლენისთვის face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #ვიდეოკამერის ვიდეო ნაკადის გადასაღებად. cap = cv2. VideoCapture (0) #წაიკითხეთ გადაღებული სურათი, გადააკეთეთ იგი ნაცრისფერ გამოსახულებად და იპოვეთ სახეები 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) ნაცრისფერი = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) სახეები = face_cascade.detectMultiScale (ნაცრისფერი, 1.3) # აღმოაჩინეთ სახე და გააკეთეთ ოთხკუთხედი მის გარშემო. for (x, y, w, h) სახეებში: cv2. მართკუთხედი (img, (x, y), (x+w, y+h), (0, 255, 0), 5) roi_gray = ნაცრისფერი [y: y+h, x: x+w] roi_color = img [y: y+h, x: x+w] arr = {y: y+h, x: x+w} ბეჭდვა (arr) ბეჭდვა ('X: '+str (x)) print (' Y: '+str (y)) print (' x+w: '+str (x+w)) print (' y+h: '+str (y+h)) # როის ცენტრი (მართკუთხედი) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 ბეჭდვა (xx) ბეჭდვა (yy) ცენტრი = (xx, yy) # მონაცემების გაგზავნა arduino print- ში ("მართკუთხედის ცენტრი არის:", ცენტრი) მონაცემები = "X {0: d} Y {1: d} Z".ფორმატი (xx, yy) ბეჭდვა ("output = '" +მონაცემები + "'") arduino.write (მონაცემები) #ნაკადი ნაკადი. cv2.imshow ('img', img) #დარტყმა 'Esc' შესრულების შესაწყვეტად k = cv2.waitKey (30) & 0xff თუ k == 27: შესვენება

ამის დასრულების შემდეგ გადადით arduino– ს კოდის დასაწერად…

ნაბიჯი 4: Arduino კოდი:

არდუინოს კოდი
არდუინოს კოდი

მას შემდეგ, რაც პითონის სკრიპტი მზად იქნება, ჩვენ გვჭირდება არდუინოს ესკიზი, რომ გავაკონტროლოთ სერვო. იხილეთ ქვემოთ კოდი, ჩასვით Arduino IDE- ში და შეინახეთ როგორც 'servo.ino' იმავე საქაღალდეში, როგორც face.py და haarcascade. ატვირთეთ კოდი და გადადით შემდეგ საფეხურზე კავშირების დასამყარებლად.

(გადმოსაწერი ფაილი მოცემულია ქვემოთ)

#ჩართეთ

Servo servoVer; // ვერტიკალური servo servo servoHor; // ჰორიზონტალური Servo int x; int y; int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // მიამაგრეთ ვერტიკალური სერვო პინზე 5 servoHor.attach (6); // მიამაგრეთ Horizontal Servo Pin 6 servoVer.write (90); servoHor.write (90); } void Pos () {if (prevX! = x || prevY! = y) {int servoX = რუკა (x, 600, 0, 70, 179); int servoY = რუკა (y, 450, 0, 179, 95); servoX = წთ (servoX, 179); servoX = max (servoX, 70); servoY = წთ (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 (); პოზი (); }} while (Serial.available ()> 0) {Serial.read (); }}}

ნაბიჯი 5: გადახვევის მექანიზმი:-

Pan-Tilt მექანიზმი
Pan-Tilt მექანიზმი
Pan-Tilt მექანიზმი
Pan-Tilt მექანიზმი

მე გამოვიყენე ადვილად ხელმისაწვდომი ნაკრები Pan-Tilt– ისთვის. თუ გსურთ, შეგიძლიათ თავად გააკეთოთ ერთი ხის/პლასტმასის ან თუნდაც 3D ბეჭდვის გამოყენებით.

ის, რაც მე გამოვიყენე, საკმაოდ იაფია და მისი აწყობა ძალიან ადვილია. მაგრამ თუ გსურთ ინსტრუქციები, თუ როგორ უნდა გააკეთოთ ეს, შეგიძლიათ იპოვოთ აქ.

ნაბიჯი 6: კავშირების დამყარება:

კავშირების დამყარება
კავშირების დამყარება
კავშირების დამყარება
კავშირების დამყარება

წრე საკმაოდ მარტივია. უბრალოდ მიამაგრეთ ორი სერდო არდუინოს.

  1. ვერტიკალურად pin 5 -ზე
  2. ჰორიზონტალურად პინზე 6
  3. სიმძლავრე +5 ვ
  4. მიწა GND– მდე

ცნობისთვის შეამოწმეთ წრიული დიაგრამა.

ნაბიჯი 7: ტესტირება:

  • მას შემდეგ რაც ყველაფერი კეთდება, ბოლოა შესამოწმებელი მუშაობს თუ არა. შესამოწმებლად ჯერ დარწმუნდით, რომ servos სწორად არის დაკავშირებული arduino– სთან და ესკიზი ატვირთულია.
  • ესკიზის ატვირთვის შემდეგ დარწმუნდით, რომ დახურეთ IDE, ასე რომ პორტი თავისუფალია პითონთან დასაკავშირებლად.
  • ახლა გახსენით 'face.py' Python IDLE- ით და დააჭირეთ 'F5' კოდის გასაშვებად. არდუინოსთან დაკავშირებას რამდენიმე წამი დასჭირდება და შემდეგ თქვენ უნდა გქონდეთ საშუალება ნახოთ ვებ კამერის ნაკადიანი ფანჯარა. ახლა კოდი გამოავლენს თქვენს სახეს და სერვისები თვალყურს ადევნებენ მას.
  • სერვო უნდა გადაადგილდეს ობიექტის გადაადგილებისას. ახლა უბრალოდ მიამაგრეთ კამერა სერვოზე, რათა ის გადავიდეს სერვებთან ერთად.

Გმადლობთ.

გირჩევთ: