Taula de continguts:

Caixa de transmissió de ràdio amb un botó: 7 passos (amb imatges)
Caixa de transmissió de ràdio amb un botó: 7 passos (amb imatges)

Vídeo: Caixa de transmissió de ràdio amb un botó: 7 passos (amb imatges)

Vídeo: Caixa de transmissió de ràdio amb un botó: 7 passos (amb imatges)
Vídeo: Беслан. Помни / Beslan. Remember (english & español subs) 2024, Desembre
Anonim
Caixa de transmissió de ràdio amb un botó
Caixa de transmissió de ràdio amb un botó

Vaig construir una caixa per al bar del meu amic que tenia un Raspberry Pi a l'interior i amb només prémer un botó emet àudio a un lloc web mitjançant Darkice i Icecast, alhora que il·luminava un rètol "On-Air". Vaig pensar que això feia alguna cosa que la gent ja estava fent, però després d'una extensa recerca no vaig trobar res i vaig decidir esbrinar-ho per mi mateix i fer-ho instructiu.

He utilitzat un Raspberry Pi 3+ B, però pel que puc dir funcionaria en qualsevol Pi (potser els números de pin GPIO podrien variar, però no ho puc donar fe). Vaig utilitzar el paquet NOOBS per al sistema operatiu i vaig comprar una targeta de so súper senzilla per a l'entrada. També he afegit un botó d’apagada segur i un LED d’activitat a la caixa per protegir el Pi.

Necessitarà:

Raspberry Pi

Paquet NOOBS en una targeta SD

Interruptor d'encès / apagat (he utilitzat un gran botó vermell d'aturada d'emergència com aquest, però pot ser qualsevol tipus de commutador "clic")

Polsador

1 LED

Un senyal "en directe", el vaig fer amb una matriu de LED

Soldador i tauler de connectors petit (acabo de tallar una tira d’una d’aquestes que tenia al voltant)

Targeta de so (n’he utilitzat una de molt senzilla com aquesta)

Pas 1: configureu el servidor

Per a l’emissora de ràdio que estem utilitzant no he fet aquesta part, ja que no tenia accés al servidor i el meu amic ho ha fet, però al lloc web d’Icecast hi ha una guia bàsica de configuració i he aconseguit obtenir funciona des del Pi al principi només per veure com va. També podeu obtenir un compte a internet-radio.com i funciona amb Darkice.

Pas 2: configureu el Pi i instal·leu Darkice

Obteniu una targeta SD amb el paquet NOOBS. Un cop hàgiu obert Raspbian i instal·lat totes les actualitzacions, obriu una finestra de Terminal i escriviu:

sudo apt-get update

sudo apt-get install darkice

Darkice forma part de Debian, per la qual cosa s’instal·larà automàticament, triga uns quants moments.

Un cop acabat, escriviu l'indicatiu:

darkice

Donarà un missatge d'error i no s'executarà, però està bé. Al missatge es dirà una cosa així com:

Mitjançant el fitxer de configuració: /etc/darkice.cfg

Heu d’editar aquest fitxer, de manera que al tipus de sol·licitud:

sudo nano /etc/darkice.cfg

Editeu el fitxer que s’obre amb la informació d’aquesta pàgina wiki. Radioreference, quan hàgiu acabat premeu CTRL-X per tancar, Y per desar i hauríeu de tornar a l’indicador de Terminal. Sempre és bo reiniciar després d’instal·lar un programa nou, així que escriviu:

reiniciar

i quan el Pi s'ha reiniciat, torneu a obrir una finestra de Terminal. Ara, quan escriviu "Darkice", hauria d'executar-se sense cap missatge d'error. Si aneu a https:// YOURSERVERADDRESS: 8000 / (8000 o a qualsevol port al qual estigui assignat el vostre servidor icecast), hauríeu de rebre una pàgina d’estadístiques on estigueu connectat. Si no, ajusteu el fitxer de configuració (la línia d'entrada d'àudio em va donar alguns problemes, però vaig provar totes les opcions i, finalment, vaig trobar la meva targeta de so). Quan Darkice funcioni correctament, passeu al següent pas.

Pas 3: botó de reproducció i senyal d'emissió

Botó de reproducció i senyal de transmissió en directe
Botó de reproducció i senyal de transmissió en directe

Vaig fer un munt de tutorials diferents, ja que no n'hi havia cap específic per assignar una acció a un botó de Python. El problema més gran que vaig tenir va ser aconseguir que Darkice s’executés en segon pla (i, per tant, no congelés l’escriptura Python quan es va començar a executar), però vaig demanar a un amic codificador que vingués a ajudar-lo i va trobar una manera de fer-ho escrivint fulls, cosa que jo no ho entenc. Pel que sembla, també podria ser possible utilitzar un "&" en algun lloc del codi, però no sóc cap programador i el que tinc funciona, així que vaig optar per no embolicar-m'hi. Un cop ho vaig tenir tot funcionant, vaig començar a reduir tots els cables de la placa fins que em vaig quedar amb la configuració següent:

GPIO16 a un connector extern de 3 punts.

GPIO7 al terminal positiu de la matriu LED per al signe ON-Air.

GPIO25 al clic-commutador.

L’altra cara del clic-switch s’adhereix al connector de 3 punts.

El terminal negatiu de la matriu de LED també s’uneix al connector de 3 punts.

(Els altres components del diagrama s’expliquen al següent pas).

L'escriptura Python amb la qual hem acabat és la següent (tingueu en compte que es tracta d'un manual instructiu per a tot el projecte, realment no sé prou com per explicar el codi. L'he preparat a partir d'altres tutorials per a diferents funcions):

importar temps importar RPi. GPIO com a GPIO GPIO.setwarnings (fals) GPIO.setmode (GPIO. BOARD) ledPin = 12 buttonPin = 16 GPIO.setup (ledPin, GPIO. OUT) GPIO.setup (buttonPin, GPIO. IN, pull_up_down = GPIO. PUD_UP)

alternar = Fals

def start_darkice ():

print ('trucant al subprocés') #result = subprocess.call ('sh screen -S darkice -d -m darkice') os.system ('screen -S darkice -d -m darkice') print ('reprenent') def stop_darkice (): os.system ('screen -X -S darkice quit')

mentre que és cert:

buttonState = GPIO.input (buttonPin) si buttonState == True: si no commuta: toggle = True print ('activant darkice') start_darkice () #print ('BUTTON STATE TRUE') GPIO.output (ledPin, GPIO. HIGH)

en cas contrari:

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

El fitxer py s’adjunta a aquest Instructible, només el podeu descarregar i seguir el pas 5 si voleu.

Pas 4: botó d'apagada segura i LED d'activitat

Botó d'apagada segura i LED d'activitat
Botó d'apagada segura i LED d'activitat

Només per seguretat i per allargar la vida útil del Pi, he afegit un botó d’apagat segur i un LED d’activitat extern perquè la gent sàpiga quan és segur desconnectar la caixa. Vaig trobar fàcilment tutorials per a tots dos, però em vaig adonar que el Raspberry Pi 3 B + té un pin GPIO assignat per un LED ACT, mentre que els models anteriors no ho fan i això podria ser problemàtic si teniu un Pi més antic.

Connecteu el terminal positiu del LED a GPIO13 i el negatiu a GPIO26. Perquè el LED ACT funcioni, heu d’editar el fitxer config.txt al directori BOOT. Ho podeu trobar al navegador Raspbian o amb:

sudo nano /usr/boot/config.txt

Quan editeu el fitxer, simplement afegiu les línies següents:

# Utilitzeu LED extern com a LED ACT ACT dtoverlay = pi3-act-led, gpio = 19

Ara el LED extern parpellejarà amb l’activitat de la targeta SD.

Connecteu els terminals del commutador push a GPIO3 i GPIO8. He trobat el següent codi d’un tutorial i funciona bé:

importació del temps des de la importació gpiozero Botó des del subprocés d'importació check_call des de la pausa d'importació del senyal

apagat definitiu ():

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

shutdown_btn = Botó (2, hold_time = 1)

shutdown_btn.when_held = apagat

pausa ()

time.sleep (1)

Aquest fitxer py també s’adjunta per descarregar-lo si voleu. El meu botó s'ha de mantenir premut durant 1 segon, si voleu canviar-lo, canvieu el valor "hold-time =".

Pas 5: feu que els scripts Python s'executin des de l'arrencada

Una vegada més, hi ha molts tutorials sobre aquest tema, he utilitzat aquest de Dexter Industries i he seguit el primer pas editant el fitxer rc.local.

sudo nano /etc/rc.local

Aquí haureu d'afegir el camí d'accés complet al fitxer al final del document, amb una "&" al final de cada línia. Heu d'afegir una línia per a cadascun dels fitxers:

sudo python / home / pi / YOURFILENAME, py &

sudo python /home/pi/YOURFILENAME2.py &

just abans de la línia

sortida 0

El signe "&" al final de cada línia és important per assegurar que els bucles del programa.

Pas 6: Construeix la caixa

Construeix la caixa
Construeix la caixa
Construeix la caixa
Construeix la caixa
Construeix la caixa
Construeix la caixa

Això depèn completament de vosaltres. Realment només ha de tenir la mida del Pi, però he posat un compressor a la meva configuració per mantenir el flux de ràdio a un nivell bastant constant, de manera que la caixa és una mica més gran. El meu té un forat a la part frontal per al rètol On-Air i un per al Big Red Button, a més de que he fet una petita targeta d’instruccions per als DJ i l’he incrustat a sota del botó. Al lateral de la caixa hi ha un forat per al polsador, el LED ACT i l’entrada d’àudio, a més d’instruccions incrustades per al personal de la barra sobre com apagar la caixa amb seguretat.

Pas 7: Instal·lació

Instal·lació
Instal·lació
Instal·lació
Instal·lació
Instal·lació
Instal·lació
Instal·lació
Instal·lació

Fixeu tots els components separats a la vostra caixa, tenint en compte que sempre és bo permetre una mica de circulació d’aire al voltant del Pi per evitar el sobreescalfament. Connecteu els cables d'àudio del mesclador, premeu el botó i gaudiu de la transmissió.

Recomanat: