Projecte Neo-Vintage Radio (1a part)

 

Aquest projecte neix des de la passió que he tingut sempre per les ràdios antigues i la possibilitat d’incorporar elements contemporanis que puguin fer conviure l’estil de l’època amb amb els avenços que ara gaudim.

Imaginem-nos un moble de ràdio vintage amb una pantalla tàctil que ens permeti escoltar emissores d’arreu del món per internet. Fins aquí res de nou, però ja posats podríem afegir també TV per internet i finalment incorporem el repte d’afegir un receptor SDR amb el que es pugui sintonitzar qualsevol freqüència de radio difusió, estacions de Ham ràdio, bandes aèries, etc. etc.

 

 

El nostre projecte estarà basat en una Raspberry py B de 4GB i un programa desenvolupat en python que utilitza les possibilitats de la interfície que fa possible la llibreria TKinter. Després incorporarem un RTL-SDR per accedir a les freqüències desitjades i muntarem tot el conjunt en un moble de fusta amb estil antic.

Naturalment que l’acabat de tot plegat forma part de la imaginació i creativitat de cadascú, però en aquest article ens referirem sols al programari, deixant per un proper l’acabat final.

En aquest moment està disponible la una versió Beta del programa RadiumTV a:

Wiky

https://github.com/ea3dyy/RadiumTV/wiki/RadiumTV-1.0-(Beta-version)

 

Codi font del programa:

https://github.com/ea3dyy/RadiumTV/blob/main/radiumtv1-0-beta.py

 

MPD i MPC

La raspberry es comportarà inicialment com un lector de fitxers  d’audio mp3 locals o bé a partir d’una transmissió  des de internet que ens facilitarà el dimoni MPD.

D’una banda el MPD (music player daemon) actua com a servidor de font d’àudio o streaming que enviarà les trameses a l’amplificador de so. D’altra banda, MPC (music player command) serà la  interfície des de la que enviarem les comandes que gestionen la reproducció: play, stop, llistes, etc. Actuant sobre  els propis fitxers mp3 en local o sobre les pròpies URLs d’internet.

 

Comencem doncs per instal·lar els dos dimonis i també la utilitat de control de so Alsa Mixer, però abans fem una ullada al manual de Music Player Daemon per conèixer més sobre les seves possibilitats.

https://www.musicpd.org/

https://linux.die.net/man/1/mpc

Seguim amb  la següent comanda:

          sudo apt-get install –y mpd mpc alsa utils

Un cop instal·lats anem a configurar el servidor des del seu fitxer conf.

          sudo nano /etc/mpd.conf

 

Per defecte ens marca aquests directoris per ubicar els fitxers d’audio, però en el nostre cas sols reproduirem streaming d’internet i la llista de reproducció anirà vinculada al nostre programa Python. Per tan ho deixarem així, eliminant el símbol # del principi d’aquestes dues línies:

    music_directory                “/var/lib/mpd/music”

playlist_directory             “/var/lib/mpd/playlists”

 

Parem especial atenció en la configuració dispositiu de sortida de a través del programa ALSA que haurà d’actuar sobre la tarja de so externa que connectarem a un dels ports USB

 

 

Podeu descarregar el fitxer mpd.conf de mostra.

Observareu que el dimoni MPD té moltes més possibilitats, com reproduir música en dispositius externs via IP, confeccionar llistes de reproducció vinculades a diversos usuaris, però en aquest projecte ens centrarem en una única llista a la que accedirem des de la interfície creada.

Un cop configurat es recomana reiniciar el dimoni MPD.

         sudo /etc/init.d/mpd restart

 

Llistat de comandes que podem utilitzar des de MPC

       mpc clear -> Neteja la llista

      mpc playlist -> Mostra la llista

      mpc add http://mp3.webpage.com:80  -> Afegeix una url a la llista

      mpc play -> Reprodueix

      mpc stop -> Atura la reproducció

      mpc save Chillout -> desa la llista creada

      mpc load News -> carrega llista

Resum del programa radiumtv.py

El programa és totalment obert i senzill. Fa servir una llista de reproducció que es genera en l’arxiu broadcast.txt . Les URLs s’afegeixen paral·lelament i de forma manual amb la comanda :

          mpc add http://mp3.webpage.com:80 

El programa és força simple. Presenta una primera pantalla amb un grup de  botons que reprodueixen les 10 emissores preferides . A sota tenim  les emissores internacionals agrupades per països que anirem seleccionant des dels botons de la dreta.

 

Comentem els apartats més bàsics del programa:

1.- Comencem per importar les llibreries necessàries

       # -*- coding:utf-8 -*-
import Tkinter              # Per crear la finestra gràfica
from Tkinter import Canvas
from Tkinter import *
from io import open         # obre un fitxer de text on es troba la llista de reproducció
import sys
import subprocess           # permet executar programes o instruccions externes a python
import unicodedata          # codi de caràcters emprats en les etiquetes i comentaris
import time                 # importa data i hora per al rellotge
import datetime                             
from datetime import date
import webbrowser           # obre navegador per mostrar una URL

 

2.- Definim variables inicials i globals

Situem dins de la variable ‘variable_línies’ el contingut de l’arxiu “broadcast.txt” que conté la llista de reproducció de la que anirà seleccionant línies de manera seqüencial amb el comptador “n”:

        arxiu_text=open("broadcast.txt","r")

3.- Funcions amb els comandaments que executen cada botó per reproduir  l’emisora seleccionada:

    def mem01():
     subprocess.call("mpc stop", shell=True)       # Atura la reproducció anterior
    subprocess.call("mpc play 1", shell=True)     # Reprodueix la URL de la posició 1 de la llista

4.- Posicionament dels botons a la finestra i execució de la funció corresponent.

    memoria1=Tkinter.Button(finestra, text="Mem 1", font=("Verdana",15), width=8, height=2, bg="#999900", fg="#FFFFFF", command = mem01).place(x=10,y=65)

5.- Emissores de TV.

Cada botó de TKinter obre el navegador Chromium a la URL fixada a la variable corresponent.

    def mem01():
     tv1='https://www.rtve.es/play/videos/directo/la-1/'
      webbrowser.open(tv1,0,False)

 

6.-  Executa el programa OppenWebSDR ubicat en una altra Raspberry  i reprodueix la interfície d’usuari en una finestra de Chromium.

 

Font: EA3DYY Joan Francesc

͏͏ ͏͏ ͏
Si t’ha agradat llegir aquesta notícia, associa’t a URCAT, l’Associació Nacional dels Radioaficionats Catalans.

͏͏

 
 
 
 
 
Please follow and like us:

Deixa un comentari