جدول المحتويات:

كيفية استخدام Bluetooth (BLE) مع ESP32: 3 خطوات
كيفية استخدام Bluetooth (BLE) مع ESP32: 3 خطوات

فيديو: كيفية استخدام Bluetooth (BLE) مع ESP32: 3 خطوات

فيديو: كيفية استخدام Bluetooth (BLE) مع ESP32: 3 خطوات
فيديو: BLE with ESP32 tutorial part 1: the Server 2024, شهر نوفمبر
Anonim

#####ملاحظة#####

الطريقة الموضحة في هذه التعليمات قديمة وعفا عليها الزمن. شاهد هذا الفيديو لأحدث طريقة.

###############

بينما يفتخر ESP32 بقائمة ميزات واسعة (ويكيبيديا) ، فإن أكبر ميزة تجذب العين هي البلوتوث المدمج v4.2 مع دعم BLE. ولكن هذا البيان يمكن أن يكون مضللاً ، فبينما الجهاز موجود ، فإن دعم البرنامج لاستخدام البلوتوث مفقود. (قيد التطوير)

بالنسبة لأولئك الذين لا يعرفون ما هو BLE ، فهو يمثل Bluetooth Low Energy. إنه بروتوكول بلوتوث يعزز بشكل كبير استهلاك أقل للطاقة مقارنةً بالبلوتوث "الكلاسيكي".

في هذه التعليمات ، سأوضح لك كيف يمكنك استخدام الموارد (البرامج) المحدودة المتاحة لك لإرسال البيانات من لوحة ESP32 إلى هاتفك عبر BLE.

بعض إخلاء المسؤولية …

يجب أن أذكر بعض الأشياء التي يجب أن أذكرها قبل المضي قدمًا في هذا الدليل..

ملاحظة 1: عندما أقول إن دعم Bluetooth غير متاح بعد ، أعني في بيئة تطوير اردوينو.

قد يكون الدعم جيدًا جدًا متاحًا في SDK الرسمي وكذلك في جيش الدفاع الإسرائيلي ، لكنني لم أجد أي تعليمات مختصة لهؤلاء.

ملاحظة 2: الطريقة التي أستخدمها هي حل بديل إلى حد كبير وليست الطريقة التي من المفترض أن تعمل بها BLE بشكل مثالي. المكتبة التي تدعم إنشاء الخدمات في BLE ليست هنا لبيئة اردوينو.

الشيء الوحيد الذي يمكنك القيام به بشكل موثوق هو إنشاء منارة تعلن عن اسمها. وعلق تعليق على موقع يوتيوب بأناقة شديدة: "LOL ، اختراق وحشي. ولكن ماذا يمكنك أن تفعل؟"

ملاحظة 3: النوع الوحيد من البيانات التي يمكنك إرسالها هو السلسلة.

قد تقرر جيدًا ترميز أنواع البيانات الأخرى وفك تشفيرها من سلسلة وإليها ولكن هذا خارج نطاق هذا الدليل.

الخطوة 1: نموذج البناء

Image
Image
بناء المثال
بناء المثال
بناء المثال
بناء المثال
بناء المثال
بناء المثال

إذا كنت هنا فقط للحصول على الشرح ، فيمكنك تخطي هذه الخطوة ولكن القيام بذلك قد يمنحك مزيدًا من الوضوح..

سأقوم أولاً ببناء مثال لمشروع ثم سأحاول شرح كيفية عمله وكيف يمكنك تكرار اتصال Bluetooth. سنقوم ببناء مستشعر درجة حرارة محمول يرسل بثًا مباشرًا إلى هاتفك الذكي. يمكن أن يستمر البناء لأيام على جهاز Li-po واحد ويوضح بسهولة فوائد BLE.

يمكنك استخدام الوحدة كوستر لعزل مشروباتك والحصول على إشعار بمجرد وصول مشروبك إلى درجة الحرارة المثلى. لأنه سيكون من السذاجة أن تشرب الشاي بدرجة تزيد عن 40 درجة.

الجهاز الوحيد الذي تحتاجه هو لوحة ESP32 ومستشعر درجة حرارة رقمي. تدعم لوحي بطارية خارجية ، لذا فأنا أستخدم 3.7 فولت li-po قمت بإنقاذه من بعض الأجهزة القديمة لجعل هذا المشروع محمولًا.

المعدات

اتصالات مستشعر درجة الحرارة بسيطة. يتصل السلك الأحمر بـ 3.3 فولت ، والأسود يتصل بالأرض (gnd) ، والأصفر يتصل بـ GPIO 2 الذي تم وضع علامة D9 عليه على لوحي. قم بتوصيل المقاوم 4.7 كيلو أوم بين السلك الأحمر والأصفر. أنا لا أستخدم المقاوم ، وبدلاً من ذلك أستخدم طرفًا موصلًا بثلاثة أطراف توصيل يأتي مع المستشعر الخاص بي. لديها مقاومة سحب مدمجة.

يجب أن يتم توصيل li-po بالفعل باستخدام موصل JST ، لكن لا يمكنني أن أزعجني لشراء واحد ، لذا فقد قمت للتو بإدخال بعض كبلات التوصيل (من أنثى إلى أنثى) في الموصل ولحمت زوجًا آخر بأطراف البطارية. هذا يجعل الاتصال موثوقًا ومفتاح طاقة مؤقت.

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

برمجة

إذا لم يكن لديك بالفعل arduino IDE مثبتًا ، فانتقل إلى هذا الرابط لتنزيله. لا يأتي برنامج اردوينو افتراضيًا مع تعريفات اللوحة للوحات ESP32 المختلفة. لجعلهم يذهبون إلى هذا الرابط وتنزيل الملفات في شكل مضغوط. تحتاج إلى فك ضغطهم إلى هذا الموقع:

C: / Users // Documents / Arduino / Hardware / espserrif / ESP32

أين هو اسم المستخدم الخاص بك على جهاز الكمبيوتر الخاص بك. تأكد من أن الملفات المختلفة متوفرة ضمن مجلد ESP32 وليست ضمن مجلد آخر.

الآن إذا بدأت برنامج اردوينو وانتقلت إلى أدوات-> لوحات ، يجب أن ترى لوحات ESP32 مختلفة عند التمرير لأسفل.

تستخدم معظم مستشعرات درجة الحرارة الرقمية بروتوكول OneWire للتواصل مع وحدات التحكم الدقيقة ، لذلك نحتاج إلى الحصول على المكتبة. انتقل إلى رسم-> تضمين مكتبة-> إدارة المكتبات وابحث عن onewire وقم بتثبيت المكتبة التي يوجد بها عدد كبير جدًا من المؤلفين. أنت لا تحتاج إلى محور واحد. تجاهله.

يمكنك الآن تنزيل وفتح الكود المرفق بهذه الخطوة (temperature-example.ino).

إذا كنت تستخدم مستشعرًا مختلفًا مني ، فسيتعين عليك تغيير الرمز وفقًا لذلك. استبدل الكود الموجود ضمن getTemp (). ما عليك سوى إرجاع درجة الحرارة النهائية في شكل

يعود ؛

أين العوامة التي تحتوي على درجة الحرارة.

قم بتوصيل اللوحة ، وحدد اللوحة والمنفذ الصحيحين من أسفل الأدوات واضغط على تحميل.

إذا رفض الرمز التحميل ، فافصل المستشعر وقم بتوصيل GPIO 0 بالأرض. استعادة الاتصالات بعد التحميل.

يجب أن يكون المرساب الكهروستاتيكي الخاص بك الآن يصرخ بدرجة حرارة قهوتك للعالم ولكنك تحتاج إلى شخص يمكنه فهمها.

تطبيق Android

آسف لمستخدمي iPhone (… ليس في الحقيقة).

قم بتنزيل apk من هنا وقم بتثبيته. عند بدء تشغيل التطبيق ، سيتم الترحيب بك بواجهة بسيطة للغاية.

إذا تلقيت رسالة خطأ تقول "الإعلان غير مدعوم" ، فانقر فوق "موافق" وتجاهلها ولكن إذا تلقيت رسالة مفادها أن "BLE غير مدعوم" ، فإن هاتفك لا يحتوي على Bluetooth 4.0 أو أعلى ولن يكون قادرًا على التشغيل التطبيق.

تأكد من تشغيل البلوتوث على هاتفك وانقر على "بدء المسح" ، طالما أن جهاز esp في النطاق وتشغيله يجب أن تتلقى بعض قيمة درجة الحرارة.

الأخطاء المحتملة:

  • -1000:: هذا يعني أن جهازك لا يمكنه العثور على المرساب الكهروستاتيكي. تأكد من تشغيل Bluetooth وحاول إعادة تشغيل ESP.
  • SNA:: هذا يعني أن هاتفك يتلقى بيانات من ESP لكن ESP نفسه لا يمكنه العثور على مستشعر درجة الحرارة في GPIO 2. تأكد من أن الاتصالات آمنة ، وتحقق مما إذا كنت تستخدم مقاومًا بالقيمة الصحيحة. تحقق مرة أخرى من مخططات اللوحة الخاصة بك من أنك متصل بـ GPIO 2 وليس دبوسًا تم تحديده على أنه D2.

الخطوة الثانية: الشرح

طريقة عمل BLE بشكل طبيعي هي أن الجهاز يعلن عن اسمه مثل منارة ، ويمكن لأي شخص رؤية هذا الاسم ويستخدم لتعريف الجهاز. ثم يمكن للجهاز إنشاء خدمات متنوعة يراها الآخرون عند اتصالهم به. يمكن أن يكون لهذه الخدمات تدفقات مختلفة من البيانات.

على سبيل المثال. جهاز يسمى "Weather Station" يمكن أن يتم صيانته تحته مثل "درجة الحرارة" و "الرطوبة" و "الرياح". عندما يقوم جهاز BLE آخر مثل هاتفك الذكي بالبحث عن الأجهزة ، فإنه سيشاهد محطة الطقس وعندما يتصل بها ، سيكون قادرًا على استقبال تدفقات البيانات وفقًا للخدمات المختلفة.

تتيح لنا المكتبات (لـ ESP32) المتوفرة حاليًا لنا إنشاء منارة يمكن للآخرين اكتشافها ولكن هذا هو نطاقها. لا يمكننا إنشاء خدمات ولا يمكن لأي جهاز الاتصال بها.

لذا فإن الطريقة التي أرسل بها البيانات دون إنشاء الخدمات هي من خلال استخدام تقنية مشابهة لبروتوكول WiFi يسمى Beacon Stuffing. هذا يعني أنني أقوم بتضمين البيانات التي سيتم إرسالها داخل اسم المرشد نفسه. يمكّنني هذا من الإعلان عن البيانات دون الحاجة إلى توصيل الأجهزة الأخرى بالمنارة.

ble.begin (منارة مسج) ؛ // beaconMsg هو الاسم المُعلن عنه

نحن نستخدم مكتبة SimpleBLE لإنشاء منارة باسمها بتنسيق ESP. حيث يظل "ESP" دائمًا بدون تغيير في بداية الاسم ويتم استبداله بأحدث البيانات التي يتم إرجاعها بواسطة دالة getValue () كل 100 مللي ثانية.

float getValue () {return sensorValue؛}

يبحث تطبيق android عن أسماء أجهزة BLE التي تبدأ بـ "ESP" ، بمجرد العثور عليها ، يقسم الاسم ويعرض البيانات فقط من النهاية.

التواصل هو طريقة واحدة فقط ، التطبيق لا يرسل أي شيء.

الخطوة الثالثة: الخاتمة

في نهاية اليوم ، لا تعد هذه الطريقة بديلاً لمكتبة BLE تم تنفيذها بشكل صحيح ، ولكنها قد تكون كافية لتوجيه بعض المشاريع إلى أن يأتي دعم BLE الكامل إلى Arduino. نأمل أن تكون هذه التعليمات مفيدة لك.

شكرًا جزيلاً لموقع DFRobot.com على إرسال هذه المنتجات إلي:

  • لوحة ESP32 FireBeetle
  • درع FireBeetle Expantion
  • DS18B20 مستشعر درجة الحرارة

لقد وجدت هذه المكتبة مؤخرًا. يدعي ReadME أنه يمكنك الاتصال بأجهزة BLE الأخرى لتلقي البيانات (لا يمكنك الإعلان عن نفسك). لم أجربه ولكن يمكنك التحقق منه إذا كنت مهتمًا.

يمكنك التحقق من فيديو المشروع على: يوتيوب

موصى به: