Sommario:

Mantenerlo basso Radio Internet semplice: KISSIR: 13 passaggi
Mantenerlo basso Radio Internet semplice: KISSIR: 13 passaggi

Video: Mantenerlo basso Radio Internet semplice: KISSIR: 13 passaggi

Video: Mantenerlo basso Radio Internet semplice: KISSIR: 13 passaggi
Video: Guest Battle Royale 2024, Dicembre
Anonim
Mantenerlo stoopid Semplice radio Internet: KISSIR
Mantenerlo stoopid Semplice radio Internet: KISSIR
Mantenerlo stoopid Semplice radio Internet: KISSIR
Mantenerlo stoopid Semplice radio Internet: KISSIR

A volte deve essere solo tattile. Nessuna interfaccia di alcun tipo. Solo pulsanti.

Raspberry Pi come lettore di radio Internet non è una novità e ci sono molte istruzioni su come creare un lettore di radio Internet utilizzando un Raspberry Pi con o senza monitor per lo streaming di stazioni Internet da tutto il mondo. Se dovessi scegliere di andare senza testa (senza monitor), avresti comunque bisogno di un mezzo per interfacciare il lettore pi, di solito un'interfaccia web se non un mezzo diretto per comunicare con l'host, come ssh. Questo istruibile sarà leggermente diverso; useremo semplici pressioni di pulsanti per inviare comandi al pi, eliminando così la necessità di un'interfaccia web e di uno schermo LCD. Sembra abbastanza facile, giusto (?)

Inizieremo con un design molto semplice utilizzando pulsanti codificati a colori, ogni colore rappresenterà una stazione radio Internet. Introdurremo del codice Python per gestire la pressione del pulsante: La stampa eseguirà un comando per riprodurre una stazione radio Internet precodificata utilizzando MPG123, un ottimo strumento da riga di comando per riprodurre l'audio sul nostro pi.

Le tue abilità Python non devono essere avanzate. In effetti sono letteralmente passato da "Hello World" a scrivere questo, e come vedrai, ho preso in prestito molto codice - quindi se posso farlo e averlo in qualche modo documentato, nessun altro dovrebbe avere problemi.

Andiamo!

Forniture:

Materiali necessari

  • Raspberry pi/ pi zero w con tutti i fissaggi: alimentatore, scheda SD e Raspbian o Raspbian lite.
  • Wi-Fi e accesso a Internet
  • Un altro PC per eseguire un po 'di navigazione sul Web e capacità di SSH al lampone più
  • Convertitore da digitale ad analogico (DAC) - opzionale ma te ne sarai grato.
  • Amplificatore
  • Altoparlanti
  • Cavo di collegamento e ponticelli
  • Saldatore e saldatore
  • Perf Board per i pulsanti
  • Pulsanti tattili: normalmente aperti: uno per ogni genere di musica, un pulsante di accensione e un pulsante di disattivazione dell'audio opzionale (7 pulsanti consigliati)
  • Un'unità abitativa per tutto quanto sopra (opzionale ma ordinato)

Fase 1: Prerequisiti:

Prerequisiti
Prerequisiti

Inizieremo supponendo che tu abbia già configurato il tuo Raspberry Pi, DAC e amplificatore e supporremo anche che tu abbia accesso a Internet. A causa della quantità di scelte di apparecchiature audio, preferenze e opzioni per l'ascolto audio, presumeremo che la tua configurazione sia già completa: dovresti già avere il suono che esce dai tuoi altoparlanti prima di iniziare questo progetto. Avremo anche bisogno di ssh al raspberry pi, quindi usando la configurazione pi, assicurati che le interfacce abbiano ssh abilitato. Userò Raspbian lite e ti consiglio di avere una nuova installazione dell'ultima copia su una nuova scheda SD dedicata a questo progetto. In caso di successo, costruiremo un dispositivo autonomo che può essere lasciato acceso 24 ore su 24, 7 giorni su 7, come dispositivo di ascolto dedicato.

Passaggio 2: installa Python e Pip

Preferisco ssh al pi usando un pc diverso ed eseguire tutte le funzioni richieste usando una sessione ssh, ma immagino che sia possibile inizialmente impostare il pi su un monitor, tastiera e mouse e lavorare direttamente sul pi finché non è funzionante e quindi distribuito come autonomo.

Per prima cosa eseguiamo un controllo di manutenzione di routine del nostro sistema e della versione di Python:

sudo apt-get update

sudo apt-get upgrade

Assicurati che Python sia installato. In una sessione di terminale digitare quanto segue al prompt dei comandi:

python --versione

Se vedi python 2.7.13 (o precedente) installiamo python 3.+:

sudo apt-get install python3

sudo apt-get install python-pip

sudo apt-get install python3-pip

sudo pip3 install --upgrade pip

Passaggio 3: installa MPG123 e Adafruit Blinka

Ora che le basi sono state gettate, solo qualche installazione in più:

MPG123 è il software audio che riprodurrà la nostra musica. L'installazione è davvero semplice:

sudo apt-get install mpg123

Ho fatto molte ricerche e ho trovato un ottimo modello sul sito Web di Adafruit sulla riproduzione di file audio premendo i pulsanti, quindi piuttosto che iniziare da zero, continuiamo sulla pista che i ragazzi di Adafruit hanno già tracciato per noi. Il loro programma ci chiede di installare Adafruit Blinka:

$ sudo pip3 install adafruit-blinka

Prima di andare oltre, eseguiamo un rapido controllo per assicurarci di avere installato Alsa:

aplay --version

i nostri risultati dovrebbero essere: versione 1.1.3 di Jaroslav Kysela

Passaggio 4: regola il volume al 50% in Alsamixer

Regola il volume al 50% in Alsamixer
Regola il volume al 50% in Alsamixer
Regola il volume al 50% in Alsamixer
Regola il volume al 50% in Alsamixer

Ora prendiamo una misura precauzionale e regoliamo il nostro volume al 50% per evitare sorprese assordanti:

Al prompt dei comandi, digita alsamixer:

alsamixer

Se osserviamo uno schermo di rosso bianco e verde, o volume massimo del 100%, è una buona idea abbassare il volume al 50% per salvare i nostri timpani. Possiamo sempre regolare in seguito (su o giù) se necessario.

Passaggio 5: alcuni compiti: trova 5 stazioni radio che vale la pena ascoltare

Alcuni compiti: trova 5 stazioni radio che vale la pena ascoltare
Alcuni compiti: trova 5 stazioni radio che vale la pena ascoltare
Alcuni compiti: trova 5 stazioni radio che vale la pena ascoltare
Alcuni compiti: trova 5 stazioni radio che vale la pena ascoltare

Avremo bisogno di una stazione per ogni pulsante. In realtà, avremo bisogno dell'URL della stazione. La pressione del pulsante chiamerà l'URL della stazione radio Internet in un semplice bit di codice di una riga. Comunque stiamo andando avanti così abbiamo dei compiti da fare; trova 5 stazioni radio e i loro URL. Trovare 5 stazioni radio non è difficile, ma trovare i loro URL può essere complicato. Spiegherò perché in un minuto.

SomaFm * è un'ottima fonte con cui iniziare, soprattutto se non hai ancora idea di cosa vuoi ascoltare. Hanno un'ampia varietà di scelte musicali eclettiche, nessuna delle quali trovo offensiva, nessuna pubblicità e la parte migliore: condividono apertamente i loro URL. Per prendere l'URL, fai clic su un'immagine della stazione che ti interessa e, nella barra di navigazione a sinistra, fai clic su "Link streaming diretti". Da lì, trova la sezione MP3 e raschia l'URL della velocità di riproduzione più alta (cioè 128 battute 64). Incolla l'URL in un editor di testo o in un blocco note per ora.

Ad esempio, per raschiare Christmas Rocks, l'URL sarebbe: (non abbiamo bisogno della descrizione del server)

ice4.somafm.com/xmasrocks-128-mp3

Diventa un po' più rischioso al di fuori del mondo di SomaFm. Molte stazioni utilizzano un intermediario tra l'ascoltatore e la stazione, che si tratti di pubblicità, marketing o possibilmente di monitoraggio - e generalmente cerco di evitare questo tipo di stazioni. Poiché gli intermediari preferiscono che tu ascolti la stazione attraverso di loro, di solito è piuttosto difficile trovare l'url; ed è qui che entra in gioco Vtuner.

* Sarei negligente se non ti chiedessi di considerare di fare una donazione alla tua stazione radio preferita, poiché molte stazioni si basano esclusivamente sul supporto dell'ascoltatore.

Passaggio 6: facoltativo: eliminare l'URL utilizzando Vtuner

Opzionale: Scrape URL usando Vtuner
Opzionale: Scrape URL usando Vtuner
Opzionale: Scrape URL usando Vtuner
Opzionale: Scrape URL usando Vtuner

Ora arriva la parte divertente… Nella home page di Vtuner, controlla il loro enorme link all'elenco delle stazioni nell'angolo in alto a destra. Scegli un genere di musica che ti interessa, quindi ordina alla massima velocità, dove vedrai un elenco di stazioni. Scegli una stazione che ritieni possa piacerti, fai clic sul collegamento o sul pulsante di riproduzione e ascolta la musica. Se non fa per te, non preoccuparti, ripeti il processo finché non ne troviamo uno adatto per un divertimento a lungo termine. Nella mia schermata, ho scelto la versione digitale di impulso della musica country e nella schermata successiva ho notato che sta suonando fuori dalla Croazia. La musica country dalla Croazia sembra piuttosto interessante.

Mi piace. Ma come ottengo l'url? Basta fare clic con il pulsante destro del mouse sullo spazio bianco a destra dell'immagine della stazione, sotto il nome della stazione, selezionare "Visualizza sorgente pagina" e scorrere verso il basso fino alla riga 150. Stiamo cercando la riga che dice "// Prova per gestire icecast". E l'URL si trova immediatamente sotto!

orion.shoutca.st:8110/stream

Abbastanza lucido!

Ripeti questo passaggio finché non abbiamo almeno 5 stazioni nella nostra lista.

Doppio Opzionale: per ulteriore misura, se riesci a trovare 5 generi di musica che ti interessano (invece di 5 stazioni), crea un elenco di stazioni radio per ogni genere e salva gli elenchi come file di testo. Torneremo su questo più tardi.

Passaggio 7: imposta i nostri pulsanti

Imposta i nostri pulsanti
Imposta i nostri pulsanti
Imposta i nostri pulsanti
Imposta i nostri pulsanti

La parte più importante! Spolvera il vecchio saldatore o almeno collegalo e cuoci via la polvere. È il momento di saldare. Sto usando pulsanti momentanei a 4 poli, normalmente aperti. Costruirò una serie di pulsanti (foto a sinistra) e li fisserò a una scheda perf. È difficile da dire sulla foto, ma la direzione dei rebbi dei bottoni è tutta in direzione nord-sud. Sul lato destro, puoi vedere dove ho eseguito un binario di terra per i miei fili di terra e ho collegato alcuni cavi jumper con estremità maschio al lato opposto di ciascun pulsante. Invece di avere 7 collegamenti a terra, il binario ci consentirà di condividere un collegamento a terra con il pi per tutti. Il risultato finale è una delicata scheda wafer che verrà montata sotto la parte superiore della radio utilizzando alcune viti attraverso i fori pilota forniti. Solo le parti superiori dei pulsanti appariranno attraverso la scanalatura che ho ritagliato nella parte superiore. Poiché la mia superficie superiore è spessa solo 1/4 , voglio stare attento a non avvitare eccessivamente. La colla può essere utile per mantenere la scheda perforata attaccata alla radio.

Passaggio 8: identificare i nostri pin GPIO

Identifica i nostri pin GPIO
Identifica i nostri pin GPIO
Identifica i nostri pin GPIO
Identifica i nostri pin GPIO

Nella mia unica altra istruzione, ho presentato un nuovo utilizzo per i vecchi cappelli vocali di Google AIY versione 1. In questo tutorial ampiamente impopolare (o poco popolare), ho menzionato quanto fossi impressionato dal design del cappello stesso. Ne ho alcuni in giro, quindi costruirò un prototipo usando il cappello poiché ha sia il dac che l'amplificatore a bordo.

Identifichiamo ora sei pin che ospiteranno le nostre pressioni sui pulsanti. Ti chiederò di concentrarti sul lato sinistro del cappello AIY di Google, dove dice "servo". Ci sono una colonna di 6 occhielli per il Pin dove collegherò e salderò le mie estremità del bottone maschio dal nostro passaggio precedente. Se stai lavorando senza il cappello vocale di google aiy, non preoccuparti, la foto a destra ti guiderà. In entrambi i casi lavoreremo con i pin 26, 06, 13, 05, 12 e 24 gpio (BCM) dall'alto verso il basso (o 0-5). GPIO #24 sarà riservato per un pulsante di pausa opzionale.

Non dimenticare di collegare anche il collegamento a terra.

Passaggio 9: codice

Dubito che il codice cambierà molto da qui, tuttavia per l'ultima versione del codice Python, visita il mio github. Ho allegato una copia del 2019-12-18 chiamata pytiful3.py.

Non è il codice più efficiente che vedrai mai, ed è piuttosto prolisso, ma fa il lavoro.

Iniziamo creando una sandbox in cui giocare. Dalla nostra home directory, crea una directory sul nostro Raspberry Pi chiamata kissir:

mkdir kissir/

e copia il contenuto del file pytiful3.py nella directory aprendo il file di esempio in un editor di testo e usando

sudo nano kissir/pytiful3.py

copia/incolla il contenuto del file nel nostro script Python appena creato. Non dimenticare di salvare il nostro lavoro usando Ctrl-x, Y e invio.

Se vuoi un rapido tour dello script, importiamo i moduli Python di cui avremo bisogno, quindi definiamo i nostri pulsanti e assegniamo un pin gpio a ciascuno dei 7 pulsanti. Ci saranno 5 stazioni radio (sentiti libero di modificare la tua preferenza di stazione), un pulsante di arresto e un pulsante di spegnimento. Il ciclo while true viene eseguito e continua finché non viene premuto un pulsante, che nella maggior parte dei casi interromperà qualsiasi riproduzione mpg123 esistente e inizierà a riprodurre la stazione assegnata al pulsante che è stato premuto. Il pulsante di pausa/arresto non è in realtà un pulsante di pausa ma più di un kill switch poiché non possiamo mettere in pausa la radio Internet. La radio su Internet non aspetta nessuno.

Passaggio 10: test nella nostra sandbox

Prova nella nostra sandbox
Prova nella nostra sandbox

Prima di distribuire la nostra radio, mentre sei ancora nella nostra sessione ssh, vai alla cartella kissir in cui è memorizzato il nostro script. Possiamo semplicemente eseguire manualmente lo script dalla riga di comando digitando:

python3 pytiful3.py

Se hai sbirciato prima il codice, probabilmente hai notato che ho lasciato alcune dichiarazioni di stampa in modo che possiamo dire cosa sta succedendo. Se tutto ha funzionato bene, avremo un messaggio che dice "Premi un pulsante". Questo ci dice che il nostro script è in esecuzione e ha superato un controllo preliminare del codice. Il mio tentativo iniziale ha avuto un ciclo infinito di "musica in pausa - premi il pulsante per continuare" e ho scoperto che il mio pulsante di pausa era cablato per essere sempre chiuso, invece che normalmente aperto. Spero che tu abbia avuto più fortuna con la fase di saldatura.

Ctrl-C interromperà lo script se è necessario interromperlo.

Quindi, se vedi "Premi un pulsante", cosa stiamo aspettando? Seleziona uno dei nostri cinque pulsanti delle stazioni radio.

È probabile che tu possa sentire un pop dell'altoparlante per avviare la riproduzione della musica, e per il momento non posso aiutarti. Mpg123 consente un suffisso "--preload 1" dopo l'indirizzo della stazione nel comando os.system, tuttavia non sono riuscito a capire se ha fatto la differenza. Dovrebbe consentire un leggero buffer.

Un altro frammento di codice di cui potresti esserti chiesto: c'è un flag " -f 7000" dopo la chiamata mpg123. Questo riduce il volume a una distanza lontana dal volume massimo. Il volume completo sarebbe 32K. A quanto ho capito, la scala del volume non è una scala lineare, quindi non posso dire che sia solo un quinto del volume massimo, ma è comunque molto rumorosa. Ho dovuto farlo perché la mia scheda audio, la scheda audio vocale AIY di Google, a volte non funziona bene con Alsamixer.

Continua a selezionare i pulsanti a tua scelta, siediti, rilassati e goditi il comfort del tuo ascolto per ora.

Passaggio 11: imposta il nostro codice per l'esecuzione automatica all'avvio

Quindi, se tutto sta funzionando bene e ti è piaciuta la nostra avventura del prompt dei comandi sandbox, ora è un buon momento per automatizzare il caricamento dello script. Assicurati di essere ancora nella directory kissir e inserisci il codice dello script nel cestino dell'utente:

sudo cp pytiful3.py /usr/local/bin/

Rendilo eseguibile:

sudo chmod +x /usr/local/bin/pytiful3.py

Scrivi uno script di shell per eseguirlo all'avvio:

sudo nano pytiful3.sh

E inserisci il seguente testo:

#! /bin/sh ### BEGIN INIT INFO # Fornisce: pytiful3.py # Avvio richiesto: $remote_fs $syslog # Stop richiesto: $fs_remoto $syslog # Avvio predefinito: 2 3 4 5 # Stop predefinito: 0 1 6 ### END INIT INFO # assicurarsi che il livello del volume non sia alto DA FARE # Eseguire funzioni specifiche quando richiesto dal sistema case "$1" in start) echo "Avvio di pytiful3.py" /usr/local/bin/pytiful3.py &;; stop) echo "Stopping pytiful3.py" pkill -f /usr/local/bin/pytiful3.py;; *) echo "Utilizzo: /etc/init.d/pytiful3.sh {start|stop}" exit 1;; esac uscita 0

Spostalo su init.d:

sudo mv pytiful3.sh /etc/init.d/

Rendilo eseguibile:

sudo chmod +x /etc/init.d/pytiful3.sh

Registra lo script da eseguire all'avvio:

sudo update-rc.d pytiful3.sh default

Passaggio 12: prova di nuovo

Ora che abbiamo caricato il nostro script per l'esecuzione all'avvio, ricorda solo che qualsiasi modifica che facciamo deve essere portata nel cestino dell'utente e il nostro bellissimo script kissir/pytiful3.py è solo un orfano ora. Ma il lato positivo è che abbiamo ancora una sandbox in cui giocare. Probabilmente continuerò a giocare con la sceneggiatura, apportare modifiche e salvarla come nuova versione nel prossimo futuro. È ancora un progetto funzionante.

Eseguiamo un riavvio, aspettiamo che il pi si riavvii e, dopo circa un minuto, premiamo nuovamente un pulsante.

Se il tuo volume audio è molto basso, ricorda che abbiamo il volume di alsamixer al 50%, quindi possiamo alzarlo di conseguenza dal prompt dei comandi.

Per cominciare, una cosa che è necessaria è un valore del volume globale, invece di dover cambiare il livello del volume 5 volte diverse.

Ehi, che ne dici di quell'elenco di stazioni radio che abbiamo fatto al punto #6? Bene, risulta che MPG123 ha un comando di selezione casuale. È semplice come creare un elenco di URL di stazioni e, invece di chiamare l'URL di una stazione radio, usa semplicemente

"btn1234_choice = random.choice(btn1234)", subito dopo aver identificato la nostra lista di stazioni, dove btn1234_choice è la nostra lista. Non dimenticare di utilizzare le parentesi quadre intorno al nostro elenco di stazioni separate da virgole. La chiamata al comando subprocess riproduce quindi la nostra scelta casuale:

subprocess.call(['mpg123', '-q', btn1234_choice, " --preload 1"])

Passaggio 13: imballalo e abbiamo finito

Inscatolalo e abbiamo finito
Inscatolalo e abbiamo finito
Inscatolalo e abbiamo finito
Inscatolalo e abbiamo finito
Inscatolalo e abbiamo finito
Inscatolalo e abbiamo finito

Se sei arrivato a questo passaggio, il lavoro è completo! Congratulazioni: hai appena creato un lettore radio Internet autonomo.

A seconda dell'attrezzatura che possiedi (altoparlanti, dac e amplificatore), potresti chiederti come nascondere alcuni dei fili che si trovano intorno. Forse un altro istruibile per un altro giorno, ma se hai intenzione di creare un'unità abitativa in cui infilare alcuni fili, ti consiglio di darti un sacco di spazio in più.

Come puoi vedere nelle foto sopra, in realtà ho realizzato due baci, uno usando i resti di un contrattempo con la colla al mio primo tentativo (dall'umorismo distorto vengono le tavole deformate). La seconda unità utilizza eccitatori sonori anziché altoparlanti convenzionali e se hai preso il nome del dispositivo su uno dei miei screenshot, l'ho chiamato slimbox.

Ho trovato questo progetto abbastanza divertente. Entrambe le volte. Non certo un progetto difficile, forse un po' lungo ma molto gratificante. Spero che ti piaccia anche il tuo ascolto.

Consigliato: