Internet Radio with Arduino User Interface

CHE COS'E'

In questo progetto abbiamo realizzato una Internet Radio usando un Wireless Router (TP-LINK TL-MR3220) con l'uscita audio via USB e l'interfaccia utente implementata con Arduino.
Il Wireless Router si occupa di collegarsi alla stazione radio via Internet, ricevere lo stream audio, decodificarlo e inviarlo ad una porta USB audio che fa suonare due altoparlanti amplificati.
L'Interfaccia utente è stata realizzata con Arduino, un display LCD da 20x4 caratteri per la visualizzazione, un encoder per selezionare le stazioni da una lista già impostata via browser, e un pulsante per stop e play.

COMPONENTI

Componenti principali Arduino:
• Arduino
• Display LCD 20x4
• Encoder e pulsante
• Sketch per la comunicazione via seriale con il Wireless Router

Componenti Principali Wireless Router:
• TP-LINK TL-MR3220
• OpenWRT
• Script in bash per la comunicazione seriale con Arduino e il play dello stream mp3
• Programma in C per l'estrazione dei tag dallo stream mp3

SOFTWARE

Nel Wireless Router è stato installato OpenWRT insieme ai pacchetti necessari alla gestione dell'applicazione (uhttpd, wget, madplay, ...). Il Wireless Router è stato configurato per accettare connessioni sia tramite Wi-Fi che tramite ethernet.
La preselezione della lista delle stazioni radio avviene collegandosi con un browser al server HTTP configurato all'interno del Wireless Router con degli script bash CGI.

Il programma principale lato Wireless Router è stato scritto in bash e svolge i seguenti compiti:
• riceve i comandi da Arduino legati all'encoder per il cambio stazione e al pulsante per il play / stop
• si collega all'indirizzo della stazione selezionata per ricevere lo stream dalla rete con il comando wget
• manda in play lo stream mp3 con il comando madplay
• invia le stringhe con i tag name e streamtitle ad Arduino (per questo compito è stato scritto un programma in C)

Lo sketch scritto per Arduino si occupa di gestire la comunicazione seriale con il Wireless Router, l'input dal pulsante e dall'encoder e l'output verso il display LCD.
Ogni volta che l'utente cambia stazione con l'encoder, o preme il pulsante stop/play, vengono generate delle stringhe con i comandi corrispondenti che Arduino invia al Wireless Router tramite la porta seriale.
Quando si cambia stazione o inizia un nuovo brano il Wireless Router invia ad Arduino delle stringhe con le informazioni relative al nome della stazione o del brano che vengono visualizzate sul display LCD.

Prossimamente saranno disponibili schemi più dettagliati e il software necessario liberamente scaricabile.

Radio4.pde - Sketch lato Arduino (7.07 KB) Andrea Belloni, 12/03/2014 05:11 PM

radio3.sh Magnifier - Programma principale lato WRT (10 KB) Andrea Belloni, 12/03/2014 05:11 PM

radio.cgi - Script CGI per impostare le stazioni via browser (6.55 KB) Andrea Belloni, 12/03/2014 05:11 PM

setchannel.sh Magnifier - Script per il Submit della singola stazione (1.15 KB) Andrea Belloni, 12/03/2014 05:11 PM

commit.sh Magnifier - Script per il Submit di tutte le stazioni (475 Bytes) Andrea Belloni, 12/03/2014 05:11 PM

meta-ser.c Magnifier - Programma in C per estrarre i metadati dal flusso mp3 (4.45 KB) Andrea Belloni, 12/05/2014 02:36 PM