-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Since this manual is not yet finished and is only for building the prototype, there is no english version yet (but its totally usable if you plug it into deepl.com)
- 1x EchoDot 3rd Gen (Amazon )
- 1x ESP-32 DEV Board (Amazon )
- 1x TSR 1-2450 DC/DC-Wandler 5V (Conrad )
- 1x I2C Logic Level Converter (Amazon )
- 1x I2S Mikrofon (Amazon )
- 1x Schraubklemmblock 2 Pol (Conrad )
- 1x 2N7000TA MOSFET (Conrad)
- 1x Kohleschicht-Widerstand 10 kΩ (Conrad )
- 1x Kohleschicht-Widerstand 220 Ω
- 5x Stiftleiste 1×2 (Conrad )
- 2x Stiftleiste 1×3 (Conrad )
- 1x Stiftleiste 1×5 (Conrad )
- 2x Buchsenlseite 1×19 (Conrad )
- 1x Drucktaster (Conrad )
- 1x IronMan Helm (Amazon )
- 1x IronMan Augen weiß (Aliexpress )
- 1x USB Lautsprecher (Conrad )
- 1x WS2812B LED Strip (100Led/m) (Amazon )
- 1x Niedervolt-Buchse (Conrad )
- 1x Niedervolt-Stecker (Conrad )
https://my.aliexpress.com/wishlist/shared.htm?groupId=1000000013911913
Als erstes wird das Gehäuse des EchoDots entfernt. Dazu wird die geklebte Abdeckung an der Unterseite abgenommen und die nun sichtbaren vier Schrauben entfernt. Nun kann das Plastikgehäuse vom inneren Metallgehäuse abgehoben werden und eine halb-kreisförmige Platine, an welcher ein Flachbandkabel angeschlossen ist, und ein Lautsprecher kommen zum Vorschein. Löst man nun die Kabelverbindung und die drei Schrauben, mit welcher die Platine am Gehäuse befestigt ist, kann man diese einfach herausheben. Im Gehäuse sind nun vier Vertiefungen zu erkennen, in welchen sich die Befestigungsschrauben für die Platine an der Oberseite befinden. Diese werden entfernt, wodurch das Gehäuse abgehoben werden kann und eine kreisförmige Platine mit einer weißen Plastikumrandung freigelegt wird. Diese wird durch Lösen der vier sichtbaren Schrauben entfernt, wodurch die Platine herausgehoben werden kann. Der EchoDot ist nun in die einzelnen Komponenten zerlegt.
Die Abbildung zeigt die Oberseite der kreisförmigen Platine, auf welcher sich die vier Taster befinden. Neben einem dieser Taster ist ein Helligkeits-Sensor zu finden, dies ist Der Aktivierungstaster. Sowohl der Taster, als auch der Sensor müssen entfernt (ausgelötet) werden. Der Aktivierungstaster wird später vom Privacy-Shield verwendet, um den EchoDot über die Transistorschaltung zu triggern. Der Sensor muss entfernt werden, damit die LED-Werte konstant bleiben, was für die spätere Erkennung des Zustands benötigt wird.
Betrachtet man nun die Unterseite der Platine so findet man vier kleine goldene Metallkästchen, die Mikrofone des EchoDots. Diese müssen alle entfernt werden, damit der EchoDot vorerst einmal taub ist.
Weiters befindet sich auf dieser Seite der Platine der LED-Controller, welcher vom EchoDot über einen I2C-Bus angesteuert wird. Dieses Signal wird an den Testpunkten TM7 und TM10 angezapft, dazu muss vorerst aber nichts ausgelötet werden.
Nahaufnahme eines Mikrofons
Lötstellen eines entfernten Mikrofons
Um sich viel komplizierte Verkabelung zu ersparen, wurde ein Mainboard mit Target3001 entworfen. Auf diesem befinden sich die Komponenten: ESP32, Level Converter, DC/DC-Wandler, die Transistor-Schaltung für den Aktivierungsknopf und diverse Anschlüsse für die verbleibenden Komponenten.
Der ESP32 ist ein Low Cost/Low Power Microcontroller Board mit umfangreichem Featureset. An diesen ist ein I2S Mikrofon angeschlossen, welches vom ESP zur Wake-Word Erkennung verwendet wird. Wird ein Wake-Word erkannt, kann der ESP den Mikrofon Input über den Digital-Analog-Converter (DAC) zum EchoDot weiterleiten. Am EchoDot wurden die Mikrofone ausgelötet und der Signal-Kontakt eines Mikrofons über einen Widerstand mit dem DAC-Ausgang am ESP verbunden.
Da die LEDs des EchoDots über I2C angesteuert werden, nutzen wir dies, um die Zustände auch am ESP behandeln zu können.
Der I2C-Bus des EchoDots wird an den Testpunkten TM7 und TM10 angezapft. Über einen Logic-Level-Converter wird der I2C-Bus des EchoDots mit der I2C-Schnittstelle am ESP verbunden. Dieser Converter ist notwendig, da der EchoDot 1,8V für den I2C-Bus verwendet, der ESP aber mindestens 3,3V benötigt.
Um den EchoDot über den ESP aktivieren zu können, wurde der Aktivierungsknopf des EchoDots entfernt und durch eine Transistorschaltung ersetzt (siehe schematische Darstellung).
Damit alle Komponenten über das Netzteil des EchoDots mit Strom versorgt werden können, wird ein DC/DC Wandler eingesetzt, welcher von 12V auf 5V regelt. Mit diesen 5V werden der ESP, der Lautsprecher und die LEDs der Augen versorgt.
K1 : Der Anschluss K1 ist für das I2S Mikrofon. Die Kontakte wie in der Abbildung beschrieben, werden mit den gleichnamigen Kontakten des I2S Mikrofons verbunden (+3.3V = VDD).
K2 : Der Anschluss K2 ist der DAC-Output, welcher zum EchoDot geht, also ein Audio-Signal. Diese Kontakte werden am EchoDot angelötet.
K3 (optional): Der Anschluss K3 wird für das optische Feedback verwendet. An diesen Anschluss werden WS2812B LEDs angeschlossen.
K4 : Der Anschluss K4 ist die I2C Verbindung zum EchoDot. Diese Kontakte werden ebenfalls am EchoDot angelötet.
K5 : Der Anschluss K5 wird für die Verbindung zum Aktivierungsknopf am EchoDot verwendet. Diese Kontakte werden ebenfalls am EchoDot angelötet.
K6 : Der Anschluss K6 ist die Hauptstromversorgung. Hier wird ein 12V Netzteil angeschlossen.
K7 : Der Anschluss K7 ist die Stromversorgung für den EchoDot.
K8 : Der Anschluss K8 ist die Stromversorgung für die externen Lautsprecher.
K9 : Der Anschluss K9 ist für den alternativen Aktivierungsknopf.
1. Mainboard bestücken
Beginne damit das Mainboard dem Schaltplan nach zu bestücken. Achte darauf, dass keine Kurzschlüsse entstehen.
Tipp: Verlöte den ESP nicht direkt, sondern verwende Buchsenleisten als Sockel.
2. I2S Mikrofon
Löte Stiftleisten an das I2S Mikrofon, um es mittels Jumper-Kabel mit dem Mainboard zu verbinden (K1).
Alternativ kannst du das eine Ende der Kabel auch direkt am Mikrofon anlöten.
Der Anschluss “L/R” bleibt frei.
3. Mikrofon Kontakte
Löte ein Ende der Jumper-Kabel an die Anschlüsse eines ausgelöteten Mikrofons am EchoDot und stecke das andere Ende am Mainboard an (K2).
4. I2C Anschlüsse
Löte ein Ende der Jumper-Kabel an die Anschlüsse TM7, TM10 und GND am EchoDot und stecke das andere Ende am Mainboard an (K4).
5. Aktivierungs-Knopf
Löte ein Ende der Jumper-Kabel an die Anschlüsse des entfernten Aktivierungsknopfes am EchoDot und stecke das andere Ende am Mainboard an (K5).
Löte ein Ende von einem anderen Paar Jumper-Kabel an einen Knopf, welchen du als Aktivierungsknopf verwenden möchtest und stecke das andere Ende am Mainboard an (K9).
6. Stromversorgung
Zerschneide das Stromkabel des EchoDots, sodass am EchoDot-Ende ca 30cm übrig bleiben. Löte an die Enden dieses Kabelstücks Buchsenleisten, oder halbe Jumper-Kabel, um es mit dem Mainboard zu verbinden (K7).
Verbinde den anderen Teil des Kabels (der am Netzteil) mit der Schraubklemme (K6).
7. Lautsprecher
Schneide das Ende des Stromversorgungskabels der Lautsprecher ab und verlöte Buchsenleisten, oder halbe Jumper-Kabel, um es mit dem Mainboard zu verbinden (K8).
8. LEDs (optional)
Verwende für dein Gehäuse WS2812 LEDs und verbinde diese mit dem Anschluss K3.
Als Basis für dies ESP Software wurde das Project “DIY Alexa:https://github.com/atomic14/diy-alexa” auf Github verwendet.
Zur Programmierung wird VS-Code verwendet.
Das Wake-Word wird mit Hilfe der Plattform Tensorflow-Lite trainiert.
Mit Hilfe von GCloud werden Audio-Samples zum Trainieren gesammelt (https://github.com/ensingerphilipp/Wakeword-Sample-Collector).
Audio über DAC ausgeben funktioniert seit Version 2.0.1 nicht mehr (letzte Funktionierende Version: 2.0.0)
Der Bug ist bekannt und wird bereits bearbeitet, sollte also in der nächsten Version wieder funktionieren.
Issue: https://github.com/espressif/arduino-esp32/issues/5938
Die Wire Bibliothek unterstützt I2C-Slave erst seit der Version 2.0.1
Release Info: https://github.com/espressif/arduino-esp32/releases/tag/2.0.1
Zitat daraus: “Wire-Slave is now implemented”
Die aktuelle Version ist 2.0.2
Daraus resultiert das Problem, dass die I2C Kommunikation und das Ausgeben von Audio nicht mit der selben Bibliothek möglich ist.
Für dieses Problem wurde folgender Workaround angewandt:
Verwendet wird die Version 2.0.0
Folgende Bibliotheken werden mit jenen aus der Version 2.0.1 ausgetauscht:
esp32-hal-i2c-slave.c
esp32-hal-i2c-slave.h
esp32-hal-i2c.c
esp32-hal-i2c.h
esp32-hal.h
Wire.cpp
Wire.h
Dadurch funktionieren sowohl die I2C Kommunikation als auch das Ausgeben von Audio.
Mit dem nächsten Release sollte der DAC Bug aber behoben sein und dieser Workaround somit nicht mehr notwendig.