Skip to content
Web radio receiver - DLNA audio renderer
Branch: master
Clone or download
Latest commit 5121171 Jan 17, 2016
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Foto added foto Jan 17, 2016
arduino Arduino libs and README update Jan 17, 2016
openwrt Arduino libs and README update Jan 17, 2016
LICENSE Initial commit Jan 2, 2016
README README update Jan 17, 2016
TODO Vers. 0.22 Jan 9, 2016

README

WIFI Web radio receiver - DLNA audio renderer

Luigi Findanno 2016

I don't designed a schematic and some explanations are not detailed
but if you don't know (for example) how to connect a rotary encoder to Arduino,
use the search engine you prefer. For other things you don't understand,
use the same method.

Hardware:
1) Router with USB port supported by OpenWrt
1) USB hub
1) USB stick 1GB (only for extroot, perhaps not mandatory)
1) USB audio card (PCM2704 tested)
1) Arduino nano
1) LCD 16x2 display with PCF8574 I2C expander
2) Rotary encoder with push button
1) 2 pole push button (230V inside)
1) LED (power on indicator)
1) 5V Relais transistor drived
Resistors for encoders (10K), push buttons (10K), power on LED (330R)
Connect the USB stick, USB audio card and Arduino Nano to the USB hub then
connect the USB hub to the router.
Find the 5V and GND on the router board, take it to power on the Arduino Nano.

Arduino connections:
LCD 16x2 I2C
SDA A4
SCL A5
First pole of push button  D4 (active HI)
Relay D5
Power on LED D5
Volume encoder D9 D10
Push button Volume encoder D7 (active LOW, mute function)
Tuner encoder D11 D12

Relay contacts:
Common and Normally Open contacts are in serie with 230V before the router power supply (as
a main power on switch).
The second pole of push button (NO) is in parallel to them.
Also insert a little switch in parallel to Common and NO relay contacts. It MUST be ON ONLY when you
burn the Arduino firmware.

Other electrical connections:
Remove C4 from Arduino Nano board (it is connected to reset).
See the schematic https://www.arduino.cc/en/uploads/Main/ArduinoNano30Schematic.pdf

Some hardware considerations:
You can compile OpenWrt for a lot of platforms as: Raspberry PI, Cosino, Carambola and so on.
When possible, you can use a I2S DAC for the audio output.
Wifi connection is not mandatory, you can use a cabled ethernet connection.

Software:
Compile OpenWrt including the following packages:

stty
usbutils
block-mount
kmod-fs-ext4
kmod-usb-ohci
kmod-usb-serial
kmod-usb-serial-ch341
kmod-usb-serial-ftdi
kmod-usb-storage
kmod-usb-storage-exstras
kmod-sound-core
kmod-usb-audio
ffmpeg
madplay
mpd
mpc
upmpdcli
avrdude
usleep

Flash the router.
Configure the wifi as client (sta) and disable dnsmasq to save memory.
Extroot is perhaps not mandatory but I did (see the OpenWrt documentation).

Burning Arduino firmware:
Install the Arduino libraries RotaryEncoder and PCF8574_HD44780_I2C.
Compile and export radio.ino with the Arduino IDE (tested on 1.6.5 version).
Use scp to copy radio.hex arduino firmware on the OpenWrt router.
Login into router.
Run 
flasharduino radio.hex 
and press the arduino reset push button in 1 second.

Openwrt RadioDLNA software:

Create the following folder
/root/.mpd
/root/.mpd/playlists
/root/music

Install mpd, mpc, upmpdcli with opkd command.

Copy or modify the configuration files in the path as indicated in the repository openwrt folder.
Note: use scp to copy the files from your PC to the router and vi editor to modify the files on the router.
Edit with your data:
/etc/config/wireless (ssid and key) 
/etc/config/network (gateway IP)

Run the commands
/etc/init.d/upmpdcli enable
/etc/init.d/radio enable

You can edit the /root/radiolist file and add you favorite internet radios.
Reboot.
You can’t perform that action at this time.