Ο βοηθός φωνής της Google ήταν εδώ και τώρα καθώς και όταν η Amazon κυκλοφόρησε το ALEXA API καθώς και το Paas Cloud Code στο Raspberry Pi 2 ήταν ακριβώς Ένα ζήτημα του χρόνου πριν όλοι οι άλλοι πήγαν στο γρήγορο τρένο για τη δημιουργία βασιλεία. Η Google το έκανε με στυλ.
Λίγα κατανοήσουν ότι το API API Google για το Raspberry PI 3 ήταν διαθέσιμο για μεγάλο χρονικό διάστημα τώρα, ωστόσο, όταν αποφάσισαν να εξασθενήσουν ένα ελεύθερο σύνολο με τα προβλήματα του Μαΐου 2017 του περιοδικού Magpi, έκαναν αντίληψη σε όλους. Δυστυχώς ο κόσμος έχει περισσότερους κατασκευαστές καθώς και οι χάκερ καθώς και ο αριθμός των αντιγράφων του περιοδικού είναι περιορισμένοι.
Σε αυτό το writeup, σχεδιάζω την έκδοση DIY του AIY που θέτει σε όλους τους άλλους που επιθυμεί να μιλήσουν σε ένα κουτί από χαρτόνι. Παίρνω μια καλύτερη ματιά στο δωρεάν κιτ, να το ξεχωρίσετε, να το τοποθετήσετε μαζί καθώς και να το αντικαταστήσετε με το DIY Magic. Για να κάνετε τα πράγματα πιο βολικά, σχεδιάζω επίσης ένα περίβλημα που μπορείτε να εκτυπώσετε το 3D στο σύνολο του κιτ. ας αρχίσουμε.
Το τεμάχιο
Ένα φωνάζει στον φίλο μου [Shabaz] στο Ηνωμένο Βασίλειο για να μου στείλετε ένα αντίγραφο του Magpi. Το φωνητικό κιτ «Google Aiy Jobs Jobs» (κατά μόνο το αντίθετο ως το κιτ) περιέχει δύο PCB καθώς και πολλά άλλα πράγματα. Το φωνητικό καπέλο που εμφανίζεται σαν μια ηχητική κάρτα-σε-δίαιτα έχει εξαιρετικά περιορισμένο αριθμό εξαρτημάτων. Θα αναλάβω λεπτομερώς κάθε ενότητα καθώς και να σχεδιάσω το σχηματισμό kicad για το ίδιο ακριβώς ένα προς ένα
Σέρβο
Ξεκινώντας από την αριστερή πλευρά, υπάρχουν 6 σύνολα κεφαλίδων 3 ακίδων που χαρακτηρίζονται “Servos”. Η σήμανση της Servo Manage γίνεται δυνατή η χρήση της ενότητας PWM PWM του Raspberry PI 3. Κάθε σετ έχει ένα PIN GPIO, 5V καθώς και σύνδεση GND. Ο πείρος GPIO δεν συνδέεται απευθείας με την κεφαλίδα του Raspberry PI 3, ωστόσο μάλλον με 220OHM αντιστάτες περιορισμού (επισημαίνονται R1-R6).
Παροχή ηλεκτρικού ρεύματος
Ακριβώς νότια από αυτά είναι τα gadgets που εντοπίστηκαν Q5 καθώς και Q6 που υποθέτομαι είναι μέρος ενός κυκλώματος επιλογής τροφοδοσίας. Διορθώστε με αν κάνω λάθος, ωστόσο ακριβώς εδώ είναι η εκτίμησή μου. Η εργασία είναι απλή όπου το Q5 ενεργοποιείται μόνο όταν η τάση εισόδου είναι υψηλότερη από τις 5V από τη θύρα USB. Ένας απλός συγκριτής θα πρέπει να το κάνει, χρησιμοποιώντας το LM393 για αναφορά.
Επεξεργασία: [raivsr] εξήγησε ότι αυτό μπορεί να είναι το ισοδύναμο της ίδιας διόδου του Raspberry PI.
Διεπαφές επικοινωνίας
Βόρεια των κεφαλίδων του Servo είναι το J15 που επισημαίνεται I2C που συνδέει άμεσα με την κεφαλίδα Raspberry PI 3. Αυτό σημαίνει ότι αυτά δεν πρέπει να συνδέονται με τίποτα με pull-up 5V. Δεν χρησιμοποιούνται στο Διοικητικό Συμβούλιο, ωστόσο θα συζητήσουμε περισσότερο σε αυτό αργότερα. Ακριβώς δίπλα του είναι το SPI καθώς και οι κεφαλίδες UART 2-ακίδων. Για άλλη μια φορά αυτή τη σύνδεση απευθείας με την πρωτογενή κεφαλίδα καθώς και εξυπηρετεί μόνο ως ξεμπλοκάρισμα.
Το DAC καθώς και το EEPROM
Λίγο χαμηλότερο καθώς και εμφανίζουμε στο κουτ Αυτό είναι το μέγιστο max98357a (pdf) το οποίο είναι ένα I2S DAC με έναν ενισχυτή κλάσης D. Μισεύει το ομιλητή άμεσα, δεδομένου ότι υπάρχει μόνο μία έξοδος, μπορεί να είναι μόνο μονοφωνικός ή ολοκληρωμένος στερεοφωνικός. Είναι ακόμα αρκετά κουνιστό για τον προϋπολογισμό.
Το συναρπαστικό πράγμα είναι η ύπαρξη του JP6 που φαίνεται να έχει όλες τις συνδέσεις I2S από το Maxim Max98357A καθώς και μερικές άλλες επιλέγουν γραμμές. Ενσωματώθηκε με τις δύο Vias που συνδέουν στη δεύτερη έξοδο των ομιλητών, ενδέχεται να διαμορφώσετε ένα ακόμη Maxim Max98357a Breakout Board στην κορυφή για να πάρετε στερεοφωνικό ήχο. Πάω να κάνω το σχηματικό, καθώς και να το κατεβάσετε, καθώς και αν θέλετε να το δώσετε μια βολή, επιτρέψτε μου να καταλάβω τα αποτελέσματα. Σκεφτείτε την προαιρετική εργασία.
Δίπλα στο DAC είναι ένα SSOP 8 ακίδων που είναι ένα 24C32 (PDF) I2C EEPROM. Δεν συνδέεται με την κεφαλίδα I2C που μίλησα για νωρίτερα, ωστόσο μάλλον να πετάξει 27 καθώς και 28 της κεφαλίδας Raspberry PI 3. Σύμφωνα με το blog του Ίδρυμα Raspberry PI.
“Το EEPROM διαθέτει τις πληροφορίες του κατασκευαστή του συμβουλίου, τη διαμόρφωση του GPIO καθώς και ένα πράγμα που ονομάζεται θραύσμα” δένδρου συσκευών – βασικά μια περιγραφή του συνδεδεμένου υλικού που επιτρέπει στο Linux να τόνισε αμέσως τους απαραίτητους οδηγούς. ”
Έτσι, πήρε κάποια πρόσθετη σάλτσα που κάνει τα πράγματα να σημειωθούν καθώς και εγώ μπορεί να χρησιμοποιήσω ένα buspirate για να απορρίψω τα δεδομένα, ωστόσο δεν είμαι σίγουρος αν η Google το θεωρεί πνευματική κατοικία ή εμπορική ιδιοκτησία, οπότε δεν θα το κάνω. Έχω έναν εναλλακτικό για αυτό επίσης να ελέγχεται.
Οδηγός
Προχωρώντας προς τα δεξιά, ανακαλύπτουμε 4 κεφαλίδες που σημειώνουν “οδηγούς”. Αυτά είναι τα κυκλώματα MOSFET για τον έλεγχο των τόνων όπως τα ρελέ. [Shabaz] έκανε μια φανταστική εργασία που εντοπίζει τα στοιχεία σε αυτό καθώς και οι 3 καρφίτσες είναι gpio, 5V καθώς και οδηγός.
The MOSFETs can drive tons of as much as 500mA each thanks to a polyswitch nevertheless the GPIOs are offered for utilize directly as well. tons to be driven should be linked between the pins marked ‘+’ as well as ‘-‘. The header pin on the left is a direct gain access to to GPIOs header pins from the Raspberry Pi 3 as well as the schematic shows the same.
Use these to link LEDs or similar gadgets to suggest the operation of the relays or loads.
Microphone as well as Button Connectors
More fascinating stuff is happening on the right side’s upper right with a push button as well as two JST connectors. The 4 pin connector is meant for the push button that sits on top of the assembled enclosure. The little PCB mounted push button is wired in parallel with the outside switch as well as can be utilized in its location while setting up as well as testing. The 5 pin JST is for the microphone connector as well as has all the I2S pins.
The Microphones
Lastly, the microphone board is marked 432 QDF21G, as well as has Knowles SPH0645LM4H MEMs digital microphones that talk I2S directly.
Αυτό είναι!
That about wraps up the teardown as well as all the info needed to make your own AIY Kit. The KiCAD schematic data are offered for download from GitHub nevertheless I leave you with the fun part which is the design as well as routing.
Here is some food for thought. Some parts can be omitted as well as the size of the hat can be shrunk down to the Pi Zero pHat.
For simplicity reasons, I am utilizing the preconfigured OS picture from the Google AIY page. It is a tad short of 900MB as well as can be downloaded directly from Goolge (huge file).
Add A Shutdown Button
You most likely noticed the little golden button next to the huge eco-friendly button in the picture above as well as that is the very first part of the exercise. It is a shutdown button as well as is added since I don’t want to SSH to the box every time I want to turn it off safely.
Get the button you want to utilize as well as add two wires with female headers. This bit works even without the Voice Hat so feel free to try it out. next if you have a voice hat, add male headers to the I2C part. You may select any type of other pins as well as it will still work. link the button to the SDA or GPIO 2 as well as boot the Pi 3 up.
Open up your favourite text editor as well as copy-paste the complying with code into it.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/python
# simple script for shutting down the raspberry Pi at the press of a button.
# by Inderpreet Singh
import RPi.GPIO as GPIO
import time
import os
# utilize the Broadcom SOC Pin numbers
# configuration the Pin with interior pullups enabled as well as PIN in reading mode.
GPIO.setmode(GPIO.BCM)
GPIO.setup(02, GPIO.IN, pull_up_down = GPIO.PUD_UP)
# Our function on what to do when the button is pressed
def Shutdown(channel):
os.system(“sudo shutdown -h now”)
# add our function to execute when the button pressed event happens
GPIO.add_event_detect(02, GPIO.FALLING, callback = Shutdown, bouncetime = 2000)
# now wait!
while 1:
time.sleep(1)
Save the data in your /home/pi folder as shutdown.py
In a terminal type the complying with commands
1
chmod +x shutdown.py python shutdown.py &
This should make the script run in the background. If you press the button, the Pi should shutdown immediately. You may select to add a delay by uncommenting the sleep phone call in the example code. Alternatively, you may likewise modification the GPIO by replacing the appropriate number in the python script.
Δροσερός! now we can shutdown by pressing a button.
Add a USB noise Card
The obvious alternate to the Google AIY Voice Hat is to utilize any type of USB noise Cards that are offered from a number of sources. The easiest method is to just plug one in as well as configure the software application to utilize that instead of the Hat however when there two drivers installed, the python scripts requirement to be reconfigured to make whatever seamless.
Once you plug in the soundcard, the very first thing to do is inspect if it was acknowledged or not. In the terminal window, type in:
1
aplay – l
‘aplay’ is utilized by the scripts to speak out the replies so you should be able to see two noise devices. note that the onboard noise has been disabled from within the config.txt (see gadget tree reference) and can be enabled if you plan to utilize a USB microphone instead of the noise card. The windows output should look like the picture below.
I would like to set the USB noise card as the default audio, as well as for that we requirement to customize the /etc/asound.conf .
1
sudo nano /etc/asound.conf
Delete the existing material as well as replace it with text as shown below. though this sets the default input as well as output gadget to the USB device, there is one more step to make things work. (To exit nano, utilize Ctrl+x, y, return)
Next we edit to audio.py data that handles all the audio playing as well as recording functionality. For that, open up the data in your favourite text editor; mine is nano:
1
sudo nano /home/pi/voice-recognizer-raspi/src/audio.py
Scroll down to the part thatΚράτος “Arecord” που βρίσκεται στη λειτουργία __init__. Προφανώς υπάρχει μια αφοσιωμένη διαδικασία που διατηρεί τη συσκευή εγγραφής όπως θα δείξω στο βίντεο. Προς το παρόν, θέλουμε να επεξεργαστούμε τα επιχειρήματα για να διασφαλίσουμε ότι χρησιμοποιεί την κάρτα USB για να πιάσει ήχο αντί για το αρχικό φωνητικό καπέλο. Μια απλή προσαρμογή για να χρησιμοποιήσετε ‘-d’, ‘sysdefault: card = 1’ θα αρκεί όπως φαίνεται στην παρακάτω εικόνα.
Μια παρόμοια τροποποίηση είναι απαραίτητη για τη λειτουργία APLAY λίγο περισσότερο στον κώδικα.
Με αυτό, το hack είναι πλήρες! Κάντε διπλό κλικ στο ‘Test_audio.py’ για να επιθεωρήσετε εάν λειτουργεί ηχητικά έργα. Λείπουμε μόνο ένα μέρος του παζλ, όμως – το κουμπί “Ακούστε”! Έτσι, απλά καλωδίστε ένα κουμπί ώθησης μεταξύ gpio23 καθώς και από τον γειτονικό πείρο εδάφους καθώς και στη συνέχεια εκτελέστε ‘src / main.py’ για να αρχίσετε να παίζετε με ένα DIY Google Aiy.
Ένα demo
Ένα μικρό demo βίντεο του προτεινόμενου hack με μια κάρτα θορύβου USB, εξωτερικό ηχείο καθώς και ένα φθηνό μικρόφωνο.
Ένα περίβλημα
Το 3D τυπωμένο περίβλημα έχει σχεδιαστεί στο Fusion360 καθώς και τα δεδομένα STL αποτελούν μέρος του αποθετηρίου github. Μπορείτε να χρησιμοποιήσετε το ακριβές ίδιο περίβλημα για μια σειρά θέσεων εργασίας, καθώς υπάρχουν standoffs για το Raspberry PI καθώς και οι λιμένες εμφανίζονται για ευκολία. Υπάρχει μια μεγάλη περιοχή μέσα για να προσθέσετε καπέλα καθώς και επιπλέον κυκλώματα.
Έκανα το περίβλημα χωρισμένο από τη μέση για να εξασφαλίσει ότι γίνεται απλό να αποκτήσει πρόσβαση στον Γπιπέι. Το όλο θέμα θα πιέσει σε σχήμα, συμπεριλαμβανομένου του άνω καλύμματος που έχει τρύπες για τρία κουμπιά. Αν και θα είχε νόημα να έχουμε μικρότερα κουμπιά, καθώς το αποτέλεσμα αναμένεται να είναι πιο σκληρό από το χαρτόνι. Υπάρχει άφθονος χώρος για τον ομιλητή εάν επιλέξετε να συμπεριλάβετε ένα που είναι κάπως διαφορετικό.
Δεν είχα τη δυνατότητα να εκτυπώσω ένα έξω καθώς και θα ενημερώσει αυτή τη σελίδα όταν υπάρχει κάποιος τύπος ανάπτυξης στο θέμα. Ακριβώς εδώ είναι η απόδοση του σχεδίου.
Περίληψη
Η Google έχει ήδη διαθέσει τα API τους στο κοινό, ωστόσο η προ-απολυμένη εικόνα Raspbian θα βοηθήσει πολλούς ανθρώπους να ξεκινήσουν. Προσπάθησα να σχεδιάσω τα βασικά στοιχεία της κάρτας θορύβου επιπλέον για να δώσω τα σχέδια για μια ισοδύναμη κάρτα, αν θέλετε να κάνετε ένα. Για άλλους, εξηγείται η επιλογή να χρησιμοποιήσει μια εξωτερική κάρτα θορύβου καθώς και αποδεδειγμένη καθώς και ελπίζω ότι επηρεάζει τους ανθρώπους να φτάσουν πραγματικά σε τέτοια έργα. Ο κόσμος χρειάζεται περισσότερο Aiy καθώς και εδώ είναι η δυνατότητα να ξεκινήσετε, έτσι τι περιμένετε; Πάρτε hacking.