Datum: 09.03.2008 22:22
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
Datum: 09.03.2008 22:22
Noch die doppelseitige Platine viele gruesse, Sebastian
Datum: 09.03.2008 23:42
rueckseite der platine...
Datum: 09.03.2008 23:42
oberseite der platine...
Datum: 10.03.2008 00:19
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.
Datum: 10.03.2008 01:09
Hallo Hauke, lastfm basiert auf den infos von http://gabistapler.de/blog/index.php?/archives/268... 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 (-:
Datum: 10.03.2008 01:32
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
Datum: 10.03.2008 06:20
sehr schönes projekt wer hat den vs1053b den auf lager? c.u Commtel
Datum: 10.03.2008 09:12
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 (-:
Datum: 10.03.2008 10:04
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.
Datum: 10.03.2008 10:56
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
Datum: 10.03.2008 10:57
Noch eine Nachfrage: Wie machst du das mit USB, bzw. was wird alles so unterstuetzt? Viele Gruesse, Sebastian
Datum: 10.03.2008 11:27
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.
Datum: 10.03.2008 12:26
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 (-:
Datum: 10.03.2008 13:43
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.
Datum: 10.03.2008 14:28
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 (-:
Datum: 11.03.2008 09:47
>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.
Datum: 17.03.2008 18:00
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 (-:
Datum: 17.03.2008 18:56
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
Datum: 18.03.2008 00:38
Danke fuer den Link! viele Gruesse, Sebastian (-:
Datum: 28.03.2008 11:44
Hallo, Ich bin letzte Woche beim Bestellen über das Stellaris LM3S6965 Evaluation Kit gestolpert: http://www.luminarymicro.com/products/lm3s6965_eth... 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
Datum: 08.04.2008 19:31
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
Datum: 24.05.2008 21:25
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
Datum: 24.05.2008 22:38
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.
Datum: 15.06.2008 12:11
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 (-:
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel




