- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 46

Thema: Internetradio

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    18.05.2007
    Ort
    Berlin
    Alter
    53
    Beiträge
    765

    Internetradio

    Ich arbeite gerade an einem Internetradio über den Raspberry.

    Nach dieser Seite die Treiber installiert.
    Code:
    apt-get install alsa-utils ntpdate mpg123 python-virtualenv libshout3 libshout3-dev pkg-config python-dev
    In der /etc/rc.local noch den Audioausgang und die Lautstärke gesetzt.
    Code:
    amixer cset numid=3 1
    amixer -c 0 cset numid=2 on,off
    amixer set PCM 96%
    aplay /usr/games/start.wav
    Der letzte Befehl spielt eine kleine Wavedatei (aus dem Windows/media Ordner geklaut, die kleinste Datei) ab, so ist das Grundrauschen nach dem Start weg.

    Dann habe ich mit ein paar Scripten experimentiert.

    /var/scripte/mp3
    Code:
    #!/bin/bash 
    #
    # MP3 Datei abspielen
    #
    # 
    
    text="$*"
    /var/scripte/mp3stop
    /var/scripte/mp3play "$text" &
    
    exit 0
    Spielt eine MP3 Datei ab.

    Code:
    #!/bin/sh
    #
    # MP3 stoppen
    #
    # 
    pkill -9 mpg123
    
    exit 0
    Beendet die akuelle MP3

    Dann habe ich mir ein paar Radio URLs herausgesucht und in der Datei radiosender gespeichert
    Code:
    "ffn comedy"=http://rs26.stream24.org:80/stream
    "Radio ffn"=http://rs35.stream24.org:80/stream
    "NDR2"=http://ndrstream.ic.llnwd.net/stream/ndrstream_ndr2_hi_mp3
    Aufgerufen werden diese (Hier als Beispiel ffn Comedy) per
    Code:
    /var/scripte/radio comedy
    Das Script radio sieht so aus
    Code:
    #!/bin/bash 
    #
    # Radio starten
    #
    # 
    sender="$*";
    logdatei="/var/scripte/radiosender";
    # Prüfen ob Konfigurationsdatei vorhanden
    
    if [ -e $logdatei ]; then
    #        loginhalt=$(cat $logdatei)
            text=$(grep -i "$sender" $logdatei |tail -1 | cut -d= -f1);
            echo Sender: $text;
            grep -i "$sender" $logdatei |tail -1 | cut -d= -f2 > "/tmp/radiourl";
            /var/scripte/mp3stop
            /var/scripte/radioplay "-q -@ /tmp/radiourl" &
    fi
    
    exit 0
    Hier wird nach dem Teil des Sendernamens gesucht und die SenderURL in die Datei /tmp/radiourl geschrieben.

    Die radioplay sieht so aus:
    Code:
    #!/bin/bash
    #
    # MP3-Radio abspielen
    #
    # 
    
    text="$*" 
    mpg123 -q -b 1024 -h 400 -d 399 $text
    
    exit 0
    Den Aufruf an sich konnte ich bisher nicht mit der mp3play kombinieren, da ich nicht herausgefunden habe, wie ich prüfe, ob im Übergabeparameter "" sind.
    Das -h 400 -d 399 verlangsamt die Ausgabe minimal, da bei meinen beiden Raspberrys sonst nach einiger Zeit kurze Aussetzer kommen, da wohl etwas schneller abgespielt wird, als Daten reinkommen.

    Die anderen Zwischenscripte habe ich gewählt, damit im Hintergrund abgespielt wird und der Raspberry so weitere Befehle annimmt.

    Ich teste alles als User root.

    Setze ich die Lautstärke auf 0 (amixer set PCM 0%), ist trotzdem noch ganz leise was zu hören. Auch sind bei voller Lautstärke Nebengeräusche vorhanden, damit kann ich aber leben.

    Jetzt Suche ich noch nach einer Lösung, wie ich das per RS232 steuern kann, da ich noch einen Atmega als Frontend für die Fernbedienung und das Display nutzen möchte.
    Zum AVR senden ist kein Problem. Das Empfangen bereitet mir noch etwas Kopfzerbrechen. Zur Zeit öffne ich die serielle Schnittstelle mittels

    Code:
    #!/bin/bash 
    #
    # Serielle Ausgabe zum AVR
    #
    # 
    
    #text="$*"
    #echo $text > /dev/ttyAMA0
    
    echo "17" > /sys/class/gpio/export
    echo "in" > /sys/class/gpio/gpio17/direction
    chmod 555 /sys/class/gpio/gpio17/value
    chmod 555 /sys/class/gpio/gpio17/direction
    
    stty 38400 -F /dev/ttyAMA0
    
    echo "" >> /dev/ttyAMA0
    echo "" >> /dev/ttyAMA0
    echo "" >> /dev/ttyAMA0
    echo "" >> /dev/ttyAMA0
    echo "" >> /dev/ttyAMA0
    echo "" >> /dev/ttyAMA0
    
    
    echo "Bereit" >> /dev/ttyAMA0
    
    (cat /dev/ttyAMA0) > /tmp/empfang
    
    #ersetzt durch
    nice -1 /var/scripte/empfangen &
    
    
    exit 0
    So bleibt die Schnittstelle offen und die Übertragung zum AVR ist sauber. Lasse ich den cat Befehl weg, wird jedesmal die serielle Schnittstelle geöffnet, wenn per echo gesendet werden soll und am AVR kommt meist ein CHR(255) an.

    /* erledigt: Im Prinzip müsste ich jetzt statt des cat Befehls per loop die serielle immer wieder einlesen, bis CHR(13) kommt und dann auswerten. Falls da jemand helfen kann, würde ich mich freuen.


    Später soll die radiosender URL Datei noch per Webbrowser änderbar sein, ist im Moment aber nicht so wichtig und stellt soweit auch kein Problem für mich dar.
    Geändert von peterfido (21.08.2012 um 13:29 Uhr)
    Wenn das Herz involviert ist, steht die Logik außen vor! \/

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress