Forum: Mikrocontroller und Digitale Elektronik ESP32 + Bluetooth-Audio-Headset


von Tomas T. (Gast)


Lesenswert?

Guten Morgen,

ich würde gerne den ESP32 verwenden um die vom Headset 
(Freisprecheinrichtung, Knopf im Ohr), das man normalerweise mit dem 
Smartphone koppelt, dessen Audiodaten (beide Richtungen) über WIFI zu 
senden. So will ich mit mehreren ESP32 (einen pro Person), eine 
verlängerte Intercom bauen, wo Jeder somit Jedem sprechen kann. 
Vergleichbar mit TeamSpeak oder Personen in einem Raum.

Kann mir jemand vorschlagen bzw. gibt es Codes (Sketch) mit dem man den 
ESP als Bluetooth-Spot für Audio aufzubauen um dann die Daten per WiFi 
an die Gruppe (UDP als Broadcast, gehen Pakete verloren, kein Problem, 
ist dann so wie beim Funkgerät wenn der Andere im Funkloch ist)

Die ESPs verbinden sich gegenseitig per WiFi und reichen die Audiodaten 
einfach durch.

Vorschläge?

Grüße
Tomas ohne h

von Jörg B. (jbernau)


Lesenswert?

Hallo Tomas,

für Deine Anwendung brauchst Du auf jeden Fall ein Stateless Protokoll. 
Wie Du schon geschrieben hast, eignet sich UDP dfür. Wie gut soll den 
die Audio Qualität sein? Für Sprache könnte das der ESP vermutlich noch 
selber samplen. Bei Musik wird das wohl ein externer Chip erledigen 
müssen.

Das ist ein sehr komplexes Thema. Also einfach ein paar Arduino-Libs 
zusammenzufrickeln wird nicht reichen. Du solltest schon wissen was Du 
tust.


Weshalb machst Du die Schaltung nicht old-style in Analogtechnik? Da 
funktioniert so was out-of-the-box.

VG

Jörg

: Bearbeitet durch User
von Tomas T. (Gast)


Lesenswert?

Hallo Jörg,

es soll nur Sprache sein. Ich will deswegen die Headsets verwenden, weil 
wir sowas alle verwenden.
Smartphones lassen wir im Auto. Am ESP müssen wir nix löten, nur 
Firmware aufspielen sozusagen. Zudem will ich nicht selbstgebaute 
Funkgeräte nehmen, um andere Funkdienste nicht zu stören.

von Jörg B. (jbernau)


Lesenswert?

Tomas T. schrieb:
> Am ESP müssen wir nix löten, nur
> Firmware aufspielen sozusagen.

Nimmes mir bitte nicht übel, aber kann es ein, dass du noch nicht einmal 
wüsstest, wie man anlaloge Signale und ich rede hier von eimen 50HZ 
Sinus, zu einem digitalen macht um diesen dann weiter zu leiten? Sind 
Dir die µC internen Timing Probleme bewusst, damit das ganze sich nicht 
verzerrt?

Mach einen Designvorschlag und du wirst Kommentare bekommen. Die 
Vorstellung wir würden für Dich entwickeln, finde ich dreist.

VG

Jörg

von Carsten F. (carsten_f664)


Lesenswert?

Hallo,
eventuell hilft das hier weiter:
https://github.com/espressif/esp-idf/tree/master/examples/bluetooth/a2dp_sink

Hab das selbst nicht probiert, es scheint aber eine Umsetzung des a2dp 
Protokolls zu sein, zumindest in Empfaengerrichtung. Das ganze ist aber 
nicht Arduino sondern ESP IDF. Ausserdem wird dort direkt mit DAC 
ausgegeben, du wuerdest in deiner Anwendgung das Ganze per UDP ausgeben. 
Den ganzen Rueckweg, also von UDP auf Bluetooth A2DP deckt das wohl 
nicht ab.

@Joerg: Ich denke deine Einwaende sind nicht passend, der TE will 
garnicht von Analog auf Digital wandeln, es geht um Umsetzung von BT auf 
UDP, insofern sollte das tatsaechlich eine reine Softwarefrage sein.
Gruesse, Carsten

Edit: hab gerade gesehen es gibt auch die andere Richtung:
https://github.com/espressif/esp-idf/tree/master/examples/bluetooth/a2dp_source

Deine Aufgabe wuerde also darin bestehen statt ADC/DAC Input/Output auf 
UDP zu wechseln

: Bearbeitet durch User
von Tomas T. (Gast)


Lesenswert?

Jörg, wie gesagt, ich wollte diesmal nur den ESP als Bridge von AudioBT 
zu WiFi. Wenn ich diesmal löten wollte, hatte ich mir ein i2c 
Mems-Mikrofon genommen. Ich will aber nur den Audiostream von und zum 
Headset über WiFi mittels ESP machen, da dann alle Komponenten schon 
vorhanden sind.

Carsten F. schrieb:
> Ich denke deine Einwaende sind nicht passend, der TE will garnicht von
> Analog auf Digital wandeln, es geht um Umsetzung von BT auf UDP,
> insofern sollte das tatsaechlich eine reine Softwarefrage sein.

Genau.

Grüße
Tomas ohne h

von Jörg B. (jbernau)


Lesenswert?

Carsten F. schrieb:
> Ich denke deine Einwaende sind nicht passend, der TE will
> garnicht von Analog auf Digital wandeln, es geht um Umsetzung von BT auf
> UDP, insofern sollte das tatsaechlich eine reine Softwarefrage sein.

Ok, dan entschuldigt bitte. Dann habe ich wohl was falsch verstanden.

VG

Jörg

von Tomas T. (Gast)


Lesenswert?

Carsten F. schrieb:
> Edit: hab gerade gesehen es gibt auch die andere Richtung:
> https://github.com/espressif/esp-idf/tree/master/examples/bluetooth/a2dp_source

Ja das kenn ich schon. Komme aber mit dem Protokoll nicht so klar. Schön 
wäre es wenn es ein Beispiel von diesem a2dp auf UDP geben würde.

von Tomas T. (Gast)


Lesenswert?

PS: ich würde gerne die Arduino-IDE verwenden, da ich schon mit WiFi und 
HTML dort erfolgreich gebastelt habe.

von STK500-Besitzer (Gast)


Lesenswert?

Hat der ESP überhaupt einen Bluetooth-Zugang?

Die UDP-Geschichte dürfte da das kleinere Problem sein.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

STK500-Besitzer schrieb:
> Hat der ESP überhaupt einen Bluetooth-Zugang?

Der ESP32 unterstützt unter anderem BLE. Wenn man die 
Internetsuchmaschine seiner Wahl bemüht, findet man binnen weniger 
Sekunden diverse Beispielapplikationen für die Verwendung von Bluetooth 
mit dem ESP32.

von STK500-Besitzer (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> STK500-Besitzer schrieb:
>> Hat der ESP überhaupt einen Bluetooth-Zugang?
>
> Der ESP32 unterstützt unter anderem BLE. Wenn man die
> Internetsuchmaschine seiner Wahl bemüht, findet man binnen weniger
> Sekunden diverse Beispielapplikationen für die Verwendung von Bluetooth
> mit dem ESP32.

Danke für die Info. Ich hatte mich bisher noch nicht wirklich mit dem 
Ding auseinandergesetzt. (Und googlen haben ich mir einfach mal gespart 
- hätte ja sein können, dass der Threadstarter da auch übersehen hat).

von Jörg B. (jbernau)


Lesenswert?

Hallo zusammen,

wenn ich BLE auf WiFi umsetzen will und das synchron, so wie ich 
verstanden habe, brauche ich dann nicht auch idealerweise zwei RF Teile? 
"Shared Radio" soll wohl möglich sein, aber wenn

Tomas T. schrieb:
> Schön  wäre es wenn es ein Beispiel von diesem a2dp auf UDP geben würde

das so formuliert dann erlabubt mir bitte Zweifel zu äußern dass er sich 
der Komplexität bewusst ist. Hier wird das diskutiert.

http://bbs.esp32.com/viewtopic.php?t=6707

Das ESP-IDF A2DP-SINK demo verwendet übrigens I2S.

Als Lösungsansatz würde ich vier DMA-Puffer sehen, soweit diese noch 
nicht um A2DP implementiert sind:

SBC_IN, SBC_OUT, WIFI_IN, WIFI_OUT.

Aufgabe des Programmes ist nun Die RF-Stacks so umzuschalten, das wenig 
Informationen verloren gehen und die Puffer zu leeren und zu füllen. 
Darin liegt das Hauptproblem. Thomas, traust Du Dir das zu? Damit 
steigst Du tief in das Verständnis einer Solchen MCU ein. Ich wünsche 
echt Dir viel Erfolg dabei.

VG

Jörg

: Bearbeitet durch User
von John Doe (Gast)


Lesenswert?

Jörg B. schrieb:
> Hallo zusammen,
>
> wenn ich BLE auf WiFi umsetzen will und das synchron, so wie ich
> verstanden habe, brauche ich dann nicht auch idealerweise zwei RF Teile?
> "Shared Radio" soll wohl möglich sein, aber wenn


Zuerst einmal solltest Du die Grundlagen beherrschen.
Du wirfst ja schon BLE und Classic durcheinander. So wird das nie was 
geben...

von Tomas T. (Gast)


Angehängte Dateien:

Lesenswert?

Jörg B. schrieb:
> Das ESP-IDF A2DP-SINK demo verwendet übrigens I2S.

Ich glaube ich drücke mich fortlaufend falsch aus!

Ich will weder die Daten über I2C (I2S) senden, noch mittels AD/DA durch 
den ESP32 wandeln.

Was ich will: hab ich mal als Bild gemalt.

Ich will einfach nur den ESP32 (weil der BlueTooth UND WiFi kann) 
missbrauchen um die Sprache von und zum Headset über WiFi zu übertragen.

In dem "Netz" können sich von mir aus noch zwei weitere Teilnehmer 
befinden und somit hören als auch dazwischen quatschen. Deswegen UDP und 
nicht TCP.

So als ob einfach viel Leute am Tisch sitzen und miteinander reden. Oder 
wie in einem TeamSpeak-Raum.

Der ESP kann zudem 4 Clients gleichzeitig und stellt dabei noch einen AP 
bereit. Somit kann man die ESPs so konfigurieren dass bei 
Verbindungsabbruch der ESP sich den nächstgelegenen sucht und verbindet. 
Der Stack routet die Daten (wenn Broadcast) zu allen anderen Teilnehmern 
durch.

Das mache ich bereits mit Statusmeldungen. Nur das mit dem Bluetooth 
verstehe ich nicht und würde gerne Hilfe beim Umsetzen von Headset zu 
UDP erhalten.

von Jörg B. (jbernau)


Lesenswert?

John Doe schrieb:
> Zuerst einmal solltest Du die Grundlagen beherrschen.
> Du wirfst ja schon BLE und Classic durcheinander. So wird das nie was
> geben...

Ok,dan bin ich 'raus. Veielleichtmöchtst Du ja uns an Deinem Wissen 
teilhaben lassen...

Tomas T. schrieb:
> Jörg B. schrieb:
>> Das ESP-IDF A2DP-SINK demo verwendet übrigens I2S.
>
> Ich glaube ich drücke mich fortlaufend falsch aus!

Genau so habe ich das verstanden und versucht zu helfen. @"John Doe" Du 
scheinst kompetenter, dann mach Du bitte weiter.

VG

Jörg

von Gänsefleisch (Gast)


Lesenswert?

Jörg B. schrieb:
> John Doe schrieb:
>> Zuerst einmal solltest Du die Grundlagen beherrschen.
>> Du wirfst ja schon BLE und Classic durcheinander. So wird das nie was
>> geben...
>
> Ok,dan bin ich 'raus. Veielleichtmöchtst Du ja uns an Deinem Wissen
> teilhaben lassen...

Klar, kein Problem.

> Genau so habe ich das verstanden und versucht zu helfen. @"John Doe" Du
> scheinst kompetenter, dann mach Du bitte weiter.

Nur weil Rufus Τ. F. blödsinnigerweise BLE ins Spiel gebracht hat, kann 
man sich doch mal kurz informieren. Die Specs sind doch verfügbar.

von Gänsefleisch (Gast)


Lesenswert?

Tomas T. schrieb:
> Ich will einfach nur den ESP32 (weil der BlueTooth UND WiFi kann)
> missbrauchen um die Sprache von und zum Headset über WiFi zu übertragen.

Soso, "einfach"...
Bluetooth ist nicht Bluetooth. Daher lies Dir erst mal durch, was genau 
Bluetooth ist.
Das Bluetooth Profil, welches für Deine Zwecke gedacht ist, ist das 
Hands Free Profile (HFP). Dummerweise hat Espressif aber nur die 
Client-Seite in seinem SDK implementier. Benötigen tust Du aber die 
Gateway-Seite.
Daher solltest Du Dir einfach ein Bluetooth-Modul kaufen, welches 
HFP-Gateway beherrscht. ALles andere wird scheitern.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Gänsefleisch schrieb:
> Nur weil Rufus Τ. F. blödsinnigerweise BLE ins Spiel gebracht hat,

Mit einem Hauch mehr Lesekompetenz wäre Dir die Bedeutung der Wörter 
unter anderem nicht entgangen.

von Gänsefleisch (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Gänsefleisch schrieb:
>> Nur weil Rufus Τ. F. blödsinnigerweise BLE ins Spiel gebracht hat,
>
> Mit einem Hauch mehr Lesekompetenz wäre Dir die Bedeutung der Wörter
> unter anderem nicht entgangen.

Ich habe das sehr wohl gelesen.
Aber wieso faselst Du was von BLE, was mit Audio - und darum ging es dem 
Fragenden ausschliesslich -, wo er eh schon mit dem Thema überfordert 
ist?

Gerade als Moderator sollte DU die Kompetenz haben, zu verstehen, dass 
man Anfänger eben NICHT mit im Kontext absolut unpassenden und zudem 
noch verwirrenden Begriffen irritiert!

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Gänsefleisch schrieb:
> Aber wieso faselst Du was von BLE

Mäßige Deinen Tonfall.

Im übrigen könntest Du, wenn Du die Lesekompetenz hättest, die Du Dir 
anmaßt, auch erkannt haben, worauf ich geantwortet habe.


Nebebei gelten auch für Dich die 
https://www.mikrocontroller.net/user/conditions - Ein Thread, ein 
Pseudonym.

von Frank H. (vivat)


Lesenswert?

Welches Bluetooth-Modul beherrscht das HFP-Gateway Profil?
Beim googeln findet man zwar einige Hersteller, die irgendwelche 
derartige Module produzieren, aber wenn man bei ebay oder Ali 
tatsächlich sowas kaufen möchte, findet man nichts. Ich suche möglichst 
ein fertiges Modul, was man per UART oder SPI einfach an einen 
Microcontroller anbinden kann oder (noch besser) was direkt Audio Out 
(das Signal vom BT Headset Mikrofon) und Audio In (Signal zum BT Headset 
Kopfhörer) zur Verfügung stellt.

von Mein Senf (Gast)


Lesenswert?

Frage: Wenn das Signal vom Handy nicht ans Headset, sondern dem ESP 
geht, der dieses per WiFi (wohin eigentlich) überträgt, wer hört dann 
eigentlich was gesprochen wird?

von Mein Senf (Gast)


Lesenswert?

Bitte Frage ignorieren. Denkfehler. Soll ja ohne Handys sein.

von Meinereiner (Gast)


Lesenswert?

Hallo Tomas,

wie ist der Stand des Projektes?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.