Სარჩევი:
- ნაბიჯი 1: ის, რაც დაგჭირდებათ:
- ნაბიჯი 2: პითონის გარემოს დაყენება:
- ნაბიჯი 3: პითონის სკრიპტი:
- ნაბიჯი 4: Arduino კოდი:
- ნაბიჯი 5: გადახვევის მექანიზმი:-
- ნაბიჯი 6: კავშირების დამყარება:
- ნაბიჯი 7: ტესტირება:
ვიდეო: სახის თვალყურის დევნება ARDUINO !!!: 7 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:16
წინა ინსტრუქციებში მე გაგიზიარეთ, თუ როგორ შეგიძლიათ დაუკავშირდეთ 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)
პროგრამული უზრუნველყოფის მოთხოვნა:
- პითონი 2.7 (უნდა იყოს დაინსტალირებული, Linux OS– ს ჩვეულებრივ აქვს წინასწარ დაინსტალირებული)
- OpenCV (შეგიძლიათ გადმოწეროთ ცალკე ან დააინსტალიროთ „pip install“- ის გამოყენებით ახსნილი შემდგომი)
- pyserial (შეიძლება დამონტაჟდეს პიპით)
- დაბუჟებული
- ჰარკასკადი.
მას შემდეგ რაც ყველაფერი შეგროვდება, ჩვენ შეგვიძლია გადავიდეთ ინსტალაციის ეტაპზე…
ნაბიჯი 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– ისთვის. თუ გსურთ, შეგიძლიათ თავად გააკეთოთ ერთი ხის/პლასტმასის ან თუნდაც 3D ბეჭდვის გამოყენებით.
ის, რაც მე გამოვიყენე, საკმაოდ იაფია და მისი აწყობა ძალიან ადვილია. მაგრამ თუ გსურთ ინსტრუქციები, თუ როგორ უნდა გააკეთოთ ეს, შეგიძლიათ იპოვოთ აქ.
ნაბიჯი 6: კავშირების დამყარება:
წრე საკმაოდ მარტივია. უბრალოდ მიამაგრეთ ორი სერდო არდუინოს.
- ვერტიკალურად pin 5 -ზე
- ჰორიზონტალურად პინზე 6
- სიმძლავრე +5 ვ
- მიწა GND– მდე
ცნობისთვის შეამოწმეთ წრიული დიაგრამა.
ნაბიჯი 7: ტესტირება:
- მას შემდეგ რაც ყველაფერი კეთდება, ბოლოა შესამოწმებელი მუშაობს თუ არა. შესამოწმებლად ჯერ დარწმუნდით, რომ servos სწორად არის დაკავშირებული arduino– სთან და ესკიზი ატვირთულია.
- ესკიზის ატვირთვის შემდეგ დარწმუნდით, რომ დახურეთ IDE, ასე რომ პორტი თავისუფალია პითონთან დასაკავშირებლად.
- ახლა გახსენით 'face.py' Python IDLE- ით და დააჭირეთ 'F5' კოდის გასაშვებად. არდუინოსთან დაკავშირებას რამდენიმე წამი დასჭირდება და შემდეგ თქვენ უნდა გქონდეთ საშუალება ნახოთ ვებ კამერის ნაკადიანი ფანჯარა. ახლა კოდი გამოავლენს თქვენს სახეს და სერვისები თვალყურს ადევნებენ მას.
- სერვო უნდა გადაადგილდეს ობიექტის გადაადგილებისას. ახლა უბრალოდ მიამაგრეთ კამერა სერვოზე, რათა ის გადავიდეს სერვებთან ერთად.
Გმადლობთ.
გირჩევთ:
მოძრაობის თვალყურის დევნება MPU-6000 და ნაწილაკების ფოტონის გამოყენებით: 4 ნაბიჯი
მოძრაობის თვალყურის დევნება MPU-6000 და ნაწილაკების ფოტონის გამოყენებით: MPU-6000 არის 6 ღერძიანი მოძრაობის თვალთვალის სენსორი, რომელსაც აქვს 3 ღერძიანი ამაჩქარებელი და 3 ღერძიანი გიროსკოპი. ამ სენსორს შეუძლია ეფექტურად აკონტროლოს ობიექტის ზუსტი მდებარეობა და მდებარეობა სამგანზომილებიან სიბრტყეში. მისი დასაქმება შესაძლებელია
ადამიანის თვალის მოძრაობის თვალყურის დევნება: 6 ნაბიჯი
ადამიანის თვალის მოძრაობის თვალყურის დევნება: ეს პროექტი მიზნად ისახავს ადამიანის თვალის მოძრაობის დაფიქსირებას და აჩვენებს მის მოძრაობას თვალის ფორმაში მოთავსებული LED ნათურების ნაკრებზე. ამ ტიპის პროექტს პოტენციურად ბევრი გამოყენება ექნება რობოტიკის სფეროში და კონკრეტულად ჰუმას
მოძრაობის თვალყურის დევნება MPU-6000 და Arduino Nano გამოყენებით: 4 ნაბიჯი
მოძრაობის თვალყურის დევნება MPU-6000 და Arduino Nano: MPU-6000 არის 6 ღერძიანი მოძრაობის თვალთვალის სენსორი, რომელსაც აქვს 3 ღერძიანი ამაჩქარებელი და 3 ღერძიანი გიროსკოპი. ამ სენსორს შეუძლია ეფექტურად აკონტროლოს ობიექტის ზუსტი მდებარეობა და მდებარეობა სამგანზომილებიან სიბრტყეში. მისი დასაქმება შესაძლებელია
მიკრო: ბიტი MU Vision Sensor - ობიექტის თვალყურის დევნება: 7 ნაბიჯი
Micro: bit MU Vision Sensor - Object Tracking: ასე რომ, ამ ინსტრუქციურად ჩვენ ვაპირებთ დავიწყოთ Smart Car– ის პროგრამირება, რომელსაც ჩვენ ვაშენებთ ამ ინსტრუქციურად და რომ ჩვენ დავაყენებთ MU ხედვის სენსორს ამ ინსტრუქტაჟში. ჩვენ ვაპირებთ მიკრო პროგრამირებას: ცოტა მარტივი ობიექტის თვალყურის დევნებით, ასე რომ
სახის თვალყურის დევნება და ღიმილი ჰელოუინის რობოტების გამოვლენა: 8 ნაბიჯი (სურათებით)
სახის თვალყურის დევნება და ღიმილი ჰელოუინის რობოტების გამოვლენა: ჰელოუინი მოდის! ჩვენ გადავწყვიტეთ ავაშენოთ რაღაც მაგარი. გაიცანი Ghosty და Skully რობოტები. მათ შეუძლიათ დაიცვან შენი სახე და იციან როდის იცინი, როცა იცინი შენთან ერთად! ეს პროექტი არის iRobbie აპლიკაციის გამოყენების კიდევ ერთი მაგალითი, რომელიც გარდაქმნის iPhone– ს