- Απαιτούμενα υλικά:
- Τρισδιάστατη εκτύπωση των απαιτούμενων ανταλλακτικών (προαιρετικά):
- Σχηματικό και υλικό:
- Ρύθμιση της εφαρμογής σας Android:
- Προγραμματισμός του Arduino:
- Εργαζόμενος:
Θέλατε ποτέ να δημιουργήσετε ένα ρομποτικό βραχίονα παρακολούθησης προσώπου ή ένα ρομπότ χρησιμοποιώντας απλώς το Arduino και όχι οποιοδήποτε άλλο προγραμματισμό όπως το OpenCV, τα οπτικά βασικά C # κλπ; Στη συνέχεια, διαβάστε παρακάτω, σε αυτό το έργο πρόκειται να εφαρμόσουμε την ανίχνευση προσώπου συνδυάζοντας τη δύναμη του Arduino και του Android. Σε αυτό το έργο, η κινητή κάμερα θα κινείται μαζί με το πρόσωπό σας με τη βοήθεια των σερβο. Το πλεονέκτημα της χρήσης του κινητού τηλεφώνου Android εδώ είναι ότι δεν χρειάζεται να επενδύσετε σε μια μονάδα κάμερας και ολόκληρη η εργασία ανίχνευσης εικόνων μπορεί να γίνει στο ίδιο το τηλέφωνο, δεν χρειάζεστε το Arduino που είναι συνδεδεμένο στον υπολογιστή σας για να λειτουργήσει αυτό. Εδώ χρησιμοποιήσαμε το Bluetooth Module με το Arduino για να επικοινωνούμε ασύρματα με το κινητό.
Η εφαρμογή Android που χρησιμοποιήθηκε σε αυτό το έργο δημιουργήθηκε χρησιμοποιώντας την Επεξεργασία Android, μπορείτε είτε να εγκαταστήσετε απευθείας την εφαρμογή κατεβάζοντας το αρχείο APK (διαβάστε περαιτέρω για σύνδεση) είτε να βάλετε το καπάκι προγραμματισμού σας και να δημιουργήσετε τη δική σας πιο ελκυστική εφαρμογή Android χρησιμοποιώντας τον δεδομένο κώδικα επεξεργασίας περαιτέρω στο Tutorial. Μάθετε περισσότερα για την Επεξεργασία ελέγχοντας τα προηγούμενα Έργα Επεξεργασίας.
Μέχρι το τέλος αυτού του σεμιναρίου θα έχετε ένα Mini Tilt και Span Robotic Arm που θα μπορούσε να παρακολουθεί το πρόσωπό σας και να κινείται μαζί του. Μπορείτε να το χρησιμοποιήσετε (με περαιτέρω πρόοδο) για να εγγράψετε τα βίντεό σας βίντεο ή ακόμα και να τραβήξετε μια selfie με την πίσω κάμερα του κινητού σας τηλεφώνου, καθώς τοποθετεί το πρόσωπό σας ακριβώς στο κέντρο της οθόνης του κινητού σας. Ετσι!! Ακούγεται ενδιαφέρον? Ελέγξτε το Demo Video στο τέλος αυτού του σεμιναρίου για να το δείτε να λειτουργεί. Ας δούμε πώς μπορούμε να χτίσουμε ένα…
Έχω δοκιμάσει το καλύτερό μου για να κάνω αυτό το έργο να λειτουργεί όσο το δυνατόν πιο απλό, όποιος έχει τις ελάχιστες γνώσεις σχετικά με το υλικό ή την κωδικοποίηση μπορεί να χρησιμοποιήσει αυτές τις οδηγίες για να κάνει αυτό το έργο να λειτουργεί σε χρόνο μηδέν. Ωστόσο, μόλις το κάνετε, σας προτείνω να ακολουθήσετε τους κωδικούς, ώστε να μπορείτε πραγματικά να γνωρίζετε τι κάνει αυτό το πράγμα να λειτουργεί και πώς.
Απαιτούμενα υλικά:
- Arduino Nano
- Σερβο κινητήρας SG90 - 2Nos
- Τηλέφωνο Android με αξιοπρεπή κάμερα
- Ενότητα Bluetooth HC-05 / HC-06
- Υπολογιστής για προγραμματισμό
- Εκτυπωτής 3D (προαιρετικός)
- Μπαταρία 9V
Τρισδιάστατη εκτύπωση των απαιτούμενων ανταλλακτικών (προαιρετικά):
Προκειμένου να μετακινήσουμε και να γέρνουμε το κινητό μας τηλέφωνο χρειαζόμαστε κάποιες μηχανικές δομές, όπως μια θήκη για κινητά και μερικά σερβικά υποστηρίγματα. Μπορείτε να χρησιμοποιήσετε ένα χαρτόνι για να φτιάξετε ένα, αφού έχω έναν εκτυπωτή 3D αποφάσισα να εκτυπώσω τρισδιάστατα αυτά τα μέρη.
Η τρισδιάστατη εκτύπωση είναι ένα καταπληκτικό εργαλείο που μπορεί να συνεισφέρει πολύ όταν δημιουργείτε πρωτότυπα έργα ή πειραματίζεστε με νέα μηχανικά σχέδια. Εάν δεν έχετε ανακαλύψει ακόμα τα οφέλη ενός εκτυπωτή 3D ή πώς λειτουργεί, μπορείτε να διαβάσετε τον Οδηγό για αρχάριους για την εκτύπωση 3D.
Εάν είστε κάτοχος ή έχετε πρόσβαση σε έναν εκτυπωτή 3D, τότε μπορείτε να χρησιμοποιήσετε τα αρχεία STL τα οποία μπορείτε να κατεβάσετε από εδώ για να τα εκτυπώσετε και να τα συγκεντρώσετε απευθείας. Ωστόσο, λίγα μέρη όπως η θήκη του κινητού τηλεφώνου μπορεί να χρειαστούν κάποιες τροποποιήσεις με βάση τις διαστάσεις του τηλεφώνου σας. Το σχεδίασα για το κινητό μου MOTO G. Έχω χρησιμοποιήσει έναν πολύ βασικό εκτυπωτή για να εκτυπώσω όλα τα μέρη. Ο εκτυπωτής είναι FABX v1 από το 3ding που διατίθεται σε προσιτή τιμή με όγκο εκτύπωσης 10 κυβικά cm. Η φθηνή τιμή έρχεται με ανταλλαγή με χαμηλή ανάλυση εκτύπωσης και χωρίς κάρτα SD ή λειτουργία συνέχισης εκτύπωσης. Χρησιμοποιώ λογισμικό που ονομάζεται Cura για να εκτυπώσω τα αρχεία STL. Οι ρυθμίσεις που χρησιμοποίησα για την εκτύπωση των υλικών παρέχονται παρακάτω, μπορείτε να τις χρησιμοποιήσετε ή να τις αλλάξετε με βάση τον εκτυπωτή σας.
Μόλις εκτυπώσετε όλα τα απαιτούμενα υλικά, μπορείτε να τα ασφαλίσετε στη θέση τους χρησιμοποιώντας βίδες και κάποια ζεστή κόλλα. Αφού ολοκληρωθεί η συναρμολόγηση, θα πρέπει να φαίνεται κάπως έτσι παρακάτω.
Σχηματικό και υλικό:
Το κύκλωμα για αυτό το έργο παρακολούθησης προσώπου σε έξυπνο τηλέφωνο εμφανίζεται στην παρακάτω εικόνα:
Το κύκλωμα αποτελείται από δύο κινητήρες Servo, από τους οποίους ο ένας χρησιμοποιείται για την κίνηση του κινητού τηλεφώνου αριστερά / δεξιά και ο άλλος χρησιμοποιείται για την κλίση του κινητού τηλεφώνου πάνω / κάτω. Η κατεύθυνση προς την οποία πρέπει να κινηθεί το σερβο θα καθοδηγηθεί από το Arduino Nano, το οποίο λαμβάνει πληροφορίες από τη μονάδα Bluetooth (HC-05). Ολόκληρο το κύκλωμα τροφοδοτείται από μια μπαταρία 9V.
Αυτό το κύκλωμα μπορεί να συνδεθεί εύκολα στο breadboard σας ή μπορείτε επίσης να τα κολλήσετε σε ένα μικρό Perf board όπως έχω κάνει εδώ.
Ρύθμιση της εφαρμογής σας Android:
Όπως είπα νωρίτερα, ο κύριος εγκέφαλος που εργάζεται πίσω από αυτό το έργο είναι αυτή η εφαρμογή Android. Αυτή η εφαρμογή Android αναπτύχθηκε χρησιμοποιώντας την Επεξεργασία Android. Μπορείτε να εγκαταστήσετε απευθείας αυτήν την εφαρμογή στο κινητό σας τηλέφωνο και να την ξεκινήσετε ακολουθώντας τα παρακάτω βήματα.
- Κατεβάστε το αρχείο APK από εδώ.
- Ενεργοποιήστε το κύκλωμα που φαίνεται παραπάνω.
- Στις ρυθμίσεις του τηλεφώνου σας, αναζητήστε τη μονάδα Bluetooth με το όνομα "HC-05"
- Εάν το έχετε ορίσει κάτι άλλο εκτός από το "HC-05", αλλάξτε το ξανά σε HC-05 αφού μόνο τότε η εφαρμογή θα λειτουργήσει.
- Σύζευξη με τη μονάδα Bluetooth με τον κωδικό πρόσβασης "1234" ή "0000".
- Τώρα, ξεκινήστε την εφαρμογή σε κατακόρυφη λειτουργία. Θα πρέπει να δείτε την οθόνη της κάμεράς σας και επίσης "Συνδεδεμένο με: HC-05" στο πάνω μέρος της οθόνης σας
- Δοκιμάστε να μετακινήσετε την κάμερα πάνω από ένα πρόσωπο και ένα πράσινο κουτί θα πρέπει να εμφανίζεται πάνω του και η θέση της θα εμφανίζεται επίσης στην επάνω αριστερή γωνία της οθόνης σας όπως φαίνεται παρακάτω.
Μπορείτε να προχωρήσετε σε αυτό το Arduino Face Tracking Project στο επόμενο επίπεδο, φέρνοντας πολλές προόδους για τις οποίες δεν θα χρειαστεί να κωδικοποιήσετε τη δική σας εφαρμογή Android. Η δημιουργία μιας εφαρμογής Android μπορεί να ακούγεται δύσκολη, αλλά πιστέψτε με με τη βοήθεια της Επεξεργασίας, μπορείτε να την μάθετε σε σύντομο χρονικό διάστημα. Μπορείτε να κατεβάσετε τον πλήρη κώδικα επεξεργασίας που χρησιμοποιείται για τη δημιουργία αυτής της εφαρμογής εδώ. Είστε ελεύθεροι να κάνετε οποιαδήποτε πρόοδο με τη δική σας δημιουργικότητα. Δείτε παρακάτω τα έργα για να μάθετε περισσότερα σχετικά με την Επεξεργασία:
- Εικονική πραγματικότητα χρησιμοποιώντας το Arduino και την επεξεργασία
- Παιχνίδι Ping Pong χρησιμοποιώντας το Arduino
- Ραδιόφωνο FM ελεγχόμενο από έξυπνο τηλέφωνο χρησιμοποιώντας επεξεργασία.
- Σύστημα ραντάρ Arduino χρησιμοποιώντας αισθητήρα επεξεργασίας και υπερήχων
Προγραμματισμός του Arduino:
Η εφαρμογή Android θα εντοπίσει το πρόσωπο και τη θέση του στην οθόνη. Στη συνέχεια θα αποφασίσει ποια κατεύθυνση πρέπει να κινηθεί με βάση τη θέση του προσώπου έτσι ώστε το πρόσωπο να φτάσει στο κέντρο της οθόνης. Αυτή η κατεύθυνση αποστέλλεται στη συνέχεια στο Arduino μέσω Bluetooth Module.
Το πρόγραμμα Arduino για αυτό το έργο είναι αρκετά απλό, απλώς πρέπει να ελέγξουμε την κατεύθυνση των δύο σερβοκινητήρων με βάση τις τιμές που λαμβάνονται από τη μονάδα Bluetooth. Ο πλήρης κωδικός βρίσκεται στο τέλος αυτού του σεμιναρίου, εξήγησα επίσης μερικές σημαντικές γραμμές παρακάτω.
Η παρακάτω γραμμή κώδικα δημιουργεί μια σειριακή σύνδεση με τις ακίδες D12 ως RX και D11 ως TX. Ως εκ τούτου, ο πείρος D12 πρέπει να είναι συνδεδεμένος στο TX της μονάδας BT και ο πείρος D11 στο RX της μονάδας BT.
ΛογισμικόSerial cam_BT (12, 11); // RX, TX
Στη συνέχεια, έχουμε αρχικοποιήσει τη μονάδα Bluetooth με ρυθμό baud 9600. Βεβαιωθείτε ότι η μονάδα λειτουργεί επίσης με τον ίδιο ρυθμό baud. Διαφορετικά, αλλάξτε το ανάλογα.
cam_BT.begin (9600); // ξεκινήστε την επικοινωνία Bluetooth στο 9600 baudrate cam_BT.println ("Έτοιμοι για λήψη εντολών");
Η παρακάτω γραμμή διαβάζει τι εισέρχεται μέσω της μονάδας Bluetooth. Επίσης τα δεδομένα αποθηκεύονται στη μεταβλητή "BluetoothData".
if (cam_BT.available ()) // Διαβάστε τι εισέρχεται μέσω Bluetooth {BluetoothData = cam_BT.read (); Serial.print ("Εισερχόμενα από BT:"); Serial.println (BluetoothData); }
Με βάση τα δεδομένα που λαμβάνονται από το Bluetooth ελέγχεται η κατεύθυνση του κινητήρα. Για να στρίψετε έναν κινητήρα αριστερά, ο κινητήρας μειώνεται κατά 2 από την προηγούμενη θέση του. Μπορείτε να αυξήσετε αυτήν την τιμή 2 σε 4 ή 6 εάν χρειάζεστε το χέρι για να κινηθείτε πιο γρήγορα. Όμως, μπορεί να δημιουργήσει κάποια τραντάγματα κάνοντας την κάμερα ασταθή.
if (BluetoothData == 49) // Στρίψτε αριστερά {pos1 + = 2; servo1.write (pos1);} if (BluetoothData == 50) // Στρίψτε δεξιά {pos1- = 2; servo1.write (pos1);} if (BluetoothData == 51) // Ενεργοποίηση {pos2- = 2; servo2.write (pos2);} if (BluetoothData == 52) // Απενεργοποίηση {pos2 + = 2; servo2.write (pos2);}
Εργαζόμενος:
Μόλις είμαστε έτοιμοι με το υλικό, τον κώδικα και την εφαρμογή Android, ήρθε η ώρα για κάποια ενέργεια. Απλώς ενεργοποιήστε το Arduino και ανοίξτε την εφαρμογή Android. Η εφαρμογή θα συνδεθεί αυτόματα με τη μονάδα Bluetooth HC-05 (πρέπει να ονομάζεται HC-05) και θα περιμένει να εντοπιστεί ένα πρόσωπο. Απλά τοποθετήστε το τηλέφωνο στη θήκη του κινητού μας και καθίστε μπροστά του. Θα πρέπει να παρατηρήσετε ότι οι σερβοκινητήρες σας μετακινούν το τηλέφωνό σας έτσι ώστε το πρόσωπό σας να τοποθετηθεί στο κέντρο της οθόνης. Τώρα μετακινηθείτε μέσα στο εύρος της κάμερας και το κινητό σας τηλέφωνο θα ακολουθήσει τις κινήσεις σας. Μπορείτε επίσης να το δοκιμάσετε τοποθετώντας και μετακινώντας οποιαδήποτε εικόνα.
Η πλήρης εργασία του έργου φαίνεται στο παρακάτω βίντεο. Μπορείτε να χτίσετε πολλά