Search Code

Tutoriel ESP32 17/55 - Contrôle du moteur servo à l'aide de l'ESP32 et du potentiomètre - Kit d'apprentissage IoT ESP32

Tutoriel ESP32 17/55 - Contrôle du moteur servo à l'aide de l'ESP32 et du potentiomètre - Kit d'apprentissage IoT ESP32

Na boyekoli oyo, tokoyekola ndenge ya kokamba moteur ya servo na esaleli ya microcontrôleur ya ESP32 mpe potentiomètre longwa na kit ya koyekola ya IoT ya ESP32 ya SunFounder. Na suka ya projɛ oyo, okokoka kobongola ngonga ya moteur ya servo na ndenge ya pete na esaleli ya potentiomètre, mpo na kozwa kontrɔlɛ ya sikisiki. Oyo ezali nzela moko ya malamu mpo na koyekola makoki ya ESP32 mpe ndenge esalelaka na moteur.

Ntango tokotiya likebi na makambo ya minene, tokotonga biloko ya hardware oyo esengeli, mitindo ya kosangisa ba fils, mpe bandakisa ya code mpo na kosala ete nyonso esala malamu. Mpo na kotala malamu, tala video oyo ezali na boyekoli oyo (na video na 0:30).

Biloko ya Hardware

Biloko ya liboso mpo na projɛ oyo ezali microcontrôleur ya ESP32, moteur ya servo (SG90), mpe potentiomètre. ESP32 ezali microcontrôleur ya makasi oyo ezali na Wi-Fi mpe Bluetooth ya libanda, mpo na kosalela yango na ba projets ya IoT. Ezali na makoki ya kokamba biloko ndenge na ndenge, kati na yango ba moteur, na ndenge ya sikisiki.

Moteur ya servo SG90 ezali esaleli oyo eyebani mingi mpo na kobaluka pene na 270 degré. Esalaka na signal ya pulse-width modulation (PWM), epai ngonga ya kobaluka ezwamaka na monene ya pulse oyo etindamaka epai na yango. Potentiomètre ezali lokola résistance oyo ekoki kobongwana, mpo na kobongola voltage oyo etindamaka na ESP32, oyo yango mpe ekokamba esika ya servo.

Makambo ya Datasheet

Mosali SG
Numéro ya eteni SG90
Voltage ya logique/IO 3.3 V (ESP32)
Voltage ya alimentation 5 V
Courant ya libanda (na canal) 1.2 A
Courant ya likolo (na canal) 2.5 A
Motindo ya fréquence ya PWM 50 Hz
Bokonzi ya logique ya libanda 0.2 V (moké), 2.5 V (monene)
Kokita ya voltage / RDS(on) / saturation 0.5 V
Bokonzi ya température 85 °C max
Paquet Plastique
Makambo / ba variantes Ezali na ba types ya ba engrenages ndenge na ndenge

 

  • Kokanola ete servo ezali na voltage ya malamu (5V).
  • Kosangisa fil ya terre ya servo na terre ya ESP32 mpo na référence commune.
  • Salela ba signaux ya PWM ya malamu mpo na kokamba esika ya servo.
  • Zala na likebi na makambo ya courant ya servo; salela source ya puissance ya libanda soki esengeli.
  • Vérifier ba assignations ya ba pins ntango okosangisa ba fils mpo na kokima ba erreurs.

Mitindo ya kosangisa ba fils

ESP32-17-Sevo_motor-wiring

Mpo na kosangisa moteur ya servo mpe potentiomètre na ESP32, banda na kosangisa fil ya terre ya servo (mbala mingi noire to marron) na moko ya ba pins ya terre na ESP32. Na nsima, sangisa fil ya puissance (mbala mingi motane) ya servo na pin ya 5V na ESP32. Na suka, sangisa fil ya signal (mbala mingi orange to blanc) longwa na servo na pin 25 na ESP32.

Mpo na potentiomètre, sangisa pin moko ya libanda na pin ya 3.3V na ESP32 mpe pin mosusu ya libanda na terre. Pin ya kati ya potentiomètre esengeli kosangisama na pin 34 na ESP32. Nzela oyo epesi ESP32 makoki ya kotanga voltage oyo ebongwanaka longwa na potentiomètre, oyo ekosalelama mpo na kokamba esika ya servo.

Bandakisa ya Code & Ndimbola

Code oyo elandi ebandisi servo mpe etyaka ba paramètres mpo na kokamba mobembo na yango:

#include 

Servo myServo;
const int servoPin = 25;
const int minPulseWidth = 500; // 0.5 ms
const int maxPulseWidth = 2500; // 2.5 ms

void setup() {
  myServo.attach(servoPin, minPulseWidth, maxPulseWidth);
  myServo.setPeriodHertz(50); // Standard 50Hz servo
}

Na code oyo, tozali kosangisa bibliothèque ya ESP32Servo mpe tozali kosala exemple ya servo na kombo myServo. Tozali kopesa numéro ya pin mpo na servo mpe tozali koyika minPulseWidth mpe maxPulseWidth oyo ekokani na ba limites ya ngonga ya servo.

ESP32_servo_lib

Na nsima, tala loop oyo ezali kotambwisa servo na liboso mpe na nsima:

void loop() {
  for (int angle = 0; angle <= 180; angle++) {
    int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
    myServo.writeMicroseconds(pulseWidth);
    delay(15);
  }
  for (int angle = 180; angle >= 0; angle--) {
    int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
    myServo.writeMicroseconds(pulseWidth);
    delay(15);
  }
}

Loop oyo ezali kobongola ngonga mokemoke longwa na 0 kino na 180 degré mpe lisusu, na esaleli ya fonction map mpo na kobongola ngonga na pulse width oyo ekokani mpo na servo. Mbala na mbala, ezali na délai moké mpo na kopesa servo ntango ya kokoma na esika ya sika na ndenge ya pete.

Démonstration / Nini Okomona

Ntango nyonso esili kosangisama mpe code esili kotombolama, okomona moteur ya servo ezali kotambola na ndenge ya pete longwa na 0 kino na 180 degré mpe lisusu. Soki obongoli potentiomètre, servo esengeli kolakisa esika ya sika kolandana na voltage oyo potentiomètre epesi. Zala na likebi na polarité oyo ebongwanaki ntango okosangisa ba fils, mpo ete ekoki kosala ete biloko na yo ebeba (na video na 3:45).

Ba Timestamps ya Video

  • 00:00 Ebandela
  • 1:56 Nini moteur ya servo
  • 5:00 Lokasa ya makasí
  • 6:33 Ntína ya kotia singa ya servo
  • 7:45 Kopona esika ya COMP mpo na ESP32 na Arduino IDE
  • 9:27 Ntína ya kode ya Arduino
  • 14:31 Ndimbola ya kotambwisa servo na kopesa ESP32
  • 16:04 Kopesa nguya na servo longola 5V
  • 18:47 Kotambwisa Servo na ngambo ya loop
  • 20:15 Kotambwisa Servo na Potentiomètre
  • 21:37 Servo na pot kode ya Arduino elobami

Images

ESP32-17-Sevo_motor-schematic
ESP32-17-Sevo_motor-schematic
ESP32-17-Sevo_motor-wiring
ESP32-17-Sevo_motor-wiring
ESP32_servo_lib
ESP32_servo_lib
816-ESP32 Tutorial 17/55- Arduino code for controling servo motor
Langue: C++
#include <ESP32Servo.h>

// Define the servo and the pin it is connected to
Servo myServo;
const int servoPin = 25;

// Define the minimum and maximum pulse widths for the servo
const int minPulseWidth = 500; // 0.5 ms
const int maxPulseWidth = 2500; // 2.5 ms

void setup() {
  // Attach the servo to the specified pin and set its pulse width range
  myServo.attach(servoPin, minPulseWidth, maxPulseWidth);

  // Set the PWM frequency for the servo
  myServo.setPeriodHertz(50); // Standard 50Hz servo
}

void loop() {
  // Rotate the servo from 0 to 180 degrees
  for (int angle = 0; angle <= 180; angle++) {
    int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
    myServo.writeMicroseconds(pulseWidth);
    delay(15);
  }

  // Rotate the servo from 180 to 0 degrees
  for (int angle = 180; angle >= 0; angle--) {
    int pulseWidth = map(angle, 0, 180, minPulseWidth, maxPulseWidth);
    myServo.writeMicroseconds(pulseWidth);
    delay(15);
  }
}

Fichiers📁

Fiche technique (pdf)

Mabala a mangwe