tisdag 26 maj 2009

USB interface kort med Java GUI

I förra veckan var jag och Torkel på Admittansen och fixade ihop ett usb kort med lite analoga ingångar samt digitala in/utgångar. I helgen satt jag och skrev ihop ett gui i Java för att styra kortet. För att smidigt kunna testa algoritmer för styrning så har jag även lagt till scriptmöjligheter.

Ett exempel på hur det kan se ut finns på videon här, jag styr en RGB lysdiod och en 1W led och låter dem bero på tiden samt en av analogingångarna. Koden för gui:t finns att ladda hem här.


måndag 11 maj 2009

RGB LED klocka

Har börjat bygga en klocka med RGB LED från Kjell&Co. Tanken är att den ska visa timmarna i rött, minuterna i grönt och sekunderna i blått. Men att bara visa prickar blir inte så spännande så jag tänkte använda lite olika presentation för de olika färgerna.

Just nu så "flyter" de röda LEDarna mot det aktuella klockslaget, de gröna studsar mot den aktuella minut-LED:en och de blå lysdioderna tonar sakta runt som ni kan se på videon.



Processorn jag använder är en pic18f4550, framförallt för att den har USB anslutning som jag använder för andra projekt.

Streama ljud från Ubuntu till SqueezeBox och Internetradio

I helgen lyckades jag få igång strömmning av ljud från Spotify på min ubuntu maskin till både min internetradio i köket och till SqueezeBoxen i vardagsrummet.

Efter ett antal olika kombinationer av applikationer fick jag ljud med följande uppsättning:
PulseAudio
GStreamer
Icecast


GStreamer skickar ljudet från PulseAudios utgång till icecast som låter mina externa enheter streama en mp3 ström.

Jag utgick från denna instruktion men ändrade till mp3 komprimering med 128kb/s bitrate.


För att installera PulseAudio köre jag endast:
  • sudo apt-get install pulseaudio
och startade om systemet.

Installerade sedan icecast:

  • sudo apt-get install icecast2
  • Konfigurera /etc/icecast2/icecast.xml med lösenord under authorization-taggen, både för source och admin(för att se webinterfacet).
  • Sätt "enable=true" i /etc/default/icecast2
Nu behöver man hitta namnet på PulseAudios enhet för ljud-ut i PulseAudio Manager:
  • paman
  • Välj fliken Devices och leta efter enheten som slutar på .monitor, min hette output.pci_10de_ac0_sound_card_0_alsa_playback_0.monitor


Detta namn ska vi nu använda i ett script som startar strömmningen till icecast, detta är taget direkt från länken ovan:

gst-launch pulsesrc device= ! audioconvert ! vorbisenc ! oggmux ! shout2send mount=/stream.ogg port=8000 password=hackme ip=127.0.0.1

För att kontrollera att icecast tar emot strömmen kan man logga in på http://localhost:8000 med det admin lösenord man skrev i icecast2.xml.

Detta ger en ogg-vorbis ström vilket inte lät så bra på min internetradio och inte funkade alls på SqueezeBoxen. Jag installerade därför lame för gstreamer:
  • sudo apt-get install gstreamer0.10-lame
Sedan ändrade jag scriptet till följande:

gst-launch pulsesrc device= ! audioconvert ! lame bitrate=128000 ! shout2send mount=/stream.mp3 port=8000 password=hackme ip=127.0.0.1

Sedan är det bara att få internetradion att ansluta till din egen "radiokanal" som nu finns på http://ditt-ip:8000/stream.mp3