Forum: Mikrocontroller und Digitale Elektronik SD-Karte zwischen 2 Boards teilen?


von Kim-Yannick J. (kim_yannick)


Lesenswert?

Mal wieder habe ich ein neues Projekt vor, bevor ich die anderen 
überhaupt abgeschlossen habe. Aber so ist es halt, wenn man mehrere 
Wochen auf seine China-Bestellung warten muss.

Ich möchte ein Soundboard bauen, also ein Gerät, mit dem man Sounds 
durch einen Knopfdruck abspielen kann, wobei sich auf jede Taste ein 
Sound legen lässt. Die Sounds sollen auf einer SD-Karte gespeichert 
sein. Die Steuerung erfolgt über ein 4x4-Tastenfeld und Informationen zu 
den Sounds sollen auf einem 128x64-OLED-Display angezeigt werden. 
Steuern soll das ganze ein Arduino Pro Mini-Klon.

Ein günstiges China-MP3-Modul namens "DFPlayer Mini" mit integriertem 
3W-Verstärker, UART-Steuerung und SD-Slot habe ich schon gefunden: 
http://www.aliexpress.com/item/1PCS-Mini-MP3-Player-Module-with-Simplified-Output-Speaker-for-Arduino-UNO/32271894202.html

Allerdings möchte ich auf dem Display Informationen zur Tastenbelegung 
anzeigen, z.B. die Dateinamen der jeweiligen Sounds. Das Board hat 
leider keine Möglichkeit, eine Dateiliste abzufragen. Hardcoden möchte 
ich auch nicht. Ein besseres Board zum ähnlichen Preis habe ich nicht 
gefunden.

Jetzt ist meine Idee, die SD-Karte vorher mit dem Arduino selbst 
auszulesen und dann die Kontrolle an das Modul weitergeben. SMD-Löten 
ist keine Option. Die Firmware auf dem Board scheint sich nicht 
(einfach) austauschen zu lassen, zumindest finde ich zum verbauten IC 
keine SDKs, Datasheets und Ähnliches.

Als Alternative habe ich noch ein günstiges ARM-Board gefunden: 
http://www.aliexpress.com/item/Free-Shipping-STM32F103C8T6-ARM-STM32-Minimum-System-Development-Board-Module-For-arduino/32555258029.html?ws_ab_test=searchweb201556_10,searchweb201602_2_10057_10056_10055_10037_10049_10033_10059_10058_10032_10017_10060_10061_10062_10063_412_10064,searchweb201603_8&btsid=0b984e2b-b48b-4a56-8782-7846055228bb
Hat der ARM genug Leistung für Software MP3-Decoding und gibt es eine 
passende Library dafür?

von MP3 (Gast)


Lesenswert?

>Hardcoden möchte ich auch nicht.
>SMD-Löten ist keine Option.
Aha!
Nur ganz ohne zu Löten bzw. zu Programmieren wird das nichts.

Deine Idee die SD-Karte erst vom uC und dann vom Soundmodul zu lesen 
funktioniert solange du das hintereinander machst.
Natürlich brauchst du eine Umschaltlogik für die SD-Karte und ein Reset 
der Karte beim Umschalten tut auch gut.

Also etwa so:
- Umschalter steht auf uC, das Soundmodul wird vom uC im Reset gehalten.
- uC initalisiert die SD und liest die gewünschten Daten.
  Soundmodul ist immer noch im Reset.
- uC schaltet den Umschalter auf das Soundmodul,
  trennt kurz die Versorgungsspannung zur Karte (Reset)
  und gibt dann den Reset des Soundmoduls frei.

Wie der 'Umschalter' aussieht, hängt davon ab wie die SD-Karte an den uC 
bzw. an das Soundmodul angebunden wird (SPI, SDIO1, SDIO4)

von Kim-Yannick J. (kim_yannick)


Lesenswert?

Ich habe schon eine andere Idee: Der ARM emuliert einen SD->USB-Adapter. 
Das MP3-Modul kann nämlich auch Dateien von USB-Sticks abspielen. Somit 
hat aber immer noch der ARM volle Kontrolle über den Speicher und kann 
ihn jederzeit auslesen.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Dann mach lieber MP3 Softdecoding, USB Massenspeicher ist da 
schwieriger.
Mit einem STM32F4 sollte das gehen.

minimp3:
http://keyj.emphy.de/minimp3/

von Kim-Yannick (Gast)


Lesenswert?

Dafür bräuchte man aber ein teureres Board, einen zusätzlichen DAC und 
einen extra Verstärker.

von Stefan F. (Gast)


Lesenswert?

Es könnte nötig sein, das ganze Soundmodul zu resetten, wenn du den 
Inhalt der SD Karte änderst.

von Ich (Gast)


Lesenswert?

Raspberry Pi? Dann beschränkt sich das Ganze auf ein wenig Software, die 
bei Drücken eines Tasters (Standard GPIO) einen fertigen Mediaplayer mit 
der entsprechenden MP3 aufruft ... Display gibts als fertiges Modul in 
beliebiger Ausführung, Python-Programmierbeispiele auch zu Hauf ...

von Kim-Yannick J. (kim_yannick)


Lesenswert?

Stefan U. schrieb:
> Es könnte nötig sein, das ganze Soundmodul zu resetten, wenn du den
> Inhalt der SD Karte änderst.

Es wird nur gelesen, nicht geschrieben.

Ich schrieb:
> Raspberry Pi? Dann beschränkt sich das Ganze auf ein wenig Software, die
> bei Drücken eines Tasters (Standard GPIO) einen fertigen Mediaplayer mit
> der entsprechenden MP3 aufruft ... Display gibts als fertiges Modul in
> beliebiger Ausführung, Python-Programmierbeispiele auch zu Hauf ...

Das ganze soll über einfache Batterien laufen, da ist ein Pi zu 
stromfressend. Außerdem möchte ich das Projekt so günstig gestalten wie 
möglich, da wäre ein Pi etwas extrem. Und die Bootzeit von Linux auf dem 
Pi ist ziemlich hoch, wenn man das mit einem einfachen MCU vergleicht. 
Einen extra Verstärker bräuchte ich ebenfalls noch. Das Projekt soll 
außerdem klein sein, da ist ein Pi ziemlich groß. Und der Pi Zero hat 
nicht einmal einen Audioausgang.

von Stefan F. (Gast)


Lesenswert?

> Es wird nur gelesen, nicht geschrieben.

Dann benutze in dem zweiten gerät eine Kopie der SD Karte. Oder habe ich 
dich missverstanden?

von Kim-Yannick J. (kim_yannick)


Lesenswert?

Stefan U. schrieb:
>> Es wird nur gelesen, nicht geschrieben.
>
> Dann benutze in dem zweiten gerät eine Kopie der SD Karte. Oder habe ich
> dich missverstanden?

Wie gesagt, das MP3-Board hat auch Unterstützung für das Lesen von 
USB-Massenspeicher. Der der ARM ein natives USB-Interface besitzt, 
könnte ich einfach die SD-Karte im ARM lesen und gleichzeitig über den 
USB-Port dem MP3-Modul zur Verfügung stellen.

von ./. (Gast)


Lesenswert?

> Außerdem möchte ich das Projekt so günstig gestalten wie
> möglich

Dann musst Du mal aufhoeren mit Lego zu spielen und
mal selber das Loetwerkzeug anwerfen.

ST hat das mal auf einem Evalboard mit einem 8-Bitter,
ST7-LITE und einem SPI-Flash realisiert.
Die Qualitaet war allerdings eben nur 8 bittig.

Ein kleiner ARM M0 zum Auslesen einer SD-Karte und ein
PT8211 als unkomplizierter 16 Bit-DAC waeren heute wohl
zeitgemaesser und vom Preis attraktiver.

von Michael U. (amiga)


Lesenswert?

Hallo,

je nach Lust und Laune: ATMega, VS1003, SD-Card-Slot, Display und Tasten 
und selber programmieren. Bei 320kBit wurde es knapp, 128kBit gingen 
auch von einer 2,5" HD mit einem alten 8515 bei 14,xxx NHz Takt, Anzeige 
war ein 2x16 Diplay incl. Scrollen der Anzeige, gelesen wurden die 
MP3TAG-V1.

Alternative wenn Mono und 12Bit reichen: externen SPI-DAC dran (hatte 
damals den DAC7512), dann sind 44,1kHz/16Bit kein Problem, incl. 
Lautstärkeregelung in der Ausgaberoutine.

Nur, weil viele Wege nach Rom führen.

Irgendein MP3-Modul gab es mal, das seriell gesteuert werden konnten und 
die Titelinfo auch schickte, finde ich nirgends mehr.

Gruß aus Berlin
Michael

von Kim-Yannick J. (kim_yannick)


Lesenswert?

./. schrieb:
> Dann musst Du mal aufhoeren mit Lego zu spielen und
> mal selber das Loetwerkzeug anwerfen.

Das werde ich, in diesem Fall ging es mir nur um SMD.

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.