Hallo, Gibt es eine Möglichkeit mit einem Esp32 in der Arduino ide einen USB Stick zu lesen? Ich hatte vor damit mp3 Dateien an ein vs1053 mp3 decoder zu senden und dann abzuspielen.
Beitrag #5754304 wurde von einem Moderator gelöscht.
Sebastian R. schrieb: > Mit nem MAX3421E dazwischen könnte es gehen Vielen dank. Ich dachte eigentlicht, dass nur Mäuse und Tastaturen daran funktioniren. Ich werde mich mal über das Teil ein bisschen schlau mschen. viele Güße Flo S
also der esp32 sollte mp3 auch ohne externen decoder verarbeiten können. für irgendwas müssen 2 cores mit 240mhz doch gut sein
funky schrieb: > also der esp32 sollte mp3 auch ohne externen decoder verarbeiten können. > für irgendwas müssen 2 cores mit 240mhz doch gut sein Ich weiß, ich konnte aber keine vernünftigen Beispiele finden. Ein paar gibt es, die funktionieren aber nicht vernünftig.
:
Bearbeitet durch User
Hallo, ich halte die ESP8266Audio-Lib https://github.com/earlephilhower/ESP8266Audio immernoch für einen guten Ansatz. Leider darf man inzwischen einige Sachen aus den Bugreports selber einpflegen, weil der Programmierer da wohl im Moment nichts gemacht hat. Läuft hier als "WLAN-Lautsprecher" (nur einschalten, spielt fest definierten Stream) und als Stream/SD-Card Player (unvollständige Dauerbastelei). Gruß aus Berlin Michael
Flo S. schrieb: > Ich dachte eigentlicht, dass nur Mäuse und Tastaturen daran > funktioniren. Nö, das ist ein Full-Speed-Host, d.h. alles, was mit USB1.1-Geschwindigkeiten (1.5 MBit/sec und 12 MBit/sec) zurechtkommt, funktioniert damit. Und dazu gehören auch USB-Massenspeicher aller Art. Die sind dann zwar nicht besonders schnell, aber funktionieren tun sie.
Flo S. schrieb: > Hallo, > Gibt es eine Möglichkeit mit einem Esp32 in der Arduino ide einen USB > Stick zu lesen? > Ich hatte vor damit mp3 Dateien an ein vs1053 mp3 decoder zu senden und > dann abzuspielen. Wenn es nur MP3 vom Stick auf den VS1053 sein soll, dann mach es Dir einfach und nimm einen ch376. Damit reicht auch ein AVR als Controller.
Die etwas teurere, aber deutlich besser dokumentierte Alternative zum CH376 ist der VNC1L ("Vinculum") von FTDI.
Flo S. schrieb: > Ich hatte vor damit mp3 Dateien an ein vs1053 mp3 decoder zu senden und > dann abzuspielen. Ich wieder hole meine Frage: > Wie wäre es mit SD Karten? Denn das ist viel einfacher mit dem ESP32 zu machen. Nur ein modifizier Adapter ist nötig.
Arduino Fanboy D. schrieb: > Flo S. schrieb: >> Ich hatte vor damit mp3 Dateien an ein vs1053 mp3 decoder zu senden und >> dann abzuspielen. > > Ich wieder hole meine Frage: >> Wie wäre es mit SD Karten? > Denn das ist viel einfacher mit dem ESP32 zu machen. > Nur ein modifizier Adapter ist nötig. Danke für die Idee. Ich wollte eigentlich nur usb benutzen, da ich Haufenweise usb-Buchsen habe, die noch rumliegen und benutzt werden wollen. Aber wenn das so einfach mit dem Adapter geht, ist das natürlich viel besser. Dann mach ich mir nen Gehäuse dafür aus nem 3d-Drucker und gut is.
Michael U. schrieb: > Hallo, > > ich halte die ESP8266Audio-Lib > https://github.com/earlephilhower/ESP8266Audio > immernoch für einen guten Ansatz . Das funktioniert. Leider bricht der Radiostream nach ein paar Sekunden ab.
Hallo, wie sieht Dein benutzter Source aus? ESP32 oder ESP8266? Wie gibst Du aus? I2S und externer I2S-DAC? Es gibt mehrere bugfixe, die er leider noch nicht eingearbeitet hat. Speziell AudioOutputI2S .h/.cpp, AudioFileSourceBuffer .h/.cpp und AudioFileSourceICYStream.cpp. Ich kann da gern mal nachschauen. Bei wackliger WLAN-Verbindung recht der Buffer trotzdem manchmal nicht, dann stottert er trotzdem kurz beim reconnect. Mit PSRAM sollte das zu überbrücken sein. Ansonsten spielt er hier einen Radiostream stundenlang ohne Probleme. Gruß aus Berlin Michael
Ich benutze einen Esp32 mit dem eingebauten dac. Das ist mein benutzte Code: (der Beispiel code)
1 | #include <Arduino.h> |
2 | |
3 | #ifdef ESP32
|
4 | #include <WiFi.h> |
5 | #else
|
6 | #include <ESP8266WiFi.h> |
7 | #endif
|
8 | #include "AudioFileSourceICYStream.h" |
9 | #include "AudioFileSourceBuffer.h" |
10 | #include "AudioGeneratorMP3.h" |
11 | #include "AudioOutputI2SNoDAC.h" |
12 | |
13 | // To run, set your ESP8266 build to 160MHz, update the SSID info, and upload.
|
14 | |
15 | // Enter your WiFi setup here:
|
16 | const char *SSID = "MeinWlan"; |
17 | const char *PASSWORD = "MeinPasswort"; |
18 | |
19 | // Randomly picked URL
|
20 | const char *URL="https://wdr-1live-live.icecastssl.wdr.de/wdr/1live/live/mp3/128/stream.mp3"; |
21 | |
22 | AudioGeneratorMP3 *mp3; |
23 | AudioFileSourceICYStream *file; |
24 | AudioFileSourceBuffer *buff; |
25 | AudioOutputI2SNoDAC *out; |
26 | |
27 | // Called when a metadata event occurs (i.e. an ID3 tag, an ICY block, etc.
|
28 | void MDCallback(void *cbData, const char *type, bool isUnicode, const char *string) |
29 | {
|
30 | const char *ptr = reinterpret_cast<const char *>(cbData); |
31 | (void) isUnicode; // Punt this ball for now |
32 | // Note that the type and string may be in PROGMEM, so copy them to RAM for printf
|
33 | char s1[32], s2[64]; |
34 | strncpy_P(s1, type, sizeof(s1)); |
35 | s1[sizeof(s1)-1]=0; |
36 | strncpy_P(s2, string, sizeof(s2)); |
37 | s2[sizeof(s2)-1]=0; |
38 | Serial.printf("METADATA(%s) '%s' = '%s'\n", ptr, s1, s2); |
39 | Serial.flush(); |
40 | }
|
41 | |
42 | // Called when there's a warning or error (like a buffer underflow or decode hiccup)
|
43 | void StatusCallback(void *cbData, int code, const char *string) |
44 | {
|
45 | const char *ptr = reinterpret_cast<const char *>(cbData); |
46 | // Note that the string may be in PROGMEM, so copy it to RAM for printf
|
47 | char s1[64]; |
48 | strncpy_P(s1, string, sizeof(s1)); |
49 | s1[sizeof(s1)-1]=0; |
50 | Serial.printf("STATUS(%s) '%d' = '%s'\n", ptr, code, s1); |
51 | Serial.flush(); |
52 | }
|
53 | |
54 | |
55 | void setup() |
56 | {
|
57 | Serial.begin(115200); |
58 | delay(1000); |
59 | Serial.println("Connecting to WiFi"); |
60 | |
61 | WiFi.disconnect(); |
62 | WiFi.softAPdisconnect(true); |
63 | WiFi.mode(WIFI_STA); |
64 | |
65 | WiFi.begin(SSID, PASSWORD); |
66 | |
67 | // Try forever
|
68 | while (WiFi.status() != WL_CONNECTED) { |
69 | Serial.println("...Connecting to WiFi"); |
70 | delay(1000); |
71 | }
|
72 | Serial.println("Connected"); |
73 | |
74 | file = new AudioFileSourceICYStream(URL); |
75 | file->RegisterMetadataCB(MDCallback, (void*)"ICY"); |
76 | buff = new AudioFileSourceBuffer(file, 2048); |
77 | buff->RegisterStatusCB(StatusCallback, (void*)"buffer"); |
78 | out = new AudioOutputI2SNoDAC(); |
79 | mp3 = new AudioGeneratorMP3(); |
80 | mp3->RegisterStatusCB(StatusCallback, (void*)"mp3"); |
81 | mp3->begin(buff, out); |
82 | }
|
83 | |
84 | |
85 | void loop() |
86 | {
|
87 | static int lastms = 0; |
88 | |
89 | if (mp3->isRunning()) { |
90 | if (millis()-lastms > 1000) { |
91 | lastms = millis(); |
92 | Serial.printf("Running for %d ms...\n", lastms); |
93 | Serial.flush(); |
94 | }
|
95 | if (!mp3->loop()) mp3->stop(); |
96 | } else { |
97 | Serial.printf("MP3 done\n"); |
98 | delay(1000); |
99 | }
|
100 | }
|
Moin Leute, ich habe da derzeit eine "wahnsinnige" Idee in meinem Hinterkopf. Nachdem meine esp32 Internetradio wunderbar funzt, denke ich über folgendes nach. Könnte man einem DAB USB Dongel (wie für Android Autoradios üblich /SDR Chips) auch einen ESP32 "füttern"? Ich kenne DADDUINO etc und habe diesbzgl. In der letzten Zeit viel gelesen. Zur Zeit scheint das aber alles 'zu ruhen"...!? Hintergrund ist: Ich möchte alte Autoradios für Oldtimer (hier SAAB) eventuell auf DAB+ hochrüsten. Herzliche Grüße Manfred
Manfred S. schrieb: > Zur Zeit scheint das aber alles 'zu ruhen"...!? Und? Funktioniert Software nicht mehr, wenn nicht ständig jemand dran rumbastelt? Fehlt Dir irgenndwas am DABDUINO-Projekt?
Hallo, es ist ja eigentlich für Raspi geschrieben und ich empfinde es heute als etwas "in die Jahre" gekommen. Es muß doch möglich sein, die USB Kommunikation mit den SDR /DAB+ Sticks mit esp32 nachbilden zu können. Der Stick müsste dann mit MP3 Files o.ä. antworten. Beim Webradio funktioniert das ja auch perfekt. Hat jemand Ideen, kennt jemand die Kommunikation /Protokolle /Befehle, die zwischen SDR/DAB Sticks und Rechner ausgetauscht werden? Ich bin für jeden Hinweis dankbar! Viele Grüße Manfred
Manfred S. schrieb: > es ist ja eigentlich für Raspi geschrieben und ich empfinde es heute als > etwas "in die Jahre" gekommen. Und? Ich verstehe Dein Problem nicht. Du hast Sourcecode, den musst Du halt portieren. Was hat das Alter des Sourcecodes damit zu tun? Anders als die Hipsterprogrammiersprachen, die alle drei Wochen inkompatibel zu sich selbst werden, ist das bei C und C++ nicht der Fall. Man kann problemlos auch jahrzehntealten Code übersetzen. Manfred S. schrieb: > Es muß doch möglich sein, die USB Kommunikation mit den SDR /DAB+ Sticks > mit esp32 nachbilden zu können. Der Stick müsste dann mit MP3 Files o.ä. > antworten. Kann es sein, daß Du nur sehr vage Vorstellungen davon hast, was so ein SDR/DAB+-USB-Stick macht?
Hallo, du schreibst: Du hast Sourcecode, den musst Du halt portieren. Was hat das Alter des Sourcecodes damit zu tun? Ich denke, das ist kein guter Weg. Das wäre ein "reingenearing". Das kann man zwar machen, ist aber "zu zeitaufwendig" (das sind solche Projekte aber immer ;) Du hat Recht, ich weiß (leider) nicht genau, wie die Kommunikation auf der USB Schnittstelle mit so einem RDS/DAB Chip abläuft. Das wüsste ich aber gerne, darum frage ich. Herzliche Grüße Manfred
Manfred S. schrieb: > Ich denke, das ist kein guter Weg. Das wäre ein "reingenearing". Nein, es ist kein Reengineering, wenn Du bestehende Sourcen verwendest. Reengineering wäre es, wenn Du ohne bestehende Sourcen den Krempel neu entwickeln müsstest, und dabei bei einem funktionierenden Beispiel mit Analysemethoden die Kommunikation belauschen und verstehen müsstest. Das ist aber bei bestehendem Sourcecode nicht der Fall. Den musst Du nur portieren, und dabei ist es wirklich vollkommen wurscht, wie alt der Sourcecode ist.
Hallo, was empfiehlst du denn für einen Stick bzw. Sourcecode? Herzliche Grüße Manfred
Hallo, es gibt scheinbar keine "seriösen" Lieferanten der dabduono Boards mehr. Hat jemand vielleicht Schaltpläne etc. zu dem Projekt? Viele Grüße Manfred
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.