es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Detecta el sonido y configura GPIO.

Estoy buscando una solución que detecte sonido y establezca GPIO21 en bajo y GPIO21 en alto, después de 5 minutos cuando no hay sonido.
Lo necesito para un streamer (Raspberry Pi) que ejecutará shairport-sync, tidal-connect y Spotify. Cuando se detecte sonido, el GPIO debe activar mi amplificador.
Desafortunadamente, no sé codificar en Python, así que espero que alguien pueda ayudarme.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Solución para detección de sonido y control de GPIO

    Si estás buscando una solución para detectar automáticamente el sonido y configurar GPIO21 en bajo y alto después de 5 minutos de no haber sonido, puedes usar una Raspberry Pi con Python y algunos componentes adicionales.

    Aquí está una descripción general de lo que necesitarás:

    1. Raspberry Pi board
    2. Módulo de micrófono o micrófono USB
    3. Protoboard y cables jumpers
    4. Dos LEDs para conectar a GPIO21 y otro pin GPIO
    5. Dos resistencias, una para cada LED

    Para empezar, deberás conectar el módulo de micrófono o micrófono USB a la entrada de audio de la Raspberry Pi. Luego, usando Python y la biblioteca Pyaudio, puedes leer la entrada de audio del micrófono y comprobar si hay algún sonido.

    Después de detectar el sonido, puedes activar el pin GPIO que controla tu amplificador para encenderlo. Cuando no hay sonido durante más de 5 minutos, GPIO21 puede activar el otro pin GPIO para apagar el amplificador.

    Aquí hay un ejemplo de código Python que se puede usar para detectar sonido y controlar los pines GPIO en la Raspberry Pi:

    import time
    import RPi.GPIO as GPIO
    import pyaudio
    
    
    # Configura los pines GPIO para el control del LED
    LED1_GPIO = 21
    LED2_GPIO = 22
    
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(LED1_GPIO, GPIO.OUT)
    GPIO.setup(LED2_GPIO, GPIO.OUT)
    
    
    # Configura la entrada de audio y Pyaudio
    CHUNK = 1024
    FORMAT = pyaudio.paInt16
    CHANNELS = 1
    RATE = 44100
    
    p = pyaudio.PyAudio()
    stream = p.open(format=FORMAT, channels=CHANNELS, rate=RATE, input=True,
                    frames_per_buffer=CHUNK)
    
    
    # Loop para detectar continuamente el sonido y controlar los pines GPIO
    while True:
        data = stream.read(CHUNK)
        rms = audioop.rms(data, 2)
        if rms > 500:  # Establece un valor umbral para la detección de sonido
            GPIO.output(LED1_GPIO, GPIO.HIGH)  # Enciende el LED1 para activar el amplificador
            time.sleep(0.1)
        else:
            GPIO.output(LED1_GPIO, GPIO.LOW)   # Apaga el LED1
            time.sleep(0.1)
    
        if time.time() - time_init > 300: # Comprueba si no ha habido sonido durante 5 minutos
            GPIO.output(LED2_GPIO, GPIO.HIGH)  # Enciende el LED2 para apagar el amplificador
        else:
            GPIO.output(LED2_GPIO, GPIO.LOW)   # Apaga el LED2
    

    Ten en cuenta que este es solo un ejemplo de código básico, y es posible que debas modificarlo según tus necesidades y configuración específicas. Además, deberás instalar las bibliotecas y componentes necesarios antes de ejecutar el código.

    Pero con esta solución, deberías poder detectar automáticamente el sonido y controlar tu amplificador usando una Raspberry Pi y Python.

Comments are closed.