دليل ESP32 30/55 - التحكم في السيرفو عبر الويب باستخدام MQTT من خلال خدمة Adafruit IO | مجموعة تعلم IoT من SunFounder للـ ESP32

دليل ESP32 30/55 - التحكم في السيرفو عبر الويب باستخدام MQTT من خلال خدمة Adafruit IO | مجموعة تعلم IoT من SunFounder للـ ESP32

في هذا الدرس، سنتعلم كيفية التحكم في موضع محرك السيرفو باستخدام متحكم ESP32 وبروتوكول MQTT عبر الويب. من خلال الاستفادة من خدمة Adafruit IO، ستكون قادرًا على تحديد موضع السيرفو عند زوايا مختلفة مثل 0°، 90°، أو 180° عن بُعد. يوضح هذا المشروع قدرات ESP32، الذي يتضمن Wi-Fi وBluetooth مدمجين، مما يجعله أداة قوية لتطبيقات إنترنت الأشياء.

ESP32-30_MQTT_diagram-0

في هذا المشروع، سنقوم بإعداد وسيط MQTT باستخدام Adafruit IO، وإنشاء لوحة تحكم للتحكم في السيرفو، وتوصيل ESP32 بها. ستكون موضع السيرفو قابلة للتعديل من خلال منزلق على لوحة التحكم، مما يسمح بالتحكم في الوقت الحقيقي من أي جهاز متصل بالإنترنت (في الفيديو في 5:30).

شرح الأجهزة

تشمل المكونات الأساسية في هذا المشروع المتحكم الصغري ESP32 ومحرك السيرفو. إن ESP32 هو متحكم صغري متعدد الاستخدامات مع قدرات واي فاي وبلوتوث مدمجة، مما يجعله مثالياً لتطبيقات إنترنت الأشياء. يتواصل مع خدمة Adafruit IO باستخدام بروتوكول MQTT، الذي يعتبر خفيف الوزن وفعالًا في نقل الرسائل عبر الإنترنت.

المحرك المؤازر هو منظمات دوارة تتيح التحكم الدقيق في الموضع الزاوي. يعمل من خلال استلام إشارة تعديل عرض النبضة (PWM) التي تحدد موقعه. في هذا المشروع، سنقوم بتوصيل المحرك المؤازر بأحد الدبابيس الرقمية على ESP32، مما سيمكننا من التحكم في زاويته عن بُعد.

تفاصيل ورقة البيانات

المصنع بارالاكس
رقم الجزء SG90
فولتية المنطق/مدخلات/مخرجات ٣.٣ فولت - ٥ فولت
جهد الإمداد ٤.٨ فولت - ٦.٠ فولت
التيار الناتج (لكل قناة) 1 أ قصوى
توجيه تردد PWM 50 هرتز
عتبات منطق الإدخال 0.3 فولت - 0.7 فولت
انخفاض الجهد / Rدي إس (أون)/ التشبع 0.2 فولت كحد أقصى
الحدود الحرارية درجة حرارة التشغيل: -10°C إلى 60°C
حزمة حافظة بلاستيكية
ملاحظات / متغيرات سيرفو صغير، دوران 180°

  • تأكد من توفير جهد مناسب للسيرفو (4.8 فولت - 6.0 فولت).
  • استخدم أرضية مشتركة بين ESP32 والمحرك.
  • راقب إشارة PWM لتجنب تجاوز حدود السيرفو.
  • قم بتوصيل السيرفو بشكل آمن لتجنب الانقطاعات أثناء التشغيل.
  • قم بتحديث مكتبة Adafruit MQTT لضمان التوافق.

مخططات MQTT

ESP32-30_MQTT_diagram-2
ESP32-30_MQTT_diagram
ESP32-28 مستشعر درجة حرارة DHT الرئيسي

تعليمات التوصيل

ESP32-17-Sevo_motor-wiring

لربط محرك السرفو بـ ESP32، ابدأ بتوصيل سلك الأرضي لمحرك السرفو إلى دبوس الأرضي على ESP32. بعد ذلك، قم بتوصيل سلك الطاقة (عادةً ما يكون أحمر) لمحرك السرفو إلى دبوس 5 فولت على ESP32. أخيرًا، قم بتوصيل سلك الإشارة (غالبًا ما يكون أصفر أو أبيض) إلى الدبوس الرقمي 25 على ESP32. تأكد من أن الاتصالات آمنة لمنع أي انقطاع أثناء التشغيل.

إذا كنت تستخدم بطارية لت powering ال ESP32، تأكد من أن جهد البطارية ضمن النطاق المقبول لكل من ESP32 والمحرك. بالإضافة إلى ذلك، تحقق مرة أخرى من أن الأسلاك تتطابق مع تعريفات الدبابيس المستخدمة في الكود الخاص بك لتجنب أي مشاكل (في الفيديو في 12:45).

أمثلة على الكود وإرشادات الاستخدام

في الكود المقدم، نقوم أولاً بإدراج المكتبات اللازمة لـ ESP32 و MQTT. نقوم بتعريف كائن السيرفو وتحديد الدبوس المتصل به.const int servoPin = 25;. يتم أيضًا تعيين الزاوية الافتراضية معconst int defaultServoAngle = 90;، والتي ستكون الموضع الأولي عند بدء تشغيل ESP32.


Servo myServo;
const int servoPin = 25;
const int defaultServoAngle = 90;
int servoAngle = defaultServoAngle;

تقوم هذه المقتطفات بتهيئة الخادم على الدبوس 25 وتعيين زاويته الافتراضية إلى 90°. المتغيرservoAngleسيتم التحديث بناءً على الرسائل المستلمة من وسيط MQTT.

فيsetup()نقوم بتوصيل Wi-Fi وإعداد عميل MQTT. تم تعريف بيانات اعتماد Adafruit IO هنا، بما في ذلك اسم المستخدم و المفتاح:


#define AIO_USERNAME "robojax"
#define AIO_KEY "aio_xmIW58uNNsjJCSOqzZ9QoHyq29wu"

تحدد هذه القسم الاتصال بخدمة Adafruit IO. تأكد من استبدال هذه القيم ببيانات اعتماد Adafruit IO الخاصة بك عند تنفيذ الكود.

أخيرًا، تضمن الحلقة الرئيسية أن تظل الاتصال بخادم MQTT نشطًا وتعالج الرسائل الواردة. يتم تحديث موضع السيرفو بناءً على الزاوية المستلمة:


mqtt.processPackets(500);
int pulseWidth = map(servoAngle, 0, 180, minPulseWidth, maxPulseWidth);
myServo.writeMicroseconds(pulseWidth);

هذا الرمز يربط زاوية السيرفو بعرض النبضة المقابل ويرسلها إلى محرك السيرفو.processPackets()تسمح الدالة لـ ESP32 بمعالجة رسائل MQTT الواردة، مما يضمن استجابة السيرفو للأوامر المرسلة عبر لوحة التحكم Adafruit IO.

عرض / ماذا تتوقع

بمجرد الانتهاء من الإعداد، يجب أن تكون قادرًا على التحكم في السيرفو من لوحة معلومات Adafruit IO باستخدام المت滑د الذي قمت بإنشائه. بينما تقوم بتحريك المت滑د، سيقوم السيرفو بضبط زاويته في الوقت الحقيقي. تأكد من أن ESP32 الخاص بك متصل بالواي فاي، وأن اتصال MQTT مستقر. إذا لم يستجب السيرفو، تحقق من الأسلاك ومصدر الطاقة للسيرفو (في الفيديو عند :15).

كن على علم بحدود مدى السيرفو؛ إرسال قيمة خارج 0° إلى 180° قد يتسبب في تصرفه بشكل غير متوقع. يتضمن الكود تحققًا لمنع حدوث مثل هذه الحالات عن طريق تثبيت الزاوية ضمن هذا النطاق.

طوابع زمنية للفيديو

  • :00 ابدأ
  • ١:٥٤ مقدمة المشروع
  • :52 مقدمة في MQTT
  • إعداد Adafruit IO 6:50
  • 9:54 توصيل السيرفو
  • 11:07 شرح الكود
  • 18:59 اختيار لوحة ESP32 و منفذ COM
  • 22:10 عرض المشروع

الصور

ESP32-17-Sevo_motor-schematic
ESP32-17-Sevo_motor-schematic
ESP32-17-Sevo_motor-wiring
ESP32-17-Sevo_motor-wiring
ESP32-28_dht_temperature-sensor-main
ESP32-28_dht_temperature-sensor-main
ESP32-30_MQTT_diagram
ESP32-30_MQTT_diagram
ESP32-30_MQTT_diagram-0
ESP32-30_MQTT_diagram-0
ESP32-30_MQTT_diagram-2
ESP32-30_MQTT_diagram-2
831-ESP32 Tutorial 30/55- ESP32 to control Servo motor using MQTT service of Adafruit
اللغة: C++
تم النسخ!

الأشياء التي قد تحتاجها

ملفات📁

ملفات أخرى