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

A Voice Controlled Jumping Jack- Έκδοση Google Voice AIY: 3 Βήματα
A Voice Controlled Jumping Jack- Έκδοση Google Voice AIY: 3 Βήματα

Βίντεο: A Voice Controlled Jumping Jack- Έκδοση Google Voice AIY: 3 Βήματα

Βίντεο: A Voice Controlled Jumping Jack- Έκδοση Google Voice AIY: 3 Βήματα
Βίντεο: TOP 30 SCARIEST GHOST Videos of the YEAR That Will Give You Nightmares! 2024, Ιούλιος
Anonim
A Voice Controlled Jumping Jack- Έκδοση Google Voice AIY
A Voice Controlled Jumping Jack- Έκδοση Google Voice AIY
A Voice Controlled Jumping Jack- Έκδοση Google Voice AIY
A Voice Controlled Jumping Jack- Έκδοση Google Voice AIY
A Voice Controlled Jumping Jack- Έκδοση Google Voice AIY
A Voice Controlled Jumping Jack- Έκδοση Google Voice AIY
A Voice Controlled Jumping Jack- Έκδοση Google Voice AIY
A Voice Controlled Jumping Jack- Έκδοση Google Voice AIY

Έχετε λοιπόν αυτό το κιτ φωνής AIY για τα Χριστούγεννα και παίζετε με αυτό, ακολουθώντας τις οδηγίες. Είναι αστείο, αλλά τώρα;

Το έργο που περιγράφεται παρακάτω παρουσιάζει μια απλή συσκευή που μπορεί να κατασκευαστεί χρησιμοποιώντας το AIY voice HAT για το Raspberry Pi. Χρησιμοποιεί το σύστημα φωνητικής αναγνώρισης Google για τον έλεγχο των LED και δύο σερβομηχανών, οδηγώντας τα χέρια και τα πόδια ενός γρύλου με πολύ απλή ταχύτητα.

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

Εάν ενεργοποιήσετε το σύστημα αναγνώρισης φωνής με το κλείσιμο του χεριού σας και πείτε «τα χέρια ψηλά», ο γρύλος με άλματα θα σηκώσει τα χέρια και τα πόδια, το «χέρια στο κέντρο» θα μετακινήσει και τα δύο servos στη μεσαία θέση και στα «χέρια κάτω» τα χέρια και τα πόδια να χαμηλώσει. Στο «αριστερά πάνω» το αριστερό χέρι και τα πόδια θα σηκωθούν και στο «δεξιά κάτω» θα κατεβάσουν το δεξί, στο «δεξιά πάνω» αντίστροφα. "Dance", θα το κάνει να χορεύει, τουλάχιστον τουλάχιστον. Μιλάει επίσης, ρίξτε μια ματιά στο συνημμένο βίντεο.

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

Για να απλοποιηθεί η χρήση του ειδικά από μικρότερα παιδιά και να ενισχυθεί ο «μαγικός» παράγοντας, το κουμπί στο κουτί AIY αντικαταστάθηκε ως σκανδάλη από έναν αισθητήρα εγγύτητας. Για την απλότητά του, χρησιμοποίησα ένα ψηφιακό ξεκλείδωμα αισθητήρα απόστασης από το Pololu που αναγνωρίζει εάν ένα αντικείμενο είναι πιο κοντά από 5 cm και μπορεί να χρησιμοποιηθεί πολύ σαν ένα κουμπί. Οι λυχνίες LED δείχνουν πότε η συσκευή περιμένει παραγγελίες, ακούει ή "σκέφτεται". Τα σερβίς, ο αισθητήρας και τα LED ελέγχονται από τη βιβλιοθήκη λογισμικού GPIOZero.

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

Μπορείτε να χρησιμοποιήσετε και τις δύο πλευρές του σώματος, ανάλογα με το αν θέλετε να παρουσιάσετε το κινούμενο εργαλείο ή να έχετε μια ωραία, φιλική προς τα παιδιά διάταξη. --------- Το "Hampelmann" είναι ο γερμανικός όρος για το "jumping jack", με ορισμένες χροιά.

Βήμα 1: Υλικά που χρησιμοποιούνται

Υλικά που χρησιμοποιούνται
Υλικά που χρησιμοποιούνται
Υλικά που χρησιμοποιούνται
Υλικά που χρησιμοποιούνται

Raspberry Pi 3; 32 £ στο Pimoroni, UK

Κιτ φωνής AIY. 25 £ στο Pimoroni, UK

Digitalηφιακός αισθητήρας απόστασης Pololu με αισθητήρα Sharp, 5 cm. 5,90 € στο Exp-tec.de

Δύο σερβο 9γρ

Δύο λευκές λυχνίες LED και μια αντίσταση

Μερικές κεφαλίδες και καλώδια άλματος

Μια πλάκα Forex 2 mm, 250 x 500 mm. 1,70 € στο Modulor, Βερολίνο, Γερμανία

Βίδες, παξιμάδια και ροδέλες M3, για τη σύνδεση όλων των κινούμενων μερών. Χρησιμοποίησα έξι βίδες Nylon 10 10 και τέσσερις 16 mm.

Έξι βίδες και παξιμάδια Μ2, για να στερεώσετε τα servos στις πλάκες και να συνδέσετε τους βραχίονες και τα γρανάζια των servos.

Λίγες σταγόνες πλαστική κόλλα

Βήμα 2: Συναρμολόγηση και χρήση της συσκευής

Συναρμολόγηση και χρήση της συσκευής
Συναρμολόγηση και χρήση της συσκευής
Συναρμολόγηση και χρήση της συσκευής
Συναρμολόγηση και χρήση της συσκευής
Συναρμολόγηση και χρήση της συσκευής
Συναρμολόγηση και χρήση της συσκευής

Όσον αφορά το ίδιο το κιτ φωνής AIY, απλώς ακολουθήστε τις οδηγίες στην περιγραφή που συνοδεύει το κιτ, συμπεριλαμβανομένης της ενότητας σχετικά με το σερβο. Θα συνιστούσα να κολλήσετε αρκετές κεφαλίδες τριών ακίδων στις σερβο θύρες στη φωνητική έξοδο AIY, ώστε να μπορείτε να συνδέσετε πολύ εύκολα servos, αισθητήρα και LED με το HAT.

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

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

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

Στερεώστε τα servos και τα κινούμενα μέρη στην πλάκα βάσης. Προσθέστε τον αισθητήρα απόστασης και τη λυχνία LED όπως υποδεικνύεται. Τα σερβίς είναι στερεωμένα με βίδες Μ2, όλα τα κινούμενα μέρη με βίδες Μ3. Χρησιμοποίησα βίδες Nylon M3, αλλά μόνο για αισθητικούς λόγους.

Ελέγξτε εάν οι σερβοφόροι βραχίονες είναι τοποθετημένοι στη μεσαία θέση. Συνδέστε βραχίονες και γρανάζια σερβο, χρησιμοποίησα βίδες M2 για το σκοπό αυτό.

Συνδέστε σερβο, LED και τον αισθητήρα απόστασης στους συνδετήρες σερβο στην πλακέτα AIY. Μπορεί να χρειαστείτε καλώδια επιμήκυνσης/βραχυκυκλωτήρα. Επισυνάπτω το αριστερό σερβο στο "servo0" (GPIO 26) το δεξί σερβο σε "servo2" (GPIO 13), τα LED σε "servo5" (GPIO 24) και τον αισθητήρα στο "servo3" (GPIO 5) στο AIY φωνή ΚΑΠΕΛΟ.

Αντιγράψτε το παρεχόμενο αρχείο "Hampelmann.py" στον υποφάκελο AIY "src" και κάντε το άμεσα εκτελέσιμο για οποιονδήποτε. Για να το κάνετε αυτό, μπορείτε να επιλέξετε το αρχείο στον διαχειριστή αρχείων, στη συνέχεια κάντε δεξί κλικ και επιλέξτε Ιδιότητες, επιλέξτε Δικαιώματα, μεταβείτε στην επιλογή Εκτέλεση, επιλέξτε ~ οποιονδήποτε. Or γράψτε "chmod +x src/Hampelmann.py" στην κονσόλα dev.

Ελέγξτε αν όλα έχουν ρυθμιστεί στη θέση τους και είναι σταθερά ή είναι κινητά όταν απαιτείται. Ανοίξτε τη γραμμή εντολών Dev, πληκτρολογήστε "src/Hampelmann.py" και ξεκινήστε το πρόγραμμα. Εάν μετακινήσετε το χέρι ή τα δάχτυλά σας μπροστά από τον αισθητήρα απόστασης, η μονάδα AIY θα ζητήσει παραγγελίες και τα LED θα αναβοσβήνουν. Οι παραγγελίες που εφαρμόζονται είναι "δεξιά/αριστερά/χέρια πάνω/κάτω/κέντρο", "χορός", "ενεργοποίηση/απενεργοποίηση LED" και "αντίο".

Παίζω. Μετακινήστε το χέρι σας μπροστά από τον αισθητήρα, μιλήστε όταν σας ζητηθεί και δώστε στη συσκευή λίγο χρόνο για να αντιδράσει. Η καθυστέρηση είναι μάλλον υψηλή. Crtl+C ή "Αντίο" θα σταματήσει το πρόγραμμα.

Μπορείτε να τροποποιήσετε το αρχείο χρησιμοποιώντας το Nano ή άλλο απλό πρόγραμμα επεξεργασίας κειμένου.

Παρατηρήσεις: Λάβετε υπόψη ότι ορισμένες λέξεις και όροι αναγνωρίζονται ως λέξεις που ξεκινούν με κεφαλαίο γράμμα, ως «Κέντρο» ή «Δεξί Κέντρο», όπως άλλοι δεν είναι, π.χ. «Ακριβώς πάνω». Πρέπει να χρησιμοποιήσετε την ακριβή φόρμα που δίνεται από τη μονάδα αναγνώρισης φωνής για να ενεργοποιήσετε κάποια ενέργεια.

Βήμα 3: Το σενάριο Python

Όπως αναφέρθηκε προηγουμένως, το σενάριο βασίζεται στο σενάριο servo_demo.py από τις φωνητικές οδηγίες του AIY, με ορισμένες προσθήκες. Η πρώτη έκδοση είναι το αρχείο Hampelmann.py που θα βρείτε συνημμένο. Το AngularServo από το GPIOZero επιτρέπει να περιοριστεί το εύρος δράσης του σερβο και να καθοριστεί ακριβώς πόσο μακριά θα κινηθεί. Αλλά προτιμώ τη βρετανική φωνή από την αρχική. Και η συσκευή μπορεί επίσης να μιλά, αλλά να μην καταλαβαίνει (;), Αγγλικά, Γερμανικά, Ιταλικά, Γαλλικά και Ισπανικά. Παρακάτω μπορείτε να βρείτε το σενάριο Hampelmann2.py, με τη βρετανική φωνή και λίγο ιταλικά και γερμανικά. Λάβετε υπόψη ότι πρέπει να κάνετε τα σενάρια εκτελέσιμα για να τα εκτελέσετε.

#!/usr/bin/env python3 # Αυτό το σενάριο είναι μια προσαρμογή του servo_demo.py script για το AIY voice HAT, # βελτιστοποιημένο για το AIY jumping jack aiy.audio import aiy.cloudspeech import aiy.voicehat από gpiozero import LED από gpiozero εισαγωγή AngularServo από gpiozero εισαγωγή Κουμπί από ώρα εισαγωγής ύπνου def main (): αναγνωριστικό = aiy.cloudspeech.get_recognizer () αναγνωριστικό.expect_phrase ('δεξιά επάνω') αναγνωριστικό.expect_phrase ('δεξιά κάτω') αναγνωριστικό.expect_phrase ('Δεξιά Κέντρο ') # τα κεφαλαία γράμματα υπάρχουν εκ προθέσεως («κάτω χέρια»).audio.get_recorder (). έναρξη () servo0 = AngularServo (26, min_angle = -40, max_angle = 40) # 1η σύνδεση ή, GPIO 26 servo2 = AngularServo (13, min_angle = -40, max_angle = 40) # 3ος σύνδεσμος, GPIO 13 led0 = LED (24) # LED συνδέονται στο servo5/GPIO 24 απόσταση = Κουμπί (5) # αισθητήρας απόστασης συνδεδεμένος στο servo3/GPIO 05 # άλλα: GPIO 6 στο servo1, 12 στο servo4 aiy.audio.say ("Hello!",) aiy.audio.say ("Για να ξεκινήσετε, μετακινήστε το χέρι σας κοντά στον αισθητήρα",) ενώ είναι True: led0.on () # LED σε εκτύπωση ("Για να ενεργοποιήσετε την αναγνώριση φωνής, μετακινήστε το χέρι σας κοντά στον αισθητήρα απόστασης και μετά μιλήστε") εκτύπωση ('Οι αναμενόμενες λέξεις -κλειδιά είναι: χέρια/αριστερά/δεξιά επάνω/κάτω/κέντρο,') εκτύπωση ('LED on/off, χορός και αντίο.') print () distance.wait_for_press () print ('Listening…') aiy.audio.say ("Παρακαλώ δώστε τις παραγγελίες σας",) led0.blink () # light κλείσιμο κειμένου = αναγνωριστικό.αναγνώριση () εάν το κείμενο δεν είναι: aiy.audio.say ('Συγγνώμη, δεν σας άκουσα.',) αλλιώς: εκτύπωση ('Είπατε' ', κείμενο,' "') # Σας επιτρέπει ελέγξτε την ερμηνεία των συστημάτων εάν "δεξιά" στο κείμενο: εκτύπωση ("Μετακίνηση servo0 στη μέγιστη θέση") servo0.angle = 35 elif "δεξιά προς τα κάτω" στο κείμενο: εκτύπωση ("Μετακίνηση servo0 στην ελάχιστη θέση ') servo0.angle = -35 elif' Δεξί Κέντρο 'σε κείμενο: #σωστά γράμματα είναι κρίσιμη εκτύπωση (' Μετακίνηση servo0 στη μεσαία θέση ') servo0.angle = 0 elif' αριστερά 'στο κείμενο: εκτύπωση (' Μετακίνηση servo2 στη μέγιστη θέση ') servo2.angle = -35 elif' αριστερά 'στο κείμενο: εκτύπωση (' Μετακίνηση servo2 στην ελάχιστη θέση ') servo2.angle = 35 elif' αριστερό κέντρο 'στο κείμενο: εκτύπωση (' Μετακίνηση servo2 σε μεσαία θέση ') servo2.angle = 0 elif' χέρια επάνω 'στο κείμενο: εκτύπωση (' Μετακίνηση servo2 στη μέγιστη θέση ') servo2.angle = -35 servo0.angle = 35 elif' χέρια κάτω 'σε κείμενο: εκτύπωση (' Μετακίνηση servo2 στην ελάχιστη θέση ») servo2.angle = 35 servo0.angle = -35 elif« hands Center »στο κείμενο: εκτύπωση (« Μετακίνηση servo2 στη μεσαία θέση ») servo2.angle = 0 servo0.angle = 0 elif« LED off » σε κείμενο: εκτύπωση («απενεργοποίηση εξωτερικού LED 0») led0.off () elif «LED on» σε κείμενο: εκτύπωση («ενεργοποίηση εξωτερικού LED 0») led0.on () # light elif «χορός» σε κείμενο: εκτύπωση ("τώρα εκτελεί χορό νούμερο ένα") aiy.audio.say ("Λοιπόν, θα προσπαθήσω για το καλύτερο!",) led0.on () # ανάβει για i στο εύρος (3): servo0.angle = 0 servo2.angle = 0 sleep (1) servo0.angle = 35 servo2.angle = -35 sleep (1) servo0.angle = 0 servo2.angle = -35 sleep (1) servo0.angle = -25 servo2.angle = 0 ύπνος (1) servo0.angle = 30 servo2.angle = 20 ύπνος (1) servo0.angle = 0 servo2.angle = 0 led0.off () # light off elif «αντίο» στο κείμενο: aiy.audio.say ("Αντίο",) aiy.audio.say ("Arrivederci",) aiy.audio.say ("Auf Wiedersehen",) servo0.angle = 0 servo2.angle = 0 led0.off () sleep (3) print ('bye!') break else: print ('no keyword αναγνωρίζεται!') aiy.audio.say ("Συγγνώμη, δεν σας κατάλαβα",) if _name_ == ' _main_ ': main ()

Συνιστάται: