Arduino UNO Q - Servomotor
Dieses Tutorial zeigt Ihnen, wie Sie einen Servomotor mit einem Arduino UNO Q steuern. Speziell lernen Sie:
- Wie man Arduino UNO Q programmiert, um einen Servomotor zu steuern
- Wie man die Geschwindigkeit eines Servomotors steuert
- Wie man externe Stromversorgung für Servomotoren verwendet

Hardware erforderlich
Oder Sie können die folgenden Kits kaufen:
| 1 | × | DIYables Sensor-Kit (18 Sensoren/Displays) |
Kaufhinweis: Falls Sie mehrere Servomotoren verwenden möchten, empfehlen wir die Verwendung des PCA9685 16 Channel PWM Servo Driver Module, um MCU-Pins zu sparen und die Verdrahtung zu vereinfachen.
Über Servomotor
Ein Servomotor ist eine Komponente, die seinen Griff drehen kann, normalerweise von 0 Grad bis 180 Grad. Er wird verwendet, um den Winkel eines Objekts zu steuern.
Pinbelegung
Dieses Beispiel verwendet einen Servomotor mit drei Anschlüssen:
- VCC-Anschluss: Verbinden Sie den roten Draht mit VCC (5 Volt).
- GND-Anschluss: Verbinden Sie den schwarzen oder braunen Draht mit GND (0 Volt).
- Signalleitung: Verbinden Sie den gelben oder orangefarbenen Draht, um das PWM-Steuersignal von einem Arduino UNO Q-Pin zu empfangen.

Verdrahtungsschema
Manchmal sehen Sie Online-Verdrahtungsdiagramme, die zeigen, dass die Servomotor-VCC direkt mit dem 5V-Pin auf dem Arduino verbunden ist. Es ist am besten, diese Methode zu vermeiden, da sie das Arduino UNO Q Board beschädigen könnte.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Um Ihr Arduino UNO Q Board zu schützen, ist es am besten, eine externe Stromversorgung für den Servomotor zu verwenden. Das Verdrahtungsschema unten zeigt, wie man den Servomotor mit einer externen Stromquelle verbindet.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Stellen Sie sicher, dass Sie die GND der externen Stromversorgung mit der GND des Arduino UNO Q Boards verbinden. Dieser Schritt ist sehr wichtig, damit es richtig funktioniert.
Wie man für Servomotor programmiert
- Fügen Sie die Bibliothek ein:
- Erstellen Sie ein Servo-Objekt:
Wenn Sie mehrere Servomotoren verwalten, deklarieren Sie einfach zusätzliche Servo-Objekte.
- Verbinden Sie den Steuerpin des Arduino UNO Q mit dem Signalpin des Servomotors, z. B. Pin 9.
- Schließlich drehen Sie den Servomotor auf den gewünschten Winkel, z. B. 90 Grad.
MCU-Code
Der Arduino UNO Q verfügt über zwei Prozessoren: den STM32 MCU (verwaltet Echtzeit-Hardwaresteuerung) und die Qualcomm MPU (führt Debian Linux aus). In diesem Abschnitt wird nur der STM32 MCU programmiert – die Linux-Seite bleibt untätig. Ein späterer Abschnitt zeigt, wie beide Prozessoren zusammenarbeiten.
Der Code fegt den Servomotor sanft von 0° bis 180° und zurück, wiederholend kontinuierlich:
Schnelle Schritte
- Erstes Mal mit Arduino UNO Q? Folgen Sie dem Einstieg in Arduino UNO Q Tutorial, um Ihre Entwicklungsumgebung vorzubereiten, bevor Sie fortfahren.
- Drahtkomponenten: Verbinden Sie den Servomotor-Signaldraht mit Pin 9, VCC mit 5V-Stromversorgung und GND mit beiden Stromversorgung und Arduino UNO Q GND.
- Verbindung herstellen: 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 Neue App erstellen.

- Geben Sie der App einen Namen, z. B.: DIYables_ServoMotor
- Klicken Sie auf Erstellen, um zu bestätigen.
- Sie werden eine Reihe von Ordnern und Dateien sehen, die in Ihrer neuen App generiert werden.

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

- Search for Servo created by Michael Margolis, Arduino and click the Install button.
- 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 zu kompilieren und zum STM32 hochzuladen.

- Beobachten: Der Servomotor dreht sich langsam von 0° bis 180°, dann dreht er sich langsam von 180° zurück bis 0°, kontinuierlich wiederholend.
Wie man die Geschwindigkeit des Servomotors steuert
Mit den Funktionen map() und millis() können Sie die Geschwindigkeit eines Servomotors sanft anpassen, während Sie anderen Code ohne Unterbrechungen ausführen lassen.
Linux + MCU Bridge-Programmierung
Der Arduino UNO Q verfügt über zwei Prozessoren, die zusammenarbeiten: die MPU (Qualcomm, führt Debian Linux aus) und die MCU (STM32, führt Zephyr OS mit Ihrer Arduino-Skizze aus). Sie kommunizieren über RPC über die Arduino_RouterBridge Bibliothek – niemals über Raw-Serienports.
- Der Servomotor ist mit der MCU (STM32) verbunden – der Signaldraht ist mit Pin 9 verdrahtet. Die MCU treibt das PWM-Servomotor-Signal an.
- Die MPU kann den Servomotor nicht direkt steuern – sie muss eine Funktion auf der MCU über Bridge.call() aufrufen, um den Servomotor auf eine bestimmte Position zu bewegen.
- Die MPU hat Wi-Fi – da die MPU vollständiges Debian Linux mit Wi-Fi ausführt, kann sie Telegram-Befehle empfangen und den Servomotor aus der Ferne positionieren.
- Kommunikation: Bridge.call() auf der Linux-Seite ruft Bridge.provide_safe() Funktionen auf der MCU-Seite auf (da servo.write() eine Hardware-API ist)
- ⚠️ Reserviert: /dev/ttyHS1 (Linux) und Serial1 (MCU) werden vom Arduino Router verwendet – öffnen Sie sie nie direkt
Kurz gesagt: MPU sendet Winkelbefehl → MCU treibt Servomotor → Servomotor bewegt sich auf Position.
MCU-Skizze – Servomotor-Steuerung mit Bridge und Monitor-Ausgabe:
Python-Skript (Arduino App Lab) – Steuern Sie den Servomotor von Linux aus:
- Notiz: 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 /dev/ttyHS1 (auf Linux) direkt oder verwenden Sie Serial1 (auf MCU) in Ihrem Code – diese sind vom Arduino Router reserviert und der Zugriff auf sie 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, installieren Sie die Servo und Arduino_RouterBridge Bibliotheken, und klicken Sie auf Ausführen.
- Python-Skript hinzufügen: Fügen Sie den Python-Code oben in die Python-Registerkarte derselben App ein.
- Führen Sie die App aus: Klicken Sie auf Ausführen – Python durchläuft den Servomotor automatisch durch Links-, Mittel-, Rechts- und Mittelpositionen.
- Überprüfen Sie die Konsole: Öffnen Sie die Registerkarte Konsole → Unterkarte MCU Monitor, um Servomotor-Positionsmeldungen zu sehen.
App Lab Konsolenausgabe
Telegram-Integration
Steuern Sie den Servomotor von überall aus über Telegram.
Wenn Sie noch keinen Telegram-Bot haben, lesen Sie 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 und auf dem STM32 ausgeführt wird, bevor Sie fortfahren.
Python-Skript (Arduino App Lab) – Telegram-Bot für Servomotor-Steuerung:
- Notiz: Ersetzen Sie YOUR_BOT_TOKEN mit dem Token, der von @BotFather auf Telegram erhalten wurde.
- Senden Sie /left, um den Servomotor auf 0° zu bewegen.
- Senden Sie /center, um den Servomotor auf 90° zu bewegen.
- Senden Sie /right, um den Servomotor auf 180° zu bewegen.
Schnelle Schritte
- MCU-Skizze hochladen: Verwenden Sie die Bridge MCU-Skizze aus dem vorherigen Abschnitt (laden Sie sie zuerst hoch, falls noch nicht geschehen).
- Telegram-Skript einfügen: Kopieren Sie den Python-Code oben in die Python-Registerkarte 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 /left – der Servomotor bewegt sich auf 0°. Senden Sie /center – er geht auf 90°. Senden Sie /right – er geht auf 180°.
App Lab Python-Konsolenausgabe
ArduinoBot
OpenClaw-Integration
Sie können die OpenClaw an dieses Tutorial anpassen, indem Sie die Anleitung unter Arduino Uno Q - OpenClaw Tutorial lesen.
Anwendungs-/Projektideen
- Remote-Kameraschwenk: Montieren Sie eine Kamera auf einem Servomotor und richten Sie sie mit Telegram-Befehlen aus
- Automatisiertes Ventil: Verwenden Sie einen Servomotor, um ein Wasserventil zu öffnen oder zu schließen, das durch eine Telegram-Nachricht ausgelöst wird
- Türsperrenmechanismus: Drehen Sie einen Servomotor, um einen Türschloss zu verankern oder zu entsperren, ferngesteuert
- Sonnenverfolger: Verwenden Sie einen Lichtsensor, der aus der MPU abliest, um ein Solarpanel auf die Sonne auszurichten
- Roboterarmgelenk: Bauen Sie einen Multi-Servo-Roboterarm und steuern Sie jedes Gelenk über Telegram
Fordere dich selbst heraus
- Einfach: Fügen Sie einen /status Telegram-Befehl hinzu, der den aktuellen Servomotorwinkel meldet (links, Mitte oder rechts)
- Mittel: Implementieren Sie sanfte Bewegungen zwischen Positionen durch schrittweise Schrittweiterleitung Grad für Grad im Bridge-Callback
- Erweitert: Fügen Sie mehrere vordefinierte Positionen (/pos1, /pos2, usw.) hinzu, die über Telegram-Befehle konfiguriert werden können