Arduino UNO Q - Piezo-Summer
Ein Summer erzeugt Töne – von einfachen Pieptönen bis zu vollständigen Melodien. In diesem Tutorial erfahren Sie, wie Sie einen Piezo-Summer mit Arduino UNO Q verbinden, Töne und Melodien mit der tone()-Funktion abspielen und Töne über Telegram ferngesteuert auslösen.

Erforderliche Hardware
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Über Piezo-Summer
Aktiver vs. Passiver Summer
- Aktiver Summer: Erzeugt kontinuierliche Töne bei anliegender Spannung – am einfachsten zu verwenden
- Passiver Summer: Benötigt ein wechselndes Frequenzsignal (Rechteckwelle) – kann verschiedene Töne und Melodien erzeugen
Pinout
Ein Summer hat zwei Anschlüsse:
- Positiver (+) Anschluss: Mit dem Ausgangspin des Arduino UNO Q verbunden
- Negativer (−) Anschluss: Mit GND verbunden

Programmierung
Die integrierte tone()-Funktion von Arduino erzeugt eine Rechteckwelle auf jedem digitalen Pin und treibt sowohl aktive als auch passive Summer an:
- tone(pin, frequency, duration) – spielt einen Ton mit einer bestimmten Frequenz für eine bestimmte Dauer ab
- noTone(pin) – beendet den Ton
Schaltplan
- Schaltung mit eigenständigem Piezo-Summer:

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
- Schaltung mit Piezo-Summer-Modul:

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
MCU-Code – Melodie abspielen
Der Arduino UNO Q hat zwei Prozessoren: die STM32 MCU (handhabt Echtzeitsteuerung der Hardware) und die Qualcomm MPU (läuft Debian Linux). In diesem Abschnitt wird nur die STM32 MCU programmiert – die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammen arbeiten.
Schnelle Schritte
- Zum ersten Mal mit Arduino UNO Q? Folgen Sie dem Erste Schritte mit Arduino UNO Q Tutorial, um Ihre Entwicklungsumgebung vorzubereiten.
- Verbinden Sie den Summer: Verbinden Sie den positiven Pin mit Pin 6 und den negativen Pin mit GND.
- Verbinden: Schließen Sie den Arduino UNO Q mit einem USB-C-Kabel an Ihren Computer an.
- Öffnen Sie Arduino App Lab: Starten Sie Arduino App Lab und warten Sie, bis es Ihren Arduino UNO Q erkennt.
- Erstellen Sie eine neue App: Klicken Sie auf die Schaltfläche Create New App (Neue App erstellen).

- Geben Sie der App einen Namen, z. B.: DIYables_Buzzer
- Klicken Sie auf Create (Erstellen), um zu bestätigen.
- Es werden mehrere Ordner und Dateien in Ihrer neuen App erstellt.

- Suchen Sie die Datei sketch/sketch.ino – hier fügen Sie die MCU-Skizze ein.
- Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.

- Search for Arduino_RouterBridge created by Arduino and click the Install button.
- Hochladen: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab, um in die STM32 zu kompilieren und hochzuladen.

- Hören Sie zu: Der Summer spielt die Melodie einmal ab, wenn das Board hochgefahren wird.
Ändern der Melodie – Jingle Bells
Um ein anderes Lied abzuspielen, aktualisieren Sie die Arrays melody[] und noteDurations[]. Hier ist die Jingle-Bells-Version:
Schnelle Schritte
- Ersetzen Sie die Skizze durch die Jingle-Bells-Version und klicken Sie auf Ausführen.
- Hören Sie, wie der Summer beim Hochfahren Jingle Bells spielt.
Linux + MCU Bridge-Programmierung
Der Arduino UNO Q hat zwei Prozessoren, die zusammenarbeiten: die MPU (Qualcomm, läuft Debian Linux) und die MCU (STM32, läuft Zephyr OS mit Ihrem Arduino-Sketch). Sie kommunizieren über RPC über die Arduino_RouterBridge-Bibliothek – niemals über Raw-Serienports.
- Der Summer ist mit der MCU (STM32) verbunden – verbunden mit einem digitalen Ausgangspin. Die MCU treibt den Summer mit tone() und noTone() an.
- Die MPU kann den Summer nicht direkt steuern – sie muss einen Ton auslösen, indem sie eine Funktion auf der MCU über Bridge.call() aufruft.
- Die MPU hat Wi-Fi – da die MPU vollständiges Debian Linux mit Wi-Fi läuft, kann sie Summer-Töne bei Bedarf über Telegram auslösen.
- Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide_safe()-Funktionen auf der MCU-Seite auf (da tone()/noTone() Hardware-APIs sind)
- ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden vom Arduino Router verwendet – öffnen Sie sie niemals direkt
Kurz gesagt: MPU fordert Pieptöne oder Melodie an → MCU treibt Summer über tone() an → MCU bestätigt Aktion → MPU protokolliert oder leitet weiter.
MCU-Skizze – Summer mit Bridge und Monitor-Ausgabe:
Python-Skript (Arduino App Lab) – Summer von Linux auslösen:
- Hinweis: Stellen Sie sicher, dass Bridge.begin() in der MCU-Skizze aufgerufen wird und die Skizze hochgeladen ist, bevor Sie das Python-Skript auf der Linux-Seite ausführen.
- ⚠️ Warnung: Öffnen Sie niemals direkt /dev/ttyHS1 (auf Linux) oder verwenden Sie Serial1 (auf MCU) in Ihrem Code – diese sind vom Arduino Router reserviert und der Zugriff darauf wird die Bridge unterbrechen.
Schnelle Schritte
- MCU-Skizze hochladen: Öffnen Sie Arduino App Lab, erstellen Sie eine neue App, fügen Sie die Bridge-MCU-Skizze in sketch/sketch.ino ein, fügen Sie pitches.h als neuen Tab hinzu, installieren Sie die Arduino_RouterBridge-Bibliothek und klicken Sie auf Ausführen.
- Fügen Sie das Python-Skript hinzu: Fügen Sie den obigen Python-Code in den Python-Tab der gleichen App ein.
- Führen Sie die App aus: Klicken Sie auf Ausführen – die Python-Seite wechselt automatisch zwischen Pieptönen und Melodien.
- Überprüfen Sie die Konsole: Öffnen Sie die Registerkarte Konsole → MCU-Monitor-Untertab, um die Meldungen „Pieptöne gespielt" und „Melodie gespielt" zu sehen.
App Lab-Konsolenausgabe
Telegram-Integration
Steuern Sie Summer-Töne von überall über Telegram ferngesteuert aus.
Wenn Sie noch keinen Telegram-Bot haben, siehe Wie man einen Telegram-Bot erstellt, um Ihr Bot-Token vor dem Fortfahren zu erhalten.
MCU-Skizze: Behalten Sie die gleiche MCU-Skizze aus dem vorherigen Bridge-Abschnitt – keine Änderungen erforderlich. Stellen Sie sicher, dass sie bereits hochgeladen ist und auf der STM32 ausgeführt wird, bevor Sie fortfahren.
Python-Skript (Arduino App Lab) – Telegram-Bot zur Summer-Steuerung:
- Hinweis: Ersetzen Sie YOUR_BOT_TOKEN durch das Token, das Sie von @BotFather auf Telegram erhalten haben.
- Senden Sie /beep, um einen kurzen Pieptöne auszulösen.
- Senden Sie /melody, um die Melodie abzuspielen.
Schnelle Schritte
- MCU-Skizze hochladen: Verwenden Sie die Bridge-MCU-Skizze aus dem vorherigen Abschnitt (laden Sie sie zuerst hoch, falls noch nicht geschehen).
- Fügen Sie das Telegram-Skript ein: Kopieren Sie den obigen Python-Code in den Python-Tab Ihrer App in Arduino App Lab.
- Legen Sie Ihr Token fest: Ersetzen Sie YOUR_BOT_TOKEN im Skript durch Ihr tatsächliches Bot-Token.
- Führen Sie die App aus: Klicken Sie auf Ausführen – der Bot beginnt, auf Telegram-Nachrichten zu hören.
- Testen Sie es: Senden Sie /beep – hören Sie einen kurzen Ton vom Summer. Senden Sie /melody – hören Sie, wie die vollständige Melodie abgespielt wird.
App Lab-Python-Konsolenausgabe
ArduinoBot
OpenClaw-Integration
Sie können die OpenClaw für dieses Tutorial anpassen, indem Sie die Anleitung im Arduino Uno Q - OpenClaw Tutorial befolgen
Anwendungs-/Projektideen
- Ferngesteuerter Alarm: Steuern Sie einen Summer-Alarm ferngesteuert über Telegram aus, wenn ein Ereignis eintritt
- Benachrichtigungspieper: Pieptöne, wenn ein Sensorschwellenwert überschritten wird – ausgelöst von der MPU-Linux-Logik
- Türklingel: Verwenden Sie einen Knopf, um eine Türklingelmelodie zu piepen; benachrichtigen Sie über Telegram, dass jemand geklingelt hat
- Melodie-Jukebox: Erstellen Sie einen Telegram-Bot, mit dem Sie verschiedene Melodien ferngesteuert abspielen können
- Timer-Alarm: Verwenden Sie die Uhr der Linux-MPU, um zu einer geplanten Zeit einen Summer-Alarm abzuspielen
Herauszuerung für dich selbst
- Einfach: Fügen Sie eine zweite Melodie hinzu (z. B. Happy Birthday) und stellen Sie sie als /birthday in Telegram bereit
- Mittel: Fügen Sie einen play_n_beeps(n) Bridge-Callback hinzu und stellen Sie ihn in Telegram als /beep <count> bereit
- Fortgeschritten: Erstellen Sie einen Telegram-Bot, der eine Countdown-Melodie abspielt, bevor eine Aktion ausgelöst wird – verwenden Sie zeitbasierte Planung auf der Linux-MPU-Seite