SG90 micro servo with ESP32
Supply 5 V
Bus GPIO
Pins and ESP32 wiring
| Pin | Role | ESP32 pin | Notes |
|---|---|---|---|
| GND | Ground | GND | Brown wire |
| VCC | Power | VIN | Red wire, 5 V: use VIN. Can reset the ESP32 if powered from USB alone under load |
| SIG | Input (the ESP32 drives it) | D25 | Orange wire. 50 Hz PWM, 0.5 to 2.4 ms pulses |
Suggested wiring for the 30-pin ESP32 DevKit, avoiding flash, input-only and strapping pins. BoardPilot checks it for you as you wire.
This module is sold for 5 V. Its outputs may be 5 V: use a level shifter or a voltage divider on ESP32 inputs.
Good to know
- A moving servo draws current peaks that can reset a USB-powered board. Power servos from a separate 5 V supply and connect the grounds. (Arduino Servo library reference, Servos draw considerable power; use a separate supply)
Starter code (Arduino)
void setup() { pinMode(25, OUTPUT); } // SIG
void loop() {
digitalWrite(25, HIGH);
delay(500);
digitalWrite(25, LOW);
delay(500);
}
Sources
- Tower Pro SG90 datasheet, Wires: brown GND, red +5 V, orange PWM; 50 Hz, 1 to 2 ms
Try it in 3D in BoardPilot
SG90 micro servo on other boards: wiring and code
Arduino Mega 2560 R3 Arduino Nano Arduino Uno R3 WeAct Black Pill STM32F411CE ESP32-C3-DevKitM-1 ESP32-S3-DevKitC-1 Nordic nRF52840 DK NUCLEO-F401RE Raspberry Pi Pico 2 Raspberry Pi Pico W Raspberry Pi Pico Teensy 4.1
Learn the basics
Lesson: GPIO: pins in and out Lesson: PWM, state machines and more Lesson: Hardware basics for software developers GPIO PWM (pulse-width modulation) Level shifter Logic level (HIGH and LOW)
Related parts
18650 Li-ion cell in holder28BYJ-48 stepper + ULN2003 driver433 MHz transmitter (FS1000A)74HC595 shift registerA4988 stepper driverActive buzzer
Part data: CC BY 4.0, free to reuse with credit to BoardPilot.