Tutorial ESP32 17/55 - Xakinta Servo Motor iyadoo la isticmaalayo ESP32 iyo Potentiometer - Qalabka Barashada ESP32 IoT
Cashigarkii, waxaan baran doonnaa sida loo xakameeyo matoor servo iyadoo la adeegsanayo microcontroller-ka ESP32 iyo potentiometer ka tirsan qalabka barashada IoT ee ESP32 ee SunFounder. Marka aad dhamaystirto mashruucan, waxaad awood u yeelan doontaa inaad hagaajiso xagasha matoorka servo si habsami leh iyadoo la adeegsanayo potentiometer-ka, taasoo kuu oggolaanaysa xakameyn sax ah. Tani waa hab fiican oo lagu sahamiyo awoodaha ESP32 iyo sida uu ula xiriiro matoorada.

Markaan si qoto dheer u eegno faahfaahinta, waxaan dabooli doonnaa qaybaha qalabka ee lagama maarmaanka ah, tilmaamaha fiilada, iyo tusaalooyinka koodka si wax walba loo shideeyo. Si aad u hesho sawir muuqaal ah oo dheeri ah, hubi inaad daawato fiidiyowga la xidhiidha casharkan (fiidiyowga 0:30).
Qalabka La Sharaxay
Qaybaha ugu muhiimsan ee mashruucan waxaa ka mid ah ESP32 microcontroller-ka, matoorka servo (SG90), iyo potentiometer-ka. ESP32 waa microcontroller awood badan oo bixiya Wi-Fi iyo Bluetooth ku dhex dhisan, taasoo ka dhigaysa mid ku habboon mashruucyada IoT. Waxa uu awood u leeyahay inuu xakameeyo qalabyo kala duwan, oo ay ku jiraan matoorada, si sax ah oo sare leh.
Matoorka servo SG90 waa qayb si weyn loo isticmaalo oo u rogi kara qiyaastii 270 darajo. Wuxuu ku shaqeeyaa signal-ka PWM (pulse-width modulation), halkaasoo xagasha wareegga lagu go'aamiyo ballaca pulse-ka loo diro. Potentiometer-ku wuxuu u shaqeeyaa sidii resistor doorsooma, taasoo kuu ogolaanaysa inaad hagaajiso voltage-ka loo diro ESP32, kaas oo markaa xakameeya booska servo-ga.
Faahfaahinta Xaashida Xogta
| Soo saaraha | SG |
|---|---|
| Nambarka qaybta | SG90 |
| Voltage-ka Logic/IO | 3.3 V (ESP32) |
| Voltage-ka sahayda | 5 V |
| Korontada soo baxa (kanal kasta) | 1.2 A |
| Korontada ugu sarreysa (kanal kasta) | 2.5 A |
| Hagaha soo noqnoqoshada PWM | 50 Hz |
| Heerarka xadka gelinta | 0.2 V (hoose), 2.5 V (sare) |
| Hoos u dhaca voltage-ka / RDS(on) / saturation | 0.5 V |
| Xadka kulaylka | 85 °C ugu badnaan |
| Baakad | Balastiig |
| Qoraalo / noocyo kala duwan | Waxaa laga heli karaa noocyo gear ah oo kala duwan |
- Hubi in matoorka servo lagu shideeyo voltage ku habboon (5V).
- Ku xir dhulka (ground) ee servo-ga dhulka ESP32 si aad u hesho tixraac wadaag ah.
- Isticmaal signal-ka PWM ee ku habboon si aad u xakameyso booska servo-ga.
- Ka warqab baahida korontada ee servo-ga; isticmaal sahay koronto dibadeed haddii loo baahdo.
- Hubi meelaynta pin-ka ee saxda ah markaad fiilooyinka xirto si aad uga fogaato qalad.
Tilmaamaha Fiilada

Si aad ugu xirto matoorka servo iyo potentiometer-ka ESP32, waxaad ku bilaabi kartaa adigoo ku xira fiilada dhulka ee servo-ga (badanaa madow ama bunni) mid ka mid ah pin-yada dhulka ee ESP32. Marka xigta, ku xir fiilada korontada (badanaa cas) ee servo-ga pin-ka 5V ee ESP32. Ugu dambeyntii, ku xir fiilada signal-ka (badanaa orange ama cad) ee servo-ga pin-ka 25 ee ESP32.
Potentiometer-ka, ku xir hal pin oo dibadda ah pin-ka 3.3V ee ESP32 iyo kan kale ee dibadda dhulka. Pin-ka dhexe ee potentiometer-ka waa in lagu xiraa pin-ka 34 ee ESP32. Qaabkani wuxuu u oggolaanayaa ESP32 inuu akhriyo korontada doorsooma ee ka soo baxda potentiometer-ka, kaas oo loo isticmaali doono inuu xakameeyo booska servo-ga.
Tusaalooyinka Koodka & Sharaxaad
Qaybta koodka ee soo socota waxay bilaabaysaa servo-ga oo waxay dejisaa cabbirrada xakamaynta dhaqdhaqaaqiisa:
#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
}
Koodkan, waxaan ku daraynaa maktabadda ESP32Servo waxaanan abuuraynaa tusaale ka mid ah servo-ga oo magaciisu yahay myServo. Waxaan qeexaynaa nambarka pin-ka ee servo-ga waxaanan dejisaynaa ballaca pulse-ka ugu yar iyo ugu weyn ee u dhigma xadka xagasha servo-ga.
Marka xigta, aan eegno loop-ka si joogto ah u dhaqaajiya servo-ga gadaal iyo horay:
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-kani wuxuu si tartiib ah u beddelaa xagasha 0 ilaa 180 darajo iyo dib, isagoo adeegsanaya shaqada map si uu ugu beddelo xagasha ballaca pulse-ka ee ku habboon servo-ga. Isbeddel kasta waxaa ku xiga daahid gaaban si loogu oggolaado servo-ga inuu gaaro booskiisa cusub si habsami leh.
Muuqaal / Waxa Laga Filan Karo
Marka wax walba la xiro oo koodka la soo geliyo, waxaad arki doontaa matoorka servo isagoo si habsami leh u dhaqaaqaya 0 ilaa 180 darajo iyo dib. Haddii aad hagaajiso potentiometer-ka, servo-gu waa inuu ka tarjumaa booska cusub iyadoo ku xiran voltage-ka uu bixiyo potentiometer-ku. Ka digtoonow polarity-ga rogan markaad fiilooyinka xirto, sababtoo ah waxay dhaawici kartaa qaybahaaga (fiidiyowga 3:45).
Waqtiyada Fiidiyowga
- 00:00 Bilow
- 1:56 Waa maxay matoor servo
- 5:00 Bogga dukumeentiga
- 6:33 Fiilalka servo oo la sharaxay
- 7:45 Doorashada dekedda COMP ee ESP32 ee Arduino IDE
- 9:27 Koodhka Arduino oo la sharaxay
- 14:31 Tusaale xakamaynta servo iyadoo la isticmaalayo ESP32
- 16:04 Sii daynta korontada servo ee aan ahayn 5V
- 18:47 Xakamaynta Servo iyada oo aan la isticmaalin loop-ka
- 20:15 Xakamaynta Servo iyadoo la isticmaalayo Potentiometer
- 21:37 Servo iyo pot koodhka Arduino oo la sharaxay
#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
Kheyraadka & Tixraacyada
-
DukumentiESP32 Tutorial 17/55 - SunFounder Servo motor documentationdocs.sunfounder.com
Faylasha📁
Waraaqa xogta (pdf)
-
DS5160 Servo motor datasheet
DS5160_datasheet.pdf0.33 MB
Faylal kale
-
Download SG90 datasheet (PDF)
robojax-servo-sg90_datasheet.pdf