Gibt es irgendwo eine vernünftige Beschreibung (am besten auf deutsch,
wenn nicht auf deutsch, dann auf Englisch), wie man a2dp und avrc mit
einem Esp32 benutzt?
T.Roll schrieb:> Einfach verhungern lassen, statt zu googlen @ Timmo.> Fuehrt ja so zum Ziel.
Vielen Dank für diesen Tollen Beitrag (NICHT!) und diese tolle Stimmung
mal wieder hier im Forum!
Ich hatte in der Zeit was besseres zu tun als was für mein Bastelprojekt
rauszusuchrn.
Flo S. schrieb:> T.Roll schrieb:>> Einfach verhungern lassen, statt zu googlen @ Timmo.>> Fuehrt ja so zum Ziel.>> Vielen Dank für diesen Tollen Beitrag (NICHT!) und diese tolle Stimmung> mal wieder hier im Forum!> Ich hatte in der Zeit was besseres zu tun als was für mein Bastelprojekt> rauszusuchrn.
also lässt du andere für dich suchen weil die ja nichts besseres zu tun
haben? frecher geht's garnicht mehr
Timmo H. schrieb:> Aber du kannst ja durchaus die in> den Beispielen verwendeten API-Funktionen auch aus Arduino heraus> aufrufen.
Wo muss man die ganzen BT dateien hinkopieren, damit nich irgendwelche
#include Dateinen fehlen?
Autor: Timmo H. (masterfx)
>Dank nicht mir sondern Google. Das sind quasi die ersten 3 Links die>Google bei der suche nach "esp32 a2dp" ausspuckt. Das Ergebnis hättest>du also auch schon vor 10 Stunden haben können
Dass die Suchergebnisse von Google Nutzer- und Vorgeschichten-abhängig
sind, ist Dir so weit geläufig?
Timmo H. schrieb:
andere IP cookies täglich gelöscht
Hab ich gemacht. Hab auch nen anderen Browser ausprobiert (Tor Browser)
und mich nicht bei Google angemeldet. Ich bekomme aber trotzdem nichts
für die Arduino IDE auch wenn ich nach '' esp32 a2dp avrc Arduino IDE ''
gesucht habe.
Flo S. schrieb:> Leider ist das nicht für die Arduino IDE geeignet.
Ich habe das selbe Problem.
Desswegen suche ich jetzt nach einem IC oder Modul, was das unterstützt
und vom ESP32 gesteuert werden kann.
Ich wollte auch was mit machen, also direkt geht in Arduino nicht aber
man könnte natürlich ne Lib machen.
Nen eigenen IC braucht man aber nicht dafür, es gibt von espressif das
sdk da gibt aich beispiele.
Werd mich mal dran setzt ob das so klappt
So grad mal 10min rum gespielt, das klappt ganz easy in Arduino mit dem
Example von espressif.. Kanns pairen, und bei Lied starten etc bekommt
der ESP das als event. Also die links von oben sind schon richtig, werd
das nurnoch in ne Lib verpacken damits den code net so zumüllt. Für alle
die auch was in die richtung machen wollen hier schonmal das momentane,
einfach aus dem Beispiel oben zusammen kopiert, sollte aber so laufen.
1
... siehe Anhang
sorry keine ahnung wie man das in nen spoiler oder so packt.
--
Welchen Teil von "Längeren Sourcecode nicht im Text einfügen, sondern
als Dateianhang" hast Du jetzt nicht verstanden?
-rufus
> sorry keine ahnung wie man das in nen spoiler oder so packt.
Meinst du diese Dinger die auf manche Autos montiert sind?
So große Dateien gehören in einen Anhang.
Hallo,
Esp schrieb:> So grad mal 10min rum gespielt, das klappt ganz easy in Arduino mit dem> Example von espressif..
vielen Dank erstmal, compiliert hier ohne Fehler. Muß ich mal mit
rumspielen.
Was mir auffällt: 75% Flash belegt?
Ich bin im Moment zwar auch bei 77%, aber mit 4" SPI-Touchdisplay mit
der TFT_eSPI-Lib, ESP8266Audio mit MP3-Software-Decoder und Ausgabe über
I2S.
Was mir gerade auffällt: ich muß mal schauen, wie beim ESP32 OTA
organisiert wird. Beim ESP8266 waren da ja der halbe Programmflash als
Puffer nötig. Beim ESP32 offenbar nicht.
Gruß aus Berlin
Michael
Michael U. schrieb:> compiliert hier ohne Fehler
Bei mir kommen Fehlermeldungen. Irgendwas ist mit ESP_LOGE nicht
richtig.
Ich habe den Code einfach kopiert und ein paar *.h Dateien auch kopiert
(siehe Blder im Anhang).
Rufus Τ. F. schrieb:> "ret" ist hier nicht bekannt.
Das habe ich gelesen.
ich weiß nur nicht, wie ich diesen Fehler beheben soll.
Ein paar andere Fahler bei mir habe ich aber behoben: Ich habe viele *.h
Dateien in den Projektordner kopiert, obwohl sie schon standartmäßig in
der Arduino IDE vorhanden sind.
Ich bekomme aber noch die selbe Meldung.
Die Dateien, die ich jetzt im Projektordner habe sind im Anhang.
Hallo,
ich habe nur seinen Sketch kopiert, neuen Sketch erstellt, seinen Inhalt
rein und compiliert.
IDE 1.8.5 portable installiert, ESP32 github vom 31.05.2018
Gerade nochmal Compiler-Meldungen eingeschaltet und compiliert: keine
warnings, keine errors.
Mal geflasht: mein Handy findet zumindest einen ESP_SPEAKER.
Gruß aus Berlin
Michael
Michael U. schrieb:> seinen Inhalt
Ich muss noch diese Dateien (aus dem Anhang) einfügen.
Die habe ich aus der ESP Idf kopiert.
Wenn die nicht drind sind, steht in den Fehlermeldungen, dass die
benötigt werden.
Wenn ich sie dann eingefüge habe, kommt diese Fehlermeldung
1
'ret' was not declared in this scope
, von der ich oben geschrieben habe.
Ich weiß nur nicht, wie ich die beheben soll.
Hallo,
ich würde jetzt mal kühn behaupten, daß an der Installation von IDE /
ESP32 was nicht stimmt...
Habe gerade mal die aktuelle github-Version vom ESP32/Arduino
reingeworfen: mit Vorsicht zu genießen, mein Streamplayer crasht
komplett,
// WiFi.disconnect();
// WiFi.softAPdisconnect(true);
mindestens einer der beiden Aufrufe endet in einer Guru Meditation.
Ohne geht WiFi, allerdings ist auch die I2S-Ausgabe kaputt.
Außerdem statt 77% Flash sind 87% belegt...
Habe erstmal meine ESP32 Version von Ende Mai wieder reingenommen.
Gruß aus Berlin
Michael
Michael U. schrieb:> ich würde jetzt mal kühn behaupten, daß an der Installation von IDE /> ESP32 was nicht stimmt...
Danke für den Tipp.
Jetzt geht es.
Leider ist der Esp in einer Neustartschleife.
Das wird am seiellen Monitor ausgespuckt:
Na, das ist ja tatsächlich sehr komfortabel. Da steht sogar, welche
Funktion in welcher Zeile des Codes das Problem verursacht.
Schon mal nachgesehen, was da passiert?
Hallo,
passiert bei mir mit der aktuellen ESP32 Version von github auch,
mit meiner alten geht es.
Da sind wohl noch einige Bugs in der Geschichte, die Umstellung auf das
aktuelle IDK ist ja erst 3 Tage alt...
Mal schauen, ob mein Bekannter da Zeit und Lust hat, tiefer einzusteigen
und ein paar Bugreports zu machen.
Gruß aus Berlin
Michael
Rufus Τ. F. schrieb:> Na, das ist ja tatsächlich sehr komfortabel. Da steht sogar, welche> Funktion in welcher Zeile des Codes das Problem verursacht.>> Schon mal nachgesehen, was da passiert?
Ich habe das gelesen. Ich weiß aber nicht, wie ich das beheben soll.
Michael U. schrieb:> mit meiner alten geht es
Kann man irgendwo die alten Versionen runterladen?
Oder kann jemand die alte Version, falls sie noch jemand hat, auf Google
Drive, Media fire oder Dropbox,... Hochladen?
Flo S. schrieb:> Kannman irgendwo die alten Versionen runterladen?
Jetzt klappt es ?
Ich habe einfach auf GitHub nach einem Fork gesucht, der noch nicht
aktuallisiert wurde.
Hallo,
Du bist der Zeit etwas zu weit voraus. ;-)
Ich muß mich erstmal mit Audio über BT befassen, wie kommen da die Daten
überhaupt an? Komprimiert? In welchem Format?
Schön wäre es aus meiner Sicht, wenn ESP8266Audio um eine passende
Stream- und Decoderfunktion erweitert würde.
Keine Ahnung, ob er da irgendwelche Pläne hat, ich würde dann ohnehin
lieber über I2S ausgeben, das wäre dann damit aber kein Problem.
Mal etwas abwarten, ich habe hier noch genug Beschäftigung rumliegen...
Mir würde im Moment z.B. schon reichen, wenn ich rausfinde, wie ich eine
eingebundene SD-Card wieder komplett abmelden kann, ich brauche den Ram
für den Stream-Puffer und es läuft ja nie gleichzeitig z.B. MP3-Stream
und Play von SD.
Gruß aus Berlin
Michael
Michael U. schrieb:> Ich muß mich erstmal mit Audio über BT befassen, wie kommen da die Daten> überhaupt an? Komprimiert? In welchem Format?
Bei mir gibt es 2 pins, wo Daten rauskommen. Ich wollte testen, was
passiert, wenn man das Signal an die DACs leitet. Ist nur ein Versuch.
Hallo,
Flo S. schrieb:> Bei mir gibt es 2 pins, wo Daten rauskommen. Ich wollte testen, was> passiert, wenn man das Signal an die DACs leitet. Ist nur ein Versuch.
ich habe in den Source noch nicht weiter reingeschaut.
Deine Antwort sagt mir im Moment auch nicht, was aus den 2 Pins für
Daten rauskommen...
Gruß aus Berlin
Michael
Ich verwende diese Art der Wandlung für mein Webradio, das ich quasi
täglich benutze:
Beitrag "Re: Webradio basteln"
Also kurz: mit einem RC-Tiefpass und einem externen Verstärker sollte
sich der Ton hörbar machen lassen.
Hallo,
Marc, Du schaffst einen alten herrn ganz schön...
Ich werde mich durchwühlen, I2S-DAC ist ja verfügbar, weißt Du ja aus
Deinem verlinkten Thread.
Eigentlich wollte ich ja garnicht mit dem BT-Zeug rumspielen.
Muß mal schauen, wie ich den I2S-Kram aus ESP8266Audio da reingepackt
bekomme.
Vielen Dank nochmal für Deinen bisherigen Anteil an der BT-Geschichte.
Gruß aus Berlin
Michael
Hallo,
ich habe ja geahnt, daß es meinem Bekannten keine Ruhe läßt.
Spielt hier im Moment als BT-Lautsprecher vom PC aus.
Ausgabe ist I2S, Pins in setup() anpassen wenn nötig.
Läuft mit meiner "alten" und seiner aktuellen ESP32-Version.
Er hat irgendwie geflucht wegen geänderter Strukturen und Aufrufe, das
Espressif-Demo
https://github.com/espressif/esp-idf/tree/master/examples/bluetooth/a2dp_sink
ist wohl nicht so sonderlich gepflegt.
Ich hänge den Arduino Sketch mal an.
Ich muß mir das jetzt erstmal ganz in Ruhe anschauen...
Gruß aus Berlin
Michael
Vielen Dank ?
Es Funktioniert!
Wenn man einen Lautsprecher an den i2s Signal pin anschließt, dann hört
man die Musik.
Sie hört sich aber übersteuert an. Ich vermute, dass das daran liegt,
dass das Signal noch digital ist. Wie bekommt man das Signal (vielleicht
auch hier mit:
Marc schrieb:> void bt_app_a2d_data_cb(const uint8_t *data, uint32_t len) )
An die DACs leiten?
Wie kann man die avrc Kommandos aus der avrc_api benutzen?
Michael U. (amiga)
>ich habe ja geahnt, daß es meinem Bekannten keine Ruhe läßt.>Spielt hier im Moment als BT-Lautsprecher vom PC aus.
Super! Ein ausdrückliches Lob für Dich und Deinen Bekannten von mir.
Vielleicht kann man jetzt das Webradio auch als Bluettooth-Lautsprecher
benutzen.
Jetzt könnte man sich überlegen, ob man das ganze in eine Library
verpackt, damit das Haupt-Sketch nicht so zugemüllt wird.
>Flo S. (flos6323)>Wenn man einen Lautsprecher an den i2s Signal pin anschließt, dann hört>man die Musik.>Sie hört sich aber übersteuert an.
Das Standard Format der I2S schnittstlle sind 32 Bit Daten, 16 Bit für
den linken und 16 Bit für den rechten Kanal. Wenn man keinen I2S Dac
hat, kann man die I2S Schnittstelle dazu missbrauchen, den Bitstrom
eines Sigma-Delta-Modulators auf die Schnittstelle zu geben und damit
einen Ton zu erzeugen. Wenn man den Datenausgang der I2S Schnittstelle
auf einen RC-Tiefpass gibt, erhält man dann ein gutes Mono-Signal.
Sigma-Delta-Modulator klingt kompliziert, ist aber eine ziemlich
übersichtliche Funktion.
Du musst also vor die Ausgabe auf die I2S-Schnitstelle deinen DAC-Wert
in den Sigma-Delta-modulierten Wert umwandeln. Den Link auf die
Funktion, die das kann, habe ich Dir oben geschickt.
Das Ergebnis dürfte besser klingen als die Ausgabe auf die 8Bit DACs.
Marc schrieb:> Wenn man den Datenausgang der I2S Schnittstelle> auf einen RC-Tiefpass gibt, erhält man dann ein gutes Mono-Signal.
Ich werde mir dann wol einen I2s DAC besorgen, weil eich ein stereo
Signal brauche.
Michael schrieb
>Im Moment bin ich aber für das Webradio bei 2 Verstärkermodulen mit I2S>gelandet:>https://www.amazon.de/Adafruit-I2S-Class-Amplifier...>Lassen sich mit 2 Widerständen auf R oder L Ausgabe setzen, also nur I2S>parallel ran und fertig.
Von denen habe ich auch welche. Allerdings habe ich bis jetzt nur einen
für Mono benutzt.
Für Stereo bräuchtest Du den B-Typ oder müsstest einen Inverter in die
LRCLK Leitung schalten:
RCLK specifies whether left-channel data or right-
channel data is currently being read by the digital audio
interface. The MAX98357A indicates the left channel
word when LRCLK is low, and the MAX98357B indicates
the left channel word when LRCLK is high
Hallo,
Marc schrieb:> Für Stereo bräuchtest Du den B-Typ oder müsstest einen Inverter in die> LRCLK Leitung schalten:
nein, hat mich auch erst irritiert. Die haben nur R/L zur LRCLK-Phase
vertauscht, wozu auch immer...
Für die Zuordnung ist SD zuständig, Datenblatt Seite 17, Table 5.
SD_MODE Control.
Das Verstehen und dann die Berechnung der Widerstandswerte hat mich
ziemlich genervt, H-Pegel an SD braucht bei 5V betriebsspannung einen
Strombegrenzungswiderstand, ist bei mir 15k, ergibt dann den linken
Kanal. Beim 2. ist der Widerstand 360k gegen + und macht dann den
rechten Kanal.
Das gilt alles für beide Versionen, A und B.
Flo S. schrieb:> Wie kann man die avrc Kommandos aus der avrc_api benutzen?
Bis jetzt keine Ahnung. Ich muß mich erstmal mit dem ganzen BT-Kram
auseinandersetzen...
Windows sagt mir eine Audiosenke, eine Remotesteuerung und 2 unbekannte
Dienste. Audiosenke ist klar, der Rest im Zusammenspiel mit dem ESP noch
völlig unklar.
Zumindest läuft der Lautsprecher hier erstmal absolut stabil.
Gruß aus Berlin
Michael
Michael U. schrieb:> Flo S. schrieb:>> Wie kann man die avrc Kommandos aus der avrc_api benutzen?
Ich habe in bisschen herrunprobiert.
Die Commands, mit dem man einen befehl mit dem esp32 sendet,
funktionieren schon mal.(AVRC _commands.h im Anhang)
Die Datei einfach in den Projektordner kopieren, dann
1
#include"AVRC _commands.h"
oben hinschriben und die Funftionen benutzen.
Die Funktionen, wo man Informationen vom Abspierer bekommt, machen grade
noch ein paar Probleme. Wenn ich das hinbekommen habe, lade ich eine
neue Version von AVRC _commands.h hoch.
Hier ein kleiner Zwischenbericht meinerseits:
Ich habe das BlueTooth-Beispiel von oben auf meinen neuen ESP32
programmiert.
1. Das Programm hat nicht funktioniert und im Terminal einen Fehler
geworfen
2. Ich habe es noch mal mit einer älteren ESP32-Arduino Installation
probiert: Erst ging es nicht wegen einem Brown-Out-Fehler. Zusätzliches
Netzteil mit USB-Hub brachte die Lösung.
3. Ich kann die I2S Signale mit dem Oszilloscope sehen. Leider
unterscheidet sich das neue ESP32-Pinout von dem alten und ich kann
nirgends eine Pinout-Description finden...
Von Hand heraus gemessen:
G27: SD, Data
G26: SCK, Clock
G25: WS, Word Select
Zusammen mit dem MAX98357A funktioniert es.
Hallo,
wenn Du Dich auf den Source aus meinem Archiv beziehst:
das I2S-Pinout steht hardcoded ab ca. Zeile 75
1
i2s_pin_config_t pin_config = {
2
.bck_io_num = 33,
3
.ws_io_num = 32,
4
.data_out_num = 15,
5
.data_in_num = -1 //Not used
6
};
Du kannst die eigentlich frei auf fast alle Pins mappen.
Der Digilent PmodAMP3 ist gestern angekommen, Unterlagen findet man bei
Digilent. Ich habe erstmal J1 nachgerüstet und den 0 Ohm entfernt, um
den Verstärker mit 5V betreiben zu können, Logik ist max. 3,6V.
3,3V habe ich meist nicht mit ausreichend Strom verfügbar, 2x1,3W an 4
Ohm wollen auch fast 1A. Die verstärker an USB ist da höchstens für
einen leisen Test und mit 8 oder 16 Ohm Lautsprechern machbar, sonst
stürzt das sowieso ab.
Allerdings geht es mir gerade wie Dir: anderes EPS-Board genommen, Pins
umsortiert und trotzdem noch nichts gehört...
Muß ich mir heute mal genau anschauen.
Gruß aus Berlin
Michael
Ich habe mich gestern mal wieder dran gewagt und honbekommen, das das
I2S signal su dem dac kommt.
Ich habe das Beispiel aus a2dp_sink.zip von oben genommen.
Ich habe die i2s Config etwas angepasst:
1
i2s_config_ti2s_config={
2
.mode=(i2s_mode_t)(I2S_MODE_MASTER|I2S_MODE_TX|I2S_MODE_PDM),// Only TX
Jetzt spielt es aus den eingebauten DACs. Leider ist das Audiosignal
ziemlich verrauscht, wenn ich etwas leise abspiele.
Außerdem sind die Töne, die da raus kommen zu tief. Die Musik ist aber
noch erkennbar.
Hat jemand ne Idee, wie man das beheben kann?
Wenn ich einn Sinus Ton abspiele kommt ein verzerrter Sinus raus.
Die obere Halbwelle ist breit gezogen und die untere ist
Zusammengequetscht.