Arduino UNO Q - Servomotor

Dieses Tutorial zeigt Ihnen, wie Sie einen Servomotor mit einem Arduino UNO Q steuern. Speziell lernen Sie:

Arduino UNO Q Servomotor

Hardware erforderlich

1×Arduino UNO Q
1×USB-Kabel für Arduino Uno Q
1×Servomotor
1×Jumper-Drähte
1×(Empfohlen) Schraubklemmenblock-Shield für Arduino Uno
1×(Empfohlen) Sensors/Servo Expansion Shield for Arduino Uno
1×(Empfohlen) Breadboard-Shield für Arduino Uno
1×(Empfohlen) Gehäuse für Arduino Uno
1×(Empfohlen) Prototyping-Grundplatte & Breadboard-Kit für Arduino Uno

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

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.
Servomotor Pinbelegung

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.

Arduino UNO Q Servomotor Verdrahtungsschema

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.

Arduino UNO Q Servomotor externe Stromversorgung Verdrahtungsschema

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:
#include <Servo.h>
  • Erstellen Sie ein Servo-Objekt:
Servo servo;

Wenn Sie mehrere Servomotoren verwalten, deklarieren Sie einfach zusätzliche Servo-Objekte.

Servo servo1; Servo servo2;
  • Verbinden Sie den Steuerpin des Arduino UNO Q mit dem Signalpin des Servomotors, z. B. Pin 9.
servo.attach(9);
  • Schließlich drehen Sie den Servomotor auf den gewünschten Winkel, z. B. 90 Grad.
servo.write(90);

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:

/* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-servo-motor */ #include <Servo.h> Servo servo; void setup() { servo.attach(9); // Connect the servo signal wire to pin 9 servo.write(0); // Move to 0 degrees at startup } void loop() { // Sweep from 0 to 180 degrees for (int pos = 0; pos <= 180; pos += 1) { servo.write(pos); delay(10); } // Sweep from 180 back to 0 degrees for (int pos = 180; pos >= 0; pos -= 1) { servo.write(pos); delay(10); } }

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.
Neue App in Arduino App Lab auf Arduino UNO Q 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.
Arduino App Lab App-Ordner und Dateien auf Arduino UNO Q
  • Suchen Sie die Datei sketch/sketch.ino – hier werden Sie die MCU-Skizze einfügen.
  • Einfügen der Skizze: Kopieren Sie den MCU-Code oben und fügen Sie ihn in die Skizzendatei ein. Behalten Sie andere Dateien als Standard.
    • Install the library: Click the Add sketch library button (the open book icon with a + sign) in the left sidebar.
    Add sketch library in Arduino App Lab on Arduino UNO Q
    • Search for Servo created by Michael Margolis, Arduino and click the Install button.
    My Apps / DIYables Apps
    Run
    Bricks
    No bricks added...
    Sketch Libraries
    No sketch libra...
    Files
    python
    sketch
    .gitignore
    README.md
    app.yaml
    sketch.ino
    Add sketch library
    Servo Michael Margolis, Arduino

    This library can control a great number of servos.
    It makes careful use of timers: the library can control 12 servos using only 1 timer.
    On the Arduino Due you can control up to 60 servos.

    1.2.1
    Install
    More Info
    • Search for Arduino_RouterBridge created by Arduino and click the Install button.
    My Apps / DIYables Apps
    Run
    Bricks
    No bricks added...
    Sketch Libraries
    No sketch libra...
    Files
    python
    sketch
    .gitignore
    README.md
    app.yaml
    sketch.ino
    Add sketch library
    Arduino_RouterBridge Arduino

    This library provides a simple RPC bridge for Arduino UNO Q boards, allowing communication between the board and other devices using MsgPack serialization.

    0.4.1
    Install
    More Info
    • Hochladen: Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab, um zu kompilieren und zum STM32 hochzuladen.
    Klicken Sie auf die Schaltfläche Ausführen in Arduino App Lab auf Arduino UNO Q
    • 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.

    #include <Servo.h> Servo servo; #define MOVING_TIME 3000 // Duration (ms) for the servo to move from startAngle to stopAngle unsigned long moveStartTime; int startAngle = 30; int stopAngle = 90; void setup() { servo.attach(9); moveStartTime = millis(); } void loop() { unsigned long progress = millis() - moveStartTime; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, startAngle, stopAngle); servo.write(angle); } }

    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:

    /* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-servo-motor */ #include "Arduino_RouterBridge.h" #include <Servo.h> Servo servo; void servo_left() { servo.write(0); Monitor.println("Servo: 0 degrees (left)"); } void servo_center() { servo.write(90); Monitor.println("Servo: 90 degrees (center)"); } void servo_right() { servo.write(180); Monitor.println("Servo: 180 degrees (right)"); } void setup() { Bridge.begin(); Monitor.begin(); servo.attach(9); servo.write(90); // Start at center position Bridge.provide_safe("left", servo_left); Bridge.provide_safe("center", servo_center); Bridge.provide_safe("right", servo_right); Monitor.println("Servo Motor Bridge ready"); } void loop() {}

    Python-Skript (Arduino App Lab) – Steuern Sie den Servomotor von Linux aus:

    /* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-servo-motor */ from arduino.app_utils import * import time def loop(): print("Servo at 0 degrees (left)") Bridge.call("left") time.sleep(2) print("Servo at 90 degrees (center)") Bridge.call("center") time.sleep(2) print("Servo at 180 degrees (right)") Bridge.call("right") time.sleep(2) print("Servo at 90 degrees (center)") Bridge.call("center") time.sleep(2) App.run(user_loop=loop)
    • 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

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    Message (Enter to send a message to "Newbiely" on usb(2820070321))
    New Line
    9600 baud
    Servo Motor Bridge ready Servo: 0 degrees (left) Servo: 90 degrees (center) Servo: 180 degrees (right) Servo: 90 degrees (center)

    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:

    /* * Dieser Arduino UNO Q Code wurde von newbiely.de entwickelt * Dieser Arduino UNO Q Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/arduino-uno-q/arduino-uno-q-servo-motor */ from arduino.app_utils import * import requests import time BOT_TOKEN = "YOUR_BOT_TOKEN" API_URL = f"https://api.telegram.org/bot{BOT_TOKEN}" last_update_id = 0 def send_message(chat_id, text): requests.post(f"{API_URL}/sendMessage", json={"chat_id": chat_id, "text": text}) def get_updates(): global last_update_id resp = requests.get(f"{API_URL}/getUpdates", params={"offset": last_update_id + 1, "timeout": 5}) return resp.json().get("result", []) def loop(): global last_update_id updates = get_updates() for update in updates: last_update_id = update["update_id"] msg = update.get("message", {}) chat_id = msg.get("chat", {}).get("id") text = msg.get("text", "").strip() if text == "/left": Bridge.call("left") send_message(chat_id, "Servo moved to 0 degrees (left).") elif text == "/center": Bridge.call("center") send_message(chat_id, "Servo moved to 90 degrees (center).") elif text == "/right": Bridge.call("right") send_message(chat_id, "Servo moved to 180 degrees (right).") else: send_message(chat_id, "Commands:\n/left — move to 0°\n/center — move to 90°\n/right — move to 180°") time.sleep(1) App.run(user_loop=loop)
    • 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

    DIYables_Apps
    Stop
    sketch.ino
    1#include "Arduino_RouterBridge.h"
    Serial Monitor
    Python
    [2026-04-29 12:00:01] Telegram: /left [2026-04-29 12:00:01] Servo moved to 0 degrees (left). [2026-04-29 12:02:10] Telegram: /center [2026-04-29 12:02:10] Servo moved to 90 degrees (center). [2026-04-29 12:04:05] Telegram: /right [2026-04-29 12:04:05] Servo moved to 180 degrees (right).
    Telegram
    Telegram 12:45
    Welcome to Telegram!
    ArduinoBot 10:19
    Chatting with Arduino...
    telegram-botfather
    BotFather Yesterday
    Your bot has been created.

    ArduinoBot

    bot
    Today
    /left
    10:15 AM ✓✓
    Servo moved to 0 degrees (left).
    10:16 AM
    /center
    10:17 AM ✓✓
    Servo moved to 90 degrees (center).
    10:18 AM
    /right
    10:19 AM ✓✓
    Servo moved to 180 degrees (right).
    10:20 AM

    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

    ※ UNSERE NACHRICHTEN

    • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!