ESP32 - Servomotor

Dieses Tutorial zeigt Ihnen, wie Sie einen Servomotor mit einem ESP32 und MicroPython steuern. Im Einzelnen lernen wir:

ESP32 MicroPython Servomotor

Erforderliche Hardware

1×38-pin ESP32 ESP-WROOM-32 Dev Module - Narrow
1×(Alternativ) 38-pin ESP32 ESP-WROOM-32 Dev Module - Wide
1×(Alternativ) 30-pin ESP32 ESP-WROOM-32 Dev Module - Wide
1×(Alternativ) ESP32 Uno-form board
1×(Alternativ) ESP32 S3 Uno-form board
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×Servo-Motor
1×Verbindungskabel
1×(Empfohlen) Schraubklemmen-Erweiterungsboard für ESP32
1×(Empfohlen) Breakout Expansion Board for ESP32
1×(Empfohlen) Stromverteiler für ESP32

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 Starter-Kit (ESP32 enthalten)
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.

Überblick über Servo Motor

Ein Servomotor ist ein Bauteil, das seinen Hebel drehen kann, typischerweise von 0 bis 180 Grad. Er wird verwendet, um die Position eines Objekts einzustellen.

Pinbelegung

Dieses Beispiel zeigt die Verwendung eines Servomotors mit drei Pins:

  • VCC-Pin: Verbinden Sie den roten Draht mit VCC (5 Volt).
  • GND-Pin: Verbinden Sie den schwarzen oder braunen Draht mit GND (0 Volt).
  • Signal-Pin: Verbinden Sie den gelben oder orangefarbenen Draht, um das PWM-Steuersignal von einem ESP32-Pin zu empfangen.
Servomotor Pinbelegung

Verdrahtungsdiagramm

Online-Schaltpläne zeigen möglicherweise eine Verbindung zwischen dem VCC-Pin eines Servomotors und dem VBUS-Pin des ESP32-Boards. Vermeiden Sie dies, da es das ESP32-Board beschädigen kann.

ESP32 MicroPython Servo Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

Um Ihr ESP32-Board zu schützen, verwenden Sie eine separate Stromversorgung für den Servomotor. Der folgende Schaltplan zeigt, wie Sie den Servomotor an diese Stromquelle anschließen.

ESP32 MicroPython Servomotor Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

So verbinden Sie ESP32 und Servomotor

Stellen Sie sicher, dass Sie GND (Masse) der externen Stromversorgung mit GND des ESP32-Boards verbinden. Das ist entscheidend für die korrekte Funktion.

ESP32 MicroPython Code

/* * Dieser ESP32 MicroPython Code wurde von newbiely.de entwickelt * Dieser ESP32 MicroPython 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/esp32-micropython/esp32-micropython-servo-motor */ from DIYables_MicroPython_Servo import Servo import utime # Create a Servo object servo = Servo(26) # The ESP32 pin GPIO26 connected to the servo motor while True: # Move servo to different angles servo.move_to_angle(0) utime.sleep(2) servo.move_to_angle(90) utime.sleep(2) servo.move_to_angle(180) utime.sleep(2)

Schnelle Schritte

Hier finden Sie eine Anleitung, wie Sie Ihren MicroPython-Code auf dem ESP32 mit der Thonny IDE einrichten und ausführen:

  • Stellen Sie sicher, dass Thonny IDE auf Ihrem Computer installiert ist.
  • Vergewissern Sie sich, dass die MicroPython-Firmware auf Ihrem ESP32-Board geladen ist.
  • Wenn Sie zum ersten Mal einen ESP32 mit MicroPython verwenden, lesen Sie die Anleitung ESP32 MicroPython Erste Schritte für eine Schritt-für-Schritt-Anleitung.
  • Verbinden Sie das ESP32-Board gemäß dem bereitgestellten Schaltplan mit dem Servomotor.
  • Verbinden Sie das ESP32-Board mit einem USB-Kabel mit Ihrem Computer.
  • Öffnen Sie Thonny IDE auf Ihrem Computer.
  • Gehen Sie in Thonny IDE zu Tools Options.
  • Wählen Sie im Tab Interpreter aus dem Dropdown-Menü MicroPython (ESP32).
  • Stellen Sie sicher, dass der richtige Port ausgewählt ist. Thonny IDE erkennt ihn normalerweise automatisch, aber möglicherweise müssen Sie ihn manuell auswählen (z. B. COM12 unter Windows oder /dev/ttyACM0 unter Linux).
  • Navigieren Sie in Thonny IDE zu Tools Manage packages.
  • Suchen Sie nach “DIYables-MicroPython-Servo” und finden Sie dann die von DIYables erstellte Servomotor-Bibliothek.
  • Klicken Sie auf DIYables-MicroPython-Servo und dann auf den Button Install, um die Servomotor-Bibliothek zu installieren.
ESP32 MicroPython Servomotor-Bibliothek
  • Kopieren Sie den bereitgestellten MicroPython-Code und fügen Sie ihn in den Editor von Thonny ein.
  • Speichern Sie den Code auf Ihrem ESP32:
    • Klicken Sie auf den Save-Button oder drücken Sie Ctrl+S.
    • Wählen Sie im Speicherdialog MicroPython device.
    • Nennen Sie die Datei main.py.
  • Klicken Sie auf den grünen Run-Button (oder drücken Sie F5), um das Skript auszuführen.
  • Beobachten Sie den Servomotor: Er dreht sich langsam von 0 auf 180 Grad und kehrt dann allmählich von 180 auf 0 Grad zurück.

Code-Erklärung

Die Erklärung finden Sie in den Kommentaren des obigen ESP32-MicroPython-Codes.

So steuern Sie die Geschwindigkeit eines Servomotors

Das folgende MicroPython-Skript steuert einen Servo am ESP32 so, dass er sanft zwischen Winkeln wechselt, ohne das Programm zu blockieren. Es verwendet utime für die Zeitsteuerung und aktualisiert die Position des Servos regelmäßig, während die Hauptschleife für andere Aufgaben reaktionsfähig bleibt.

/* * Dieser ESP32 MicroPython Code wurde von newbiely.de entwickelt * Dieser ESP32 MicroPython 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/esp32-micropython/esp32-micropython-servo-motor */ from DIYables_MicroPython_Servo import Servo import utime # Create a Servo object servo = Servo(26) # The ESP32 pin GPIO26 connected to the servo motor # Define the start and stop angles and the duration for the movement start_angle = 30 stop_angle = 90 moving_time = 3000 # Duration in milliseconds # Function to map the progress to an angle def map_value(x, in_min, in_max, out_min, out_max): return (x - in_min) * (out_max - out_min) // (in_max - in_min) + out_min # Initial setup with timer move_start_time = utime.ticks_ms() # Main loop while True: progress = utime.ticks_diff(utime.ticks_ms(), move_start_time) # Calculate elapsed time since start if progress <= moving_time: # Calculate intermediate servo angle angle = map_value(progress, 0, moving_time, start_angle, stop_angle) servo.move_to_angle(angle) # Set servo position to calculated angle else: # Optionally, restart the motion or break the loop move_start_time = utime.ticks_ms() # Reset the timer to start the motion again

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

※ 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!