🍪 Privacy & Transparency

We and our partners use cookies to Store and/or access information on a device. We and our partners use data for Personalised ads and content, ad and content measurement, audience insights and product development. An example of data being processed may be a unique identifier stored in a cookie. Some of our partners may process your data as a part of their legitimate business interest without asking for consent. To view the purposes they believe they have legitimate interest for, or to object to this data processing use the vendor list link below. The consent submitted will only be used for data processing originating from this website. If you would like to change your settings or withdraw consent at any time, the link to do so is in our privacy policy accessible from our home page..

Vendor List | Privacy Policy
Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry PI

Menu
  • Projekte
    • LED’s
    • Servo & Schrittmotoren
    • Sound
    • LCD’s
    • Kommunikation
    • Sicherheit
    • Weekend Project
  • Arduino
    • Tutorials
    • ProMini
      • Anschließen & Programmieren
    • Nano
      • Arduino Nano – Übersicht
    • UNO
      • Übersicht
    • MEGA 2560
      • Übersicht
    • Leonardo
      • Übersicht
    • NodeMCU
      • NodeMCU – “Einer für (fast) Alles!”
    • Lilypad
      • Arduino: Lilypad “Jetzt Geht’s Rund!”
    • WEMOS
      • WEMOS D1 – Arduino UNO kompatibles Board mit ESP8266 Chip
      • WEMOS D1 Mini – Übersicht
      • Wemos D1 mini Shields
    • STM32x
      • STM32F103C8T6 – Übersicht
    • Maker UNO
      • Maker UNO – Überblick und Test
    • ATTiny85
      • Mini Arduino mit ATTiny85 Chip
      • ATtiny85 mit dem Arduino UNO beschreiben
  • Android
  • Über mich
  • DeutschDeutsch
  • EnglishEnglish
Menu

Programmieren mit MicroPython #5: Piezo Buzzer am ESP32 betreiben

Posted on 19. April 202130. April 2023 by Stefan Draeger

In diesem Beitrag erfährst du, wie man einen passiven Piezo Buzzer am ESP32 mit MicroPython programmiert.

Piezo Buzzer
Piezo Buzzer

Einen Piezo Buzzer steuerst du mit einem PWM Signal. Und wie du ein PWM Signal am ESP32 erzeugst hast du bestimmt schon im letzten Beitrag Programmieren mit MicroPython #2: steuern von Leuchtdioden (LED) gelesen. 

  • benötigte Bauteile
  • Aufbau der Schaltung
  • Programmieren
  • Video

benötigte Bauteile

Für den Nachbau benötigst du:

  • einen ESP32,
  • einen passiven Piezo Buzzer*,
  • zwei Breadboardkabel, 10cm, Stecker – Stecker,
  • ein 400 Pin Breadboard

Aufbau der Schaltung

Die Schaltung ist relativ einfach, denn der passive Piezo Buzzer wird lediglich mit einem GPIO Pin sowie dem Pin „G“ (steht für GND, Minuspol) verbunden.

Schaltung - passiver Piezo Buzzer am ESP32
Schaltung – passiver Piezo Buzzer am ESP32

An meinem ESP32 vom Typ LOLIN32 habe ich den passiven Piezo Buzzer an GND (schwarzes Kabel) sowie dem GPIO Pin 4 (gelbes Kabel) angeschlossen.

ESP32 mit passiven Piezo Buzzer
ESP32 mit passiven Piezo Buzzer

Programmieren

Das nachfolgende Beispiel habe ich von der Seite Micropython on ESP8266 Workshop übernommen.

Der passive Piezo Buzzer wird über ein PWM Signal gesteuert. Zuerst müssen wir uns also die benötigten Module importieren.
Es wird das Pin sowie PWM aus der Bibliothek „machine“ importiert.

from machine import Pin, PWM

Des Weiteren benötigen wir für die Pausen zwischen den einzelnen Tönen die Funktion „sleep“ diese finden wir im Modul „time“ welches wir ebenso importieren.

from time import sleep

Definieren wir nun zunächst unseren Buzzer Pin

buzzer = PWM(Pin(4, Pin.OUT), freq=440, duty=512)

Für das abspielen der Tonleiter definieren wir ein Dictionary mit den Keys der Buchstaben der Töne und den Values der jeweiligen Frequenz.

tones = {
    'c': 262,
    'd': 294,
    'e': 330,
    'f': 349,
    'g': 392,
    'a': 440,
    'b': 494,
    'C': 523,
    ' ': 0,
}

Die Maximale Frequenz eines PWM Signales liegt bei 1000 Hz.

Nun definieren wir die Tonfolge / Melodie und den Takt welcher auf dem Buzzer abgespielt werden soll.

melody = 'cdefgabC'
rhythm = [8, 8, 8, 8, 8, 8, 8, 8]

Zunächst definieren wir unser Tempo fest.

tempo = 5

Um nun die Tonfolge abzuspielen durchlaufen wir die Zeichenfolge „melody“ und des Rytmus („Rhythm“).
Mit der Funktion „freq“ geben wir eine bestimmte Frequenz auf dem Buzzer wieder und mit der darauffolgenden Funktion „sleep“ pausieren wir somit haben wir den Tone in einer bestimmten länge abgespielt.

Dieses machen wir für jeden Ton in der Zeichenkette „melody“.

for tone, length in zip(melody, rhythm):
    buzzer.freq(tones[tone])
    sleep(tempo/length)
beeper.deinit()

Hier nun das gesamte Programm:

from machine import Pin, PWM
from time import sleep

buzzer = PWM(Pin(4, Pin.OUT), freq=440, duty=512)

tones = {
    'c': 262,
    'd': 294,
    'e': 330,
    'f': 349,
    'g': 392,
    'a': 440,
    'b': 494,
    'C': 523,
    ' ': 0,
}

melody = 'cdefgabC'
rhythm = [8, 8, 8, 8, 8, 8, 8, 8]

tempo = 5

for tone, length in zip(melody, rhythm):
    buzzer.freq(tones[tone])
    sleep(tempo/length)
beeper.deinit()

Video

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Kategorien

Tools

  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator
  • Widerstandsrechner
  • Rechner für Strom & Widerstände
  • ASCII Tabelle

Meta

  • Videothek
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Kontakt
  • Cookie-Richtlinie (EU)

Links

Blogverzeichnis Bloggerei.de Blogverzeichnis TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com
©2023 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb