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

Zombie Detecting Smart Security Owl (Deep Learning): 10 βήματα (με εικόνες)
Zombie Detecting Smart Security Owl (Deep Learning): 10 βήματα (με εικόνες)

Βίντεο: Zombie Detecting Smart Security Owl (Deep Learning): 10 βήματα (με εικόνες)

Βίντεο: Zombie Detecting Smart Security Owl (Deep Learning): 10 βήματα (με εικόνες)
Βίντεο: Part 2 - Lord Jim Audiobook by Joseph Conrad (Chs 07-12) 2024, Νοέμβριος
Anonim

Γεια σε όλους, καλώς ήρθατε στο T3chFlicks! Σε αυτό το σεμινάριο για τις Απόκριες, θα σας δείξουμε πώς βάζουμε μια εξαιρετικά τρομακτική τροπή σε ένα κλασικό οικιακό κλασικό: την κάμερα ασφαλείας.

Πως?! Έχουμε φτιάξει μια κουκουβάγια νυχτερινής όρασης που χρησιμοποιεί επεξεργασία εικόνας για την παρακολούθηση ατόμων. Ω, και ακούγεται, ακριβώς όπως το πραγματικό!

Είμαστε πολύ ενθουσιασμένοι με αυτό το έργο και περιμέναμε να το κάνουμε από τότε που έπεσε το νέο Raspberry Pi 4. Διαθέτει 4 GB RAM, η οποία ανοίγει την πόρτα σε πολλές πραγματικά συναρπαστικές δυνατότητες, συμπεριλαμβανομένης της επεξεργασίας εικόνας με μοντέλα βαθιάς εκμάθησης σε πραγματικό χρόνο.

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

Προμήθειες

Για αυτήν την κατασκευή, θα χρειαστείτε:

  • Raspberry Pi 4 (4 GB Ram) Amazon
  • Νυχτερινή κάμερα Amazon
  • Micro Servo Amazon
  • Fεύτικη κουκουβάγια Amazon
  • Κόλλα Amazon
  • Ζωγραφίστε το Amazon
  • Βιδώνει την Amazon
  • USB ηχείο Amazon
  • Μεγάλο (5v+) φορητό τροφοδοτικό Amazon
  • 3D εκτυπωτής Amazon

Βήμα 1: Βήμα 1: Αποκεφαλίστε

Βήμα 1: Αποκεφαλίστε
Βήμα 1: Αποκεφαλίστε
Βήμα 1: Αποκεφαλίστε
Βήμα 1: Αποκεφαλίστε
Βήμα 1: Αποκεφαλίστε
Βήμα 1: Αποκεφαλίστε

ένα. Τραβήξτε το κεφάλι από την κουκουβάγια (μερικές φορές πρέπει απλώς να είστε βάναυσος) τραβώντας δυνατά το κεφάλι της εκεί που κολλάει στο ελατήριο.

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

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

ρε. Χρησιμοποιώντας τη βίδα που συνέδεσε τον κύλινδρο με το ελατήριο, συνδέστε το σερβο στον κύλινδρο.

μι. Αφαιρέστε το ελατήριο ξεβιδώνοντας τις τρεις βίδες που το συγκρατούν στο σώμα.

φά. Κάντε μια τρύπα στο πάνω μέρος του σώματος της κουκουβάγιας που είναι αρκετά μεγάλη για να χωρέσει μερικά καλώδια και το καλώδιο της κάμερας. Χρησιμοποιήσαμε έναν άκομψο συνδυασμό τρυπανιού και κατσαβιδιού για να το κάνουμε αυτό.

Βήμα 2: Βήμα 2: Προσθήκη έξυπνου

Βήμα 2: Προσθήκη έξυπνου
Βήμα 2: Προσθήκη έξυπνου
Βήμα 2: Προσθήκη έξυπνου
Βήμα 2: Προσθήκη έξυπνου
Βήμα 2: Προσθήκη έξυπνου
Βήμα 2: Προσθήκη έξυπνου

ένα. Εκτυπώστε 3D τη θήκη της κάμερας και βάψτε τη για να ταιριάζει με την κουκουβάγια - χρησιμοποιήσαμε μερικά φθηνά ακρυλικά χρώματα. Η ζωγραφική δεν είναι ένα ζωτικό βήμα, αλλά βελτιώνει δραματικά τη συνολική εμφάνιση!

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

ντο. Τοποθετήστε τη φωτογραφική μηχανή στη θήκη και συνδέστε το καλώδιο της κάμερας.

ρε. Κολλήστε το servo στο επάνω μέρος του ελατηρίου.

μι. Συνδέστε μεγάλα καλώδια στις σερβο καρφίτσες (5V, Gnd, σήμα)

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

Βήμα 3: Βήμα 3: Γεμίστε την

Βήμα 3: Γεμίστε την
Βήμα 3: Γεμίστε την
Βήμα 3: Γεμίστε την
Βήμα 3: Γεμίστε την
Βήμα 3: Γεμίστε την
Βήμα 3: Γεμίστε την
Βήμα 3: Γεμίστε την
Βήμα 3: Γεμίστε την

ένα. Αφαιρέστε το βύσμα από το κάτω μέρος της κουκουβάγιας και αυξήστε το μέγεθος αυτής της τρύπας κόβοντας το πλαστικό. Συνεχίστε να αυξάνετε το μέγεθος μέχρι το Raspberry Pi και το ηχείο να χωρέσουν στο σώμα της κουκουβάγιας.

σι. Μόλις η τρύπα είναι αρκετά μεγάλη για να χωρέσουν όλα τα εξαρτήματα μέσα, τραβήξτε το καλώδιο της κάμερας που τροφοδοτήσατε από την κορυφή της κουκουβάγιας από τη βάση και συνδέστε το στο Raspberry Pi.

ντο. Ομοίως, τραβήξτε τα σερβο καλώδια και συνδέστε τα στο Raspberry Pi:

  • +5v σε σερβο => +5V στο Pi
  • Gnd servo => gnd Pi
  • Σέρβο σήματος => ακίδα 12 Pi

ρε. Συνδέστε το ηχείο USB στο Pi.

μι. Τοποθετήστε την κάρτα SD στο Pi.

φά. Power Pi χρησιμοποιώντας φορητή τροφοδοσία.

σολ. Τοποθετήστε το Pi, το τροφοδοτικό και το ηχείο στην κουκουβάγια μέσα από την τρύπα στη βάση.

Βήμα 4: Βήμα 4: Ρυθμίστε το Pi

Βήμα 4: Ρυθμίστε το Pi
Βήμα 4: Ρυθμίστε το Pi

ΟΛΟΣ Ο ΚΩΔΙΚΟΣ ΜΠΟΡΕΙ ΝΑ ΒΡΕΙΤΑΙ ΣΤΟ

ένα. Κατεβάστε το Raspian και ανεβάστε το στην κάρτα SD σας χρησιμοποιώντας το Balena Etcher.

σι. Για να αποκτήσετε πρόσβαση στο pi σας από απόσταση

  • Προσθέστε ένα αρχείο που ονομάζεται ssh στην κάρτα sd εκκίνησης
  • Προσθέστε ένα αρχείο που ονομάζεται wpa_supplicant.conf και τοποθετήστε τα διαπιστευτήριά σας wifi

    ctrl_interface = DIR =/var/run/wpa_supplicant GROUP = netdev update_config = 1

    network = {ssid = "MySSID" psk = "MyPassword"}

ντο. Τοποθετήστε την κάρτα SD στο pi και δοκιμάστε μια πρόσβαση μέσω ssh.

Βήμα 5: Βήμα 5: Μετακίνηση της κεφαλής

Βήμα 5: Μετακίνηση του κεφαλιού
Βήμα 5: Μετακίνηση του κεφαλιού

Εκπαιδευτικό κώδικα για τη μετακίνηση του κεφαλιού (έλεγχος σερβο με βατόμουρο πι)

Για να ελέγξουμε ένα σερβο που τρέχει στο Pi, θα δημιουργήσουμε ένα σενάριο που θα ελέγχει τις καρφίτσες GPIO με τις οποίες είναι συνδεδεμένος ο servo.

ένα. Συνδέστε το σερβο στο Pi:

  • +5v σε σερβο => +5V στο Pi
  • Gnd servo => gnd στο Pi
  • Σήμα servo => pin 12 στο Pi

σι. Πρέπει πρώτα να ρυθμίσετε τις ακίδες gpio για να χρησιμοποιήσετε το PWM στο pin σήματος του servo.

ντο. Στη συνέχεια, είναι τόσο απλό όσο η επιλογή του κύκλου λειτουργίας (εξηγείται εδώ) του πείρου σήματος για να μετακινήσετε το σερβο από 90 μοίρες με κύκλο λειτουργίας 7,5 έως 0 μοίρες όταν ο κύκλος λειτουργίας είναι 2,5 και σε 180 μοίρες με κύκλο λειτουργίας 12.5

εισαγωγή RPi. GPIO ως GPIO

χρόνος εισαγωγής GPIO.setmode (GPIO. BOARD) GPIO.setwarnings (False) GPIO.setup (12, GPIO. OUT) p = GPIO. PWM (12, 50) p.start (7.5) try: while True: p. ChangeDutyCycle (7.5) # 90 μοίρες ώρα. Ύπνος (1) σελ. ChangeDutyCycle (2.5) # 0 μοίρες χρόνος. Ύπνος (1) σελ. ChangeDutyCycle (12.5) # 180 μοίρες χρόνος. Ύπνος (1) εκτός από το πληκτρολόγιο Διακοπή: p.stop () GPIO.cleanup ()

Βήμα 6: Βήμα 6: Κάνοντας το Hoot

Βήμα 6: Κάνοντας το Hoot
Βήμα 6: Κάνοντας το Hoot
Βήμα 6: Κάνοντας το Hoot
Βήμα 6: Κάνοντας το Hoot

Εκπαιδευτικό κώδικα για την κατασκευή της κουκουβάγιας (αναπαραγωγή ήχου με βατόμουρο pi)

ένα. Συνδέστε το ηχείο USB.

σι. Κατεβάστε έναν ήχο - επιλέξαμε μια τρομακτική φασαρία.

ντο. Παίξτε τον ήχο εκτελώντας αυτήν την εντολή: omxplayer -o alsa: hw: 1, 0 owl_sound.mp3

[ρε. Εάν αυτό δεν λειτουργεί, ελέγξτε ποια έξοδο χρησιμοποιεί το Pi σας και σε ποια ένταση χρησιμοποιώντας την εντολή alsamixer - θα σας υποδεχτεί η οθόνη του μίξερ όπου μπορείτε να αλλάξετε την ένταση ήχου και να επιλέξετε τη συσκευή πολυμέσων σας. Για να αυξήσετε την ένταση του ήχου σας, κάντε την εντολή όπως αυτό omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500 Για να παίξετε αυτόν τον ήχο χρησιμοποιώντας Python, ρίξτε μια ματιά στο δοκιμαστικό μας σενάριο.]

υποεπεξεργασία εισαγωγής

command = "omxplayer -o alsa: hw: 1, 0 owl_sound.mp3 --vol 500" player = subprocess. Popen (command.split (''), stdin = subprocess. PIPE, stdout = subprocess. PIPE, stderr = subprocess. ΣΩΛΗΝΑΣ)

Βήμα 7: Βήμα 7: Ροή βίντεο από το Pi

Βήμα 7: Μεταδώστε το βίντεο από το Pi
Βήμα 7: Μεταδώστε το βίντεο από το Pi
Βήμα 7: Μεταδώστε το βίντεο από το Pi
Βήμα 7: Μεταδώστε το βίντεο από το Pi

Εκπαιδευτικό κώδικα δημιουργώντας μια ροή κάμερας raspberry pi

ένα. Εκτελέστε python app.py και δείτε στο τοπικό σας δίκτυο στη διεύθυνση https://raspberrypi.local: 5000

σι. Αυτός ο κώδικας ελήφθη και προσαρμόστηκε ελαφρώς από τον Miguel Grinberg https://blog.miguelgrinberg.com/post/flask-video-… εξηγεί όμορφα πώς γίνεται και τα σεμινάρια του είναι υπέροχα-deffo ελέγξτε τον! Η βασική ιδέα είναι ότι χρησιμοποιούμε νήματα και γεννήτριες για να βελτιώσουμε την ταχύτητα ροής.

Βήμα 8: Βήμα 8: Ανίχνευση σώματος

Βήμα 8: Ανίχνευση σώματος
Βήμα 8: Ανίχνευση σώματος

Κωδικός για ανίχνευση σώματος (ImageNetSSD σε ροή βίντεο με raspberry pi)

ένα. Δεδομένου ότι χρησιμοποιούμε το Raspberry Pi 4, σκεφτήκαμε ότι ήταν καλύτερο να δοκιμάσουμε κάποια μοντέλα βαθιάς εκμάθησης σε αυτό αντί για τη βασική μέθοδο HaarCascade που είχαμε περιοριστεί μέχρι τώρα.

σι. Ρίξαμε μια ματιά σε μερικά από τα προ-εκπαιδευμένα μοντέλα εκεί έξω, όπως το YOLOv3 που φαίνεται εξαιρετικά δροσερό. YOLOv3 μικροσκοπικά βάρη, τα οποία θα ήταν τέλεια για το Pi, αλλά δεν μπορούσαμε να το πετύχουμε:(ντο. Αντ 'αυτού, επιλέξαμε το μοντέλο MobileSSD το οποίο μπορούμε να τρέξουμε χρησιμοποιώντας την ενότητα openCVs DNN (βαθύ νευρωνικό δίκτυο), όπως μάθαμε από αυτόν τον κώδικα: https://heartbeat.fritz.ai/real-time-object-detection-on-raspberry -pi-using-opencv-dnn-98827255fa60 και από τον ήρωα των σεμιναρίων επεξεργασίας εικόνας, Adrian Rosebrock: https://www.pyimagesearch.com/2017/09/11/object-detection-with-deep-learning-and- opencv/

ρε. Ωστόσο, καθώς προσπαθούμε να μεταδώσουμε αυτό το περιεχόμενο και να εκτελέσουμε μοντέλα σε κάθε καρέ, αυτό έχει ως αποτέλεσμα ένα καθυστερημένο, κατακερματισμένο βίντεο. Μάθαμε ξανά από τον Adrian Rosebrock https://www.pyimagesearch.com/2017/10/16/raspberry-pi-deep-learning-object-detection-with-opencv/ και χρησιμοποιήσαμε την ενότητα πολλαπλής επεξεργασίας Python για να βάλουμε τις εικόνες μας σε ουρές όπου μπορούν να υποβληθούν σε επεξεργασία χωρίς να μπλοκάρουν τόσο έντονα τη ροή της κάμερας.

μι. Δοκιμάστε να εκτελέσετε μόνοι σας τον κώδικα:)

Βήμα 9: Βήμα 9: Αποστολή ειδοποιήσεων Zombie

Βήμα 9: Αποστολή ειδοποιήσεων Zombie
Βήμα 9: Αποστολή ειδοποιήσεων Zombie
Βήμα 9: Αποστολή ειδοποιήσεων Zombie
Βήμα 9: Αποστολή ειδοποιήσεων Zombie

Κωδικός για αποστολή ειδοποίησης (python στο τηλέφωνο)

ένα. Αποφασίσαμε να χρησιμοποιήσουμε την υπηρεσία ειδοποιήσεων

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

αιτήματα εισαγωγής

payload = {"app_key": "APP_KEY", "app_secret": "APP_SECRET", "target_type": "app", "content": "Η κουκουβάγια εντόπισε ζόμπι." } r = request.post ("https://api.pushed.co/1/push", data = payload)

Είναι εξαιρετικά απλό και μπορείτε να προσαρμόσετε το όνομα ειδοποίησης!

Βήμα 10: Τι χαμός

Τι χαμός!
Τι χαμός!

Ελπίζουμε να απολαύσατε το έργο μας Smart Security Owl! Αυτό ήταν ένα εξαιρετικά διασκεδαστικό αποτέλεσμα και αισθάνομαι πολύ πιο ασφαλές γνωρίζοντας ότι το σπίτι μου φυλάσσεται από την αξιόπιστη κουκουβάγια μας.

Εάν πιστεύετε ότι αυτό θα ήταν μια υπέροχη προσθήκη για το Halloween στο έξυπνο σπίτι σας, ψηφίστε μας στον διαγωνισμό Instructables Halloween και ως συνήθως, θυμηθείτε να κάνετε like, σχόλιο και εγγραφή!

Εγγραφείτε στη λίστα αλληλογραφίας μας!

Συνιστάται: