Πίνακας περιεχομένων:

ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΠΡΟΣΩΠΟΥ ΧΡΗΣΗ ARDUINO !!!: 7 Βήματα
ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΠΡΟΣΩΠΟΥ ΧΡΗΣΗ ARDUINO !!!: 7 Βήματα

Βίντεο: ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΠΡΟΣΩΠΟΥ ΧΡΗΣΗ ARDUINO !!!: 7 Βήματα

Βίντεο: ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΠΡΟΣΩΠΟΥ ΧΡΗΣΗ ARDUINO !!!: 7 Βήματα
Βίντεο: Ξύλο μεταξύ κάμεραμαν του ΣΚΑΙ και πολίτη 2024, Ιούλιος
Anonim
ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΠΡΟΣΩΠΟΥ ΧΡΗΣΗ ARDUINO !!!
ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΠΡΟΣΩΠΟΥ ΧΡΗΣΗ ARDUINO !!!

Σε μια προηγούμενη διδάσκουσα, μοιράστηκα πώς μπορείτε να επικοινωνείτε μεταξύ Arduino και Python χρησιμοποιώντας τη μονάδα "pyserial" και να ελέγχετε ένα LED. Αν δεν το έχετε δει, ελέγξτε το εδώ: ΕΠΙΚΟΙΝΩΝΙΑ ΜΕΤΑΞΥ ARDUINO & PYTHON!

Και πώς μπορείτε να ανιχνεύσετε το χρώμα ενός αντικειμένου και να το παρακολουθήσετε στην οθόνη, ελέγξτε το εδώ: ΧΡΩΜΑΤΙΚΗ ΑΝΤΙΔΡΑΣΗ ΧΡΗΣΗ OPENCV ΚΑΙ PYTHON.

Σε αυτό το Instructable θα σας δείξω πώς να παρακολουθείτε πρόσωπα χρησιμοποιώντας Arduino & Python και να κάνετε την κάμερα να ακολουθεί το πρόσωπο. Αυτό μπορεί να ακούγεται δύσκολο, αλλά πιστέψτε με δεν είναι, το μόνο που χρειάζεστε είναι βασικές γνώσεις Arduino και Python.

Ας ξεκινήσουμε λοιπόν…

Βήμα 1: Πράγματα που θα χρειαστείτε:

Πράγματα που θα χρειαστείτε
Πράγματα που θα χρειαστείτε
Πράγματα που θα χρειαστείτε
Πράγματα που θα χρειαστείτε
Πράγματα που θα χρειαστείτε
Πράγματα που θα χρειαστείτε

Οι απαιτήσεις είναι ελάχιστες. Εδώ σας παρέχω μια λίστα με όλα όσα χρειάζεστε:

Απαιτήσεις υλικού:

  • Arduino UNO (Amazon ΗΠΑ / Amazon ΕΕ)
  • Web Cam (Amazon ΗΠΑ / Amazon ΕΕ)
  • Servos x 2 (Amazon US / Amazon EU)
  • Breadboard (Amazon ΗΠΑ / Amazon ΕΕ)
  • Servo Pan Tilt Kit (Amazon US / Amazon EU)

Απαιτήσεις λογισμικού:

  1. Python 2.7 (Πρέπει να εγκατασταθεί, το Linux OS συνήθως το έχει προεγκατεστημένο)
  2. OpenCV (Μπορείτε να το κατεβάσετε ξεχωριστά ή να το εγκαταστήσετε χρησιμοποιώντας «pip install» Εξηγείται περαιτέρω)
  3. pyserial (Μπορεί να εγκατασταθεί με pip)
  4. μουδιασμένος
  5. Haarcascade.

Αφού συγκεντρωθούν όλα τα πράγματα, μπορούμε να προχωρήσουμε στο Βήμα Εγκατάστασης…

Βήμα 2: Ρύθμιση περιβάλλοντος Python:

Ρύθμιση περιβάλλοντος Python
Ρύθμιση περιβάλλοντος Python
Ρύθμιση περιβάλλοντος Python
Ρύθμιση περιβάλλοντος Python
Ρύθμιση περιβάλλοντος Python
Ρύθμιση περιβάλλοντος Python

Εγκατάσταση Python:

Έτσι, πρώτα χρειαζόμαστε Python 2.7 σε λειτουργία. Για να το κάνετε αυτό, πρώτα κατεβάστε και εγκαταστήστε το python 2.7.14. Για να ελέγξετε αν έχει εγκατασταθεί σωστά Πηγαίνετε: Αναζήτηση Windows >> Πληκτρολογήστε "IDLE" >> Πατήστε Enter. Θα πρέπει να εμφανιστεί ένα κέλυφος Python.

Ή

Στην αναζήτηση πληκτρολογήστε 'CMD' και πατήστε enter για να ανοίξετε τη γραμμή εντολών. Στο CMD πληκτρολογήστε >> python και πατήστε enter, θα εμφανιστεί η διεπαφή Python.

Εάν δείτε σφάλμα στο CMD, Μην πανικοβληθείτε πιθανώς να χρειαστεί να ορίσετε μεταβλητή περιβάλλοντος. Μπορείτε να ακολουθήσετε αυτό το σεμινάριο εδώ για να ρυθμίσετε τη μεταβλητή περιβάλλοντος.

Εγκατάσταση "pyserial", "OpenCV" και "numpy" σε python:

Για να εγκαταστήσουμε αυτές τις ενότητες θα χρησιμοποιήσουμε τη χρήση pip install, Ανοίξτε πρώτα το CMD και πληκτρολογήστε τους ακόλουθους κωδικούς:-

σειριακή εγκατάσταση pip

pip install opencv-python> pip install numpy

Αυτές οι εντολές θα εγκαταστήσουν τις απαραίτητες ενότητες. Τώρα μπορούμε να περάσουμε στο τμήμα κωδικοποίησης…

Βήμα 3: Python Script:

Σενάριο Python
Σενάριο Python

Πριν ξεκινήσετε να γράφετε κώδικα, το πρώτο πράγμα που πρέπει να κάνετε είναι να δημιουργήσετε έναν νέο φάκελο, καθώς όλος ο κώδικας πρέπει να αποθηκευτεί στον ίδιο φάκελο. Δημιουργήστε λοιπόν έναν νέο φάκελο, δώστε του ό, τι θέλετε. και κατεβάστε το 'Haarcascade' από κάτω και επικολλήστε το στο φάκελο.

Τώρα ανοίξτε το σημειωματάριο και γράψτε το σενάριο που δίνεται παρακάτω, αποθηκεύστε το ως 'face.py' στον ίδιο φάκελο με το haarcascade. (Μπορείτε να κατεβάσετε τον κωδικό που έχω παράσχει το παρακάτω αρχείο):

#εισαγωγή όλων των απαιτούμενων ενοτήτων

εισαγωγή numpy ως np εισαγωγή σειριακού χρόνου εισαγωγής sys εισαγωγή cv2 #Setup Διαδρομή επικοινωνίας για arduino (Αντί του 'COM5' βάλτε τη θύρα στην οποία είναι συνδεδεμένο το arduino σας) arduino = σειριακό. Σειρά ('COM5', 9600) time.sleep (2) εκτύπωση ("Συνδέεται με arduino …") #importing the Haarcascade for face detection face_cascade = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') #Για λήψη της ροής βίντεο από κάμερα web. 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) grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) πρόσωπα = face_cascade.detectMultiScale (γκρι, 1,3) # ανιχνεύστε το πρόσωπο και κάντε ένα ορθογώνιο γύρω από αυτό. για (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)) # Center of roi (Rectangle) xx = int (x+(x+h))/2 yy = int (y+(y+w))/2 print (xx) print (yy) center = (xx, yy) # αποστολή δεδομένων σε arduino print ("Center of Rectangle is:", center) data = "X {0: d} Y {1: d} Z".format (xx, yy) print ("output = '" +data + "" ") arduino.write (δεδομένα) #Εμφάνιση της ροής. cv2.imshow ('img', img) #Χτυπήστε 'Esc' για να τερματίσετε την εκτέλεση k = cv2.waitKey (30) & 0xff αν k == 27: break

Μόλις γίνει αυτό, προχωρήστε για να γράψετε τον κώδικα για το arduino…

Βήμα 4: Κωδικός Arduino:

Κωδικός Arduino
Κωδικός Arduino

Αφού είναι έτοιμο το σενάριο python, χρειαζόμαστε σκίτσο arduino για τον έλεγχο του σερβο. Ανατρέξτε στον παρακάτω κώδικα, επικολλήστε τον στο Arduino IDE και αποθηκεύστε τον ως 'servo.ino' στον ίδιο φάκελο με το face.py και το haarcascade. ανεβάστε τον κωδικό και προχωρήστε στο επόμενο βήμα για να πραγματοποιήσετε τις συνδέσεις.

(Το αρχείο με δυνατότητα λήψης δίνεται παρακάτω)

#περιλαμβάνω

Servo servoVer; // Κάθετο Servo Servo servoHor; // Horizontal Servo int x; int y? int prevX; int prevY; void setup () {Serial.begin (9600); servoVer.attach (5); // Επισυνάψτε κάθετο σερβο στην καρφίτσα 5 servoHor.attach (6); // Επισύναψη οριζόντιου σερβο στην καρφίτσα 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 = min (servoX, 179); servoX = max (servoX, 70); servoY = min (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 (); εάν (Serial.read () == 'Y') {y = Serial.parseInt (); Pos (); }} while (Serial.available ()> 0) {Serial.read (); }}}

Βήμα 5: Μηχανισμός κλίσης:-

Μηχανισμός Pan-Tilt
Μηχανισμός Pan-Tilt
Μηχανισμός Pan-Tilt
Μηχανισμός Pan-Tilt

Έχω χρησιμοποιήσει ένα άμεσα διαθέσιμο κιτ για το Pan-Tilt. Αν θέλετε μπορείτε να το φτιάξετε μόνοι σας χρησιμοποιώντας ξύλο/πλαστικό ή ακόμα και τρισδιάστατη εκτύπωση.

Αυτό που χρησιμοποίησα είναι αρκετά φθηνό και πολύ εύκολο στη συναρμολόγηση. Ωστόσο, αν θέλετε οδηγίες για το πώς να το κάνετε αυτό, μπορείτε να το βρείτε εδώ.

Βήμα 6: Δημιουργία συνδέσεων:

Δημιουργία συνδέσεων
Δημιουργία συνδέσεων
Δημιουργία συνδέσεων
Δημιουργία συνδέσεων

Το Circuit είναι αρκετά απλό. Απλώς συνδέστε δύο servos στο arduino.

  1. Κάθετα στην καρφίτσα 5
  2. Οριζόντια στην καρφίτσα 6
  3. Ισχύς έως +5V
  4. Γείωση σε GND

Ελέγξτε το διάγραμμα κυκλώματος για αναφορά.

Βήμα 7: ΔΟΚΙΜΗΣΗ:

  • Αφού γίνουν όλα, το τελευταίο πράγμα που πρέπει να κάνετε είναι να ελέγξετε αν λειτουργεί. Για να δοκιμάσετε πρώτα βεβαιωθείτε ότι τα servos είναι σωστά συνδεδεμένα με το arduino και ότι το σκίτσο έχει μεταφορτωθεί.
  • Αφού μεταφορτωθεί το σκίτσο, βεβαιωθείτε ότι έχετε κλείσει το IDE, ώστε η θύρα να είναι ελεύθερη για σύνδεση με τον python.
  • Τώρα ανοίξτε το 'face.py' με το Python IDLE και πατήστε 'F5' για να εκτελέσετε τον κώδικα. Θα χρειαστούν μερικά δευτερόλεπτα για να συνδεθείτε στο arduino και στη συνέχεια θα πρέπει να μπορείτε να δείτε ένα παράθυρο που μεταδίδει την κάμερα ιστού. Τώρα ο κώδικας θα ανιχνεύσει το πρόσωπό σας και τα servos θα το παρακολουθήσουν.
  • Το Servo πρέπει να κινείται καθώς μετακινείτε το αντικείμενο. Τώρα απλά συνδέστε την κάμερα στα servos, ώστε να κινείται μαζί με τα servos.

Σας ευχαριστώ.

Συνιστάται: