This is a blog for people interested in technology. I'll be posting projects and tutorials on things such as Arduino, IoT devices, Electronics, Machine Learning and whatever springs to mind.

How to Make an Arduino / Raspberry Pi Internet Radio

This is a project for Arduino and Raspberry Pi to make an Internet Radio, aimed at intermediate skill level. Some familiarity with Linux usage will be beneficial (or access to someone who can help out if required).

Raspberry Pi runs mpd music player daemon to receive and decode the internet radio stream.
ALSA running on the Raspberry Pi provides the sound through either the Jack Socket or the HDMI output.

Arduino runs a nanpy interface code to interface with Python, providing Text output of the Radio Station playing and Button inputs to control Playback.

Objectives:
* Learn how to use the mpd/mpc on the Raspberry Pi
* Learn how to use the nanpy library for Python to interface the Pi to the Arduino
* Make a Cool Internet Radio

Now we’ve got the files we need let’s put the nanpy firmware on the Arduino.

Step 4: Put the nanpy Firmware on the Arduino

nanpy allows a Python program runing on the raspberry Pi to operate the Arduino using conventional Arduino-Sketch syntax e.g. the Python program to read an analogue input from Arduino might read:

int val = Arduino.analogRead(14)nanpy has two components:

i) a library for Python that allows Arduino commands to be written in a familiar syntax and communicate with Arduino;

ii) firmware that runs on Arduino, communicating with Python on the PiWe installed the Python part of nanpy, and downloaded the Arduino part of nanpy on the Pi in the last step.Now we need to upload the nanpy firmware to Arduino.

Click RIGHT on a link under the “Listen Live” column, looking for URLs that end in .m3u. I chose Q-Music so I RIGHT clicked on the 96kbps link to open the file “http://icecast4.play.cz/evropa2-64.mp3.m3u”.

This is a text file so make sure this file is opened with Notepad.

The file contains the line: “http://icecast-qmusic.cdp.triple-it.nl:80/Qmusic_be_live_96.mp3” so the correct URL should be: “http://icecast-qmusic.cdp.triple-it.nl:80”

Other links on the ListenLive site link directly to a URL for streaming; e.g. Alpha Radio: “http://86.57.151.4:8009/listen.pls” , so the URL would be: “http://86.57.151.4:8009”

Step 6: Python Program

Now we have a perfectly good Linux controllable Internet Radio.

But we don’t want to stop there. We want to control the Radio from the Buttons on the Arduino and we want to see which Radio Station we’re listening to on the LCD display.

To do that we need to write a Python Program running on the Pi that controls the Arduino.

Using nano or your favourite editor enter the Python code from github.

Once entered and saved as radio.py , type$ python radio. py &

You should now be able to control playback and station selection from the buttons on the Pi and see the selected station on the LCD.

Enjoy!!

UPDATE: jazzi_p merged this radio project with usualpanic.com web radio. You can get the code from github. The menu is added to display ip addess, set the audio port to hdmi/analog or auto. Also added the shutdown option. The volume keys are changed to left and right buttons and also it display’s the volume status on the LCD, to change the stations we use up and bottom key. The Select key is used to activate the sub menu. Another option added is to Reload of playlist. Please check the tutorial on usualpanic.com for creating radio_playlist.sh file.