Πίνακας περιεχομένων:
- Βήμα 1: Λίστα υλικών
- Βήμα 2: Δημιουργία λέιζερ και κάμερας
- Βήμα 3: Οδήγηση του λέιζερ και της οθόνης LCD
- Βήμα 4: Ανίχνευση του λέιζερ χρησιμοποιώντας OpenCV
- Βήμα 5: Βαθμονόμηση του εύρους εύρους
- Βήμα 6: Μέτρηση αποστάσεων
Βίντεο: Δημιουργία εύρους εύρους χρησιμοποιώντας λέιζερ και κάμερα: 6 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:36
Αυτή τη στιγμή σχεδιάζω εσωτερικές εργασίες για την επόμενη Άνοιξη, αλλά καθώς απέκτησα ένα παλιό σπίτι δεν έχω κανένα σχέδιο σπιτιού. Ξεκίνησα να μετράω αποστάσεις τοίχου σε τοίχο χρησιμοποιώντας έναν χάρακα, αλλά είναι αργός και επιρρεπής σε σφάλματα. Σκέφτηκα να αγοράσω ένα εύχρηστο εύρος για να διευκολύνω τη διαδικασία, αλλά στη συνέχεια βρήκα ένα παλιό άρθρο σχετικά με την κατασκευή του δικού του εύρους εύρους χρησιμοποιώντας ένα λέιζερ και μια κάμερα. Όπως αποδεικνύεται, έχω αυτά τα στοιχεία στο εργαστήριό μου.
Το έργο βασίζεται σε αυτό το άρθρο:
Η μόνη διαφορά είναι ότι θα χτίσω το εύρος εύρους χρησιμοποιώντας ένα Raspberry Pi Zero W, μια οθόνη LCD και μια μονάδα κάμερας Raspberry Pi. Θα χρησιμοποιήσω επίσης το OpenCV για την παρακολούθηση του λέιζερ.
Θα υποθέσω ότι είστε γνώστες της τεχνολογίας και ότι αισθάνεστε άνετα χρησιμοποιώντας την Python και τη γραμμή εντολών. Σε αυτό το έργο χρησιμοποιώ το Pi σε λειτουργία χωρίς κεφάλι.
Ας αρχίσουμε!
Βήμα 1: Λίστα υλικών
Για αυτό το έργο, θα χρειαστείτε:
- ένα φθηνό λέιζερ 6mm 5mW
- μια αντίσταση 220 Ω
- ένα τρανζίστορ 2N2222A ή κάτι αντίστοιχο
- ένα Raspberry Pi Zero W
- a Raspberry Pi Camera v2
- μια οθόνη Nokia 5110 LCD ή αντίστοιχη
- μερικά καλώδια και ένα μικρό σανίδι
Χρησιμοποίησα τον τρισδιάστατο εκτυπωτή μου για να εκτυπώσω ένα jig που με βοήθησε κατά τη διάρκεια των πειραμάτων. Σκοπεύω επίσης να χρησιμοποιήσω τον τρισδιάστατο εκτυπωτή για να δημιουργήσω ένα πλήρες περίβλημα για το εύρημα εύρους. Μπορείς τελείως χωρίς.
Βήμα 2: Δημιουργία λέιζερ και κάμερας
Το σύστημα υποθέτει μια σταθερή απόσταση μεταξύ του φακού της κάμερας και της εξόδου λέιζερ. Για να διευκολύνω τις δοκιμές, εκτύπωσα ένα jig στο οποίο μπορώ να τοποθετήσω την κάμερα, το λέιζερ και ένα μικρό κύκλωμα οδήγησης για το λέιζερ.
Χρησιμοποίησα τις διαστάσεις της μονάδας κάμερας για την κατασκευή της βάσης για την κάμερα. Χρησιμοποίησα κυρίως μια ψηφιακή δαγκάνα και έναν χάρακα ακριβείας για να κάνω τις μετρήσεις. Για το λέιζερ, δημιούργησα μια τρύπα 6 χιλιοστών με λίγη ενίσχυση για να διασφαλίσω ότι το λέιζερ δεν θα κινηθεί. Προσπάθησα να κρατήσω αρκετό χώρο για να στερεώσω μια μικρή σανίδα στο πίσω μέρος της σέλας.
Χρησιμοποίησα το Tinkercad για την κατασκευή, μπορείτε να βρείτε το μοντέλο εδώ:
Υπάρχει απόσταση 3,75 cm μεταξύ του κέντρου του φακού λέιζερ και του κέντρου του φακού της κάμερας.
Βήμα 3: Οδήγηση του λέιζερ και της οθόνης LCD
Ακολούθησα αυτό το σεμινάριο https://www.algissalys.com/how-to/nokia-5110-lcd-on-raspberry-pi για να οδηγήσω την οθόνη LCD με το Raspberry Pi Zero. Αντί να επεξεργαστείτε το αρχείο /boot/config.txt, μπορείτε να ενεργοποιήσετε τη διεπαφή SPI χρησιμοποιώντας sudo raspi-config μέσω της γραμμής εντολών.
Χρησιμοποιώ το Raspberry Pi Zero σε λειτουργία ακέφαλου χρησιμοποιώντας το πιο πρόσφατο, την ημερομηνία, το Raspbian Stretch. Δεν θα καλύψω την εγκατάσταση σε αυτό το Instructable, αλλά μπορείτε να ακολουθήσετε αυτόν τον οδηγό: https://medium.com/@danidudas/install-raspbian-jessie-lite-and-setup-wi-fi-without-access-to- γραμμή εντολών-ή-χρησιμοποιώντας-το-δίκτυο-97f065af722e
Για να έχω μια φωτεινή κουκίδα λέιζερ, χρησιμοποιώ τη ράγα 5V του Pi. Για αυτό, θα χρησιμοποιήσω ένα τρανζίστορ (2N2222a ή ισοδύναμο) για να οδηγήσω το λέιζερ χρησιμοποιώντας το GPIO. Μια αντίσταση 220 Ω στη βάση του τρανζίστορ επιτρέπει αρκετό ρεύμα μέσω του λέιζερ. Χρησιμοποιώ το RPi. GPIO για να χειριστώ το Pi GPIO. Συνδέω τη βάση του τρανζίστορ στον πείρο GPIO22 (τον 15ο πείρο), τον πομπό στο έδαφος και τον συλλέκτη στη δίοδο λέιζερ.
Μην ξεχάσετε να ενεργοποιήσετε τη διεπαφή της κάμερας χρησιμοποιώντας το sudo raspi-config μέσω της γραμμής εντολών.
Μπορείτε να χρησιμοποιήσετε αυτόν τον κωδικό για να δοκιμάσετε τη ρύθμισή σας:
Εάν όλα πήγαν καλά θα πρέπει να έχετε ένα αρχείο dot-j.webp
Στον κώδικα, ρυθμίζουμε την κάμερα και το GPIO, μετά ενεργοποιούμε το λέιζερ, καταγράφουμε την εικόνα και απενεργοποιούμε το λέιζερ. Καθώς τρέχω το Pi σε λειτουργία χωρίς κεφάλι, πρέπει να αντιγράψω τις εικόνες από το Pi στον υπολογιστή μου πριν τις εμφανίσω.
Σε αυτό το σημείο, το υλικό σας πρέπει να διαμορφωθεί.
Βήμα 4: Ανίχνευση του λέιζερ χρησιμοποιώντας OpenCV
Πρώτον, πρέπει να εγκαταστήσουμε το OpenCV στο Pi. Βασικά έχετε τρεις τρόπους να το κάνετε. Μπορείτε είτε να εγκαταστήσετε την παλιά συσκευασμένη έκδοση με apt. Μπορείτε να μεταγλωττίσετε την έκδοση που θέλετε, αλλά σε αυτήν την περίπτωση ο χρόνος εγκατάστασης μπορεί να φτάσει έως και 15 ώρες και το μεγαλύτερο μέρος για την πραγματική μεταγλώττιση. Or, προτιμώμενη προσέγγισή μου, μπορείτε να χρησιμοποιήσετε μια προ-μεταγλωττισμένη έκδοση για το Pi Zero που παρέχεται από τρίτο μέρος.
Επειδή είναι απλούστερο και γρηγορότερο, χρησιμοποίησα ένα πακέτο τρίτου μέρους. Μπορείτε να βρείτε τα βήματα εγκατάστασης σε αυτό το άρθρο: https://yoursunny.com/t/2018/install-OpenCV3-PiZero/ Δοκίμασα πολλές άλλες πηγές, αλλά τα πακέτα τους δεν ήταν ενημερωμένα.
Για την παρακολούθηση ενός δείκτη λέιζερ, ενημέρωσα τον κώδικα από τη διεύθυνση https://github.com/bradmontgomery/python-laser-tracker για να χρησιμοποιήσω τη μονάδα κάμερας Pi αντί για συσκευή USB. Μπορείτε να χρησιμοποιήσετε απευθείας τον κωδικό εάν δεν διαθέτετε μονάδα κάμερας Pi και θέλετε να χρησιμοποιήσετε κάμερα USB.
Μπορείτε να βρείτε τον πλήρη κωδικό εδώ:
Για να εκτελέσετε αυτόν τον κωδικό θα χρειαστεί να εγκαταστήσετε τα πακέτα Python: μαξιλάρι και picamera (sudo pip3 install pillow picamera).
Βήμα 5: Βαθμονόμηση του εύρους εύρους
Στο αρχικό άρθρο, ο συγγραφέας σχεδίασε μια διαδικασία βαθμονόμησης για να πάρει τις απαιτούμενες παραμέτρους για να μετατρέψει τις συντεταγμένες y σε μια πραγματική απόσταση. Χρησιμοποίησα το τραπέζι του σαλονιού μου για τις βαθμονομήσεις και ένα παλιό κομμάτι kraft. Κάθε 10 εκατοστά περίπου, σημείωνα τις συντεταγμένες x και y σε ένα υπολογιστικό φύλλο: https://docs.google.com/spreadsheets/d/1OTGu09GLAt… Για να διασφαλιστεί ότι όλα λειτουργούσαν σωστά, σε κάθε βήμα, έλεγχα τις φωτογραφίες που ελήφθησαν για να διαπιστωθεί εάν το λέιζερ παρακολουθήθηκε σωστά. Εάν χρησιμοποιείτε πράσινο λέιζερ ή εάν το λέιζερ σας δεν παρακολουθείται σωστά, θα χρειαστεί να προσαρμόσετε ανάλογα την απόχρωση, τον κορεσμό και το όριο τιμής του προγράμματος.
Μόλις ολοκληρωθεί η φάση μέτρησης, είναι καιρός να υπολογίσουμε πραγματικά τις παραμέτρους. Όπως ο συγγραφέας, χρησιμοποίησα μια γραμμική παλινδρόμηση. στην πραγματικότητα το Google Spreadsheet έκανε τη δουλειά για μένα. Στη συνέχεια, ξαναχρησιμοποίησα αυτές τις παραμέτρους για να υπολογίσω μια εκτιμώμενη απόσταση και να την ελέγξω με την πραγματική απόσταση.
Isρθε η ώρα να εισάγουμε τις παραμέτρους στο πρόγραμμα εύρους εύρους για τη μέτρηση αποστάσεων.
Βήμα 6: Μέτρηση αποστάσεων
Στον κωδικό: https://gist.github.com/kevinlebrun/e767a46855e5fd501d820e1c5fcc527c ενημέρωσα τις μεταβλητές HEIGHT, GAIN και OFFSET σύμφωνα με τις μετρήσεις βαθμονόμησης. Χρησιμοποίησα τον τύπο απόστασης στο αρχικό άρθρο για να εκτιμήσω την απόσταση και εκτύπωσα την απόσταση χρησιμοποιώντας την οθόνη LCD.
Ο κώδικας θα ρυθμίσει πρώτα την κάμερα και το GPIO, μετά θέλουμε να φωτίσουμε τον οπίσθιο φωτισμό LCD για να δούμε καλύτερα τις μετρήσεις. Η είσοδος LCD είναι συνδεδεμένη στο GPIO14. Κάθε 5 δευτερόλεπτα περίπου, θα:
- ενεργοποιήστε τη δίοδο λέιζερ
- αποτυπώστε την εικόνα στη μνήμη
- απενεργοποιήστε τη δίοδο λέιζερ
- παρακολουθείτε το λέιζερ χρησιμοποιώντας τα φίλτρα εύρους HSV
- γράψτε την εικόνα που προκύπτει στο δίσκο για σκοπούς εντοπισμού σφαλμάτων
- υπολογίστε την απόσταση με βάση την συντεταγμένη y
- γράψτε την απόσταση στην οθόνη LCD.
Ωστόσο, τα μέτρα είναι πολύ ακριβή και αρκετά ακριβή για τη χρήση μου, υπάρχουν πολλά περιθώρια για βελτιώσεις. Για παράδειγμα, η κουκκίδα λέιζερ είναι πολύ κακής ποιότητας και η γραμμή λέιζερ δεν είναι πραγματικά κεντραρισμένη. Με ένα λέιζερ καλύτερης ποιότητας, τα βήματα βαθμονόμησης θα είναι πιο ακριβή. Ακόμα και η κάμερα δεν είναι πραγματικά καλά τοποθετημένη στο στήριγμα μου, γέρνει προς τα κάτω.
Μπορώ επίσης να αυξήσω την ανάλυση του εύρους εύρους περιστρέφοντας την κάμερα κατά 90º χρησιμοποιώντας το πλήρες με και να αυξήσω την ανάλυση στο μέγιστο που υποστηρίζει η κάμερα. Με την τρέχουσα εφαρμογή περιοριζόμαστε σε εύρος 0 έως 384 pixel, θα μπορούσαμε να αυξήσουμε το ανώτατο όριο στα 1640, 4 φορές την τρέχουσα ανάλυση. Η απόσταση θα είναι ακόμα πιο ακριβής.
Ως συνέχεια, θα πρέπει να εργαστώ στις βελτιώσεις ακριβείας που προανέφερα και να φτιάξω ένα περίβλημα για το εύρημα εύρους. Το περίβλημα θα πρέπει να έχει ακριβές βάθος για να διευκολύνει τις μετρήσεις τοίχου σε τοίχο.
Συνολικά το τρέχον σύστημα είναι αρκετό για μένα και θα μου εξοικονομήσει χρήματα κάνοντας το σπίτι μου σχέδιο!
Συνιστάται:
Σεμινάριο: Πώς να δημιουργήσετε ανιχνευτή εύρους χρησιμοποιώντας Arduino Uno και υπερηχητικό αισθητήρα: 3 βήματα
Φροντιστήριο: Πώς να χτίσετε ανιχνευτή εύρους χρησιμοποιώντας Arduino Uno και υπερηχητικό αισθητήρα: Περιγραφή: Αυτό το σεμινάριο δείχνει πώς να φτιάξετε έναν απλό ανιχνευτή εμβέλειας που να μπορεί να μετρήσει την απόσταση μεταξύ του αισθητήρα υπερήχων (US-015) και του εμποδίου μπροστά του. Αυτός ο αισθητήρας υπερήχων US-015 είναι ο τέλειος αισθητήρας σας για μέτρηση απόστασης και
Η ευκολότερη κάμερα web ως κάμερα ασφαλείας - Ανίχνευση κίνησης και εικόνες με email: 4 βήματα
Η ευκολότερη κάμερα ως κάμερα ασφαλείας - Ανίχνευση κίνησης και εικόνες μέσω ηλεκτρονικού ταχυδρομείου: Δεν χρειάζεται πλέον να κατεβάζετε ή να διαμορφώνετε λογισμικό για να λαμβάνετε εικόνες που εντοπίζονται από την κάμερα στο email σας - απλά χρησιμοποιήστε το πρόγραμμα περιήγησής σας. Χρησιμοποιήστε ένα ενημερωμένο πρόγραμμα περιήγησης Firefox, Chrome, Edge ή Opera σε Windows, Mac ή Android για να τραβήξετε την εικόνα
Mini CNC λέιζερ χαράκτης ξύλου και κόπτης χαρτιού λέιζερ .: 18 βήματα (με εικόνες)
Mini CNC Laser Wood Engraver and Laser Paper Cutter: This is a Instructables on how I made a Arduino based Laser CNC χαρακτής ξύλου και Thin paper cutter χρησιμοποιώντας παλιές μονάδες DVD, λέιζερ 250mW. Ο χώρος παιχνιδιού είναι 40mm x 40mm max. Δεν είναι διασκεδαστικό να φτιάχνετε ένα δικό σας μηχάνημα από παλιά πράγματα;
Αυτόματη λαβή χρησιμοποιώντας αισθητήρα λέιζερ και φωνητικές εντολές: 5 βήματα (με εικόνες)
Αυτόματη λαβή χρησιμοποιώντας αισθητήρα λέιζερ και φωνητικές εντολές: Το να πιάσετε αντικείμενα που μας φαίνεται απλό και φυσικό είναι στην πραγματικότητα ένα πολύπλοκο έργο. Ο άνθρωπος χρησιμοποιεί την αίσθηση της όρασης για να καθορίσει την απόσταση από το αντικείμενο που θέλει να αρπάξει. Το χέρι ανοίγει αυτόματα όταν βρίσκεται πολύ κοντά στο
Δημιουργία μικρών ρομπότ: Δημιουργία ενός ρομπότ μικρού κυβικού ίντσας Micro-Sumo και μικρότερο: 5 βήματα (με εικόνες)
Δημιουργία Μικρών Ρομπότ: Δημιουργία Ρομπότ Μικρού Σούμο και Μικρότερων Κυβικών ίντσας: Ακολουθούν μερικές λεπτομέρειες σχετικά με την κατασκευή μικροσκοπικών ρομπότ και κυκλωμάτων. Αυτό το διδακτικό θα καλύψει επίσης μερικές βασικές συμβουλές και τεχνικές που είναι χρήσιμες στην κατασκευή ρομπότ οποιουδήποτε μεγέθους. Για μένα, μία από τις μεγάλες προκλήσεις στα ηλεκτρονικά είναι να δούμε πόσο μικρό είναι ένα