Èkọ́ ESP32 17/55 - Ṣiṣakoso Ẹ̀rọ Servo ní lílo ESP32 àti Potentiometer -ESP32 IoT Learning kit
Nínú ẹ̀kọ́ yìí, a óò kọ́ bí a ṣe ń ṣàkóso ẹ̀rọ servo kan nípa lílo microcontroller ESP32 àti potentiometer kan láti inú ESP32 IoT Learning kit ti SunFounder. Ní ìparí iṣẹ́ yìí, ìwọ yóò ní agbára láti ṣàtúnṣe igun ẹ̀rọ servo náà ní ọ̀nà tí ó dán wò nípa lílo potentiometer náà, tí ó ń jẹ́ kí ìṣàkóso jẹ́ pípé. Èyí jẹ́ ọ̀nà tí ó dára láti ṣàwárí agbára ESP32 àti bí ó ṣe ń ṣiṣẹ́ pẹ̀lú àwọn ẹ̀rọ.

Bí a ṣe ń lọ sínú àwọn àlàyé náà, a óò bo àwọn èròjà hardware tí a nílò, àwọn ìtọ́ni ìsopọ̀, àti àwọn àpẹẹrẹ kóòdù láti mú gbogbo nkan ṣiṣẹ́. Fún ìṣàfihàn tí ó hàn gbangba, rí i dájú pé o wo fídíò tí ó ní ṣe pẹ̀lú ẹ̀kọ́ yìí (nínú fídíò ní 0:30).
Àlàyé Hardware
Àwọn èròjà pàtàkì fún iṣẹ́ yìí ní ESP32 microcontroller, ẹ̀rọ servo kan (SG90), àti potentiometer kan. ESP32 jẹ́ microcontroller alágbára tí ó ní Wi-Fi àti Bluetooth tí a kọ́ sínú rẹ̀, tí ó mú un dára fún àwọn iṣẹ́ IoT. Ó ní agbára láti ṣàkóso oríṣiríṣi àwọn ẹ̀rọ, pẹ̀lú àwọn mọ́tò, pẹ̀lú ìpéye gíga.
Ẹ̀rọ servo SG90 jẹ́ èròjà tí a ń lò lọ́pọ̀lọpọ̀ tí ó lè yípo ní nǹkan bí 270 ìwọ̀n. Ó ń ṣiṣẹ́ lórí àmì PWM kan, níbi tí igun yíyípo ti jẹ́ dídáyé nípa ìbú àmì tí a rán sí i. Potentiometer náà ń ṣiṣẹ́ gẹ́gẹ́ bí resistor oníyípadà, tí ó ń jẹ́ kí o ṣàtúnṣe foltiège tí a rán sí ESP32, èyí tí ó yípo ẹ̀rọ servo náà padà.
Àwọn Àlàyé Datasheet
| Olùṣe | SG |
|---|---|
| Nọ́mbà apá | SG90 |
| Foltiege Logic/IO | 3.3 V (ESP32) |
| Foltiege ìpèsè | 5 V |
| Ìjáde lọ́wọ́ (fún ikanni) | 1.2 A |
| Ìjáde tí ó ga jùlọ (fún ikanni) | 2.5 A |
| Ìtọ́sọ́nà ìgbohùnsáfẹ́fẹ́ PWM | 50 Hz |
| Àwọn ìpele ìṣàkóso ìwọ̀n | 0.2 V (rẹ̀lẹ̀), 2.5 V (ga) |
| Ìdínkù foltiege / RDS(on) / ìkún | 0.5 V |
| Àwọn ìwọ̀n ooru | 85 °C tí ó pọ̀ jùlọ |
| Àpótí | Plastic |
| Àwọn àkíyèsí / àwọn oríṣi | Ó wà ní oríṣiríṣi àwọn irin jíjá |
- Rí i dájú pé a fi foltiege tí ó yẹ (5V) ṣe ìpèsè agbára fún ẹ̀rọ servo náà.
- So ilẹ̀ ẹ̀rọ servo náà pọ̀ mọ́ ilẹ̀ ESP32 fún ìtọ́kasí àpapọ̀.
- Lo àwọn àmì PWM tí ó yẹ láti ṣàkóso ipò ẹ̀rọ servo náà.
- Mọ̀ nípa àwọn ohun tí ẹ̀rọ servo náà nílò lọ́wọ́; lo ìpèsè agbára òde bí ó bá pọn dandan.
- Ṣàyẹ̀wò àwọn ìsopọ̀ pin tí ó tọ́ nígbà tí o ń so wọ́n láti yẹra fún àwọn àìtọ́ ìṣètò.
Àwọn Ìtọ́ni Ìsopọ̀

Láti so ẹ̀rọ servo àti potentiometer pọ̀ mọ́ ESP32, bẹ̀rẹ̀ nípa sísopọ̀ okun ilẹ̀ ẹ̀rọ servo náà (tí ó sábà jẹ́ dúdú tàbí brown) sí ọ̀kan lára àwọn pin ilẹ̀ lórí ESP32. Lẹ́yìn náà, so okun agbára (tí ó sábà jẹ́ pupa) ti ẹ̀rọ servo náà pọ̀ mọ́ pin 5V lórí ESP32. Ní ìkẹyìn, so okun àmì (tí ó sábà jẹ́ ọsàn tàbí funfun) láti ọ̀dọ̀ ẹ̀rọ servo náà pọ̀ mọ́ pin 25 lórí ESP32.
Fún potentiometer náà, so ọ̀kan lára àwọn pin òde pọ̀ mọ́ pin 3.3V lórí ESP32 àti pin òde kejì pọ̀ mọ́ ilẹ̀. Pin àárín potentiometer náà yẹ kí ó sopọ̀ mọ́ pin 34 lórí ESP32. Ìṣètò yìí jẹ́ kí ESP32 ka foltiege tí ó yípadà tí ń jáde láti ọ̀dọ̀ potentiometer náà, èyí tí a óò lò láti ṣàkóso ipò ẹ̀rọ servo náà.
Àwọn Àpẹẹrẹ Kóòdù & Ìṣàlàyé
Ìsopọ̀ kóòdù tí ó tẹ̀lé yìí bẹ̀rẹ̀ ẹ̀rọ servo náà àti ṣètò àwọn ìpín fún ṣíṣàkóso ìṣísẹ̀ rẹ̀:
#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
}
Nínú kóòdù yìí, a fi ESP32Servo library kún un àti ṣẹ̀dá àpẹẹrẹ ẹ̀rọ servo kan pẹ̀lú orúkọ myServo. A ṣàlàyé nọ́mbà pin fún ẹ̀rọ servo náà àti ṣètò àwọn ìbú pulse tí ó kéré jùlọ àti tí ó pọ̀ jùlọ tí ó bá àwọn ìwọ̀n igun ẹ̀rọ servo náà mu.
Lẹ́yìn náà, ẹ jẹ́ kí a wo loop tí ń gbé ẹ̀rọ servo náà lọ sẹ́yìn àti síwájú nígbà gbogbo:
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 yìí yí igun padà díẹ̀díẹ̀ láti 0 sí 180 ìwọ̀n àti padà, nípa lílo iṣẹ́ map láti yí igun náà padà sí ìbú pulse tí ó bá mu fún ẹ̀rọ servo náà. Ìyípadà kọ̀ọ̀kan tẹ̀lé pẹ̀lú ìdúró kúkúrú kan láti jẹ́ kí ẹ̀rọ servo náà dé ipò tuntun rẹ̀ ní ọ̀nà tí ó dán wò.
Ìṣàfihàn / Ohun tí Ó Yẹ Kí O Rí
Nígbà tí gbogbo nkan bá ti sopọ̀ tán àti tí a ti gbé kóòdù náà sókè, ìwọ yóò rí ẹ̀rọ servo náà tí ó ń gbé ara rẹ̀ lọ láti 0 sí 180 ìwọ̀n àti padà ní ọ̀nà tí ó dán wò. Bí o bá ṣàtúnṣe potentiometer náà, ẹ̀rọ servo náà yóò fi ipò tuntun hàn nípa foltiege tí potentiometer náà pèsè. Ṣọ́ra fún polarity tí ó yípadà nígbà tí o ń sopọ̀, nítorí ó lè ba àwọn èròjà rẹ̀ jẹ́ (nínú fídíò ní 3:45).
Àwọn Àkókò Fídíò
- 00:00 Bẹ̀rẹ̀
- 1:56 Kí ni mọ́tọ̀ servo
- 5:00 Ojú-ewé àkọsílẹ̀
- 6:33 Àlàyé fún fífi servo ṣiṣẹ́ pẹ̀lú waya
- 7:45 Yíyàn èbúté COMP fún ESP32 nínú Arduino IDE
- 9:27 Àlàyé kóòdù Arduino
- 14:31 Ìfihàn ìṣàkóso servo ní lílo ESP32
- 16:04 Fífi agbára fún servo yàtọ̀ sí 5V
- 18:47 Ṣíṣàkóso Servo láìlo loop
- 20:15 Ṣíṣàkóso Servo pẹ̀lú Potentiometer
- 21:37 Servo pẹ̀lú pot àlàyé kóòdù Arduino
#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);
}
}
Common Course Links
Common Course Files
Orisun & itọkasi
-
Iwe-ẹriESP32 Tutorial 17/55- SunFunder Servo motor documentationdocs.sunfounder.com
Fáìlìs📁
Fọọmu data (pdf)
-
DS5160 Servo motor datasheet
DS5160_datasheet.pdf0.33 MB
Awọn faili miiran
-
Download SG90 datasheet (PDF)
robojax-servo-sg90_datasheet.pdf