Forum: Mikrocontroller und Digitale Elektronik stand-alone Webradio-Client auf Basis von Ulrichs Webserver


von Phillip Üsecker (Gast)


Lesenswert?

Hallo,

ich plane grade einen Webradio-Client auf Basis von Ulrich Radigs
Webserver (www.ulrichradig.de). Hier mal mein grobes Konzept:

Ein Shoutcast-Server schickt MP3-Stream an Ulrichs Webserver, der dann
eigentlich kein Server mehr ist. Selbiger kümmert sich um das
TCP/IP/HTTP Krams und leitet die MP3 Rohdaten an einen 2. AVR weiter.
Dieser kümmert sich dann darum die Daten in einem 128-512KB RAM zu
Puffern und den Stream zu einem VS1011B MP3-Decoder nicht abbrechen zu
lassen.
Und fertig ist der Musikgenuß.

Der 2. AVR wird sich wahrscheinlich aus Pin-Mangel nicht umgehen
lassen. So ein blödes RAM hat ziemlich viele Adressleitungen.
Und ist Ulrichs Webserver überhaupt schnell genug für einen 128Kb
MP3-Stream? Da meiner leider mangels Netzwerkkarte noch nicht fertig
ist konnte ich bislang nicht testen.
Währ für ein paar Kommentare und Anregungen oder Erfahrungswerte
dankbar.
Janik

von Sebastian Heyn (Gast)


Lesenswert?

Mit einem AVR wird es da schon relativ eng glaube ich. Eher würde ich da
zu einem NAS oder so, wo ein linux drauf läuft. dann könntest du die
oberfläche mit nem AVR regeln, das ganze TCP/IP würde dann das Linux
machen, und auch das puffern wäre nicht so tragisch

von Rooney B. (rooney)


Lesenswert?

Also ich mach das ganze mit einem PIC und funktioniert auch tadellos.
Der kümmert sich sowohl um den Ethernet-Controller als auch MP3
Decoder.

von Sebastian Heyn (Gast)


Lesenswert?

Wie groß ist der code? wieviel RAM hast du dran?

von Matthias (Gast)


Lesenswert?

sowas hatte ich mir auch shconmal überlegt. Allerdings fände ich nur die
Single-Chip Lösung, also ARM7 mit integriertem Ethernet interessant.

Aber da wirds mit der Geschwindigkeit (TCP/IP und MP3 dekodieren)
vermutlich schon ziemlich eng.

von Nik Bamert (Gast)


Lesenswert?

Ich kann nur mal von meinen Erfahrungswerten berichten. Bei meinem
Projekt handelt es sich allerdings nicht um einen Shoutcast Client,
sondern um einen Mp3 player mit hdd. Die Songs werden aber übers
Netzwerk drauf geladen. Nun mache ich das ganze mit einem enc28j60, der
ja seriell angesteuert wird und das erst noch bei 'nur' 8mhz. Nun ja,
ich bringe damit Transfers von 250kbyte/sek hin, dabei ist die Zeit das
ganze auf die Hdd zu speichern aber auch scho dabei, ohne die Hdd(daten
nur in einen Puffer im Sram schreiben) komme ich auf ~280kbyte/sec.
Da Ulrichs Server ja den Rtl chip verwendet (und der ist ja paralell
angeschlossen) denke ich, dass das locker genug schnell sein sollte(hab
zwar keine Erfahrungen mit dem RTL, aber sollte von der Geschwindigkeit
wegen eigentlich kein Problem sein :)


Nik

von Phillip Üsecker (Gast)


Lesenswert?

@Thomas
Wieviel RAM hast du dran? Was für RAM?
Meine 128-512KB hat ich jetzt mal aus dem was man am PC so braucht
abgeleitet. Sollte sich ja 1 zu 1 übertragen lassen?

@Nik
Danke, das macht ja Hoffnungen

Und ich wollte das ganze eigentlich schon auf AVR machen, da AVRs
billig sind, und für mich kein totales Neuland darstellen.

von Nik Bamert (Gast)


Lesenswert?

Also ich würde sagen, dass es auch mit einem Avr geht(ich verwende bei
meinem einen atmega32)

Bezüglich dem Ram kann man das glaube ich nicht so genau sagen. Wenn
dein Server in deinem Home Netzwerk steht(stehen wird..), dann kann man
eigentlich davon ausgehen, dass da keine grossen Unterbrüche vorhanden
sein sollten. Zudem liegen die Ping zeiten da tiefer als im grossen,
weiten WWW. Folglich brauchst du sicher weniger Ram, als wenn der
Server, von dem du streams empfangen möchtest, im Internet steht. Denn
dort gibts ja auch höhere Latenz zeiten, sprich: Du forderst ein Packet
an und musst z.B. 100ms warten bis es 'endlich' hier ist. Da könnte
ich mir schon vorstellen, dass du mehr Ram brauchst.

Aber wieviel genau weiss ich auch nicht, habe leider noch nichts übers
web streamer können(bei mir klappt Tcp noch nicht und somit auch kein
http, damit wiederum kein Shoutcast ;) )

von Sebastian Heyn (Gast)


Lesenswert?

die idee ist schon nicht schlecht, und nen avr dazu zu verwenden
sicherlich auch. leider halten sich meine c und asm faehigkeiten ein
wenig in grenzen :-))

von Lokko (Gast)


Lesenswert?

@nik bamert

welchen tcp/ip stack benutzt du da?

ein einfacher aller ulrich radig wird wohl kaum die 280kBytes machen,
da er immer ein packet acked und dann das nächste usw. soweit ich weiss
arbeitet der ohne windowing. im verbund mit nem windows client der
ca.100ms braucht bis er den ACK des webservers wieder mit neuen daten
beantwortet ist das wohl nicht drin. da kommt man gerade mal auf
10-15kBytes.

von Ssss S. (sssssss)


Lesenswert?

>da kommt man gerade mal auf 10-15kBytes.
Ich schaffe mit meinem avrETH stack momentan bis zu 38KByte/s
(schicke aber auch nur immer ein paket mit max 1000byte)
Bzw meine daten kommen von einem seriellen Dataflash.

Also 250KByte/s kommt mir auch viel vor...

Gruss, Simon

von Nik Bamert (Gast)


Lesenswert?

Ich hab ja gesagt UDP :-) Da gibts keine Acks und dergleichen. Ich
benutze ein einfaches VisualBasic Programm... Der Transfer geht etwa
so:
1024Bytes senden, der AVR verarbeitet diese und sendet ein "K"
zurück, darauf kommen die nächsten 1024 Bytes. geht ein Packet
verloren, bleibt auch die Antwort vom avr aus, Datentransfer wird
unterbrochen. Doch Im Heimnetzwerk ohne Wlan geht selten ein Packet
verloren, hat bis anhin immer geklappt :). Den Stack habe ich mir
selber geschrieben, siehe
http://www.mikrocontroller.net/forum/read-4-343017.html#new

TCP ist allerdings noch nicht eingebaut, kopieren aus einem anderen
Sourcecode liegt zwar drinn, aber frühstens wenn ichs auch verstanden
habe, sonst bringt mir das nicht viel ;)

Nik

von Nik Bamert (Gast)


Lesenswert?

..ah nein habe ich ja gar nicht gesagt, dass es bei mir UDP ist :-X
sorry

von Lokko (Gast)


Lesenswert?

asooooooo :)

ich benutzte grade den lwip stack mit nem A91SAM7S und dem enc28j60 aus
dem grund weil mit "einfachem" ip stack die geschwindigkeit nicht fürs
streamen und nen gescheiten upload reicht (bei ein paar MEGS an mp3
daten für die verwendete sd card wartet man sich sonst nen ast:)

von Ssss S. (sssssss)


Lesenswert?

achsoo ... udp geht natürlich schneller :)

von Nik Bamert (Gast)


Lesenswert?

"bei ein paar MEGS an mp3
daten für die verwendete sd card wartet man sich sonst nen ast:)"

Leider warte ich mir in anbetracht meiner 60gb platte, die dranhängt
aber auch nen Ast :( Aber ich habe ja sowiso nicht soo viele Mp3s, ich
warte da lieber bis VLSI sowas wie mpeg2 -> pal rausbringt :D, dann
weiss ich auch wie ich die restlichen gigabyte voll kriege...Übrigens,
vielleicht kann mir ja jemand hier weiterhelfen
http://www.mikrocontroller.net/forum/read-2-343964.html , wird wenns
klappt ein UDP Bootloader :)

Sorry, also back to topic:
Wenn das mit TCP so aussieht, dann bin ich mir bei meinen Aussagen
nicht mehr so sicher :(, dennoch, irgendwo werden meine 'Benchmarks'
schon zu finden sein, wenn ich Tcp dann endlich implementiert habe ;)

mfg, Nik

von Rooney B. (rooney)


Lesenswert?

Morgen Sebastian!!!

Also ich hab auf meinem Board 1MByte externes SRAM + 1.5kBytes internes
SRAM und ein 512kByte großes paralleles Flash. Soviel Speicher brauchst
natürlich nicht, denn wie Nik schon ausführlich erklärt hat, ist das
bei einem Heimnetz nicht wirklich nötig.
Ich verbrauche ungefähr 65% ROM meines PIC, obwohl ich sehr überzeugt
bin, dass man das noch optimieren kann. Mit diesen 65% läuft aber die
volle Applikation, also Webserver, MP3, HDD, sämtliche Schnittstellen,
Display, Recording...
Du kannst ja mal auf
http://www.poms-engineering.at/html/index.php?lang=de&inc=projects_mp3_player
vorbeischauen, da hab ich eine kurze Beschreibung. Es handelt sich
hierbei um ein Developmentboard, das ich in den vergangenen Monaten
entworfen habe, deswegen vielleicht von der Peripherie her, Größe und
Speicher etwas überdimensioniert.

von Marco S. (masterof)


Lesenswert?

abo

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.