Alan numitron clock
SNES Pi Webserver
USB Volume/USB toys
SNES Arcade cabinet
Game boy projects
Home Presence Detector
Rand Nerd Tut
Carnet du maker (fr)
raspi webradio player
Last update: Sun Feb 2 23:52:40 2020A Raspberry pi zero W used as a WebRadio player! Because I can't work without music and turning on the PC to open Youtube is taking too much of my productivity away. So webradio looks like the way to go!
PrincipleSeems you just need to MPD/MPC to play the web streams, a way to output the sound (I have somewhere an eBay soundcard or default sound output?), a display of what is the current track, and some way to control it (change station at least).
Points of interrest
Bill of materials
Make sound from a raspi zero without soundcardExplained here and here, you need to redirect 2 pins on their alternate pin, and make a small low/high pass filter with resistors and caps.
User account "radio" preparationBecause you should never run any non-interactive program with sudoer-rights account (root, pi, ...) so make a separate account that has the minimum necessary rights.
Source code : with VLCVLS is more power hungry but this Raspi will only play radio so... even if it uses 40% CPU, it won't make a difference.
Now it should work, so listen to music with:
Source code : with MPCMPC/MPD does work, though I used VLC because it's simpler to configure. However as far as I tested the below setup works, you can take it from there and finish. I ended up uninstalling it because mpd was consuming the CPU though I don't use it.
Display screenUsing a small 2.13 inch I2C SSD1306 (address 0x3c) with Adafruit library (for python3):
sudo apt-get install python-pip python3-pip sudo python -m pip install --upgrade pip setuptools wheel #doesn't work - unmaintained since 2014 #sudo pip install Adafruit-SSD1306 sudo pip3 install adafruit-circuitpython-ssd1306 sudo python3 -m pip install pillow sudo pip3 install futures #install necessary packages sudo apt-get install python-smbus python3-smbus #to check that you can see the 0x3c on the I2C bus #1 i2cdetect 1Now the Ladyada code should work, however change the samples for my component:
Power considerationI'd like to put the raspi zero W in sleep mode when unused to minimize power consumption AND maximize the benefit on start time. There's no real power management on the Raspi HW, so basically you have to cut the power on everything that is unused to save a few watts.
Here's a few links I found:
AutostartPulseAudio is giving me a hard time: all workds, except that, meaning no sound. Apparently it doesn't like to run as user-mode and it should run as system-wide as it's the exceptionnal case where it make sense (RTFM).
#in rc.local, start as SYSTEM (don't forget to launch on background) pulseaudio --system & #start the app su radio -c /usr/local/src/git/alanarduinotools/Python/WebRadioPlayer/start.sh & ... #users that must access the SYSTEM pulse must be in "pulse-access" group (even root) sudo usermod -a -G pulse-access radio sudo usermod -a -G pulse-access pi sudo usermod -a -G pulse-access rootIt does use more CPU, peaks at 100% at opening of a radio and gets within seconds to its cruising speed ok 30-40% (I talk of the TOTAL CPU consumption of the RPi, all included)
Radios!Go to the radio site or TuneIn, F12, Network tab and look for a .mp3 or .m3u file. No magical solution apparently.
All content on this site is shared under the MIT licence (do what u want, don't sue me, hat tip appreciated)
electrogeek.cc ~ Formerly known as Kalshagar.wikispaces.com (AlanFromJapan [2009 - 2020])