Tabla de contenido:
- Paso 1: configura tu servidor
- Paso 2: configura el Pi e instala Darkice
- Paso 3: Botón de transmisión y señal al aire
- Paso 4: Botón de apagado seguro y LED de actividad
- Paso 5: hacer que los scripts de Python se ejecuten desde el inicio
- Paso 6: construye la caja
- Paso 7: instalación
Video: Caja de transmisión de radio con un solo botón: 7 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
Construí una caja para la barra de mi amigo que tiene una Raspberry Pi en el interior y con solo presionar un botón transmite audio a un sitio web usando Darkice e Icecast, mientras enciende simultáneamente un letrero de 'On-Air'. Pensé que esto era algo que la gente ya estaba haciendo, pero después de una búsqueda exhaustiva no encontré nada y decidí resolverlo por mí mismo y hacer este Instructable.
Usé una Raspberry Pi 3+ B pero, por lo que puedo decir, funcionaría en cualquier Pi (quizás los números de pines GPIO variarían, aunque no puedo dar fe de eso). Usé el paquete NOOBS para el sistema operativo y compré una tarjeta de sonido súper simple para la entrada. También agregué un botón de apagado seguro y un LED de actividad a la caja para proteger el Pi.
Necesitará:
Frambuesa pi
Paquete NOOBS en una tarjeta SD
Interruptor de encendido / apagado (utilicé un gran botón rojo de parada de emergencia como este, pero puede ser cualquier tipo de interruptor de 'clic')
Presionar el botón
1 LED
Un letrero de 'On-Air', hice el mío con una matriz de LED
Soldador y placa de conexión pequeña (acabo de cortar una tira de uno de estos que tenía alrededor)
Tarjeta de sonido (usé una súper simple como esta)
Paso 1: configura tu servidor
Para la estación de radio real que estamos usando, no hice esta parte porque no tenía acceso al servidor y mi amigo lo hizo, pero hay una guía de configuración básica en el sitio web de Icecast y logré obtener funciona desde el Pi al principio solo para ver cómo va. Alternativamente, puede obtener una cuenta en internet-radio.com y funciona con Darkice.
Paso 2: configura el Pi e instala Darkice
Obtenga una tarjeta SD con el paquete NOOBS. Una vez que haya abierto Raspbian e instalado todas las actualizaciones, abra una ventana de Terminal y escriba:
sudo apt-get update
sudo apt-get install darkice
Darkice es parte de Debian, por lo que se instalará automáticamente, tardará unos minutos.
Una vez que haya terminado en el indicador, escriba:
hielo oscuro
Dará un mensaje de error y no se ejecutará, pero está bien. En el mensaje dirá algo como:
Usando el archivo de configuración: /etc/darkice.cfg
Necesita editar ese archivo, así que cuando se le solicite escriba:
sudo nano /etc/darkice.cfg
Edite el archivo que se abre usando la información en esta página wiki. Radioreference, cuando haya terminado presione CTRL-X para cerrar, Y para guardar y debe regresar al indicador de Terminal. Siempre es bueno reiniciar después de instalar un nuevo programa, así que escriba:
reiniciar
y cuando el Pi se haya reiniciado, vuelva a abrir una ventana de Terminal. Ahora, cuando escriba 'Darkice', debería ejecutarse sin ningún mensaje de error. Si va a https:// YOURSERVERADDRESS: 8000 / (8000 o cualquier puerto al que esté asignado su servidor icecast), debería obtener una página de estadísticas que diga que está conectado. De lo contrario, modifique el archivo de configuración (la línea de entrada de audio me dio algunos problemas, pero probé todas las opciones y finalmente encontré mi tarjeta de sonido). Una vez que Darkice se esté ejecutando correctamente, continúe con el siguiente paso.
Paso 3: Botón de transmisión y señal al aire
Hice un montón de tutoriales diferentes para esto, ya que no había uno específico para asignar una acción a un botón en Python. El mayor problema al que me enfrenté fue hacer que Darkice se ejecutara en segundo plano (y, por lo tanto, no congelar el script de Python cuando comenzó a ejecutarse), pero le pedí a un amigo codificador que viniera y me ayudara y descubrió una manera de hacerlo escribiendo hojas, algo que yo no entiendo. Aparentemente, también podría ser posible usar un '&' en algún lugar del código, pero no soy un codificador y lo que tengo funciona, así que elegí no meterme con él. Una vez que tuve todo funcionando, comencé a cortar todos los cables de la placa de pruebas hasta que me quedé con la siguiente configuración:
GPIO16 a un conector externo de 3 puntos.
GPIO7 al terminal positivo de la matriz de LED para el signo ON-Air.
GPIO25 al interruptor de clic.
El otro lado del interruptor de clic se conecta al conector de 3 puntos.
El terminal negativo de la matriz de LED también se conecta al conector de 3 puntos.
(Los otros componentes del diagrama se explican en el siguiente paso).
El script de Python con el que terminamos es el siguiente (tenga en cuenta que este es un Instructable para todo el proyecto, realmente no sé lo suficiente para explicar el código. Lo junté de varios otros tutoriales para diferentes funciones):
import timeimport os import RPi. GPIO como 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)
toggle = False
def start_darkice ():
print ('llamando al subproceso') #result = subprocess.call ('sh screen -S darkice -d -m darkice') os.system ('screen -S darkice -d -m darkice') print ('reanudando') def stop_darkice (): os.system ('pantalla -X -S darkice quit')
mientras que es cierto:
buttonState = GPIO.input (buttonPin) if buttonState == True: si no cambia: toggle = True print ('activando darkice') start_darkice () #print ('BUTTON STATE TRUE') GPIO.output (ledPin, GPIO. HIGH)
demás:
if toggle: toggle = False print ('deteniendo darkice') stop_darkice () #print ('BUTTON STATE FALSE') GPIO.output (ledPin, GPIO. LOW) time.sleep (1)
El archivo py está adjunto a este instructible, puede descargarlo y seguir el paso 5 si lo desea.
Paso 4: Botón de apagado seguro y LED de actividad
Solo por seguridad y para prolongar la vida útil del Pi, agregué un botón de apagado seguro y un LED de actividad externa para que la gente sepa cuándo es seguro desconectar la caja. Encontré fácilmente tutoriales para ambos, pero noté que la Raspberry Pi 3 B + tiene un pin GPIO asignado de ACT LED, mientras que los modelos anteriores no lo tienen y eso podría ser problemático si tiene una Pi más antigua.
Conecte el terminal positivo del LED a GPIO13 y el negativo a GPIO26. Para que el LED ACT funcione, debe editar el archivo config.txt en el directorio BOOT. Puede encontrar esto en el navegador Raspbian o con:
sudo nano /usr/boot/config.txt
Cuando esté editando el archivo, simplemente agregue las siguientes líneas:
# Utilice LED externo como LED SD ACT dtoverlay = pi3-act-led, gpio = 19
Ahora el LED externo parpadeará con la actividad de la tarjeta SD.
Conecte los terminales del interruptor de empuje a GPIO3 y GPIO8. Encontré el siguiente código de un tutorial y funciona bien:
import timefrom gpiozero import Button from subprocess import check_call from signal import pause
def shutdown ():
check_call (['sudo', 'poweroff'])
shutdown_btn = Botón (2, hold_time = 1)
shutdown_btn.when_held = apagar
pausa()
hora de dormir (1)
Este archivo py también se adjunta para que lo descargue si lo desea. Mi botón debe mantenerse presionado durante 1 segundo, si desea cambiarlo, cambie el valor de 'tiempo de espera ='.
Paso 5: hacer que los scripts de Python se ejecuten desde el inicio
Nuevamente, hay muchos tutoriales sobre este tema, utilicé este de Dexter Industries y seguí el paso uno editando el archivo rc.local.
sudo nano /etc/rc.local
Aquí debe agregar la ruta completa del archivo al final del documento, con un '&' al final de cada línea. Debe agregar una línea para cada uno de los archivos:
sudo python / home / pi / YOURFILENAME, py &
sudo python /home/pi/YOURFILENAME2.py &
justo antes de la línea
salir 0
El '&' al final de cada línea es importante para asegurar que el programa se repita.
Paso 6: construye la caja
Esto depende totalmente de ti. Realmente solo necesita ser del tamaño del Pi, pero puse un compresor en mi configuración para mantener la transmisión de radio a un nivel bastante consistente para que la caja sea un poco más grande. El mío tiene un agujero en la parte delantera para el letrero On-Air y otro para el Big Red Button, además hice una pequeña tarjeta de instrucciones para los DJ y la incrusté debajo del botón. En el costado de la caja hay un orificio para el botón pulsador, el LED ACT y la entrada de audio, además de instrucciones incrustadas para el personal del bar sobre cómo apagar la caja de forma segura.
Paso 7: instalación
Fije todos los componentes separados en su caja, teniendo en cuenta que siempre es bueno dejar algo de circulación de aire alrededor del Pi para evitar el sobrecalentamiento. Conecte los cables de audio de su mezclador, presione el botón y disfrute de la transmisión.
Recomendado:
Kit de transmisión web Raspberry Pi - Parte 2 (transmisión de video Pi): 6 pasos
Kit de transmisión web de Raspberry Pi - Parte 2 (transmisión de video de Pi): De acuerdo, no pensé que esto necesitara fotos, pero al sitio web le gustan las imágenes. En su mayoría, se trata de una serie de comandos y pasos para usted. Hay una serie de otros sitios que pueden abordar cualquier peculiaridad. Esto es lo que funcionó para mí. Esto combina otros
Máquina del tiempo de transmisión de radio de la Segunda Guerra Mundial: 13 pasos (con imágenes)
WW2 Radio Broadcast Time Machine: La idea detrás de esto era usar algunas partes que tenía por ahí y construir una máquina de discos de audio a la manera de una radio vieja. Para darle más propósito, también decidí llenarlo con transmisiones de radio antiguas de la Segunda Guerra Mundial y luego reutilizar el
Microcontrolador AVR. Cambie los LED con un interruptor de botón. Desactivación del botón pulsador: 4 pasos
Microcontrolador AVR. Cambie los LED con un interruptor de botón. Desactivación del botón pulsador: En esta sección, aprenderemos cómo hacer el código C del programa para ATMega328PU para alternar el estado de los tres LED de acuerdo con la entrada de un interruptor de botón. Además, hemos explorado una solución al problema de "Switch Bounce". Como de costumbre, nosotros
Transmisión de audio y transmisión de video con Raspberry Pi 3: 6 pasos
Transmisión de audio y transmisión de video usando Raspberry Pi 3 .: La principal utilidad de este proyecto es transmitir audio a Raspberry Pi 3 desde cualquier dispositivo conectado a la red WiFi común y adquirir video de Raspberry Pi 3 a cualquier dispositivo conectado a una red WiFi común
Caja de cedro (¿cigarro?) Caja de altavoz: 8 pasos (con imágenes)
Caja de altavoz de cedro (¿cigarro?): Inspirado en los altavoces de Munny, pero sin estar dispuesto a gastar más de $ 10, aquí está mi instructable con altavoces de computadora viejos, una caja de madera de la tienda de segunda mano y mucho pegamento caliente