ESP32 ٹیوٹوریل 17/55 - ESP32 اور پوٹینشیومیٹر کا استعمال کرتے ہوئے سروو موٹر کو کنٹرول کرنا - ESP32 IoT لرننگ کٹ
اس ٹیوٹوریل میں، ہم سیکھیں گے کہ ESP32 مائیکروکنٹرولر اور پوٹینشیومیٹر کا استعمال کرتے ہوئے سروو موٹر کو کیسے کنٹرول کیا جائے، جو SunFounder کے ESP32 IoT لرننگ کٹ سے ہے۔ اس پروجیکٹ کے اختتام تک، آپ پوٹینشیومیٹر کا استعمال کرتے ہوئے سروو موٹر کے زاویے کو آسانی سے ایڈجسٹ کر سکیں گے، جس سے درست کنٹرول ممکن ہو گا۔ یہ ESP32 کی صلاحیتوں اور موٹرز کے ساتھ اس کے انٹرفیس کو دریافت کرنے کا ایک بہترین طریقہ ہے۔

جب ہم تفصیلات میں جائیں گے، تو ہم ضروری ہارڈویئر اجزاء، وائرنگ کی ہدایات، اور کوڈ کی مثالیں شامل کریں گے تاکہ سب کچھ چل سکے۔ مزید بصری نمائندگی کے لیے، اس ٹیوٹوریل سے منسلک ویڈیو ضرور دیکھیں (ویڈیو میں 0:30 پر)۔
ہارڈویئر کی وضاحت
اس پروجیکٹ کے بنیادی اجزاء میں ESP32 مائیکروکنٹرولر، ایک سروو موٹر (SG90)، اور ایک پوٹینشیومیٹر شامل ہیں۔ ESP32 ایک طاقتور مائیکروکنٹرولر ہے جو بلٹ ان وائی فائی اور بلوٹوتھ پیش کرتا ہے، جو اسے IoT پروجیکٹس کے لیے موزوں بناتا ہے۔ یہ مختلف آلات، بشمول موٹرز، کو اعلیٰ درستگی کے ساتھ کنٹرول کرنے کی صلاحیت رکھتا ہے۔
SG90 سروو موٹر ایک وسیع پیمانے پر استعمال ہونے والا جزو ہے جو تقریباً 270 ڈگری گھوم سکتا ہے۔ یہ پلس-وڈتھ ماڈیولیشن (PWM) سگنل پر کام کرتا ہے، جہاں گردش کا زاویہ اسے بھیجی گئی پلس کی چوڑائی سے طے ہوتا ہے۔ پوٹینشیومیٹر ایک متغیر مزاحم کے طور پر کام کرتا ہے، جس سے آپ ESP32 کو بھیجے جانے والے وولٹیج کو ایڈجسٹ کر سکتے ہیں، جو بدلے میں سروو کی پوزیشن کو کنٹرول کرتا ہے۔
ڈیٹاشیٹ کی تفصیلات
| مینوفیکچرر | SG |
|---|---|
| پارٹ نمبر | SG90 |
| لاجک/آئی او وولٹیج | 3.3 V (ESP32) |
| سپلائی وولٹیج | 5 V |
| آؤٹ پٹ کرنٹ (فی چینل) | 1.2 A |
| پیک کرنٹ (فی چینل) | 2.5 A |
| PWM فریکوئنسی رہنمائی | 50 Hz |
| ان پٹ لاجک تھریشولڈز | 0.2 V (کم)، 2.5 V (زیادہ) |
| وولٹیج ڈراپ / RDS(on) / سیچوریشن | 0.5 V |
| تھرمل حدود | 85 °C زیادہ سے زیادہ |
| پیکیج | پلاسٹک |
| نوٹس / ویریئنٹس | مختلف گیئر اقسام میں دستیاب |
- یقینی بنائیں کہ سروو مناسب وولٹیج (5V) سے چل رہا ہے۔
- سروو کی گراؤنڈ کو ESP32 کی گراؤنڈ سے جوڑیں تاکہ مشترکہ حوالہ ہو۔
- سروو کی پوزیشن کو کنٹرول کرنے کے لیے مناسب PWM سگنل استعمال کریں۔
- سروو کی کرنٹ ضروریات سے آگاہ رہیں؛ اگر ضروری ہو تو بیرونی پاور سپلائی استعمال کریں۔
- غلط کنفیگریشن سے بچنے کے لیے وائرنگ کرتے وقت پن تفویض کی درستگی چیک کریں۔
وائرنگ کی ہدایات

سروو موٹر اور پوٹینشیومیٹر کو ESP32 سے جوڑنے کے لیے، پہلے سروو کی گراؤنڈ تار (عام طور پر سیاہ یا بھوری) کو ESP32 کے کسی گراؤنڈ پن سے جوڑیں۔ اگلا، سروو کی پاور تار (عام طور پر سرخ) کو ESP32 کے 5V پن سے جوڑیں۔ آخر میں، سروو سے سگنل تار (عام طور پر نارنجی یا سفید) کو ESP32 کے پن 25 سے جوڑیں۔
پوٹینشیومیٹر کے لیے، ایک بیرونی پن کو ESP32 کے 3.3V پن سے اور دوسرے بیرونی پن کو گراؤنڈ سے جوڑیں۔ پوٹینشیومیٹر کا درمیانی پن ESP32 کے پن 34 سے منسلک ہونا چاہیے۔ یہ سیٹ اپ ESP32 کو پوٹینشیومیٹر سے آنے والے متغیر وولٹیج آؤٹ پٹ کو پڑھنے کی اجازت دیتا ہے، جو سروو کی پوزیشن کو کنٹرول کرنے کے لیے استعمال ہوگا۔
کوڈ کی مثالیں اور واک تھرو
درج ذیل کوڈ سنیپٹ سروو کو انیشیالائز کرتا ہے اور اس کی حرکت کو کنٹرول کرنے کے لیے پیرامیٹرز سیٹ کرتا ہے:
#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); // معیاری 50Hz سروو
}
اس کوڈ میں، ہم ESP32Servo لائبریری شامل کرتے ہیں اور سروو کا ایک انسٹینس بناتے ہیں جس کا نام myServo ہے۔ ہم سروو کے لیے پن نمبر کی وضاحت کرتے ہیں اور کم سے کم اور زیادہ سے زیادہ پلس چوڑائی سیٹ کرتے ہیں جو سروو کے زاویے کی حدود سے مطابقت رکھتی ہیں۔
اگلا، آئیے اس لوپ پر نظر ڈالیں جو سروو کو مسلسل آگے پیچھے حرکت دیتا ہے:
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);
}
}
یہ لوپ آہستہ آہستہ زاویے کو 0 سے 180 ڈگری تک اور پھر واپس تبدیل کرتا ہے، map فنکشن کا استعمال کرتے ہوئے زاویے کو سروو کے لیے متعلقہ پلس چوڑائی میں تبدیل کرتا ہے۔ ہر تبدیلی کے بعد ایک مختصر تاخیر ہوتی ہے تاکہ سروو آسانی سے اپنی نئی پوزیشن تک پہنچ سکے۔
ڈیمونسٹریشن / کیا توقع کریں
ایک بار جب سب کچھ وائرڈ ہو جائے اور کوڈ اپ لوڈ ہو جائے، تو آپ کو سروو موٹر 0 سے 180 ڈگری تک اور واپس آسانی سے حرکت کرتی نظر آئے گی۔ اگر آپ پوٹینشیومیٹر کو ایڈجسٹ کرتے ہیں، تو سروو کو پوٹینشیومیٹر کے فراہم کردہ وولٹیج کی بنیاد پر نئی پوزیشن ظاہر کرنی چاہیے۔ وائرنگ کرتے وقت الٹی پولارٹی سے محتاط رہیں، کیونکہ یہ آپ کے اجزاء کو نقصان پہنچا سکتی ہے (ویڈیو میں 3:45 پر)۔
ویڈیو ٹائم اسٹیمپس
- 00:00 آغاز
- 1:56 سروو موٹر کیا ہے
- 5:00 دستاویزات کا صفحہ
- 6:33 سروو کے لیے وائرنگ کی وضاحت
- 7:45 Arduino IDE میں ESP32 کے لیے COMP پورٹ کا انتخاب
- 9:27 Arduino کوڈ کی وضاحت
- 14:31 ESP32 کا استعمال کرتے ہوئے سروو کنٹرول کا مظاہرہ
- 16:04 سروو کو 5V کے علاوہ دیگر وولٹیج سے چلانا
- 18:47 لوپ کے بغیر سروو کو کنٹرول کرنا
- 20:15 پوٹینشیومیٹر کے ساتھ سروو کو کنٹرول کرنا
- 21:37 پوٹینشیومیٹر کے ساتھ سروو کے لیے 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
وسائل اور حوالہ جات
-
دستاویزاتESP32 Tutorial 17/55 - SunFounder Servo motor documentationdocs.sunfounder.com
فائلیں📁
ڈیٹا شیٹ (پی ڈی ایف)
-
DS5160 Servo motor datasheet
DS5160_datasheet.pdf0.33 MB
دیگر فائلیں
-
Download SG90 datasheet (PDF)
robojax-servo-sg90_datasheet.pdf