Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

Seeeduino #5: aktiver Piezo Buzzer mit Grove Connector

Posted on 6. Oktober 20219. März 2024 by Stefan Draeger

In diesem Beitrag möchte ich dir zeigen, wie ein aktiver Piezo Buzzer mit Groove Connector programmiert wird. 

aktives Piezo Buzzer Shield mit Grove Connector
Rückseite "aktives Piezo Buzzer Shield"

Einen aktiven Piezo Buzzer habe ich bereits im Beitrag Raspberry PI Tutorial #3: Piezo Buzzer für den Raspberry PI vorgestellt. Dieses kleine Modul für den Arduino funktioniert ähnlich nur das dieses zusätzlich über einen Grove Connector verfügt und somit super einfach an den Seeduino Nano angeschlossen werden kann.

Der Seeduino Nano in Verbindung mit dem Grove Shield bietet eine sehr einfache und vor allem verpolungssicherere Möglichkeit Shields und Module anzuschließen.

Grove Shield Board für Seeeduino Nano
Grove Shield Board für Seeeduino Nano

  • Bezug
    • Lieferumgang
  • Technische Daten des aktiven Piezo Buzzer Shields
  • Aufbau und Schaltung
  • Beispiel Projekt – Temperaturwarner mit Licht und Sound
    • Aufbau der Schaltung
    • Quellcode
      • Schritt 1 – Werte des NTC Widerstandes auslesen
      • Schritt 2 – LED steuern
        • NTC Widerstand & LED mit Fade Effekt 
        • NTC Widerstand & LED mit AN / AUS bei erreichtem Wert
      • Schritt 3 – aktiver Piezo Buzzer steuern
      • fertiges Sketch / Programm
    • Download
  • Video – aktiver Piezo Buzzer mit Groove Connector

Bezug

Dieses kleine Modul habe ich über aliexpress.com für knapp 4 € inkl. Versandkosten erstanden. Die Preise auf ebay.de liegen derzeit bei ca. 7€* (inkl. kostenlosen Versand). 

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Lieferumgang

Zum Lieferumfang des Modules gehört neben dem Modul selber noch ein ca. 20cm langes Anschlusskabel.

Tüte "aktives Piezo Buzzer Shield"
Tüte „aktives Piezo Buzzer Shield“

Geliefert wurde mir dieses einfache Shield in einer normalen Tüte (also keine antistatische Verpackung).

Technische Daten des aktiven Piezo Buzzer Shields

  • Anschluss – Grove Connector (einmal digitaler PWM Pin)
  • Spannung – 3.3V
  • Abmaße – 21 mm x 21 mm x 10 mm

Aufbau und Schaltung

Das aktive Piezo Buzzer Modul verfügt wie bereits erwähnt über einen Grove Connector und wird über das beigefügte Kabel an zum Beispiel einem Seeduino Nano über das Grove Shield an einen digitalen PWM Pin angeschlossen.

aktives Piezo Buzzer Shield am Seeduino Nano
aktives Piezo Buzzer Shield am Seeduino Nano

Durch die kompakte Bauweise des Grove Shields sind leider nur 3 digitale Pins verfügbar, jedoch sind alle diese Pins PWM Pins. Ich habe das Modul an den digitalen Pin D6 angeschlossen.

Beispiel Projekt – Temperaturwarner mit Licht und Sound

Wie man Töne auf einem Piezo Buzzer wiedergibt, habe ich in diversen Beiträgen bereits gezeigt, hier möchte ich gerne mit den zwei bereits vorgestellten 

  • NTC Widerstand (Heißleiter),
  • LED

Shields eine Schaltung aufbauen. Diese Schaltung soll dazu dienen bei einem erreichen einer Temperatur eine optische sowie akustische Warnung ausgegeben wird.

Aufbau der Schaltung

Für den Aufbau der Schaltung verwende ich neben der 3 Shields noch zusätzlich den Seeduino Nano sowie eine passendes Grove Shield und die Anschlusskabel.

Seeduino Nano mit LED, NTC und aktiver Piezo Buzzer
Seeduino Nano mit LED, NTC und aktiver Piezo Buzzer

Das NTC Widerstand Shield wird über einen analogen Anschluss mit dem Board verbunden (in meinem Fall A0) das LED Shield habe ich am digitalen Pin D4 und den aktiven Piezo Buzzer am digitalen Pin D6 angeschlossen.

Quellcode

Den Aufbau des Quellcodes möchte ich in drei Schritten aufteilen, dieses hat den Vorteil, das man jeweils ein kleines Programm hat, welches bereits eine Funktion hat. Des Weiteren ist es somit einfacher, die einzelnen Funktionen zu erläutern.

Schritt 1 – Werte des NTC Widerstandes auslesen

Wie bereits erwähnt habe ich dem NTC-Widerstand Shield bereits ein eigenen Beitrag gewidmet und dort auch gezeigt wie man den Wert ausließt.

NTC - Heißleiter - Thermistor mit Grove Schnittstelle
NTC – Heißleiter – Thermistor mit Grove Schnittstelle

Damit der Quellcode nicht so lang wird und sich auf das wesentliche beschränkt, lagere ich die Funktionen zum Lesen der Temperatur in eine eigene Datei „ntc_resistor.ino“ aus. Eine Einbindung mit dem Befehl „include“ entfällt hierbei!

#include <math.h>

const int B = 4275; // B value of the thermistor
const int ntcWiderstand = 100000; // NTC-Widerstand mit 100 kOhm
const float MAX_ANALOG_VALUE = 1023.0; //maximaler Wert welcher am analogen Eingang erreicht werden kann

//An welchem analogen Pin der NTC-Widerstand angeschlossen ist
#define PIN A0

/**
 * Liest den Wert des NTC Widerstandes und berechnet den Widerstandswert
 */
double readResistorValue(){
  float analogValue = analogRead(PIN);
  float resistorValue = MAX_ANALOG_VALUE / analogValue - 1.0; 
  return ntcWiderstand * resistorValue;
}

/**
 * Liefert die aktuelle Temperatur in Grad Kelvin
 */
double getTempKelvin(){
  return convert2TempKelvin(readResistorValue());  
}

/**
 * Liefert die aktuelle Temperatur in Grad Celsius
 */
double getTempCelsius(){
  return convertKelvin2TempCelsius(getTempKelvin()); 
}

double convert2TempKelvin(float value){
  double temp = 1.0/(log(value/ntcWiderstand)/B+1/298.15);
  return temp;
}

double convertKelvin2TempCelsius(double kelvin){
 return kelvin - 273.15;
}

Schritt 2 – LED steuern

Nachdem wir nun die Temperatur auslesen können werden wir die LED abhängig von der Temperatur schalten. Hierbei gibt es nun zwei Wege , zum einen über ein Fade Effekt d.h. die LED wird mit steigender Temperatur heller und zum anderen durch einen fest eingestellten Schwellwert welcher bei überschreiten die LED aktiviert oder deaktiviert.

NTC Widerstand & LED mit Fade Effekt
//LED am digitalen Pin D6 angeschlossen
#define LED 6

void setup() {
  //beginn der seriellen Kommunikation mit 9600 baud
  Serial.begin(9600);  
}

void loop() {
  //auslesen der Temperatur
  double temp = getTempCelsius();

  //mappen des Temperaturbereiches 0°C bis 45°C auf die
  //möglichen PWM Signalwerte von 0..255
  int ledValue = map(temp, 0,45,0,255);
  //setzen des LED Fade Effekts
  analogWrite(LED, ledValue);
}

Da das Grove Shield des Seeduino Nano nur über einen PWM Anschluss verfügt ist die Lösung leider nicht möglich (da wir diesen Pin für den Piezo Buzzer benötigen), aber ich wollte diese gerne gezeigt haben.

NTC Widerstand & LED mit AN / AUS bei erreichtem Wert

Schreiben wir nun das Programm so um das wir bei erreichen der Temperatur von größer als 23°C die LED aktivieren.

//LED am digitalen Pin D4 angeschlossen
#define LED 4

void setup() {
  //beginn der seriellen Kommunikation mit 9600 baud
  Serial.begin(9600);  
}

void loop() {
  //auslesen der Temperatur
  double temp = getTempCelsius();
  //initial die LED deaktivieren
  boolean ledStatus = LOW;
  //Wenn die Temperatur größer als 23°C ist dann...
  if(temp > 23) {
    //Variable ledStatus auf HIGH setzten
    //die LED wird dann aktiviert
    ledStatus = HIGH;
  }
  //setzen des aktuellen Wertes für die LED
  digitalWrite(LED, ledStatus);
}

Schritt 3 – aktiver Piezo Buzzer steuern

Den Buzzer steuert man mit der Funktion „tone“ diese Funktion gibt es zum einen mit den Parametern Pin und Frequenz, sowie mit Pin, Frequenz und Dauer. Im ersteren Fall muss man jedoch mit der Funktion „noTone(<<PIN>>)“ den Buzzer wieder deaktivieren.

tone(BUZZER, 1400);
delay(500);
noTone(BUZZER);
//oder
tone(BUZZER, 1400, 500);

Ich verwende zusätzlich die Funktion map um den Temperaturwert von 0°C bis 45°C einen bestimmten Ton „zuzuweisen“.

tone(BUZZER, map(temp, 0,45,500,2500), 500);

fertiges Sketch / Programm

Datei: grove_activePiezoBuzzer.ino

//LED am digitalen Pin D4 angeschlossen
#define LED 4

//aktiver Piezo Buzzer am digitalen Pin D6 angeschlossen
#define BUZZER 6

void setup() {
  //beginn der seriellen Kommunikation mit 9600 baud
  Serial.begin(9600);  
  pinMode(LED, OUTPUT);
  pinMode(BUZZER, OUTPUT);
}

void loop() {
  //auslesen der Temperatur
  double temp = getTempCelsius();
  //initial die LED deaktivieren
  boolean ledStatus = LOW;
  Serial.println(temp);
  //Wenn die Temperatur größer als 23°C ist dann...
  if(temp > 23) {
    //Variable ledStatus auf HIGH setzten
    //die LED wird dann aktiviert
    ledStatus = HIGH;
    tone(BUZZER, map(temp, 0,45,500,2500), 500);
  } 
  //setzen des aktuellen Wertes für die LED
  digitalWrite(LED, ledStatus);
  delay(500);  
}

Datei: ntc_resistor.ino

#include <math.h>

const int B = 4275; // B value of the thermistor
const int ntcWiderstand = 100000; // NTC-Widerstand mit 100 kOhm
const float MAX_ANALOG_VALUE = 1023.0; //maximaler Wert welcher am analogen Eingang erreicht werden kann

//An welchem analogen Pin der NTC-Widerstand angeschlossen ist
#define PIN A0

/**
 * Liest den Wert des NTC Widerstandes und berechnet den Widerstandswert
 */
double readResistorValue(){
  float analogValue = analogRead(PIN);
  float resistorValue = MAX_ANALOG_VALUE / analogValue - 1.0; 
  return ntcWiderstand * resistorValue;
}

/**
 * Liefert die aktuelle Temperatur in Grad Kelvin
 */
double getTempKelvin(){
  return convert2TempKelvin(readResistorValue());  
}

/**
 * Liefert die aktuelle Temperatur in Grad Celsius
 */
double getTempCelsius(){
  return convertKelvin2TempCelsius(getTempKelvin()); 
}

double convert2TempKelvin(float value){
  double temp = 1.0/(log(value/ntcWiderstand)/B+1/298.15);
  return temp;
}

double convertKelvin2TempCelsius(double kelvin){
 return kelvin - 273.15;
}

Download

Hier nun das Beispiel zum bequemen Download:

aktiver Piezo Buzzer mit Grove ConnectorHerunterladen

Video – aktiver Piezo Buzzer mit Groove Connector

Schreibe einen Kommentar Antworten abbrechen

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

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}