Sommario:

Radio Streaming Box a un pulsante: 7 passaggi (con immagini)
Radio Streaming Box a un pulsante: 7 passaggi (con immagini)

Video: Radio Streaming Box a un pulsante: 7 passaggi (con immagini)

Video: Radio Streaming Box a un pulsante: 7 passaggi (con immagini)
Video: Maranza allo stadio ➡️@quanto_costa 2024, Giugno
Anonim
Scatola di streaming radio a un pulsante
Scatola di streaming radio a un pulsante

Ho costruito una scatola per il bar del mio amico che ha un Raspberry Pi all'interno e con la semplice pressione di un pulsante trasmette l'audio a un sito Web utilizzando Darkice e Icecast, illuminando contemporaneamente un cartello "On-Air". Pensavo che fosse qualcosa che le persone stavano già facendo, ma dopo un'ampia ricerca non ho trovato nulla e ho deciso di capirlo da solo e rendere questo Instructable.

Ho usato un Raspberry Pi 3+ B ma, per quanto ne so, funzionerebbe su qualsiasi Pi (forse i numeri dei pin GPIO varierebbero, ma non posso confermarlo). Ho usato il pacchetto NOOBS per il sistema operativo e ho acquistato una scheda audio super semplice per l'input. Ho anche aggiunto un pulsante di spegnimento sicuro e un LED di attività alla scatola per proteggere il Pi.

Avrai bisogno:

Lampone Pi

Pacchetto NOOBS su una scheda SD

Interruttore di accensione/spegnimento (ho usato un grande pulsante di arresto di emergenza rosso come questo, ma può essere qualsiasi tipo di interruttore "clic")

Premi il bottone

1 LED

Un cartello "On-Air", l'ho creato da solo con un array di LED

Saldatore e piccolo connettore (ho appena tagliato una striscia di uno di questi che avevo in giro)

Scheda audio (ne ho usata una semplicissima come questa)

Passaggio 1: configura il tuo server

Per la stazione radio attuale che stiamo usando non ho fatto questa parte perché non avevo accesso al server e l'ha fatto il mio amico, ma c'è una guida di configurazione di base sul sito web di Icecast e sono riuscito a ottenere funziona dal Pi all'inizio solo per vedere come va. In alternativa puoi ottenere un account su internet-radio.com e funziona con Darkice.

Passaggio 2: configura il Pi e installa Darkice

Ottieni una scheda SD con il pacchetto NOOBS. Dopo aver aperto Raspbian e installato tutti gli aggiornamenti, apri una finestra di Terminale e digita:

sudo apt-get update

sudo apt-get install darkice

Darkice fa parte di Debian quindi si installerà automaticamente, ci vogliono alcuni istanti.

Una volta terminato, al prompt digitare:

darkice

Darà un messaggio di errore e non verrà eseguito, ma va bene. Nel messaggio dirà qualcosa del tipo:

Utilizzando il file di configurazione: /etc/darkice.cfg

Devi modificare quel file, quindi al prompt digita:

sudo nano /etc/darkice.cfg

Modifica il file che si apre utilizzando le informazioni su questa pagina wiki. Radioreference, quando hai finito premi CTRL-X per chiudere, Y per salvare e dovresti tornare al prompt del Terminale. È sempre bene riavviare dopo aver installato un nuovo programma, quindi digita:

riavviare

e quando il Pi si è riavviato, riapri una finestra di Terminale. Ora quando digiti "Darkice" dovrebbe funzionare senza messaggi di errore. Se vai su https://YOURSERVERADDRESS:8000/ (8000 o qualunque sia la porta a cui è assegnato il tuo server icecast) dovresti ottenere una pagina delle statistiche che dice che sei connesso. In caso contrario, modifica il file di configurazione (la linea di ingresso audio mi ha dato alcuni problemi ma ho provato tutte le opzioni e alla fine ho trovato la mia scheda audio). Una volta che Darkice è in esecuzione correttamente, passa al passaggio successivo.

Passaggio 3: pulsante Stream e segno in onda

Pulsante Stream e segnale in onda
Pulsante Stream e segnale in onda

Ho fatto un sacco di tutorial diversi per questo perché non ce n'era uno specifico per assegnare un'azione a un pulsante in Python. Il problema più grande che ho dovuto affrontare è stato far funzionare Darkice in background (e quindi non bloccare lo script Python quando ha iniziato a funzionare) ma ho chiesto a un amico programmatore di venire in aiuto e ha trovato un modo per farlo scrivendo fogli, qualcosa che ho non ottenere. Apparentemente potrebbe anche essere possibile utilizzare un '&' da qualche parte nel codice, ma non sono un programmatore e quello che ho funziona, quindi ho scelto di non scherzare. Una volta che ho funzionato, ho iniziato a ridurre tutti i cavi dalla breadboard fino a quando non sono rimasto con il seguente set-up:

GPIO16 a un connettore esterno a 3 punti.

GPIO7 al terminale positivo dell'array LED per il segnale ON-Air.

GPIO25 all'interruttore a scatto.

L'altro lato dell'interruttore a scatto si collega al connettore a 3 punti.

Il terminale negativo dell'array di LED si collega anche al connettore a 3 punti.

(Gli altri componenti sul diagramma sono spiegati nel passaggio successivo).

Lo script Python con cui siamo finiti è il seguente (si prega di notare che questo è un Instructable per l'intero progetto, non ne so abbastanza per spiegare il codice. L'ho messo insieme da vari altri tutorial per diverse funzioni):

import timeimport os import RPi. GPIO as GPIO GPIO.setwarnings(False) GPIO.setmode(GPIO. BOARD) ledPin = 12 buttonPin = 16 GPIO.setup(ledPin, GPIO. OUT) GPIO.setup(buttonPin, GPIO. IN, pull_up_down =GPIO. PUD_UP)

alterna = Falso

def start_darkice():

print('calling subprocess') #result = subprocess.call('sh screen -S darkice -d -m darkice') os.system('screen -S darkice -d -m darkice') print('resuming') def stop_darkice(): os.system('screen -X -S darkice quit')

mentre vero:

buttonState = GPIO.input(buttonPin) if buttonState == True: se non toggle: toggle = True print('accensione darkice') start_darkice() #print ('BUTTON STATE TRUE') GPIO.output(ledPin, GPIO. HIGH)

altro:

if toggle: toggle = False print('stopping darkice') stop_darkice() #print ('BUTTON STATE FALSE') GPIO.output(ledPin, GPIO. LOW) time.sleep(1)

Il file py è allegato a questo Instructible, puoi semplicemente scaricarlo e seguire il passaggio 5 se lo desideri.

Passaggio 4: pulsante di spegnimento sicuro e LED di attività

Pulsante di spegnimento sicuro e LED di attività
Pulsante di spegnimento sicuro e LED di attività

Solo per sicurezza e per prolungare la vita del Pi ho aggiunto un pulsante di spegnimento sicuro e un LED di attività esterno in modo che le persone sappiano quando è sicuro scollegare la scatola. Ho trovato facilmente tutorial per entrambi, ma ho notato che il Raspberry Pi 3 B+ ha un pin GPIO assegnato al LED ACT mentre i modelli precedenti no e ciò potrebbe essere problematico se si dispone di un Pi più vecchio.

Collegare il terminale positivo del LED a GPIO13 e il negativo a GPIO26. Affinché il LED ACT funzioni, è necessario modificare il file config.txt nella directory BOOT. Puoi trovarlo nel browser Raspbian o con:

sudo nano /usr/boot/config.txt

Quando stai modificando il file, aggiungi semplicemente le seguenti righe:

# Usa LED esterno come LED SD ACT dtoverlay=pi3-act-led, gpio=19

Ora il LED esterno lampeggerà con l'attività della scheda SD.

Collegare i terminali dell'interruttore a pressione a GPIO3 e GPIO8. Ho trovato il seguente codice da un tutorial e funziona bene:

import timefrom gpiozero import Pulsante from subprocess import check_call from signal import pause

def spegnimento():

check_call(['sudo', 'poweroff'])

shutdown_btn = Pulsante(2, hold_time=1)

shutdown_btn.when_held = spegnimento

pausa()

tempo.sonno(1)

Questo file py è anche allegato per il download, se lo desideri. Il mio pulsante deve essere tenuto premuto per 1 secondo, se vuoi cambiarlo cambia il valore 'hold-time='.

Passaggio 5: eseguire gli script Python dall'avvio

Di nuovo, ci sono molti tutorial su questo argomento, ho usato questo di Dexter Industries e ho seguito il primo passaggio modificando il file rc.local.

sudo nano /etc/rc.local

Qui è necessario aggiungere il percorso completo del file alla fine del documento, completo di '&' alla fine di ogni riga. Dovresti aggiungere una riga per ciascuno dei file:

sudo python /home/pi/NOMEFILE, py &

sudo python /home/pi/NOMEFILE2.py &

poco prima della linea

esci 0

Il '&' alla fine di ogni riga è importante per garantire il ciclo del programma.

Passaggio 6: costruisci la scatola

Costruisci la scatola
Costruisci la scatola
Costruisci la scatola
Costruisci la scatola
Costruisci la scatola
Costruisci la scatola

Questo dipende interamente da te. Ha davvero solo bisogno delle dimensioni del Pi, ma ho inserito un compressore nel mio set-up per mantenere il flusso radio a un livello abbastanza coerente, quindi la scatola è un po' più grande. Il mio ha un foro sul davanti per il cartello On-Air e uno per il Big Red Button, inoltre ho realizzato una piccola scheda con le istruzioni per i DJ e l'ho inserita sotto il pulsante. Sul lato della scatola c'è un foro per il pulsante, il LED ACT e l'ingresso audio, oltre a istruzioni intarsiate per il personale del bar su come spegnere in sicurezza la scatola.

Passaggio 7: installazione

Installazione
Installazione
Installazione
Installazione
Installazione
Installazione
Installazione
Installazione

Fissa tutti i componenti separati nella tua scatola, tenendo presente che è sempre bene consentire una certa circolazione d'aria attorno al Pi per evitare il surriscaldamento. Collega i cavi audio dal tuo mixer, premi il pulsante e goditi la trasmissione!

Consigliato: