Nota

Hola, ¡bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook! Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 junto a otros apasionados.

¿Por qué unirse?

  • Soporte de expertos: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo.

  • Aprende y comparte: Intercambia consejos y tutoriales para mejorar tus habilidades.

  • Avances exclusivos: Obtén acceso anticipado a nuevos lanzamientos y anuncios de productos.

  • Descuentos especiales: Disfruta de descuentos exclusivos en nuestros productos más recientes.

  • Promociones festivas y sorteos: Participa en sorteos y promociones de temporada.

👉 ¿Listo para explorar y crear con nosotros? Haz clic en [Aquí] y únete hoy.

1.2.1 Zumbador Activo

Introducción

En esta lección, aprenderemos cómo activar un zumbador activo para que emita sonido utilizando un transistor PNP.

Componentes

_images/list_1.2.1.png

Principio

Zumbador

Como un tipo de zumbador electrónico con estructura integrada, los zumbadores, que funcionan con corriente continua, se utilizan ampliamente en computadoras, impresoras, fotocopiadoras, alarmas, juguetes electrónicos, dispositivos electrónicos automotrices, teléfonos, temporizadores y otros productos electrónicos o dispositivos de sonido. Los zumbadores pueden clasificarse en activos y pasivos (ver la imagen a continuación). Gira el zumbador para que sus pines queden hacia arriba; el que tiene una placa de circuito verde es un zumbador pasivo, mientras que el que está cubierto con una cinta negra es un zumbador activo.

La diferencia entre un zumbador activo y uno pasivo:

_images/image101.png

La diferencia entre un zumbador activo y uno pasivo es que un zumbador activo tiene una fuente de oscilación interna, por lo que emite sonido cuando se energiza. Un zumbador pasivo no tiene esta fuente, por lo que no emitirá sonido si se le aplica corriente continua; en su lugar, necesita una señal de onda cuadrada con una frecuencia entre 2K y 5K para funcionar. Generalmente, el zumbador activo es más costoso que el pasivo debido a los circuitos de oscilación integrados.

A continuación se muestra el símbolo eléctrico de un zumbador, el cual tiene dos pines con polos positivo y negativo. El lado con el símbolo + en la superficie representa el ánodo y el otro es el cátodo.

_images/image102.png

Puedes revisar los pines del zumbador; el pin más largo es el ánodo y el más corto es el cátodo. No los conectes al revés, de lo contrario el zumbador no emitirá sonido.

Diagrama Esquemático

En este experimento se utiliza un zumbador activo, un transistor PNP y una resistencia de 1k entre la base del transistor y el GPIO para proteger el transistor. Cuando el GPIO17 de la Raspberry Pi recibe una señal de bajo nivel (0V) mediante programación, el transistor conducirá debido a la saturación de corriente y el zumbador emitirá sonido. Pero cuando el GPIO de la Raspberry Pi recibe una señal de alto nivel, el transistor se apagará y el zumbador no emitirá sonido.

_images/image332.png

Procedimiento Experimental

Paso 1: Monta el circuito. (Presta atención a los polos del zumbador: el que tiene la etiqueta + es el polo positivo y el otro es el negativo).

_images/image104.png

Para Usuarios de Lenguaje C

Paso 2: Abre el archivo de código.

cd ~/davinci-kit-for-raspberry-pi/c/1.2.1/

Paso 3: Compila el código.

gcc 1.2.1_ActiveBuzzer.c -lwiringPi

Paso 4: Ejecuta el archivo ejecutable.

sudo ./a.out

Cuando el código se ejecuta, el zumbador emite sonido.

Nota

Si no funciona después de ejecutarlo, o aparece un mensaje de error: «wiringPi.h: No such file or directory», consulta c code is not working?.

Código

#include <wiringPi.h>
#include <stdio.h>

#define BeepPin 0
int main(void){
    if(wiringPiSetup() == -1){ // si falla la inicialización de wiringPi, imprime el mensaje en pantalla
        printf("setup wiringPi failed !");
        return 1;
    }

    pinMode(BeepPin, OUTPUT);   // configurar GPIO0 como salida
    while(1){
        // zumbador encendido
        printf("Buzzer on\n");
        digitalWrite(BeepPin, LOW);
        delay(100);
        printf("Buzzer off\n");
        // zumbador apagado
        digitalWrite(BeepPin, HIGH);
        delay(100);
    }
    return 0;
}

Explicación del Código

digitalWrite(BeepPin, LOW);

Usamos un zumbador activo en este experimento, por lo que emitirá sonido automáticamente cuando se le aplique corriente continua. Este código establece el puerto I/O en bajo nivel (0V) para manejar el transistor y hacer que el zumbador suene.

digitalWrite(BeepPin, HIGH);

Establece el puerto I/O en alto nivel (3.3V), así el transistor no recibe corriente y el zumbador no emite sonido.

Para Usuarios de Python

Paso 2: Abre el archivo de código.

cd ~/davinci-kit-for-raspberry-pi/python

Paso 3: Ejecutar.

sudo python3 1.2.1_ActiveBuzzer.py

Cuando el código se ejecuta, el zumbador emite sonido.

Código

Nota

Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Antes de eso, debes ir a la ruta del código fuente como davinci-kit-for-raspberry-pi/python.

import RPi.GPIO as GPIO
import time

# Configurar el pin 17 como pin del zumbador
BeepPin = 17

def setup():
    # Configurar el modo GPIO en numeración BCM
    GPIO.setmode(GPIO.BCM)
    # Configurar el modo del pin del zumbador como salida,
    # y el nivel inicial en alto (3.3V)
    GPIO.setup(BeepPin, GPIO.OUT, initial=GPIO.HIGH)

def main():
    while True:
        # Zumbador encendido
        print ('Buzzer On')
        GPIO.output(BeepPin, GPIO.LOW)
        time.sleep(0.1)
        # Zumbador apagado
        print ('Buzzer Off')
        GPIO.output(BeepPin, GPIO.HIGH)
        time.sleep(0.1)

def destroy():
    # Apagar el zumbador
    GPIO.output(BeepPin, GPIO.HIGH)
    # Liberar recursos
    GPIO.cleanup()

# Si ejecutas este script directamente, haz:
if __name__ == '__main__':
    setup()
    try:
        main()
    # Cuando se presione 'Ctrl+C', se ejecutará destroy().
    except KeyboardInterrupt:
        destroy()

Explicación del Código

GPIO.output(BeepPin, GPIO.LOW)

Establece el pin del zumbador en bajo nivel para hacer que el zumbador emita sonido.

time.sleep(0.1)

Espera 0.1 segundos. Cambia la frecuencia de conmutación ajustando este parámetro.

Nota

No es la frecuencia del sonido. El zumbador activo no puede cambiar la frecuencia del sonido.

GPIO.output(BeepPin, GPIO.HIGH)

Apaga el zumbador.

Imagen del Fenómeno

_images/image105.jpeg