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

Ανιχνευτής διάθεσης σκύλου (Raspberry Pi): 5 βήματα
Ανιχνευτής διάθεσης σκύλου (Raspberry Pi): 5 βήματα

Βίντεο: Ανιχνευτής διάθεσης σκύλου (Raspberry Pi): 5 βήματα

Βίντεο: Ανιχνευτής διάθεσης σκύλου (Raspberry Pi): 5 βήματα
Βίντεο: Новая битва за арахис ► Смотрим Dune: Spice Wars (ранний доступ) 2024, Νοέμβριος
Anonim
Ανιχνευτής διάθεσης σκύλου (Raspberry Pi)
Ανιχνευτής διάθεσης σκύλου (Raspberry Pi)

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

Βήμα 1: Μέρη

Ανταλλακτικά
Ανταλλακτικά
Ανταλλακτικά
Ανταλλακτικά
Ανταλλακτικά
Ανταλλακτικά

Θα χρειαστείτε:

  • Raspberry Pi
  • Κόκκινες/πράσινες λυχνίες LED (X2)
  • Οθόνη
  • Πληκτρολόγιο/ποντίκι με USB
  • WiFi Dongle
  • Εξωτερικό μικρόφωνο USB
  • Αντίσταση 330 ohm (X2)

Προαιρετικά ανταλλακτικά

  • Εξωτερικό τροφοδοτικό Raspberry Pi
  • Κολλάρο σκύλου

Βήμα 2: Διαδικασία

Διαδικασία
Διαδικασία

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

Βήμα 3: Προγραμματισμός

Προγραμματισμός
Προγραμματισμός

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

#!/usr/bin/pythonimport pyaudio εισαγωγή sys εισαγωγή νήματος από το χρόνο εισαγωγής ύπνου από τον πίνακα εισαγωγής πίνακα εισαγωγής RPi. GPIO ως GPIO

φλοιός = 0

ουρλιαχτό = Λάθος κράτημα = 0 φλοιόςΜήκος = 5 καθυστέρηση = 0 αναμονή = 2 σημαία = 0 κόκκινο = 7 πράσινα = 5 έξοδα Σημαία = Λάθος

def toggleLightRed (γ):

GPIO.setmode (GPIO. BOARD) GPIO.setup (κόκκινο, GPIO. OUT) GPIO.output (c, True) sleep (10) GPIO.output (c, False) print ("Red toggled")

def toggleLightGreen (c):

GPIO.setmode (GPIO. BOARD) GPIO.setup (πράσινο, GPIO. OUT) GPIO.output (c, True) sleep (10) GPIO.output (c, False) print ("Green toggled")

def main ():

παγκόσμιος φλοιός παγκόσμιος ουρλιαχτός παγκόσμιος κρατήστε παγκόσμιος φλοιόςΜήκος παγκόσμια καθυστέρηση παγκόσμια σημαία παγκόσμια κόκκινη παγκόσμια πράσινη

κομμάτι = 8192

FORMAT = pyaudio.paInt16 CHANNELS = 1 RATE = 44100 threshold = 3000 max_value = 0 p = pyaudio. PyAudio () stream = p.open (format = FORMAT, channel = CHANNELS, rate = RATE, input = True, output = True, frames_per_buffer = chunk) GPIO.setmode (GPIO. BOARD) GPIO.setup (red, GPIO. OUT) GPIO.setup (green, GPIO. OUT) try: print "Detection initialized" while True: try: data = stream.read (κομμάτι) εκτός από το IOError ως ex: if ex [1]! = pyaudio.paInputOverflowed: raise data = '\ x00' * chunk as_ints = array ('h', data) max_value = max (as_ints) while max_value> threshold: delay = 0 κράτημα = κράτημα+1 δοκιμή: data = stream.read (chunk) εκτός IOError as ex: if ex [1]! = Pyaudio.paInputOverflowed: raise data = '\ x00' * chunk as_ints = array ('h', data) max_value = max (as_ints) if hold> = barkLength: howl = True print "HOWL DETECTED" toggleLightGreen (green) GPIO.cleanup () elif hold> 0 and hold

αν _name_ == '_main_':

κύριος()

Βήμα 4: Αντιμετώπιση προβλημάτων και τροποποίηση

Αντιμετώπιση προβλημάτων και τροποποίηση
Αντιμετώπιση προβλημάτων και τροποποίηση
Αντιμετώπιση προβλημάτων και τροποποίηση
Αντιμετώπιση προβλημάτων και τροποποίηση
Αντιμετώπιση προβλημάτων και τροποποίηση
Αντιμετώπιση προβλημάτων και τροποποίηση

Ρύθμιση

Πριν να εκτελέσετε το πρόγραμμα, θα χρειαστεί να πληκτρολογήσετε τα ακόλουθα στο τερματικό για να εγκαταστήσετε το PyAudio:

sudo apt-get intall python-pyaudio

Μετά από αυτό μπορείτε να δοκιμάσετε να εκτελέσετε το πρόγραμμα για να βεβαιωθείτε ότι λειτουργεί σωστά.

Αντιμετώπιση προβλημάτων

Ενδέχεται να αντιμετωπίσετε το ακόλουθο σφάλμα:

IOError: [Η είσοδος Errno ξεχείλισε] -9981

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

Τροποποίηση

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

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

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

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

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

Βήμα 5: Υλικό

Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα
Σκεύη, εξαρτήματα

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

Ακίνητος

Το πιο εύκολο πράγμα που πρέπει να κάνετε είναι να αφήσετε τα πάντα σε ένα σανίδι, καθώς δεν θα υπάρχει κίνηση που θα μπορούσε να αποσπάσει τα καλώδια. Συνδέστε τις καθόδους των κόκκινων LED στην καρφίτσα γείωσης στο Raspberry Pi και τις ανόδους είτε μέσω αντίστασης 330 ohm είτε απευθείας στην ακίδα 7 του Raspberry Pi. Κάντε το ίδιο με τις πράσινες λυχνίες LED, αλλά συνδέστε τις ανόδους στο pin 5. Εκτελέστε το πρόγραμμα και θα πρέπει να έχετε ολοκληρώσει το έργο μόλις τροποποιήσετε τον κώδικα στις ανάγκες σας.

Μη Στατικό

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

Συνδέστε τις λυχνίες LED στο κολάρο έτσι ώστε να είναι και οι δύο σε μια άνετη θέση και να είναι σε θέση να τις δει κάποιος όταν πλησιάζει.

Στη συνέχεια, συνδέστε το εξωτερικό τροφοδοτικό, όπως αυτό που βλέπετε ΕΔΩ, στο βατόμουρο pi και στερεώστε το στο γιακά με τρόπο που βολεύει τον σκύλο.

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

Συνιστάται: