Πίνακας περιεχομένων:
- Βήμα 1: Πράγματα που θα χρειαστείτε:
- Βήμα 2: Ρύθμιση περιβάλλοντος Python:
- Βήμα 3: Python Script:
- Βήμα 4: Κωδικός Arduino:
- Βήμα 5: Μηχανισμός κλίσης:-
- Βήμα 6: Δημιουργία συνδέσεων:
- Βήμα 7: ΔΟΚΙΜΗΣΗ:
Βίντεο: ΠΑΡΑΚΟΛΟΥΘΗΣΗ ΠΡΟΣΩΠΟΥ ΧΡΗΣΗ ARDUINO !!!: 7 Βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:32
Σε μια προηγούμενη διδάσκουσα, μοιράστηκα πώς μπορείτε να επικοινωνείτε μεταξύ 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)
Απαιτήσεις λογισμικού:
- Python 2.7 (Πρέπει να εγκατασταθεί, το Linux OS συνήθως το έχει προεγκατεστημένο)
- OpenCV (Μπορείτε να το κατεβάσετε ξεχωριστά ή να το εγκαταστήσετε χρησιμοποιώντας «pip install» Εξηγείται περαιτέρω)
- pyserial (Μπορεί να εγκατασταθεί με pip)
- μουδιασμένος
- Haarcascade.
Αφού συγκεντρωθούν όλα τα πράγματα, μπορούμε να προχωρήσουμε στο Βήμα Εγκατάστασης…
Βήμα 2: Ρύθμιση περιβάλλοντος 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:
Πριν ξεκινήσετε να γράφετε κώδικα, το πρώτο πράγμα που πρέπει να κάνετε είναι να δημιουργήσετε έναν νέο φάκελο, καθώς όλος ο κώδικας πρέπει να αποθηκευτεί στον ίδιο φάκελο. Δημιουργήστε λοιπόν έναν νέο φάκελο, δώστε του ό, τι θέλετε. και κατεβάστε το '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:
Αφού είναι έτοιμο το σενάριο 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. Αν θέλετε μπορείτε να το φτιάξετε μόνοι σας χρησιμοποιώντας ξύλο/πλαστικό ή ακόμα και τρισδιάστατη εκτύπωση.
Αυτό που χρησιμοποίησα είναι αρκετά φθηνό και πολύ εύκολο στη συναρμολόγηση. Ωστόσο, αν θέλετε οδηγίες για το πώς να το κάνετε αυτό, μπορείτε να το βρείτε εδώ.
Βήμα 6: Δημιουργία συνδέσεων:
Το Circuit είναι αρκετά απλό. Απλώς συνδέστε δύο servos στο arduino.
- Κάθετα στην καρφίτσα 5
- Οριζόντια στην καρφίτσα 6
- Ισχύς έως +5V
- Γείωση σε GND
Ελέγξτε το διάγραμμα κυκλώματος για αναφορά.
Βήμα 7: ΔΟΚΙΜΗΣΗ:
- Αφού γίνουν όλα, το τελευταίο πράγμα που πρέπει να κάνετε είναι να ελέγξετε αν λειτουργεί. Για να δοκιμάσετε πρώτα βεβαιωθείτε ότι τα servos είναι σωστά συνδεδεμένα με το arduino και ότι το σκίτσο έχει μεταφορτωθεί.
- Αφού μεταφορτωθεί το σκίτσο, βεβαιωθείτε ότι έχετε κλείσει το IDE, ώστε η θύρα να είναι ελεύθερη για σύνδεση με τον python.
- Τώρα ανοίξτε το 'face.py' με το Python IDLE και πατήστε 'F5' για να εκτελέσετε τον κώδικα. Θα χρειαστούν μερικά δευτερόλεπτα για να συνδεθείτε στο arduino και στη συνέχεια θα πρέπει να μπορείτε να δείτε ένα παράθυρο που μεταδίδει την κάμερα ιστού. Τώρα ο κώδικας θα ανιχνεύσει το πρόσωπό σας και τα servos θα το παρακολουθήσουν.
- Το Servo πρέπει να κινείται καθώς μετακινείτε το αντικείμενο. Τώρα απλά συνδέστε την κάμερα στα servos, ώστε να κινείται μαζί με τα servos.
Σας ευχαριστώ.
Συνιστάται:
Παρακολούθηση θερμοκρασίας και υγρασίας με χρήση NODE MCU AND BLYNK: 5 βήματα
Παρακολούθηση θερμοκρασίας και υγρασίας χρησιμοποιώντας NODE MCU ΚΑΙ BLYNK: Γεια σας παιδιά Σε αυτό το διδακτικό μάθετε πώς να λαμβάνετε τη θερμοκρασία και την υγρασία της ατμόσφαιρας χρησιμοποιώντας DHT11-Αισθητήρας θερμοκρασίας και υγρασίας χρησιμοποιώντας την εφαρμογή Node MCU και BLYNK
Παρακολούθηση καιρού με χρήση ESP32_DHT11_OLED_Thingspeak: 7 Βήματα
Παρακολούθηση καιρού με χρήση ESP32_DHT11_OLED_Thingspeak: Σε αυτό το σεμινάριο, θα δημιουργήσετε ένα μόνιτορ καιρού που παρακολουθεί τη θερμοκρασία και την υγρασία, χρησιμοποιώντας ESP32 και DHT11. Εμφανίζεται σε οθόνη OLED. Και μεταφορτώνεται στο ThingSpeak. Το ESP32 είναι ένα ισχυρό εργαλείο IOT. Είναι ένα σύστημα χαμηλού κόστους
Παρακολούθηση προσώπου και ανίχνευση χαμόγελου ρομπότ αποκριών: 8 βήματα (με εικόνες)
Face Tracking and Smile Detecting Halloween Robots: Το Halloween έρχεται! Αποφασίσαμε να φτιάξουμε κάτι δροσερό. Γνωρίστε τα ρομπότ Ghosty και Skully. Μπορούν να ακολουθήσουν το πρόσωπό σας και ξέρουν πότε χαμογελάτε για να γελάσετε μαζί σας! Αυτό το έργο είναι ένα άλλο παράδειγμα χρήσης της εφαρμογής iRobbie που μετατρέπει το iPhone σε
Παρακολούθηση ηλιακού πλαισίου με χρήση φωτονίου σωματιδίων: 7 βήματα
Παρακολούθηση ηλιακών πάνελ με χρήση σωματιδίου φωτονίου: Ο στόχος του έργου είναι να βελτιώσει την αποδοτικότητα των ηλιακών συλλεκτών. Το έργο έχει σχεδιαστεί για να επιβλέπει την παραγωγή ηλιακής φωτοβολταϊκής ενέργειας για να ενισχύσει την απόδοση, την παρακολούθηση και τη συντήρηση του ηλιακού σταθμού. Σε αυτό το έργο, το σωματίδιο ph
Ρομπότ ζητιανής με παρακολούθηση προσώπου και χειριστήριο από Xbox Controller - Arduino: 9 βήματα (με εικόνες)
Ρομπότ ζητιανής με παρακολούθηση προσώπου και χειριστήριο από το Xbox Controller - Arduino: Θα φτιάξουμε ένα ρομπότ επαιτείας. Αυτό το ρομπότ θα προσπαθήσει να ερεθίσει ή να τραβήξει την προσοχή των περαστικών ανθρώπων. Θα εντοπίσει τα πρόσωπά τους και θα προσπαθήσει να τους πυροβολήσει λέιζερ. Εάν δώσετε στο ρομπότ ένα νόμισμα, θα τραγουδήσει ένα τραγούδι και θα χορέψει. Το ρομπότ θα χρειαστεί