, dass Google’s Voice Assistant seit einiger Zeit in der Nähe ist, und wenn Amazon seine Alexa-API veröffentlicht hat und den Paas Cloud-Code an die Himbeer-Pi 2 portierte, war es gerade Eine Frage der Zeit, bis alle anderen auf den schnellen Zug zu Maker Reich gesprungen waren. Google hat es einfach stilvoll gemacht.
Nur wenige verstehen, dass der Google Assistant API für die Raspberry Pi 3 seit langem verfügbar ist, als sie sich jedoch entschieden haben, ein kostenloses Set mit den MAGPI-Magazin des MAGPI-Magazins vorzusehen, erhielten sie eine Wahrnehmung bei jedem. Leider hat die Welt mehr Hersteller sowie Hacker sowie die Anzahl der Kopien des Magazins begrenzt.
In diesem Aufhörer entwirfe ich die DIY-Version des AIY-Sets für alle anderen, die mit einer Kartonbox sprechen möchten. Ich schaue den kostenlosen Kit einen besseren Blick auf, nehmen Sie es auseinander, setzen Sie es zusammen und ersetzen Sie es mit DIY Magic. Um die Dinge bequemer zu machen, habe ich ebenfalls ein Gehäuse gestaltet, das Sie 3D-Druck, um das Kit insgesamt zu tätigen. Lass uns anfangen.
Der Teardown.
Ein Shout an meinen Buddy [Shabaz] in Großbritannien, dass Sie mir eine Kopie der MAGPI senden. Das “Google Aiy Jobs Voice Kit” (fortan ist das Kit verstanden) enthält zwei Leiterplatten sowie viele andere Sachen. Der Stimmmütze, der wie eine Sound-Karte-on-a-Diät erscheint, hat eine äußerst eingeschränkte Anzahl von Komponenten. Ich werde jeden Abschnitt detaillieren und zeichnen Sie den KICAD-Schematik für die genaue von einem von einem
Servos
Ab der linken Seite befinden sich 6 Sätze von 3-Pin-Headern, die als “Servos” gekennzeichnet sind. Die gedachtes Servomanagement wird mit dem Bord des Himbeer-PI 3-PWM-Moduls verwendet. Jedes Set hat einen GPIO-Pin, 5V sowie GND-Anschluss. Der GPIO-PIN linkt jedoch nicht direkt mit dem Header des Himbeer-Pi 3-Headers mit 220Ohm vorhandenen Grenzwiderständen (markiert R1-R6).
Energieversorgung
Südlich von diesen sind Gadgets, die Q5 sowie Q6 identifiziert, und Q6, die ich vermutete, sind Teil einer Netzteilkennzahl. Korrigieren Sie mich, wenn ich falsch liege, hier ist meine Schätzung. Das Arbeiten ist einfach, wo Q5 nur einschaltet, wenn die Eingangsspannung höher ist als der 5V vom USB-Anschluss. Ein einfacher Komparator sollte dies tun, wodurch ich den LM393 als Referenz nutze.
Bearbeiten: [RAIVSR] erklärt, dass dies das Äquivalent der Himbeer-Pi ‘Ideal Diode’ sein könnte.
Kommunikationsschnittstellen
Nördlich der “Servo-Header” ist J15, das i2c markiert ist, der direkt mit dem Raspberry Pi 3-Header verbindet. Das bedeutet, dass diese mit 5V-Pull-Ups nicht mit etwas verknüpft sein sollten. Sie werden nicht auf dem Vorstand genutzt, aber wir werden später mehr darüber diskutieren. Gleich neben ihm ist der SPI sowie 2-polige Uart-Header. Sobald dieser Link direkt an den Primärkopf ist und nur als Breakout dient.
Der DAC sowie der EEPROM
Ein bisschen niedriger und wir zeigen an der Box-Kreislauf mit einem 16-poligen QFN-QFN, der ‘AKK BDQ’ markiert ist. Dies ist der Maxim MAX98357A (PDF), der ein I2S DAC mit einem Klassen-D-Verstärker ist. Es fährt den Lautsprecher direkt trotzdem, da es nur einen Ausgang gibt, es kann nur Mono oder integriertes Stereo sein. Es ist immer noch ziemlich rockig für das Budget.
Die faszinierende Sache ist die Existenz von JP6, die anscheinend alle I2S-Verbindungen von der Maxim Max98357A sowie ein paar andere Wählerlinien erscheint. Integriert in die beiden Durchleiter, die auf den zweiten Lautsprecherausgang verlinken, können Sie möglicherweise ein MAXIM MAXIM MAX98357A-Breakout-Board oben auf der Oberseite verwenden, um den Stereo-Ton zu erhalten. Ich werde das Schema tun und es herunterladen und es herunterladen, und wenn Sie ihm einen Schuss bieten möchten, lassen Sie mich die Ergebnisse verstehen. Denken Sie an sie, optionale Hausaufgaben.
Neben dem DAC ist ein 8-poliger SSOP, der ein 24c32 (PDF) I2C-EEPROM ist. Es ist nicht mit dem I2C-Header verbunden, woran ich früher jedoch eher an Pins 27 als auch 28 des Raspberry Pi 3-Headers sprach. Laut dem Blog der Raspberry Pi Foundation.
“Der EEPROM hält die Board-Herstellerinformationen, GPIO-Konfiguration sowie eine Sache, die als” Gerätestruktur “-Bragment bezeichnet wird – im Wesentlichen eine Beschreibung der angeschlossenen Hardware, mit der Linux die erforderlichen Treiber sofort trennen können.”
So hat es einige zusätzliche Sauce, die die Dinge tickt, und ich könnte ein Buspirat verwenden, um die Daten zu decken Ich habe ein alternatives, damit es auch so überprüft wurde.
Treiber
Um rechts nach rechts zu ziehen, entdecken wir 4 Header, die mit “Treiber” gekennzeichnet sind. Dies sind MOSFET-Schaltungen zum Steuern von Tonnen wie Relais. [SHABAZ] Hat eine fantastische Aufgabe die Elemente auf dieser sowie die 3-Pins, die GPIO, 5V sowie Fahrer, verfolgen.
Die MOSFETs können Tonnen von jeweils 500mA treiben, dank eines Polyswitchs trotzdem die GPIOs angeboten werden, um auch direkt zu nutzen. Tonnen, die angetrieben werden sollen, sollten zwischen den Pins verbunden sein, die als “+” sowie “-” gekennzeichnet ist. Der Header-Pin auf der linken Seite ist eine direkte Verstärkung aDie ZCCE zu GPIOS-Header-Pins aus dem Himbeer-Pi 3 sowie der schematischen Zeigt das gleiche an.
Verwenden Sie diese, um LEDs oder ähnliche Gadgets zu verknüpfen, um den Betrieb der Relais oder Lasten vorzuschlagen.
Mikrofon sowie Button-Anschlüsse
Weitere faszinierende Sachen erfolgt auf der rechten Seite der rechten Seite mit einem Druckknopf sowie zwei JST-Anschlüssen. Der 4-Pin-Anschluss ist für den Druckknopf gedacht, der auf dem zusammengebauten Gehäuse sitzt. Der kleine PCB-Druckknopf ist parallel zum Außenschalter verdrahtet, und kann während der Einrichtung sowie des Tests an seinem Ort verwendet werden. Der 5-Pin-JST ist für den Mikrofonverbinder sowie alle I2S-Pins.
Die Mikrofone.
Schließlich ist das Mikrofonplatine 432 qdf21g gekennzeichnet, ebenso wie die knowles sph0645lm4h MEMS digitale Mikrofone, die i2s direkt reden.
Das ist es!
Das überhackt den Teardown sowie alle Informationen, die benötigt werden, um ein eigenes AIY-Kit zu erstellen. Die KICAD schematischen Daten werden für den Download von Github angeboten, dennoch verlasse ich Sie mit dem Spaßteil, der das Design sowie das Routing ist.
Hier ist ein Denkessen. Einige Teile können weggelassen werden, und die Größe des Huts kann an den PI Zero Phat geschrumpft werden.
Aus Gründen der Einfachheit halber nutze ich das vorkonfigurierte Betriebssystembild aus der Google Aiy-Seite. Es ist ein TAD von 900 MB und können direkt von Goolge (riesige Datei) heruntergeladen werden.
Fügen Sie eine Herunterfahren-Taste hinzu
Sie bemerkt höchstwahrscheinlich die kleine goldene Button neben der riesigen umweltfreundlichen Schaltfläche in dem obigen Bild oben und ist der erste Teil der Übung. Es ist eine Herunterfahren-Taste, die auch hinzugefügt wird, da ich nicht jedes Mal, wenn ich es in der Box säen möchte, wenn ich es sicher ausschalten möchte.
Erhalten Sie den Knopf, den Sie verwenden möchten, und fügen Sie zwei Drähte mit weiblichen Headern hinzu. Dieses Bit funktioniert sogar ohne den Stimmmütze, also fühlen Sie es frei, es auszuprobieren. Wenn Sie einen Sprachhut haben, fügen Sie dem I2C-Teil männliche Header hinzu. Sie können jede Art von anderen Pins auswählen, wie es noch funktioniert. Verknüpfen Sie den Knopf mit dem SDA oder GPIO 2 sowie den Pi 3 hoch.
Öffnen Sie Ihren bevorzugten Texteditor und kopieren Sie die Einhaltung des Codes einfügen.
1.
2.
3
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
fünfzehn
16.
17.
18.
19.
20.
21.
22.
23.
#! / bin / python
# Simple Script zum Herunterfahren des Raspberry Pi an der Taste drücken.
# von Inderpreet Singh
Import RPI.GPIO als GPIO
Zeitzeit importieren
os importieren
# nutzen Sie die BroadCom SOC-PIN-Nummern
# Konfiguration Die PIN mit den Inneneinzieher-Pullups aktiviert sowie Pin im Lesemodus.
Gpio.setmode (gpio.bcm)
Gpio.setup (02, gpio.in, pull_up_down = gpio.pud_up)
# Unsere Funktion, was zu tun ist, wenn die Taste gedrückt wird
Def Herunterfahren (Kanal):
OS.SYSTEM (& quot; Sudo Shutdown -h jetzt & quot;)
# Fügen Sie unsere Funktion hinzu, um auszuführen, wenn die Taste gedrücktes Ereignis erfolgt
Gpio.add_event_detect (02, gpio.fall, Callback = Herunterfahren, HopeTime = 2000)
# warte jetzt!
Während 1:
TIME.SLEEP (1)
Speichern Sie die Daten in Ihrem / home / pi-Ordner als Shutdown.py
In einem Terminal-Typ die Einhaltung der Befehle
1.
chmod + x shutdown.py python shutdown.py & amp;
Dies sollte das Skript im Hintergrund laufen lassen. Wenn Sie die Taste drücken, sollte der PI sofort herunterfahren. Sie können auswählen, um eine Verzögerung, um den Sleep-Anruf im Beispielcode zu verspüren. Alternativ können Sie den GPIO auch ändern, indem Sie die entsprechende Anzahl im Python-Skript ersetzen.
Cool! Jetzt können wir herunterfahren, indem wir eine Taste drücken.
Fügen Sie eine USB-Geräuschkarte hinzu
Die offensichtliche Alternative für den Google Aiy Voice-Hut ist es, jeden Typ von USB-Geräuschkarten, die aus einer Reihe von Quellen angeboten werden, nutzen. Die einfachste Methode besteht darin, einfach eins zu stecken und die Softwareanwendung zu konfigurieren, um das anstelle des Hates zu verwenden. Wenn jedoch zwei Treiber installiert sind, müssen die Python-Skripts erforderlich sein, um neu konfiguriert zu werden, um das nahtlose zu erstellen.
Sobald Sie die Soundkarte einstecken, ist das erste, was Sie tun können, inspizieren, ob es anerkannt wurde oder nicht. Geben Sie im Terminalfenster ein:
1.
APLAY – L.
‘APLAY’ wird von den Skripts verwendet, um die Antworten auszurichten, sodass zwei Geräuschvorrichtungen angezeigt werden können. Beachten Sie, dass das Onboard-Rauschen innerhalb der Config.txt deaktiviert wurde (siehe Gadget-Tree-Referenz) und kann aktiviert werden, wenn Sie ein USB-Mikrofon anstelle der Geräuschkarte verwenden möchten. Der Windows-Ausgang sollte wie das Bild unten aussehen.
Ich möchte die USB-Geräuschkarte als Standard-Audio sowie dafür einstellen, dass wir den Anforderungen an die Anpassung der /etc/asound.conf anpassen.
1.
Sudo nano /etc/asound.conf.
Löschen Sie das vorhandene Material und ersetzen Sie ihn durch den Text, wie unten gezeigt. Dies setzt jedoch den Standardeingang sowie das Ausgabe-Gadget an das USB-Gerät, es gibt einen weiteren Schritt, um die Dinge zu funktionieren. (Um Nano zu beenden, verwenden Sie Strg + X, Y, RETURN)
Als Nächstes bearbeiten wir auf Audio.py-Daten, die alle Audiospiele sowie Aufzeichnungsfunktionalität behandelt. Öffnen Sie dazu die Daten in Ihrem bevorzugten Text-Editor. Meins ist Nano:
1.
sudo nano /home/pi/voice-recognizer-aspi/src/audio.py.
Scrollen Sie bis zum Teil daraufStaaten ‘Arecord’, die sich in der __Init__-Funktion befinden. Natürlich gibt es einen herdlichen Prozess, der den Recorder läuft, während ich im Video aufzuleiten wird. Im Moment möchten wir die Argumente bearbeiten, um sicherzustellen, dass die USB-Karte verwendet wird, um Audio anstelle des ursprünglichen Stimmhuts zu fangen. Eine einfache Anpassung der Verwendung von ‘-d’, ‘sysdefault: card = 1’ sollte ausreichen, wie im Bild unten gezeigt.
Eine ähnliche Modifikation ist für die APLAY-Funktion ein bisschen weiter im Code erforderlich.
Damit ist der Hack abgeschlossen! Doppelklicken Sie auf “test_audio.py”, um zu inspizieren, wenn Audio funktioniert. Wir fehlen jedoch nur einen Teil des Puzzles – der “Hören” -Taste! So einfach nur ein Drückenknopf zwischen GPIO23 sowie dem angrenzenden Masse-Pin sowie dann “SRC / Main.Py”, um mit einem DIY Google Aiy zu spielen.
Eine Demo
Eine kleine Video-Demo des vorgeschlagenen Hacks mit einer USB-Geräuschkarte, außerhalb des Sprechers sowie ein kostengünstiges Mikrofon.
Ein Gehäuse
Das 3D-Druckgehäuse ist in Fusion360 entwickelt, sowie die STL-Daten sind Teil des GitHub-Repositorys. Sie können das genaue Gehäuse für eine Reihe von Arbeitsplätzen nutzen, da die Rückstand für die Raspberry Pi sowie die Anschlüsse für den Komfort herausgebracht werden. Es gibt viel Gegend, um Hüte sowie zusätzliche Stromkreise hinzuzufügen.
Ich habe das Gehäuse aus der Mitte geteilt, um sicherzustellen, dass es einfach ist, Zugang zu den GPIOs zu erlangen. Das Ganze wird in Form gebracht, einschließlich der oberen Kappe, die Löcher für drei Knöpfe aufweist. Ich würde jedoch sinnvoll sein, kleinere Knöpfe zu haben, da das Ergebnis erwartet wird, dass es schwieriger ist als Karton. Es gibt einen ausreichenden Bereich für den Lautsprecher, wenn Sie auswählen, um einen etwas anders aufzunehmen.
Ich hatte keine Möglichkeit, einen Ausgang zu drucken, sowie diese Seite aktualisieren, wenn eine Art von Entwicklung im Thema vorliegt. Genau hier ist der Render des Designs.
Zusammenfassung
Google hat bereits ihre APIs für die Öffentlichkeit zur Verfügung gestellt, aber das vorkonfigurierte Raspbian-Bild wird jedoch einen großen Teil von Menschen unterstützen, um zu beginnen. Ich habe versucht, die Grundlagen der Geräuschkarte zu gestalten, zusätzlich die Pläne für eine äquivalente Karte bereitzustellen, wenn Sie einen machen möchten. Für andere wird die Wahl, eine externe Geräuschkarte zu nutzen, sowie demonstriert, ebenso wie ich hoffe, dass es den Menschen beeinflusst, wirklich in solche Projekte zu gelangen. Die Welt braucht mehr Aiy sowie hier, hier ist Ihre Möglichkeit, loszulegen, also, worauf warten Sie? Hocken Sie das Hacken.