Bemerkung
Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Community auf Facebook! Tauchen Sie mit anderen Enthusiasten tiefer in Raspberry Pi, Arduino und ESP32 ein.
Warum beitreten?
Expertenunterstützung: Lösen Sie Probleme nach dem Kauf und technische Herausforderungen mit Hilfe unserer Community und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und Sneak Peeks.
Sonderrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Bereit, mit uns zu entdecken und zu gestalten? Klicken Sie auf [here] und treten Sie noch heute bei!
1.3 Aktiver Summer
Einführung
In diesem Projekt lernen wir, wie man einen aktiven Summer mithilfe eines NPN-Transistors ansteuert, um einen Piepton zu erzeugen. Aktive Summer sind einfache Bauteile, die in vielen Elektronikprojekten verwendet werden, um akustische Signale zu erzeugen.
Benötigte Komponenten
Um dieses Projekt umzusetzen, benötigen Sie die folgenden Komponenten:
KOMPONENTE |
KAUFLINK |
|---|---|
- |
|
- |
|
Raspberry Pi |
- |
Schaltplan
Die Schaltung verwendet einen aktiven Summer, einen NPN-Transistor und einen 1kΩ-Widerstand. Der Widerstand schützt den Transistor, indem er den Basisstrom begrenzt. Wenn GPIO17 ein High-Signal (3,3 V) ausgibt, leitet der Transistor, sodass Strom durch den Summer fließen kann und ein Piepton entsteht. Wenn GPIO17 ein Low-Signal ausgibt, sperrt der Transistor und der Summer bleibt stumm.
Verdrahtungsdiagramm
Folgen Sie diesen Schritten, um die Schaltung aufzubauen:
Platzieren Sie den NPN-Transistor, den Summer und den Widerstand auf dem Breadboard.
Verbinden Sie die Basis des Transistors über den Widerstand mit GPIO17.
Verbinden Sie den Emitter des Transistors mit der Stromversorgung (+).
Verbinden Sie den Kollektor des Transistors mit einem Anschluss des Summers.
Verbinden Sie den anderen Anschluss des Summers mit Masse (-).
Beispiel ausführen
Der gesamte Beispielcode in diesem Tutorial befindet sich im Verzeichnis ai-lab-kit.
Folgen Sie diesen Schritten, um das Beispiel auszuführen:
cd ~/ai-lab-kit/python/
sudo python3 1.3_ActiveBuzzer.py
Dieses Python-Skript steuert einen Summer, der mit GPIO-Pin 17 eines Raspberry Pi verbunden ist. Wenn das Programm ausgeführt wird:
Der Summer schaltet sich alle 0,1 Sekunden ein und aus und erzeugt dadurch einen Piepton.
Das Programm gibt synchron zum Zustand des Summers die Meldungen „Buzzer On“ und „Buzzer Off“ in der Konsole aus.
Das Piepen läuft unbegrenzt weiter, bis der Benutzer das Skript mit
Ctrl+Cunterbricht.
Code
Der folgende Python-Code steuert den aktiven Summer und lässt ihn in einer Schleife ein- und ausschalten:
#!/usr/bin/env python3
from fusion_hat.modules import Buzzer
from fusion_hat.pin import Pin
from time import sleep
# Initialize a Buzzer object on GPIO pin 17
buzzer = Buzzer(Pin(17))
try:
while True:
# Turn on the buzzer
print('Buzzer On')
buzzer.on()
sleep(0.1) # Keep the buzzer on for 0.1 seconds
# Turn off the buzzer
print('Buzzer Off')
buzzer.off()
sleep(0.1) # Keep the buzzer off for 0.1 seconds
except KeyboardInterrupt:
# Handle KeyboardInterrupt (Ctrl+C) for clean script termination
pass
Nach dem Ausführen des Skripts piept der mit dem Raspberry Pi verbundene Summer wiederholt, indem er alle 0,1 Sekunden ein- und ausgeschaltet wird. Gleichzeitig zeigt die Konsole die Meldungen „Buzzer On“ und „Buzzer Off“ an, die mit dem Geräusch des Summers übereinstimmen. Der Summer piept so lange weiter, bis Sie das Programm durch Drücken von Ctrl + C beenden.
Den Code verstehen
Bibliotheken importieren
Die Bibliothek
fusion_hatbietet eine einfach zu verwendende Schnittstelle zur Steuerung der GPIO-Pins, undtimewird für Zeitverzögerungen verwendet.from fusion_hat.modules import Buzzer from fusion_hat.pin import Pin from time import sleep
Initialisierung des Summers
Das
Buzzer-Objekt wird erstellt und mit Pin 17 verknüpft.buzzer = Buzzer(Pin(17))
Steuerungsschleife
Das Programm verwendet eine Endlosschleife (
while True), um den Summer alle 0,1 Sekunden ein- und auszuschalten und so einen Piepton zu erzeugen. Dieprint-Anweisungen geben Rückmeldungen in der Konsole aus.while True: print('Buzzer On') buzzer.on() sleep(0.1) print('Buzzer Off') buzzer.off() sleep(0.1)
Behandlung von Tastaturunterbrechungen
Der
try-except-Block stellt sicher, dass das Programm sauber mitCtrl+Cbeendet werden kann, ohne Fehler auszulösen.except KeyboardInterrupt: pass
Fehlerbehebung
Kein Ton vom Summer
Ursache: Falsche GPIO-Pin-Verbindung oder falsche Verdrahtung des Summers.
Lösung: Stellen Sie sicher, dass der Summer korrekt mit GPIO-Pin 17 und Masse (GND) verbunden ist.
Summer bleibt ständig an oder aus
Ursache: Defekter Summer oder Problem mit der GPIO-Konfiguration.
Lösung: Überprüfen Sie die Funktion des Summers, indem Sie ihn direkt mit einer Spannung testen.
Skript reagiert nicht auf KeyboardInterrupt
Ursache: Der
except-Block verarbeitet die Unterbrechung möglicherweise nicht korrekt.Lösung: Stellen Sie sicher, dass der
try...except KeyboardInterrupt-Block korrekt implementiert ist und keine anderen Prozesse die Hauptschleife blockieren.
Das Piepen ist zu schnell oder störend
Ursache: Das Intervall
sleep(0.1)ist möglicherweise zu kurz.Lösung: Erhöhen Sie die Dauer von
sleep(), um längere Pausen zwischen den Signaltönen zu erhalten.
Erweiterungsideen
Benutzerdefinierte Piepmuster
Erstellen Sie unterschiedliche Piepmuster für verschiedene Ereignisse oder Benachrichtigungen:
def beep_pattern(): buzzer.on() sleep(0.3) buzzer.off() sleep(0.1) buzzer.on() sleep(0.1) buzzer.off()
Benutzereingabe zur Steuerung des Summers
Ermöglichen Sie dem Benutzer, den Summer dynamisch zu starten, zu stoppen oder das Piepmuster zu ändern:
while True: command = input("Enter 'on', 'off', or 'pattern': ") if command == 'on': buzzer.on() elif command == 'off': buzzer.off() elif command == 'pattern': beep_pattern()
Fazit
Dieses Projekt zeigt, wie man einen aktiven Summer mithilfe eines NPN-Transistors und der GPIO-Pins des Raspberry Pi ansteuert. Die einfache Code- und Hardwarestruktur macht es zu einem idealen Einstieg in soundbasierte Elektronikprojekte.