ESP8266 - Servomotor

Dieses Tutorial erklärt Ihnen, wie Sie den ESP8266 verwenden, um einen Servomotor zu steuern. Im Detail werden wir lernen:

Erforderliche Hardware

1×ESP8266 NodeMCU
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 ESP8266
1×(Empfohlen) Stromverteiler für ESP8266 Typ-C

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (30 Sensoren/Displays)
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.

Über Servomotor

Ein Servomotor ist eine Komponente, die in der Lage ist, ihre Welle zu drehen (in der Regel innerhalb eines Bereichs von 0 bis 180 Grad), um die Winkelposition eines Objekts zu steuern.

Die Pinbelegung des Servomotors

Der Servomotor hat drei Pins:

  • VCC-Pin (in der Regel rot) muss mit VCC (5V) verbunden werden
  • GND-Pin (in der Regel schwarz oder braun) muss mit GND (0V) verbunden werden
  • Signalleitung (in der Regel gelb oder orange), die das PWM-Steuersignal von einem ESP8266-Pin empfängt
Servomotor-Pinbelegung

ESP8266 - Servomotor

Einige der ESP8266-Pins können so programmiert werden, dass sie ein PWM-Signal erzeugen. Wenn der Signaleingang des Servomotors mit einem ESP8266-Pin verbunden wird und dieser Pin so programmiert ist, dass er PWM erzeugt, können wir den Servomotor steuern.

Dank der ESP8266 Servo-Bibliothek ist die Steuerung eines Servomotors einfach. Wir müssen nicht verstehen, wie der Servomotor funktioniert oder wie man ein PWM-Signal erzeugt. Alles, was wir tun müssen, ist zu lernen, wie man die Bibliothek verwendet.

Verdrahtungsdiagramm

ESP8266 NodeMCU Servomotor-Schaltplan

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

Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.

Zur Vereinfachung wird das oben gezeigte Verdrahtungsdiagramm zu Test- oder Lernzwecken sowie für einen Servomotor mit geringem Drehmoment verwendet. Tatsächlich empfehlen wir dringend die Verwendung einer externen Stromversorgung für den Servomotor. Das unten gezeigte Verdrahtungsdiagramm veranschaulicht, wie man den Servomotor an eine externe Stromquelle anschließt.

ESP8266 NodeMCU-Servomotor Schaltplan der externen Stromversorgung

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

Wie man einen Servomotor programmiert

Der Arduino-ESP8266-Kern kommt bereits mit seiner eingebauten Servo-Bibliothek, sodass wir sie nicht installieren müssen.

  • Die Bibliothek einbinden:
#include <Servo.h>
  • Erzeuge ein Servo-Objekt:
Servo servo;

Wenn Sie mehr als einen Servomotor haben, deklarieren Sie einfach zusätzliche Servo-Objekte:

Servo servo1; Servo servo2;
  • Weisen Sie den Steuerpin des ESP8266 dem Signalpin des Servomotors zu. Zum Beispiel Pin D7:
servo.attach(D7);
  • Schließlich drehen Sie den Servomotor auf den erforderlichen Winkel. Zum Beispiel 90°
servo.write(90);

ESP8266-Code

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU 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/esp8266/esp8266-servo-motor */ #include <Servo.h> Servo servo; // erstelle ein Servo-Objekt zur Steuerung eines Servos int pos = 0; // Variable zur Speicherung der Servoposition void setup() { servo.attach(D7); // schließt den Servo am Pin D7 an das Servo-Objekt an } void loop() { for (pos = 0; pos <= 180; pos += 1) { // dreht von 0 Grad bis 180 Grad // in Schritten von 1 Grad servo.write(pos); // Servo auf die in der Variablen 'pos' gespeicherte Position setzen delay(10); // wartet 10 ms, bis der Servo die Position erreicht } for (pos = 180; pos >= 0; pos -= 1) { // dreht von 180 Grad auf 0 Grad servo.write(pos); // Servo auf die in der Variablen 'pos' gespeicherte Position setzen delay(10); // wartet 10 ms, bis der Servo die Position erreicht } }

Schnelle Schritte

Um mit dem ESP8266 in der Arduino-IDE zu beginnen, folgen Sie diesen Schritten:

  • Schau dir das Tutorial zur Einrichtung der ESP8266-Umgebung in der Arduino-IDE an, falls du ESP8266 zum ersten Mal verwendest.
  • Bauteile wie im Diagramm verdrahten.
  • Verbinde das ESP8266-Board mit deinem Computer über ein USB-Kabel.
  • Öffne die Arduino IDE auf deinem Computer.
  • Wähle das richtige ESP8266-Board, z. B. NodeMCU 1.0 (ESP-12E Module), und den entsprechenden COM-Port.
  • Verbinde deinen ESP8266 mit dem PC über ein USB-Kabel.
  • Starte die Arduino IDE, wähle das richtige Board und den richtigen Port aus.
  • Kopiere den bereitgestellten Code und öffne ihn in der Arduino IDE.
  • Klicke in der Arduino IDE auf die Upload-Schaltfläche, um den Code zu kompilieren und auf den ESP8266 hochzuladen.
Wie man Code auf den ESP8266 NodeMCU mit der Arduino IDE hochlädt
  • Schau dir das Ergebnis an: Der Servomotor bewegt sich im Uhrzeigersinn und gegen den Uhrzeigersinn.

Code-Erklärung

Schau dir die Zeile-für-Zeile-Erklärung an, die in den Kommentaren des Quellcodes enthalten ist!

Wie man die Geschwindigkeit eines Servomotors steuert

Durch die Verwendung der Funktionen map() und millis() können wir die Geschwindigkeit des Servomotors sanft regeln, ohne den übrigen Code zu behindern.

/* * Dieser ESP8266 NodeMCU Code wurde von newbiely.de entwickelt * Dieser ESP8266 NodeMCU 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/esp8266/esp8266-servo-motor */ #include <Servo.h> Servo servo; unsigned long MOVING_TIME = 3000; // Bewegungszeit beträgt 3 Sekunden unsigned long move_start_ms; int angle_start = 30; // 30° int angle_stop = 90; // 90° void setup() { servo.attach(D7); move_start_ms = millis(); // Bewegung starten // TODO: anderer Code } void loop() { unsigned long progress = millis() - move_start_ms; if (progress <= MOVING_TIME) { long angle = map(progress, 0, MOVING_TIME, angle_start, angle_stop); servo.write(angle); } // TODO: anderer Code }

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!