في هذه المقالة سنتعلّم كيفيّة تهيئة وربط شريحتي بلوتوث (HC-05) للعمل وفقاً لنظام السيّد والتابع (Master and Slave devices).

تهيئة شريحة البلوتوث (HC-05) – أوامر AT

لتهيئة وربط شريحتي البلوتوث (HC-05) للعمل وفقاً لنظام السيد والتابع، يجب الانتقال إلى وضع الأوامر AT، وفيما يلي نشرح طريقة القيام بذلك:

نقوم بربط الشريحة بالأردوينو كما هو موضّح في المخطط، إضافة إلى توصيل الرجل EN لشريحة البلوتوث بجهد 5 فولط، وأيضًا نقوم بتبديل الأرجل RX و TX في لوحة الأردوينو.

 

توصيل شريحة البلوتوث (HC-05) بلوحة الأردوينو إضافة لتوصيل الأرجل RX وTX.
توصيل شريحة البلوتوث (HC-05) بلوحة الأردوينو إضافة لتوصيل الأرجل RX وTX

وبذلك يجب توصيل الرجل RX (والتي أصبحت TX) في لوحة الأردوينو مع الرجل RX في شريحة البلوتوث من خلال مقسم الجهد، والرجل TX (والتي أصبحت RX) في لوحة الأردوينو مع الرجل TX في شريحة البلوتوث، ومع الضغط على الزر المجاور للرجل EN يجب تشغيل شريحة البلوتوث للدخول إلى وضع الأوامر، فإذا أصبحت شريحة البلوتوث تومض كل ثانيتين فهذا يعني أنّه تمّ تفعيل وضع الأوامر AT بنجاح.

بعد ذلك علينا تحميل برنامج فارغ على شريحة الأردوينو، مع الأخذ بعين الاعتبار وجوب فصل الأرجل TX و RX عند التحميل، ثمّ نقوم بتشغيل المراقب التسلسلي (Serial Monitor) ونختار (Both NL and CR) ونحدد (34800) لـ (Baud Rate) التي تمثل معدّل النقل الافتراضي لشريحة البلوتوث، وأخيراً أصبح بإمكاننا إرسال تعليمات الأوامر بالشكل التالي:

 

تنسيق الأوامر في وضع الأوامر AT
تنسيق الأوامر في وضع الأوامر AT

كلّ التعليمات تبدأ بـ (“AT”) متبوعة بإشارة (“+”) ثم اسم البارامتر <Parameter Name> وتنتهي بإشارة (“؟”) التي ستعيد القيمة الحالية للبارامتر، أو تنتهي بإشارة (“=”) عندما نريد إدخال قيمة جديدة للبارامتر.

 

  • تهيئة التابع (Slave Configuration)

على سبيل المثال إذا أدخلنا فقط (“AT”) التي تمثل أمر اختبار، يجب أن تظهر رسالة OK، وفي حال أدخلنا (“AT+UART?”) سنحصل على قيمة معدّل النقل الافتراضي والتي تساوي 38400، وفي حال أدخلنا (“AT+ROLE?”) سنحصل على (+ROLE=0) التي تعني أنّ شريحة البلوتوث تعمل بنمط التابع (Slave Mode)، وإذا أدخلنا (“AT+ADDR?”) سنحصل على عنوان شريحة البلوتوث وسيكون عنواناً مشابهاً للعنوان التالي (98d3:34:905d3f).

 

بعض الأوامر في وضع الأوامر AT
بعض الأوامر في وضع الأوامر AT

وهذا العنوان سنحتاجه في عملية تهيئة شريحة البلوتوث التي ستعمل بنمط السيد master، كما يمكن تغيير عدة بارامترات مثل: الاسم ومعدّل النقل وكلمة سر الاقتران، ولكن ما نحتاجه الآن هو العنوان السابق فقط.

تهيئة الشريحة السيد (Master Configuration)

بدايةً لتهيئة شريحة السيد يجب التأكّد من أنّ معدّل النقل هو 38400 كما هو معدّل النقل في الشريحة التابع، ثم بعد ذلك بإدخال الأمر (“AT+ROLE=1”) سيتمّ تهيئة الشريحة كشريحة سيد (Master Device)، ثمّ سنضبط وضع الاتصال كاتصال العنوان الثابت (Fixed Mode) باستخدام الأمر (“AT+CMODE=0”)، وباستخدام الأمر (“AT+BIND=”) سندخل عنوان الشريحة التابع الذي قمنا بحفظه مسبقاً.

 

أوامر تهيئة شريحة السيد (Master Configuration)
أوامر تهيئة شريحة السيد (Master Configuration)

مع الأخذ بعين الاعتبار أنّه يجب استخدام فواصل (,) بدلًا من النقطتين (:) من الشكل ‘,’ ضمن عنوان التابع، بالإضافة إلى أنّه يمكننا تجاوز الخطوة السابقة في حال كان الإدخال “1” بدلاً من “0” في تعليمة (“AT+CMODE=0”) مما يتيح لشريحة السيد من الاتصال مع أي شريحة بلوتوث ضمن مجالها ولكن تفتقر هذه العملية إلى الموثوقيّة والأمان.

من خلال هذا الرابط يمكنك إيجاد قائمة بكامل الأوامر والبارامترات المتعلقة بوضع الأوامر AT: الرابط هنا

وبذلك لم يتبقَّ لدينا أيّة أعمال إضافيّة لتهيئة شريحتي البلوتوث للعمل وفقاً لنظام السيد والتابع، وفي حال قمنا بإعادة تشغيل الشريحتين بالوضع العادي (وضع البيانات) فإنّه خلال ثوانٍ سيتصل السيد بالتابع، وكلا الشريحتين ستومضان كل ثانيتين، ممّا يدلّ على أنّ الاتصال تمّ بشكل ناجح.

 

التوصيل بين شريحتي بلوتوث (HC-05) – مثال تطبيقي

من مخطط الدارة التوضيحي، سنستخدم مقاومة متغيرة عند الشريحة السيد للتحكم بمحرك سيرفو في الشريحة التابع، وبالعكس سنستخدم زر من النوع push button في الشريحة التابع للتحكم بـ ليد (LED) في الشريحة السيد.

 

مخطط توصيل الشريحتين
مخطط توصيل الشريحتين

القطع المستخدمة

 

  • شرح الكود:

بدايةً يجب علينا تعريف الأرجل وبعض المتغيرات اللازمة. ضمن قسم SETUP الخاص بالسيد سنعرّف رجل الليد (LED pin) كخرج بقيمة LOW، والبدء باتصال تسلسلي بمعدل نقل 38400، وبشكل مشابه في شريحة التابع نعرّف الـ PUSH BUTTON كدخل، ونعرّف محرك السيرفو حسب الرجل المتصلة معه، وبدء باتصال تسلسلي بنفس معدّل النقل الخاص بالسيد.

في قسم LOOP في كود كلا الشريحتين من خلال تعليمة Serial.available() سنختبر إن كان هناك بيانات على المنفذ التسلسلي ليتمّ قراءتها من خلال تعليمة Serial.read() ونخزّنها في متغيّر نسمّيه (state)، وبالتالي إذا استقبل السيد المحرف (1) الذي سيكون مرسلاً من قبل التابع عندما يتم الضغط على الزر (بمعنى آخر حالة الـ push button  تكون High) فيؤدي ذلك إلى إضاءة الليد، وبشكل منطقي إذا كان المحرف “0” سيُطفَأ الليد.

وبالنسبة للسيرفو، أولاً عند شريحة السيد سنقرأ قيمة المقاومة المتغيّرة ونغيّر المجال لمجال مناسب لعمل محرك السيرفو من 0-255، وترسل هذه القيمة إلى التابع يقوم بتشغيل محرك السيرفو وفقاً لقيمتها.

الكود البرمجي 1(Master code): التحميل من هنا

الكود البرمجي 2(slave code): التحميل من هنا


المصدر:هنا
ترجمة: حسام جنيدي , مراجعة: محمد مرتكوش , تدقيق لغوي: سلام أحمد , تصميم: علي العلي , تحرير: كرم ديوب