ESP32 - Schallsensor - Servomotor

In diesem Tutorial werden wir untersuchen, wie man den Schallsensor verwendet, um einen Servomotor zu steuern. Genauer gesagt werden wir zwei spannende Anwendungen näher betrachten:

Erforderliche Hardware

1×ESP32 ESP-WROOM-32 Entwicklungsmodul
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×Schallsensor
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 (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 und Schallsensor

Wenn Sie nichts über Servomotoren und Schallsensoren wissen (Pinbelegung, wie sie funktionieren, wie man sie programmiert ...), informieren Sie sich in den folgenden Tutorials darüber:

Verdrahtungsdiagramm

ESP32-Schallsensor-Servomotor-Verdrahtungsdiagramm

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

Wenn Sie nicht wissen, wie Sie ESP32 und andere Komponenten mit Strom versorgen, finden Sie Anleitungen im folgenden Tutorial: Wie man ESP32 mit Strom versorgt.

ESP32-Code – Sound-Schalter schaltet den Winkel des Servomotors um

Der unten stehende Code wechselt den Winkel des Servomotors bei jeder Tonerkennung zwischen 0 und 90 Grad.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 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/esp32-sound-sensor-servo-motor */ #include <Servo.h> #define SENSOR_PIN 25 // The ESP32 pin GPIO25 connected to the sound sensor #define SERVO_PIN 26 // The ESP32 pin GPIO26 connected to the servo motor Servo servo; // create servo object to control a servo // variables will change: int angle = 0; // the current angle of servo motor int prev_sound_state; // the previous state of sound sensor int sound_state; // the current state of sound sensor void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set ESP32 pin to input mode servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object servo.write(angle); sound_state = digitalRead(SENSOR_PIN); } void loop() { prev_sound_state = sound_state; // save the last state sound_state = digitalRead(SENSOR_PIN); // read new state if (prev_sound_state == HIGH && sound_state == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); // change angle of servo motor if (angle == 0) angle = 90; else if (angle == 90) angle = 0; // control servo motor arccoding to the angle servo.write(angle); } }

Schnelle Schritte

  • Falls Sie ESP32 zum ersten Mal verwenden, sehen Sie sich die Einrichtung der ESP32-Umgebung in der Arduino IDE an.
  • Schließen Sie die Verkabelung wie im obigen Bild an.
  • Schließen Sie das ESP32-Board über ein Micro-USB-Kabel an Ihren PC an.
  • Öffnen Sie die Arduino IDE auf Ihrem PC.
  • Wählen Sie das richtige ESP32-Board (z. B. ESP32 Dev Module) und den COM-Port aus.
  • Klicken Sie auf das Bibliotheken-Symbol in der linken Leiste der Arduino IDE.
  • Geben Sie ServoESP32 in das Suchfeld ein, suchen Sie dann nach der Servo-Bibliothek von Jaroslav Paral. Bitte beachten Sie, dass sowohl Version 1.1.1 als auch 1.1.0 von Fehlern betroffen sind. Wählen Sie bitte eine andere Version.
  • Klicken Sie auf den Installieren-Button, um die Servo-Bibliothek für ESP32 zu installieren.
ESP32-Servomotor-Bibliothek
  • Schließe den ESP32 über ein USB-Kabel an den PC an
  • Öffne die Arduino-IDE, wähle das richtige Board und den richtigen Port aus
  • Kopiere den obigen Code und öffne ihn in der Arduino-IDE
  • Klicke in der Arduino-IDE auf die Schaltfläche Hochladen, um den Code auf den ESP32 hochzuladen
  • Klatsche vor dem Schallsensor in die Hände
  • Beobachte die Veränderung des Servomotors

ESP32-Code - geräuschaktivierter Servomotor für einen bestimmten Zeitraum

Der folgende Code dreht den Servomotor für eine bestimmte Zeit auf 90 Grad, wenn ein Ton erkannt wird. Nach Ablauf dieser Zeit wird der Servomotor wieder auf 0 Grad gedreht.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 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/esp32-sound-sensor-servo-motor */ #include <Servo.h> #define SENSOR_PIN 25 // The ESP32 pin GPIO25 connected to the sound sensor #define SERVO_PIN 26 // The ESP32 pin GPIO26 connected to the servo motor #define TIME_PERIOD 5000 // in milliseconds Servo servo; // create servo object to control a servo // variables will change: int prev_sound_state; // the previous state of sound sensor int sound_state; // the current state of sound sensor void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set ESP32 pin to input mode servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object servo.write(0); sound_state = digitalRead(SENSOR_PIN); } void loop() { prev_sound_state = sound_state; // save the last state sound_state = digitalRead(SENSOR_PIN); // read new state if (prev_sound_state == HIGH && sound_state == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); servo.write(90); // control servo motor to 90 degree delay(TIME_PERIOD); servo.write(0); // control servo motor to 0 degree } }

Bitte beachten Sie, dass der oben erwähnte Code die delay()-Funktion aus Gründen der Einfachheit verwendet. Wenn Sie jedoch zusätzlichen Code hinzufügen, kann dieser während der Verzögerung blockiert werden. Um dies zu vermeiden, implementiert der folgende Code einen nicht-blockierenden Ansatz, der die millis()-Funktion anstelle von delay verwendet, um das Blockieren zu verhindern.

/* * Dieser ESP32 Code wurde von newbiely.de entwickelt * Dieser ESP32 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/esp32-sound-sensor-servo-motor */ #include <Servo.h> #define SENSOR_PIN 25 // The ESP32 pin GPIO25 connected to the sound sensor #define SERVO_PIN 26 // The ESP32 pin GPIO26 connected to the servo motor #define TIME_PERIOD 5000 // in milliseconds Servo servo; // create servo object to control a servo // variables will change: int prev_sound_state; // the previous state of sound sensor int sound_state; // the current state of sound sensor unsigned long lastTime; // the current state of sound sensor int angle = 0; void setup() { Serial.begin(9600); // initialize serial pinMode(SENSOR_PIN, INPUT); // set ESP32 pin to input mode servo.attach(SERVO_PIN); // attaches the servo on pin 9 to the servo object servo.write(angle); sound_state = digitalRead(SENSOR_PIN); } void loop() { prev_sound_state = sound_state; // save the last state sound_state = digitalRead(SENSOR_PIN); // read new state if (prev_sound_state == HIGH && sound_state == LOW) { // state change: HIGH -> LOW Serial.println("The sound has been detected"); angle = 90; servo.write(angle); // control servo motor to 90 degree lastTime = millis(); } if (angle == 90 && (millis() - lastTime) > TIME_PERIOD) { angle = 0; servo.write(angle); // control servo motor to 0 degree } }

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!