- الشروع في استخدام ESP32 Bluetooth
- فهم تقنية Bluetooth منخفضة الطاقة (BLE) و ESP32 Classic Bluetooth
- تحضير Arduino IDE لـ ESP32
- برنامج البلوتوث التسلسلي لـ ESP32
- اختبار Serial Bluetooth مع ESP32
وحدات البلوتوث مثل HC-05 و HC-06 سهلة الإعداد وسريعة الاستخدام مع Arduino IDE ، لكن لها حدودها الخاصة مثل استهلاك الطاقة العالي وتعمل على البلوتوث القديم V2.0. أيضًا ، حصلت مؤخرًا على مجموعة ESP32 DEV جديدة ، تحتوي هذه الوحدات على مجموعة من الميزات مثل Wi-Fi المدمج والبلوتوث ودبابيس ADC و DAC الوافرة ودعم الصوت ودعم بطاقة SD ووضع السكون العميق وما إلى ذلك. كل شيء لبناء مشاريع إنترنت الأشياء.
ومثلما يحب أي هواة ذلك ، فإن ESP32 مدعوم رسميًا الآن بواسطة Arduino IDE. في وقت سابق ، كان علينا القيام بحل ضخم مع مكتبة Neil Kolbans ، ولكن الآن بفضل العمل الشاق لهذا الرجل ، أصبحت برمجة ESP32 مع Arduino IDE بمثابة مسيرة كعكة. ومن ثم ، أطلقت Arduino IDE الخاص بي وذهبت إلى أمثلة قليلة من برامج BLE ، والتي من خلالها لم أفهم شيئًا. بعد فترة طويلة من تصفح الإنترنت و youtubing ، أدركت أن هناك الكثير لفهمه إذا كان عليك العمل مع Bluetooth Low Energy (BLE) باستخدام ESP32. قررت تغطية BLE في مقالات منفصلة ، لذلك سنستخدم هنا Classic Serial Bluetooth من ESP32 لتبديل مؤشر LED باستخدام الهاتف الذكي. إذا كنت مهتمًا بمعرفة كيفية استخدام ميزات BLE ، فراجع هذه المقالة على خادم ESP32 BLE وعميل ESP32 BLE
الشروع في استخدام ESP32 Bluetooth
كان البرنامج الأول الذي أردت تجربته هو برنامج بسيط يمكنني من خلاله تشغيل أو إيقاف تشغيل مصباح LED من تطبيق Bluetooth Terminal للهاتف المحمول ، تمامًا مثل أيام HC-05 القديمة الجيدة. ولكن اتضح أن Bluetooth Low Energy (BLE) ليست بادئة لذلك. اكتشفت أيضًا أن هناك نوعين من البلوتوث في وحدة ESP32 ، أحدهما هو Classic Bluetooth والآخر BLE Bluetooth Low Energy. حسنًا ، ولكن لماذا؟…. لماذا لدينا نوعان من البلوتوث وماذا يجب أن أستخدم لمشروعي؟
فهم تقنية Bluetooth منخفضة الطاقة (BLE) و ESP32 Classic Bluetooth
Bluetooth Low Energy ، كما يشير الاسم ، يستهلك طاقة أقل من Bluetooth الكلاسيكية. يتم تحقيق ذلك عن طريق إرسال البيانات حسب الحاجة مع تحديثات دورية محددة مسبقًا. ولكن على عكس البلوتوث الكلاسيكي ، لا يتم استخدامه لنقل الملفات أو الموسيقى. هل تساءلت يومًا كيف يتعرف هاتفك تلقائيًا على أن جهاز Bluetooth الذي قمت بإقرانه للتو هو جهاز صوتي أو كمبيوتر محمول أو هاتف ، فربما تكون قد رأيت أيضًا أن مستوى البطارية في مشغل الصوت اللاسلكي أو سوار اللياقة البدنية يظهر تلقائيًا في شريط الحالة في هاتفك النقال؛ كل هذا ممكن مع خصائص أجهزة BLE. A جهاز بليه يعمل مع بلوتوث V4.0 ويمكن أن تعمل مع انخفاض القوة كخادم أو كعميل مما يجعلBLE خيار مثالي للإشارات ، والساعات الذكية ، وأحزمة اللياقة ، إلخ.
من ناحية أخرى ، فإن تقنية Bluetooth الكلاسيكية هي مجرد تقنية Bluetooth القديمة البسيطة التي نستخدمها لنقل الملفات والبيانات الأخرى. تحتوي جميع أجهزة BLE تقريبًا على وظيفة Bluetooth الكلاسيكية المرتبطة بها. البلوتوث المستخدم في وحدات مثل HC-05 هو إصدار من البلوتوث الكلاسيكي يسمى Bluetooth SSP (بروتوكول المنفذ التسلسلي) ، مما يعني أن البلوتوث يتبع البروتوكول التسلسلي القياسي الذي يجعل من السهل إرسال واستقبال البيانات دون الكثير من النفقات العامة. في نهاية هذا البرنامج التعليمي سوف نتعلم كيفية استخدام وظيفة Serial Bluetooth في ESP32.
هنا في هذه المقالة سوف نستخدم وظيفة Serial Bluetooth على ESP32 لإقرانها بهاتف ذكي واستخدام أي تطبيق Bluetooth Terminal موجود من متجر Play لإرسال أوامر إلى ESP32 وتبديل مؤشر LED الموجود على اللوحة وفقًا لذلك.
في مقالات لاحقة ، سنغطي ESP32 BLE كخادم وكذلك عميل. يستخدم خادم BLE عمومًا لإرسال بيانات BLE إلى أجهزة Bluetooth الأخرى ، ويتم استخدام عميل BLE لمسح أجهزة BLE الأخرى وبالتالي يكون بمثابة منارة.
تحضير Arduino IDE لـ ESP32
لاحظ أن Arduino IDE افتراضيًا لا يدعم لوحة ESP32 ؛ يجب عليك تنزيلها وتثبيتها باستخدام مدير اللوحة. إذا كان هذا هو برنامجك الأول مع ESP32 ، فاتبع هذا البرنامج التعليمي للبدء لإضافة لوحة ESP32 إلى Arduino وتحميل رسم اختبار.
علاوة على ذلك ، يمكنك القيام بمزيد من المشاريع باستخدام ESP32 ، دون استخدام أي متحكم دقيق معه.
برنامج البلوتوث التسلسلي لـ ESP32
يتم تقديم البرنامج الكامل لتبديل مؤشر LED باستخدام ESP32 Bluetooth في نهاية هذه الصفحة. تحت هذا العنوان ، دعنا نقسم الكود إلى مقتطفات صغيرة ونحاول فهمها. إذا كنت قد استخدمت بالفعل وحدات Bluetooth أخرى مثل HC-05 ، فستجد أن مثال برنامج ESP32 Bluetooth Classic يشبه إلى حد بعيد.
تتمثل فكرة البرنامج في تهيئة اتصال تسلسلي Bluetooth باستخدام ESP32 والاستماع إلى البيانات من الأجهزة المقترنة. إذا كانت البيانات الواردة هي "1" ، فإننا نقوم بتشغيل مؤشر LED وإذا كانت "0" فيجب علينا إيقاف تشغيل مؤشر LED. نبدأ برنامجنا بإضافة ملف الرأس BluetoothSerial الذي يجعل ESP32 Bluetooth يعمل كـ Bluetoth SSP.
# تضمين "BluetoothSerial.h" // Header File لـ Serial Bluetooth ، ستتم إضافته افتراضيًا إلى Arduino
هناك الكثير من الأشياء التي تحدث خلف هذه المكتبة ، لكننا اخترنا عدم التعمق فيها لتبسيط الأمور. الشيء التالي الذي نحتاجه هو كائن لعملياتنا المتعلقة بالبلوتوث. هنا قمت بتسميتي باسم ESP_BT ، ولكن يمكنك اختيار أي اسم.
BluetoothSerial ESP_BT ؛ // كائن للبلوتوث
بعد ذلك ، داخل وظيفة الإعداد الباطل () . نحن نبدأ الاتصالات المسلسل مع بالباود 9600 وتهيئة إشارة بلوتوث مع اسم. هنا قمت بتسميته "ESP32_LED_Control " ، سيكون هذا الاسم الذي سيجده هاتفنا عند محاولة الاقتران. أخيرًا ، لقد أعلنت أن دبوس LED المدمج هو دبوس الإخراج لأننا سنقوم بتبديله بناءً على إشارة Bluetooth.
إعداد باطل () { Serial.begin (9600) ؛ // ابدأ Serial monitor في 9600 ESP_BT.begin ("ESP32_LED_Control") ؛ // اسم جهاز Bluetooth Signal Serial.println ("جهاز Bluetooth جاهز للإقران") ؛ pinMode (LED_BUILTIN ، الإخراج) ؛ // حدد أن دبوس LED هو الإخراج }
داخل وظيفة الحلقة الفارغة اللانهائية ، نتحقق مما إذا كانت هناك أي بيانات واردة من وحدة Bluetooth ، إذا كانت الإجابة بنعم ، فسيتم قراءة البيانات وتخزينها في المتغير الوارد . نقوم أيضًا بطباعة هذه القيمة على الشاشة التسلسلية فقط للتحقق مما يتم استلامه بواسطة Arduino.
if (ESP_BT.available ()) // تحقق مما إذا تلقينا أي شيء من Bluetooth { incoming = ESP_BT.read () ؛ // اقرأ ما نحصل عليه Serial.print ("تم الاستلام:") ؛ Serial.println (وارد) ؛
الآن ، يتم تخزين أي بيانات يتم تلقيها في المتغير الوارد ، حتى نتمكن من مقارنة هذا المتغير بالقيمة المتوقعة مباشرة وتنفيذ الإجراء المطلوب. لكن القيمة المرسلة من Bluetooth ستكون بصيغة char وسيقوم Arduino بقراءة القيمة العشرية للحرف الذي يتم إرساله من الهاتف. في حالتنا بالنسبة لـ char '0' ، ستكون القيمة العشرية 48 وبالنسبة لـ char '1' ستكون القيمة العشرية 49. يمكنك الرجوع إلى مخطط ASCII لفهم القيمة العشرية لكل حرف.
هنا قمنا بمقارنة المتغير الوارد بـ 48 و 49 للتحقق من 0 و 1 على التوالي. إذا كان الرقم 1 ، فإننا نقوم بإيقاف تشغيل مؤشر LED ونقوم أيضًا بطباعة رسالة إقرار مرة أخرى إلى Bluetooth تفيد بإيقاف تشغيل LED والعكس صحيح بالنسبة لـ 0.
إذا (وارد == 49) { digitalWrite (LED_BUILTIN ، عالية) ؛ ESP_BT.println ("LED قيد التشغيل") ؛ } إذا (واردة == 48) { digitalWrite (LED_BUILTIN ، منخفضة) ؛ ESP_BT.println ("LED مطفأ") ؛ }
اختبار Serial Bluetooth مع ESP32
قم بتوصيل ESP الخاص بك بـ Arduino IDE الخاص بك وحدد اللوحة والمنفذ الصحيحين كما تمت مناقشته في البرنامج التعليمي للبدء. نظرا لأنه هو 3 الثالثة مدير مجلس الحزب قد يستغرق وقتا أطول لرمز للحصول على تجميعها وتحميلها. بمجرد التحميل ، قم بتشغيل Serial monitors (فقط لتصحيح الأخطاء) وافتح إعداد Bluetooth على هاتفك. يجب أن تجد جهاز Bluetooth يسمى ESP32_LED_Control زوجًا مع.
يمكنك الآن فتح أي تطبيق Bluetooth Terminal على هاتفك الذكي ، وأنا أستخدم التطبيق المسمى "Bluetooth Terminal" الذي تم تنزيله من متجر تطبيقات Google. قم بتوصيل تطبيق Bluetooth بالجهاز الذي قمنا بإقرانه للتو واكتب 1 واضغط على إرسال.
يجب أن تستقبلها وحدة ESP32 وتقوم بتشغيل مؤشر LED وفقًا لبرنامجنا وأيضًا تعطيك رسالة إقرار تفيد بأن مؤشر LED قيد التشغيل مثل لقطة الشاشة الموضحة أعلاه. يمكنك أيضًا التحقق من جهاز العرض التسلسلي الذي سيظهر البيانات التي يتم تلقيها بواسطة ESP32 Bluetooth بتنسيق عشري ، حيث سيقرأ Arduino 48 لـ 0 و 49 لـ 1 كما هو موضح سابقًا. لقطة من نافذة المحطة الخاصة بي مبينة أدناه.
وبالمثل ، يجب أن تكون قادرًا أيضًا على إيقاف تشغيل مؤشر LED بإرسال 0 من تطبيق الهاتف المحمول. يظهر العمل الكامل في الفيديو أدناه. آمل أن تكون قد فهمت البرنامج التعليمي وتعلمت شيئًا مفيدًا. إذا كانت لديك أي شكوك ، فلا تتردد في تركها في قسم التعليقات أدناه أو استخدام منتدياتنا للحصول على مساعدة فنية أخرى.