Sommario:
- Passaggio 1: configura il tuo server
- Passaggio 2: configura il Pi e installa Darkice
- Passaggio 3: pulsante Stream e segno in onda
- Passaggio 4: pulsante di spegnimento sicuro e LED di attività
- Passaggio 5: eseguire gli script Python dall'avvio
- Passaggio 6: costruisci la scatola
- Passaggio 7: installazione
Video: Radio Streaming Box a un pulsante: 7 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
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
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à
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
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
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:
Un'applicazione di un pulsante estensibile con feedback di vibrazione: 7 passaggi (con immagini)
Un'applicazione di un pulsante estensibile con feedback di vibrazione: in questo tutorial, ti mostreremo prima come utilizzare un Arduino Uno per controllare un motore di vibrazione tramite un pulsante esteso. La maggior parte dei tutorial sui pulsanti coinvolge il pulsante sulla breadboard fisica, mentre in questo tutorial il pulsante è stato
Microcontrollore AVR. Attiva/disattiva i LED utilizzando un interruttore a pulsante. Pulsante antirimbalzo: 4 passaggi
Microcontrollore AVR. Attiva/disattiva i LED utilizzando un interruttore a pulsante. Push Button Debouncing.: In questa sezione, impareremo come creare un codice C del programma per ATMega328PU per alternare lo stato dei tre LED in base all'input da un interruttore a pulsante. Inoltre, abbiamo esplorato una soluzione al problema di "Switch Bounce". Come di consueto, vi
Incremento del valore di 7 segmenti utilizzando il pulsante a pressione con 8051: 4 passaggi (con immagini)
Incremento del valore a 7 segmenti utilizzando il pulsante con 8051: In questo progetto incrementeremo il valore del display a sette segmenti utilizzando il pulsante con il microcontrollore 8051
Adesivo con logo Apple pulsante: 3 passaggi (con immagini)
Adesivo logo Apple pulsante: questo piccolo aggeggio aggiunge l'iconico "pulsante del Mac addormentato" a una normale decalcomania del logo Apple. L'idea è nata quando sono passato dall'Apple Store di Palo Alto, in California, a tarda notte. Dopo ore, quando il negozio è "addormentato", i loghi illuminati
Padroneggia il tuo Micro: bit con Arduino IDE - Pulsante e altri GPIO: 3 passaggi (con immagini)
Padroneggia il tuo Micro:bit con Arduino IDE--Button e altri GPIO: nel nostro precedente blog Master Your Micro:bit con Arduino IDE --Light LED, abbiamo parlato di come installare la libreria micro:bit su Arduino IDE e come per pilotare LED su micro:bit con Arduino IDE. In questo articolo vi racconteremo h