Bemerkung

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!

3.2 Eigene Töne

Wir haben im vorherigen Projekt einen aktiven Summer verwendet, dieses Mal werden wir einen passiven Summer benutzen.

Wie der aktive Summer nutzt auch der passive Summer das Phänomen der elektromagnetischen Induktion, um zu funktionieren. Der Unterschied besteht darin, dass ein passiver Summer keine eigene Oszillationsquelle hat, daher wird er bei Verwendung von Gleichstromsignalen nicht piepen. Aber das ermöglicht es dem passiven Summer, seine eigene Oszillationsfrequenz anzupassen und verschiedene Noten wie „doh, re, mi, fa, sol, la, ti“ zu erzeugen.

Lassen Sie den passiven Summer eine Melodie spielen!

Benötigte Komponenten

Für dieses Projekt benötigen wir die folgenden Komponenten.

Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:

Name

ARTIKEL IN DIESEM KIT

LINK

ESP32 Starter Kit

320+

ESP32 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

ESP32-Platine

KAUFEN

ESP32-Kameraerweiterung

KAUFEN

Steckbrett

KAUFEN

Überbrückungsdrähte

KAUFEN

Widerstand

KAUFEN

Summer

-

Transistor

KAUFEN

Verfügbare Pins

Hier ist eine Liste der verfügbaren Pins auf dem ESP32-Platine für dieses Projekt.

Verfügbare Pins

IO13, IO12, IO14, IO27, IO26, IO25, IO33, IO32, IO15, IO2, IO0, IO4, IO5, IO18, IO19, IO21, IO22, IO23

Schaltplan

../../_images/circuit_3.1_buzzer.png

Wenn der IO14-Ausgang hoch ist, wird nach dem 1K-Strombegrenzungswiderstand (zum Schutz des Transistors) der S8050 (NPN-Transistor) leiten, so dass der Summer ertönt.

Die Rolle des S8050 (NPN-Transistor) besteht darin, den Strom zu verstärken und den Summer lauter klingen zu lassen. Tatsächlich können Sie den Summer auch direkt an IO14 anschließen, aber Sie werden feststellen, dass der Summer leiser klingt.

Verdrahtung

Im Kit sind zwei Arten von Summern enthalten. Wir müssen den passiven Summer verwenden. Drehen Sie sie um, die freiliegende PCB ist die, die wir wollen.

../../_images/buzzer.png

Der Summer benötigt beim Arbeiten einen Transistor, hier verwenden wir S8050 (NPN-Transistor).

../../_images/3.1_buzzer_bb.png

Code

Bemerkung

  • Öffnen Sie die Datei 3.2_custom_tone.ino unter dem Pfad esp32-starter-kit-main\c\codes\3.2_custom_tone.

  • Nachdem Sie das Board (ESP32 Dev Module) und den entsprechenden Port ausgewählt haben, klicken Sie auf den Upload-Knopf.

  • „Unbekanntes COMxx“ wird immer angezeigt?

Nachdem der Code erfolgreich hochgeladen wurde, hören Sie, wie der passive Summer eine Folge von 7 Musiknoten abspielt.

Wie funktioniert das?

  1. Definieren Sie Konstanten für den Summer-Pin und die PWM-Auflösung.

    const int buzzerPin = 14; //buzzer pin
    const int resolution = 8;
    
  2. Definieren Sie ein Array mit den Frequenzen der 7 Musiknoten in Hz.

    int frequencies[] = {262, 294, 330, 349, 392, 440, 494};
    
  3. Erstellen Sie eine Funktion, um eine gegebene Frequenz für eine bestimmte Dauer am Summer abzuspielen.

    void playFrequency(int frequency, int duration) {
        ledcWriteTone(buzzerPin, frequency); // Start the tone
        delay(duration); // Wait for the specified duration
        ledcWriteTone(buzzerPin, 0); // Stop the buzzer
    }
    
    • uint32_t ledcWriteTone(uint8_t pin, uint32_t freq);: Diese Funktion wird verwendet, um den Pin auf eine 50% PWM-Frequenz bei der ausgewählten Frequenz einzustellen.

      • pin wählt den LEDC-Pin aus.

      • freq wählt Frequenz des PWM-Signals aus.

    Diese Funktion gibt die frequency für den Kanal zurück. Wenn 0 zurückgegeben wird, ist ein Fehler aufgetreten und der LEDC-Kanal wurde nicht konfiguriert.

  4. Konfigurieren Sie den PWM-Kanal und verbinden Sie den Summer-Pin in der Funktion setup().

    void setup() {
        ledcAttach(buzzerPin, 2000, resolution); // Set up the PWM pin
    }
    
    • bool ledcAttach(uint8_t pin, uint32_t freq, uint8_t resolution);: Diese Funktion wird verwendet, um den LEDC-Pin mit der angegebenen Frequenz und Auflösung einzustellen. Der LEDC-Kanal wird automatisch ausgewählt.

      • pin wählt den GPIO-Pin aus.

      • freq wählt die PWM-Frequenz aus.

      • resolution_bits wählt die Auflösung für den LEDC-Kanal aus. Der Bereich liegt zwischen 1-14 Bits (1-20 Bits für ESP32).

  5. In der Funktion loop() spielen Sie die Sequenz von 7 Noten mit einer kurzen Pause zwischen jeder Note und einer 1-sekündigen Pause vor der Wiederholung der Sequenz ab.

    void loop() {
        for (int i = 0; i < 7; i++) {
            playFrequency(frequencies[i], 300); // Play each note for 300ms
            delay(50); // Add a brief pause between the notes
        }
        delay(1000); // Wait for 1 second before replaying the sequence
    }