Hallo Zusammen! Ich weis, es gibt mitlerweile schon einige Projekte, welche avrs, tcp/ip, sdkarte, multitasking, etc. miteinander verbinden, aber als ich damit angefangen habe mit AVRs rumzuspielen, war das noch nicht ganz so. Das Projekt ist so um 2002/03 rum ins Leben getreten und hat einige Zwischenstationen durchlebt. Ich will noch nicht behaupten, dass alles perfekt ist, ganz im Gegenteil. Viel von dem Code bedarf noch der Ueberarbeitung, aber vielleicht ist ja das Ein oder Andere fuer den einen oder Anderen brauchbar. Bei mir laeuft das ganze immerhin schon soweit, dass ich Webradio hoere, sowohl ogg als auch mp3-streams direkt vom Internet (wie z.B. Deutschlandfunk,etc.) als auch LastFM. Das momentane Setup bei mir im Wohnheim sieht so aus, dass wir einen Proxyserver haben und ich mich ueber diesen ins Internet einwaehle. DHCP ist zwar schon etwas gediegen, aber in der momentanen Version noch nicht wirklich benutzbar. Der Quellcode unterschuetzt FAT16/FAT32 SD-Karten (zumindestens unter 4GB getestet, HD hatte ich mal angedacht, weis im Moment aber nicht wie gut das funktioniert, da ich keine solche Karte habe!) (fuer FAT16 muss ein Ordner ROOT angelegt sein, der dann als Wurzelverzeichnis interpretiert wird) Das Root-Verzeichnis der Karte wird in einer Dauerschleife abgespielt (falls direkt wav/ogg/mp3 Dateien vorhanden sind) Im Falle einer m3u-Datei wird der dortige Link abgerufen und der Stream aus dem Internet wiedergegeben. Eine .lfm-Datei (kein offizieller Standard) wird so interpretiert, dass die erste Zeile als lastfm-Benutzername, die zweite als md5sum des Passwortes und die dritte als Kuenstlername interpretiert wird. Dann wird eine Verbindung zu lastfm hergestellt und der entsprechende Stream abgespielt. Zum Einsatz kommen vs1053b von vlsi, enc38j60 von microchip und ein atmega644 (der ueber JTAG programmiert/gedebugged werden kann, die Leitungen sind auf eine Pfolstenleiste zusammen mit einigen anderen gefuehrt) Der Quellcode gliedert sich in mehrere Teile: * Kernel: Sorgt fuer eine sehr kleine Multitasking-Umgebung, die einen Event-Mechanismus zur Synchronisation und Timer zur Verfuegung stellt * TCP/IP Stack: unterstuetzt vor allem TCP, IP, ICMP (ping), ARP, UDP nicht wirklich, DHCP ansatzweise (muss noch etwas aufpoliert werden...) * FAT/SDCARD Unterstuetzung fuer Hinweise, Tipps, etc. bin ich dankbar, email: SebastianNeruem@gmx.de
Noch die doppelseitige Platine viele gruesse, Sebastian
rueckseite der platine...
oberseite der platine...
Sehr interessantes Projekt, gab ja schon ein paar anläufe hier sowas zu bauen, aber ich glaube bis jetzt ist noch kein Projekt wirklich zuende geführt worden! Gibt es auch die möglich keit spezielle LastFM Radiostationen (von anderen Usern) abzuspielen? Wenn nicht wäre das noch eine sinnvolle ergänzung finde ich. Außerdem vielleicht ein Display zur eingabe der Stream-adresse bzw. der Radiostation.
Hallo Hauke, lastfm basiert auf den infos von http://gabistapler.de/blog/index.php?/archives/268-Play-last.fm-streams-without-the-player.html ich denke, da ist nicht viel Arbeit noetig nicht die Artist station sondern die neighbour station einzutunen (wenn du das meinst) Display habe ich noch nicht am start, kann man aber ueber die Pfostenleiste anschliessen, dafuer habe ich die vorgesehen! viele gruesse, Sebastian (-:
Sehr schön, eine Sache mehr zum basteln ;) Hast du zufälligerweise noch so ne Platine rumfliegen? :D Als diyplay Sollte ja schon nen Textdisplay reichen, wobei nen schönes Graphisches da auch sehr schick wäre, habe beides hier, werd nach dem ABI (2 Wochen) dann mal etwas basteln :D
sehr schönes projekt wer hat den vs1053b den auf lager? c.u Commtel
Hallo zusammen, Platinen sind gerade aus, ich habe nur den Prototypen aufgebaut, die loecher muessten sowieso noch etwas groesser ausgelegt und ein elko versetzt werden (habe ich in die readme.txt geschrieben). Den vs1053b koennte es mittlerweile bei segor geben wenn man nochmal eine Anfrage stellt (die haben mir damals gesagt, dass sie den vielleicht spaeter ins programm aufnehmen), ansonsten bei vlsi auf der homepage im webshop (dort habe ich die bestellt) Aber vielleicht bekommt man ja irgendwen ueberredet den chip ins Programm aufzunehmen.... viele gruesse und Danke fuer das Feedback, Sebastian (-:
Hallo, Ich baue auch gerade ein Webradio mit einem ATmega644: http://www.watterott.net/webradio.php Wie sieht es bei dir eigentlich mit dem Buffern aus? Ich habe bei mir mit 384-DSL und den ca. 3kb des AVRs schon Probleme. Daher habe ich noch ein F-Ram mit eingebaut.
Hallo Andreas, bei mir laeuft das ganze so ohne Probleme, ich komme mit dem 2048-byte FIFO des vs1053b aus, allerdings betreibe ich das Ganze auch an einem proxyserver, ich weis daher nicht, wie es ohne diesen performed (wir haben im Wohnheim so ein Ding, ueber den der ganze Trafic laeuft, daher geht es gar nicht anders) Irgendwann werde ich das Ganze wohl mal direkt an einer DSL-Leitung testen, aber die Moeglichkeit habe ich hier leider nicht... Allerdings hat der enc28j60 auch nochmal 8kByte SRAM on board, die ich bisher aber noch nicht direkt mitverwende (packete werden in einen 1kByte FiFo einsortiert und von dort an den vs1053b weitergereicht, ich melde nur den dortigen Platz als Windowsize an den Server. (Der Tcp-Code unterstuetzt auch noch kein Reassembeln der Packete) Bisher laeuft das Problemlos, sowohl von LastFM als auch von diversen Webstreams. Wie sieht das bei dir aus, wieviel Buffer hast du im Ethernet-Chip? viele gruesse, Sebastian
Noch eine Nachfrage: Wie machst du das mit USB, bzw. was wird alles so unterstuetzt? Viele Gruesse, Sebastian
Der Ethernet-IC hat bei mir 4kb und ich habe noch mal 1kb im AVR und 32kb im F-Ram. Damit spielt das Radio ca. 3s weiter, wenn ich das Netzwerkkabel ziehe. (128kb/s Stereo Stream). Unterstützt wird zur Zeit nur das Abspielen von MP3-Streams. Ich bin gerade an der Menüsteuerung. Später soll noch von Netzwerkfreigaben und SD-Karte abgespielt werden können. Die USB-Buchse auf der Hauptplatine ist nur zur Stromversorgung für die Lautsprecher und die auf der PickUp-Platine ist für Debugausgaben (FT232). Versorgt wird das Radio über PoE.
Hi Andreas, vielleicht ist dann wohl mein setup direkt an einem router der keinen proxyserver mitbringt etwas knapp, danke fuer die Infos!!! Wenn ich das naechste Mal die Moeglichkeit habe das zu testen, werde ich das ausprobieren... Mann koennte ansonsten den atmega644 gegen einen der 640-Reihe austauschen (8 anstelle 4kByte internes RAM), genug Platz duerfte sein bzw. einen der neuen xmega (die es wohl noch nicht gibt,... bis zu 16kbyte intern) Wie bindest du das externe RAM eigentlich an? Ist 32kByte die Untergrenze ab der es bei dir fluessig laeuft? Viele gruesse, Sebastian (-:
Hallo Sebastian, Wenn ich die vollen 4kb des AVRs ausnutze (2-3kb für Buffer und 1500byte für das Ethernetpaket), dann funktioniert das Abspielen auch flüssig. Sobald man aber im Internet nebenbei surfen will, dann bricht alles zusammen. 32kb sollten es dann schon sein. > Wie bindest du das externe RAM eigentlich an? Der F-Ram ist über SPI angeschlossen: http://www.ramtron.com/ Anbei auch mein Schaltplan.
Hallo Andreas, das mit PWRoE sieht sich gut an, danke fuer den Schaltplan! Die SPI-RAMs von deinem Link sehen ziemlich gut aus. Auf der Platine ist auf jeden Fall noch ein wenig Platz neben dem Atmel, da liesse sich auch noch ein solcher Chip unterbringen (neben ENC28J60 und AVR, dort ist auch der SPI-Bus gerouted) Vom Timing mueste es auch keine Probleme geben, der momentane Code schaft (PC->AVR) etwas ueber 1Mbit effektiven Datendurchsatz, da duerfte das Zwischenpuffern im SPI-RAM auch noch reinpassen... Was benutzt du eigentlich fuer Software? viele Gruesse, Sebastian (-:
>Was benutzt du eigentlich fuer Software?
Selbst geschriebene ;-)
Ich weiß noch nicht genau, ob ich alles veröffentliche. Auf jeden Fall
die ganzen Low-Level-Routinen für CP, VS, F-Ram, LCD... Ist zur Zeit
alles auch noch pre-alpha Stadium. Ich bin erst seit ungefähr 3 Monaten
an dem Projekt und die Bilder sind vom ersten Prototypen. Leider gibt es
keine RJ45-Buchsen mit Übertragern (Rx 1:1, Tx 1:2) und PoE für den
CP220x. Die Buchse die ich verwende ist eigentlich für den ENC gedacht
(Rx 1:1, Tx 1:1). Daher muss ich die Platine auch noch einmal ändern.
Aber sonst funktioniert alles soweit.
Hallo Andreas, ich weis nicht wie dein Zeitplan so aussieht (ich habe im Moment leider nicht alszu viel Zeit, viel an dem Projekt weiterzuentwickeln), aber ich habe auch schon an SMB-Unterstuetzung gedacht, vielleicht koennte man da zusammenarbeiten oder auf Code zurueckgreifen, den es schon gibt (habe mich da noch nicht umgeschaut, aber auch schon daran gedacht)! viele gruesse, Sebastian (-:
Ich habe ebenfalls gerade viel zu tun... Die SMB-Unterstützung werde ich auch erst zum Schluss in Angriff nehmen. Als nächster Schritt ist bei mir ein Web-Interface zum Konfigurieren geplant... Es gibt bereits ein fertiges Webradio mit SMB-Unterstützung: http://www.gurulib.com/_project/wmp3/index.htm
Danke fuer den Link! viele Gruesse, Sebastian (-:
Hallo, Ich bin letzte Woche beim Bestellen über das Stellaris LM3S6965 Evaluation Kit gestolpert: http://www.luminarymicro.com/products/lm3s6965_ethernet_evaluation_kit.html Der LM3S6965 ist ein Cortex-M3 mit Ethernet und 64Kb RAM. Das wäre eine Alternative zu AVR + Ethernet-Controller + externen RAM... Mittlerweile habe ich das Kit auch schon bekommen und ein bisschen mit herumgespielt. Als nächstes versuche ich mal meinen AVR-Code auf den ARM zu portieren und einen Stream über das Board abspielen zu lassen. Gruß Andreas
Zur Frage der RAM Größe kann ich folgendes beitragen: Die TCP basierten Stationen (SHOUTcast, IceCast) bauen einen Puffer auf, indem sie ein paar Sekunden zeitversetzt streamen. Wenn der Client connected, bekommt er diesen Puffer mit maximal möglicher Transferrate übermittelt, bevor der Stream dann auf die Dauerrate heruntergeht. Beim PC hat das den Vorteil, dass man kurzfristig genug puffern kann, um spätere Latenzen, die es bei TCP halt gibt, auszugleichen. Bei kleinen Embedded Systemen ist das eher hinderlich. Der Server hat fortwährend jede Menge Daten zum Verschicken, die aber nicht abgeholt werden. Statt dessen meldet der kleine Client dauernd, dass sein TCP Puffer voll ist und der Server beginnt zu pollen. Das alles erzeugt zusätzlichen Traffic, was dem Client noch mehr zu schaffen macht. Eine Alternative ist, den Anfangspuffer einfach wegzuwerfen und dann den Stream mit normaler Spielgeschwindigkeit abzuholen. Dann fällt zumindest das Pollen weg. Bleibt TCP tatsächlich mal hängen, was ohne weiteres ein paar Sekunden dauern kann, fällt die Musik natürlich sofort aus. Die ganzen Probleme hat man nicht so deutlich, wenn noch irgendwo einen PC dazwischen geschaltet ist (z.B. ein Proxy). Ansonsten puffern die meisten SHOUTcast Stationen so um die 256k. Für einen AVR bleibt da nur banked RAM. (Gibt's eigentlich SPI oder I2C RAM?) Auch wenn es ähnliches schon länger gibt, das Projekt beeindruckt mich. Grosses Lob, Harald
Hallo, Ich bin jetzt endlich dazu gekommen den VS an das LM3S6965-Evaluation-Kit anzuschließen und habe mal ein kleines Video gemacht: http://www.watterott.net/webradio_cortex.php Zur Zeit funktioniert nur das Abspielen von Streams. Die Adressen der Stationen und die Einstellungen (IP, NetMask, Gateway...) werden von einer SD-Karte gelesen. Das Zappen durch die SD-Karte geht auch schon... Wenn alles funktioniert und ich den Code hübsch gemacht habe, dann werden ich ihn auch freigeben. @ Harald Mit dem Vorpuffern habe ich bis jetzt noch keine Probleme bemerkt und ein erhöhtes Datenaufkommen ist mir beim Loggen mit Wireshark auch noch nicht aufgefallen. > Gibt's eigentlich SPI oder I2C RAM? Mir sind eigentlich nur die F-RAMs von Ramtron bekannt. Gruß Andreas
Habe mich selber auch schon an soetwas versucht. Bin aber mit dem 4kB RAM des Mega644 nicht sehr weit gekommen. Fast alle Stationen haben geruckelt beim Abspielen (außer im lokalen Netzwerk, aber ist ja auch logisch). 32kB Buffer bei 256kbit/s Streams ist definitiv Minimum, würde ich sagen.
Hallo zusammen! Entschuldigung, ich war hier schon laenger nicht mehr online... Aber vielen Dank fuer eure Beitraege! Auch an Harald vielen Dank fuer das Lob!!!! @Andreas: Beeindruckendes video, glueckwunsch, sieht sich sehr gut an!!!! Viele Gruesse, Sebastian (-:
Hallo, Ich wollte mal ein Lebenszeichen geben: Das WebRadio-Projekt lebt noch ;-) Vor 2-3 Wochen habe ich die ersten Prototypenplatinen vom ARM Cortex-M3 WebRadio bekommen und ich schreibe gerade an der Software. Die Hardware funktioniert soweit: PoE, Ethernet, VS1053, microSD, S65-Display, Drehencoder... Ich habe auch meine Internetseite aktualisiert und schon mal den Schaltplan hochgeladen: http://www.watterott.net/sites/webradio/arm-webradio.pdf http://www.watterott.net/sites/webradio/arm-webradio_exp.pdf Die Layoutdaten, Bilder und die Software folgen. Gruß Andreas PS: Falls jemand Interesse an einer Platine hat einfach per PN melden.
Hallo, Das erinnert mich schon fast an das Olympia Webradio 100. Die benutzen einen S3C2410. Der Aubau von diesem Radio ist schon Interressant! Ein USB-Stick für die WLAN Anbindung. So könnte man auch sein eigenes Radio aufbauen bzw. die Hardwareplattform für eigene Projekte benutzen. Im Anhang einige Bilder! Gruß Uli
Hallo! Finde ich gut dass es bei euch weitergeht! Ich habe zur Zeit viel anderes zu tun und arbeite daher erstmal an dem Projekt nicht weiter. Aber wenn jemand Lust hat den Code weiterzuentwickeln, dann sei er herzlich dazu eingeladen dies zu tun (-: @Andreas: Warum bist du auf ARM umgestiegen? viele Gruesse, Sebastian
@Uli Interessante Bilder. Aber bei einem ARM9 als Basis ist es auch nicht mehr weit zu einem x86 mit Nano- oder Pico-ITX Board. @Sebastian Der ARM hat 64kByte RAM und Ethernet integriert, dadurch kann ich den F-RAM und Ethernetcontroller einsparen.
Ich habe jetzt mal den aktuellen Schaltplan und Quellcode auf meiner Seite hochgeladen. Ein paar Bilder und Videos natürlich auch :-) Die erste Platine hatte noch einen Fehler, der aber jetzt behoben ist. Das Radio wird es demnächst auch als Bausatz bei meinem Bruder (watterott.com) im Shop geben. Was schon funktioniert: * Abspielen von Shoutcast/Icecast-Streams * Abspielen von Audiodateien von der microSD-Karte * DHCP-Client * NTP-Client für die aktuelle Uhrzeit * UPnP-Device: Discovery/Description/Control (Lautstärke ändern funktioniert schon)
Was für kosten werden den etwa für so einen Bausatz veranschlagt?
Der komplette Bausatz so um die 85 Euro.
Moin, sehr interessant das Teil, muss man schon sagen. Wie bewertest du eigentlich den hier genutzten Puffer? Teilweise wird ja von eigentlich größeren Puffern als die hier verfügbaren 64 k gesprochen. Gruß
> Wie bewertest du eigentlich den hier genutzten Puffer? Teilweise wird ja > von eigentlich größeren Puffern als die hier verfügbaren 64 k gesprochen. Bei meiner "langsamen" Internetanbindung (384-DSL) brauche ich mind. 32kByte, damit ich überhaupt ruckelfrei hören und nebenbei ein wenig surfen kann. Die Puffergröße hängt hauptsächlich von der Anbindung ab. Sebastian hat bei seinem Radio einen sehr kleinen Puffer und keine Probleme. Falls es zu eng wird, kann man auf meinem WebRadio auch noch einen F-RAM nachrüsten. Den gibt es mittlerweile bis 256kByte.
Es hängt übrigens auch stark vom verwendeten Streaming Server ab, wie groß der Puffer sein muss!
Hallo Zusammen! Bin froh, dass hier so eine angeregte Diskussion am Laufen ist!! @ Andreas: Bei dir gehts ja echt zur Sache! Cool! @ Pufferfragen: Bei mir laeuft alles gut, da ich hinter einem Proxy sitze, dessen Puffer wohl auch nicht zu vernachlaessigen ist :) viele Gruesse an alle und ein gutes 2009!
Hi @all... da ich das ARM WebRadio recht beeindruckend finde wollte ich mir das sobald der Bausatz verfügbar ist vermutlich zulegen. Da ich bis jetzt nur mit AVRs und nicht mit ARM gearbeitet habe, habe ich eine Frage bzgl. der Programmierung. Sehe ich das richtig dass diese normalerweise über das JTAG-Interface erfolgt, ein dediziertes ISP-Interface wie beim AVR scheint es nicht zu geben? Ich habe gelesen, dass dieser Controller auch ab Werk mit einem Bootloader ausgeliefert wird. Kann ich den Controller also alternativ einfach Seriell programmieren? Vorausgesetzt natürlich ich schließe dafür einen MAX232 an, dann könnte ich mir das Programmiergerät sparen ;). Danke schonmal Sebastian.
>Ich habe gelesen, dass dieser Controller auch ab Werk mit einem >Bootloader ausgeliefert wird. Kann ich den Controller also alternativ >einfach Seriell programmieren? Vorausgesetzt natürlich ich schließe >dafür einen MAX232 an, dann könnte ich mir das Programmiergerät sparen >;). Ist richtig. Allerdings ist der Bootloader nicht geschützt, wenn Du also nicht aufpasst, ist der weg und Du musst doch per JTAG schreiben. Also entweder sorgfältig sein oder gleich einen JTAG Programmer besorgen...
Hallo, Ein Jahr ist jetzt wieder vergangen und seit kurzem gibt es auch eine neue Revision vom Cortex-M3 WebRadio. Bei der Firmware hat sich auch einiges getan: Webinterface und Bootloader sind hinzugekommen. Alle WebRadios werden mit vorprogrammierten Bootloader ausgeliefert, so dass man keinen JTAG-Adapter mehr braucht. Da ich mehrere Anfragen bzgl. der Portierung des Quellcodes auf den freien Codesourcery GCC bekommen habe, wollte ich mal nachfragen, ob vielleicht jemand Lust hat den Code zu Portierung, da ich zur Zeit nicht dazu komme. Als Entschädigung dachte ich an ein WebRadio, Chumby Kit oder ein FriendlyARM Board... Gruß Andreas PS: Für einige könnte auch das Chumby Hacker Kit interessant sein: http://www.watterott.net/blog/entry/38 Demnächst wird es auch ein Gehäuse für das Kit geben. Hier ein paar Bilder: http://www.watterott.net/blog/entry/39
Hallo Andreas Da ich mir gerade zwei Webradios bestellt habe ;-) eines für mich und eines als Geschenk für einen Freund, wollte ich mich sowieso daran machen eine Portierung zu versuchen. Ich habe ein/zwei kleine Sachen mit Olimex Boards mit Cortex M3 Chips gemacht. Ich verwende eine selber übersetzte arm-elf-gcc toolchain nach einer Anleitung aus dem Web. Mit dem Codesourcery Compiler habe ich nur ein zwei Tests gemacht um meine Toolchain zu überprüfen. Ich gabe aber davon aus, dass, wenn ein GCC funktioniert, es mit einer anderen Toolchain auch klappen sollte. Mal schauen ob es klappt, kann aber nichts versprechen,da meine Zeit auch nur beschränkt ist. Gruss Daniel
Nur der Form halber, der Code ist portiert und kann mit der CS Lite Toolchain übersetzt werden. Siehe: http://www.watterott.net/projects/webradio-arm unter "Source Code" kann der Code mit Makefile, Linkerscript und Startupfiles runtergeladen werden. Gruss Daniel
Hallo! Die riesige Bitte! Ich will das vorliegende Projekt sehr wiederholen. Aber mir ist in welchem Programm Sie nicht klar schrieben Ihr Programm? Ich habe - in Eclipse richtig verstanden? Wie man das Programm dazu stimmen müsste dass aller arbeitete? Die zweite Frage - auf der Seite ist nur die Erörterung Ihres Rundfunks Beitrag "Webradio - atmega644, vs1053b, enc28j60,sd - mit multitasking und timer management". Und es gibt irgendwo die Seite wo es die vollere Beschreibung der Arbeit und der Möglichkeiten Ihres Rundfunks gibt? Bitte, so bald wie möglich äußern Sie sich.
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.