Zpět na články

Ovládání servo motoru pomocí ESP32 (Arduino IDE)

Servo motor je jeden z nejpoužívanějších motorů v robotice a IoT projektech. Pomocí mikrokontroleru ESP32 lze servo ovládat v rozsahu 0–180°.

Ovládání servo motoru pomocí ESP32 (Arduino IDE)

V tomto článku si ukážeme:

  • jak zapojit servo motor k ESP32
  • jak nainstalovat potřebnou knihovnu
  • jak vytvořit jednoduchý program pro otáčení serva

Na rozdíl od původního projektu zde nepoužijeme web server. Servo bude řízeno přímo programem.

Jak funguje servo motor

Servo motor je speciální typ motoru, který umožňuje přesné nastavení úhlu natočení.

Na rozdíl od klasického DC motoru se servo netočí neustále, ale nastavuje se na konkrétní pozici.

Servo se ovládá pomocí PWM signálu (Pulse Width Modulation). Šířka pulzu určuje, na jaký úhel se servo nastaví.

Například:

  • krátký pulz → servo kolem
  • střední pulz → servo kolem 90°
  • dlouhý pulz → servo kolem 180°

ESP32 umí generovat PWM signál, takže servo lze ovládat přímo z mikrokontroleru.

ESP32 Blog image

Potřebné komponenty

Pro tento projekt potřebujeme pouze několik základních součástek:

  • ESP32 vývojová deska (např. ESP32 DevKit)
  • mikro servo motor (například SG90)
  • propojovací vodiče
  • případně breadboard

Zapojení servo motoru

Servo má obvykle tři vodiče:

  • červený – napájení (VCC)
  • hnědý nebo černý – zem (GND)
  • oranžový nebo žlutý – signál (PWM)

Zapojení k ESP32 může vypadat například takto:

  • VCC → 5V nebo 3.3V
  • GND → GND
  • signal → GPIO 13

Pin 13 použijeme pro řízení serva, ale lze použít i jiné PWM piny.

ESP32 Blog image

Instalace knihovny pro servo

Pro jednoduché ovládání serva je vhodné použít knihovnu ESP32Servo.

Postup instalace v Arduino IDE:

  1. otevřít Sketch → Include Library → Manage Libraries
  2. vyhledat ESP32Servo
  3. kliknout na Install

Tato knihovna usnadňuje generování správného PWM signálu pro servo.

ESP32 Blog image

Program pro ovládání serva

Následující program bude servo otáčet z 0° do 180° a zpět.

servo.cpp
1#include <ESP32Servo.h> 2 3Servo servo1; 4 5// pin pro servo 6static const int servoPin = 13; 7 8void setup() { 9 10 Serial.begin(115200); 11 12 // připojení serva na pin 13 servo1.attach(servoPin); 14 15} 16 17void loop() { 18 19 // otáčení serva od 0° do 180° 20 for(int pos = 0; pos <= 180; pos++) { 21 22 servo1.write(pos); 23 Serial.println(pos); 24 delay(20); 25 26 } 27 28 // otáčení serva zpět 29 for(int pos = 180; pos >= 0; pos--) { 30 31 servo1.write(pos); 32 Serial.println(pos); 33 delay(20); 34 35 } 36 37}

Tento program postupně mění úhel serva a vypisuje aktuální hodnotu do Serial Monitoru.

Testování programu

Po nahrání programu do ESP32 by se servo mělo:

  1. otočit z 0° na 180°
  2. poté zpět z 180° na 0°
  3. celý cyklus se bude opakovat

Současně se bude aktuální úhel zobrazovat v Serial Monitoru.

Možná rozšíření projektu

Tento jednoduchý projekt lze dále rozšířit například o:

  • ovládání serva pomocí tlačítek
  • řízení serva joystickem
  • automatické otevírání dveří
  • robotické rameno
  • kamerový držák (pan-tilt)

Servo motor je základní součástí mnoha robotických projektů.

Shrnutí

Pomocí ESP32 lze servo motor ovládat velmi jednoduše. Stačí:

  1. správně zapojit servo
  2. nainstalovat knihovnu ESP32Servo
  3. použít funkci write() pro nastavení úhlu

Díky tomu můžeme snadno vytvářet projekty s přesným pohybem motoru.

Nakupte svoje ESP32 ještě dnes!

Doprava Zásilkovnou za 89 Kč
Platba dobírkou
Vrácení do 30 dnů
Omezené zásoby - skladem

ESP32-S3 DevKit USB-C

Kompletní vývojová deska s USB-C

240MHz dvoujádrový
WiFi 802.11 b/g/n
Bluetooth 4.2 + BLE
4MB Flash paměť
520KB SRAM
38 GPIO pinů
209za kus

Množstevní slevy:

1
Celkem
209
Objednat

Bezpečná platba při převzetí zásilky nebo online platba přes Comgate, a.s.