ملخص سريع
يغطي هذا البرنامج التعليمي وحدتي Bluetooth HC-05 وHC-06 مع Arduino، حتى تتمكن من البدء بسرعة. على وجه الخصوص، سأتطرق إلى الاختلافات بين الوضعين الرئيسي والتابع، والأسلاك، وتكوين أوامر AT، وكيفية التحكم في مؤشر LED من هاتفك. أقوم أيضًا بتغطية UART للأجهزة مقابل SoftwareSerial.
هل تريد التحكم في مصباح LED أو مصباح 230 فولت من هاتفك باستخدام Arduino وBluetooth؟ في هذا البرنامج التعليمي، أتناول وحدتي Bluetooth HC-05 وHC-06. سنغطي الأسلاك والأكواد وأيضًا كيفية إنشاء تطبيق Android بسيط باستخدام MIT App Inventor. يحتوي البرنامج التعليمي على مشروعين، لذا يمكنك المتابعة بغض النظر عن مستوى خبرتك.
أولاً، مشروع التحكم LED هو المشروع الأبسط. ثم يمتد المشروع الثاني إلى نظام التحكم في المصابيح بجهد 230 فولت. يستخدم كلاهما نفس وحدة HC-05 أو HC-06 ونفس تطبيق Android، لذا لن تحتاج إلى تعلم الأساسيات إلا مرة واحدة. إذا كنت جديدًا على Arduino، ففكر في البدء باستخدامنا دليل أساسيات برمجة الأردوينو أولاً.
ماذا سوف تتعلم
في النهاية، سوف تعرف كيفية:
- أولاً، افهم الفرق بين وحدتي Bluetooth HC-05 وHC-06 ومتى يتم استخدام كل منهما
- فهم كيفية عمل اتصال Bluetooth التسلسلي مع Arduino
- ثم قم بتوصيل وحدة HC-05 أو HC-06 بأمان إلى لوحة Arduino
- اكتب كود Arduino لتلقي أوامر Bluetooth ومخرجات التحكم
- التحكم في LED لاسلكيًا من هاتف Android الخاص بك (مشروع مبتدئ)
- أنشئ تطبيقًا بسيطًا للتحكم بالبلوتوث باستخدام MIT App Inventor
- توسيع الإعداد إلى مشروع التحكم في مصباح 230 فولت القائم على التتابع (امتداد متقدم)
- وأخيرًا، قم باستكشاف مشكلات اتصال Bluetooth الشائعة وإصلاحها
HC-05 مقابل HC-06: الاختلافات الرئيسية وأيهما تختار
يعد HC-05 و HC-06 من أكثر وحدات البلوتوث شيوعًا التي ستراها في مشاريع Arduino. يستخدم كلاهما مواصفات Bluetooth v2.0+EDR ويتواصلان أيضًا من خلال واجهة تسلسلية. ومع ذلك، فإنهما يختلفان بطريقة واحدة حاسمة: يمكن لجهاز HC-05 أن يعمل كجهاز رئيسي وجهاز تابع، بينما يعمل HC-06 كجهاز تابع فقط. لذلك يمكن لـ HC-05 بدء الاتصال بجهاز Bluetooth آخر (مثل Arduino ثاني)، بينما ينتظر HC-06 اتصال شيء ما به.
بالنسبة لمعظم مشاريع المبتدئين، بما في ذلك كلا المشروعين في هذا البرنامج التعليمي، يعمل HC-06 بشكل جيد تمامًا نظرًا لأن هاتفك الذكي يعمل كجهاز رئيسي وتعمل الوحدة كوحدة تابعة. إذا كنت تخطط لبناء مشاريع حيث يتواصل اثنان من Arduinos مع بعضهما البعض (على سبيل المثال، a سيارة روبوت يتم التحكم فيها عن طريق البلوتوث تلقي الأوامر من اردوينو آخر)، يجب عليك اختيار HC-05 بدلا من ذلك.
جدول المقارنة الفنية
| الميزة | HC-05 | HC-06 |
|---|---|---|
| دور | الرئيسي والتابع | التابع فقط |
| بروتوكول البلوتوث | الإصدار 2.0 + إدر | الإصدار 2.0 + إدر |
| التردد | نطاق ISM 2.4 جيجا هرتز | نطاق ISM 2.4 جيجا هرتز |
| التحوير | GFSK | GFSK |
| طاقة الإرسال | 4 ديسيبل، الفئة 2 | 4 ديسيبل، الفئة 2 |
| الحساسية | -84 ديسيبل مللي واط عند 0.1% BER | -84 ديسيبل مللي واط عند 0.1% BER |
| الحد الأقصى لمعدل البيانات | 2.1 ميجابت في الثانية (غير متزامن) / 1 ميجابت في الثانية (متزامن) | 2.1 ميجابت في الثانية (غير متزامن) |
| الملفات الشخصية المدعومة | المنفذ التسلسلي (الرئيسي والتابع) | المنفذ التسلسلي (التابع فقط) |
| جهد التشغيل | 3.3-5 فولت تيار مستمر | 3.3-5 فولت تيار مستمر |
| تيار التشغيل | ~50 مللي أمبير | ~50 مللي أمبير |
| درجة حرارة التشغيل | -5 درجة مئوية إلى +45 درجة مئوية | -5 درجة مئوية إلى +45 درجة مئوية |
| معدل الباود الافتراضي | 38400 (وضع AT: 38400) | 9600 |
| نطاق معدل الباود | قابل للتكوين: 2400-1382400 | ثابت عند 9600 (بعض الإصدارات قابلة للتكوين) |
| كلمة المرور الافتراضية | 1234 | 1234 |
ما هي الوحدة التي يجب أن تختارها؟
- اختر HC-06 إذا كان مشروعك يحتاج فقط إلى تلقي الأوامر من الهاتف الذكي أو الكمبيوتر. كما أنه أسهل في الإعداد ويكلف أقل قليلاً. في الواقع، تعمل معظم مشاريع التحكم في LED، وتبديل التتابع، والمشاريع التي يتم التحكم فيها بواسطة التطبيق بشكل جيد معها.
- اختر HC-05 إذا كنت بحاجة إلى الوضع الرئيسي (على سبيل المثال، اتصال Arduino إلى Arduino)، أو إذا كنت تريد المرونة في تغيير معدلات البث بالباود وتكوين أوامر AT المتقدمة. بدلاً من ذلك، يعد HC-05 هو الخيار الأفضل لمشاريع مثل ذراع آلية يتم التحكم فيها عن طريق البلوتوث أو أ روبوت متنقل بذراع متكاملة.
كيف يعمل نظام التحكم بالبلوتوث من الاردوينو
هذه هي الطريقة التي يعمل بها التواصل:
- أولاً: الاتصال التسلسلي على الاردوينو: يستخدم Arduino أطرافه التسلسلية (TX على السن 1، RX على السن 0) لإرسال واستقبال البيانات. ال
Serial.begin()تحدد الوظيفة سرعة الاتصال (معدل الباود)، وSerial.read()يتلقى البايتات الواردة. - بعد ذلك، HC-05/HC-06 كجسر تسلسلي لاسلكي: تتصل وحدة Bluetooth بدبابيس Arduino التسلسلية وتعمل بمثابة رابط تسلسلي لاسلكي شفاف. أي شيء يرسله هاتفك عبر البلوتوث يصل إلى دبوس RX الخاص بـ Arduino تمامًا كما لو تم إرساله عبر كابل USB.
- بعد ذلك، يرسل الهاتف الذكي أوامر حرفية بسيطة: يرسل تطبيق Android (الذي تم إنشاؤه باستخدام MIT App Inventor) حرفًا واحدًا، على سبيل المثال
'1'لتشغيل شيء ما و'0'لإيقاف تشغيله، عبر اتصال Bluetooth. - أخيرًا، يقوم Arduino بتفسير الأمر وتبديل المخرجات: يقرأ Arduino الحرف الوارد ويستخدم رمزًا بسيطًا
if/elseبيان لتحديد ما إذا كان سيتم تعيين دبوس رقمي مرتفع أو منخفض، وبالتالي تشغيل أو إيقاف تشغيل مؤشر LED أو التتابع.
النمط الأساسي بسيط: يرسل الهاتف حرفًا، ثم تقوم الوحدة بتمريره عبر التسلسل، وأخيرًا يقرأه Arduino ويعمل. بمجرد حصولك على هذا، يمكنك أيضًا توسيع نطاقه ليشمل المحركات، أو محركات السيرفو، أو شاشات العرض، أو أي شيء آخر تحتاجه. لإلقاء نظرة أعمق على بنية لوحة Arduino، راجع دليلنا ما هو الاردوينو وكيف يعمل.
المكونات المطلوبة
فيما يلي المكونات مرتبة حسب المشروع، حتى تعرف ما الذي يجب شراؤه. ينطبق كل شيء في جدول "المكونات الأساسية" على كل من الجزء 1 (التحكم في LED) وكذلك الجزء 2 (التحكم في مصباح التتابع). وفي الوقت نفسه، تسرد جداول المكونات الإضافية العناصر التي تحتاجها فقط لمشروع الترحيل المتقدم.
المكونات الأساسية (كلا المشروعين)
| المكوّن | الكمية | الملاحظات |
|---|---|---|
| وحدة بلوتوث HC-05 أو HC-06 | 1 | تعمل أي وحدة لكلا المشروعين |
| لوحة أردوينو (أونو، ميجا، نانو، الخ.) | 1 | أي لوحة بها دبابيس تسلسلية للأجهزة |
| اللوح | 1 | للاتصالات النماذج الأولية |
| أسلاك التوصيل (من ذكر إلى ذكر) | العديد من | لربط المكونات |
| كابل USB (من النوع A إلى B) | 1 | لتحميل الكود على اردوينو |
| الهاتف الذكي | 1 | لتشغيل تطبيق التحكم بالبلوتوث |
مكونات إضافية للجزء 1: التحكم في LED
| المكوّن | الكمية | الملاحظات |
|---|---|---|
| الصمام (أي لون) | 1 | معيار 5 ملم من خلال ثقب LED |
| 220 أوم المقاوم | 1 | المقاوم الذي يحد من التيار لـ LED |
مكونات إضافية للجزء 2: التحكم في مصباح التتابع / 230 فولت
| المكوّن | الكمية | الملاحظات |
|---|---|---|
| وحدة التتابع (5 فولت، قناة واحدة) | 1 | يوصى بوحدة التتابع المعزولة بصريًا |
| مصباح أو جهاز (230 فولت / 110 فولت) | 1 | أي حمل يعمل بالتيار الكهربائي |
| حامل المصباح وكابل الطاقة | 1 | لأسلاك التيار الكهربائي الآمنة |
الجزء 1: التحكم بتقنية LED عبر البلوتوث (مشروع للمبتدئين)
في هذا المشروع الأول، ستقوم بتوصيل وحدة Bluetooth HC-05 أو HC-06 إلى Arduino ومن ثم التحكم في LED من هاتفك الذكي. هذه هي أبسط طريقة لتعلم التحكم في Arduino Bluetooth، كما أنها تجعلك جاهزًا لمشروع الترحيل في الجزء الثاني.
أسلاك الدائرة للتحكم في LED
أولاً، قم بتوصيل وحدة HC-05/HC-06 وLED إلى Arduino كما هو موضح في الجدول أدناه. انتبه أيضًا إلى اتصالات TX/RX. يتصل طرف TXD الخاص بالوحدة بـ RX الخاص بـ Arduino (دبوس 0)، ويتصل دبوس RXD الخاص بالوحدة بـ TX الخاص بـ Arduino (دبوس 1). يجب عليك استخدام مقسم الجهد على خط RXD لأن منطق الوحدة يعمل عند 3.3 فولت، بينما يخرج Arduino 5 فولت على طرف TX.
| HC-05/HC-06 دبوس | دبوس الأردوينو | الملاحظات |
|---|---|---|
| VCC | 5V | مصدر الطاقة للوحدة |
| GND | GND | أرضية مشتركة |
| TXD | آر إكس (دبوس 0) | وحدة الإرسال → استقبال اردوينو |
| RXD | تكساس (دبوس 1) | استخدم مقسم الجهد (1 كيلو أوم + 2 كيلو أوم) لسلامة 3.3 فولت |
| دبوس LED | دبوس الأردوينو | الملاحظات |
|---|---|---|
| الأنود (الساق الطويلة) | الدبوس 7 (من خلال المقاوم 220 أوم) | دبوس الإخراج الرقمي |
| الكاثود (ساق قصيرة) | GND | أرضية مشتركة |

كود اردوينو للتحكم بتقنية البلوتوث LED
بعد ذلك، قم بتحميل المخطط التالي إلى Arduino الخاص بك. يستمع هذا الرمز لأوامر Bluetooth الواردة على المنفذ التسلسلي ويقوم بتشغيل أو إيقاف تشغيل مؤشر LED الموجود على السن 7 اعتمادًا على الحرف المستلم.
مهم: قبل التحميل، افصل دائمًا وحدة Bluetooth عن الأطراف 0 و1. يستخدم Arduino نفس الأطراف التسلسلية لبرمجة USB، لذا فإن توصيل الوحدة يمكن أن يتسبب في فشل التحميل. ثم، بعد اكتمال التحميل، أعد توصيل الوحدة.
/**
* Author: Omar Draidrya
* Date: 2024/06/07
* Bluetooth LED Control -- HC-05 / HC-06 Arduino Tutorial
* Receives '1' or '0' from a smartphone via Bluetooth
* and turns an LED on or off.
*/
#define ledPin 7 // Pin for the LED
char state = 0; // Variable to store incoming data
void setup() {
pinMode(ledPin, OUTPUT); // Set the LED pin as output
digitalWrite(ledPin, LOW); // Initialize the LED state to OFF
Serial.begin(9600); // Start serial at 9600 baud
}
void loop() {
if (Serial.available() > 0) { // Check if data is available
state = Serial.read(); // Read the incoming byte
if (state == '0') { // If '0' is received
digitalWrite(ledPin, LOW); // Turn LED OFF
Serial.println("LED: OFF"); // Send confirmation back
} else if (state == '1') { // If '1' is received
digitalWrite(ledPin, HIGH); // Turn LED ON
Serial.println("LED: ON"); // Send confirmation back
}
}
}
شرح الكود
يستخدم هذا المخطط المنفذ التسلسلي لجهاز Arduino للتحدث مع وحدة Bluetooth. وهنا ما يفعله كل جزء:
#define ledPin 7: يعين دبوس 7 باعتباره دبوس إخراج LED. يمكنك تغيير هذا إلى أي دبوس رقمي.Serial.begin(9600): يؤدي هذا إلى بدء الاتصال التسلسلي عند 9600 باود، لذلك يجب أن يتطابق مع معدل الباود الخاص بوحدة Bluetooth الخاصة بك. الافتراضي HC-06 هو 9600 باود. إذا كنت تستخدم HC-05، فقد تحتاج إلى ضبطه على 9600 باستخدام أوامر AT، أو تغيير هذا السطر إلىSerial.begin(38400)لمطابقة الرقم الافتراضي HC-05 وهو 38400.Serial.available(): يؤدي هذا إلى إرجاع عدد البايتات المنتظرة في المخزن المؤقت التسلسلي. عندما يرسل الهاتف حرفًا عبر البلوتوث، يصبح هذا أكبر من 0.Serial.read(): يقرأ بايت واحد من المخزن المؤقت التسلسلي ويخزنه في ملفstateعامل.if (state == '1'): يقارن الحرف المستلم بالرقم "1". إذا كان متطابقًا، فسيتم تشغيل مؤشر LED باستخدامdigitalWrite(ledPin, HIGH). إذا وصل الرقم "0" بدلاً من ذلك، فسيتم إيقاف تشغيل مؤشر LED.Serial.println(): يؤدي هذا أيضًا إلى إرسال رسالة تأكيد إلى الهاتف، والتي يمكنك عرضها في التطبيق للحصول على تعليقات.
ملاحظة معدل الباود: كمرجع، عادةً ما تكون الوحدة النمطية HC-06 افتراضية على 9600 باود، في حين أن HC-05 افتراضية على 38400 باود في وضع الاتصال. يستخدم الكود أعلاه 9600 للتوافق مع HC-06. إذا كنت تستخدم HC-05 ولم تقم بتغيير معدل البث بالباود الخاص به، فاستبدله Serial.begin(9600) مع Serial.begin(38400). لذلك، يجب أن يتطابق معدل البث بالباود في التعليمات البرمجية دائمًا مع ما تستخدمه الوحدة النمطية الخاصة بك، وإلا فسيفشل الاتصال.
إنشاء تطبيق للتحكم بالبلوتوث باستخدام MIT App Inventor
لإرسال أوامر إلى Arduino من هاتفك، تحتاج إلى تطبيق Android بسيط. في هذا القسم، سوف تقوم ببناء واحدة باستخدام مخترع تطبيقات معهد ماساتشوستس للتكنولوجيا، منصة برمجة مرئية مجانية. يعمل نفس التطبيق مع كل من مشروع LED ومشروع الترحيل. يحدد كود Arduino ما يحدث عندما يتلقى "1" أو "0"، وليس التطبيق.
الخطوة 1: التسجيل وإنشاء المشروع
- أولا، اذهب إلى مخترع تطبيقات معهد ماساتشوستس للتكنولوجيا وقم بتسجيل الدخول باستخدام حساب Google الخاص بك.
- ثم انقر فوق "بدء مشروع جديد" وتسميته "التحكم بالبلوتوث".
الخطوة الثانية: تصميم واجهة المستخدم
في طريقة العرض "المصمم"، قم بإضافة هذه المكونات إلى شاشتك:
- أولا، أ ملصق. اضبط النص على "التحكم بالبلوتوث". هذا بمثابة عنوان التطبيق.
- التالي، أ ListPicker. اضبط النص على "تحديد جهاز Bluetooth" وأعد تسميته إلى ""ListPicker_Bluetooth"". سيُظهر هذا أجهزة Bluetooth المقترنة المتاحة.
- ثم أضف اثنين أزرار:
- الزر 1: قم بتسميته "زر_تشغيل"، اضبط النص على "تشغيل".
- الزر 2: قم بتسميته "زر_إيقاف"، اضبط النص على "إيقاف".
- وأخيراً أضف أ عميل بلوتوث مكون من لوحة الاتصال (هذا مكون غير مرئي يتعامل مع اتصال Bluetooth).
الخطوة 3: برمجة الكتل
بعد ذلك، قم بالتبديل إلى كتل المحرر ثم قم بإنشاء المنطق التالي:
when ListPicker1.BeforePicking
set ListPicker1.Elements to BluetoothClient1.AddressesAndNames
when ListPicker1.AfterPicking
if call BluetoothClient1.Connect address ListPicker1.Selection
then set Label1.Text to "Connected"
else set Label1.Text to "Not Connected"
when Button1.Click
if BluetoothClient1.IsConnected
call BluetoothClient1.SendText text "1"
when Button2.Click
if BluetoothClient1.IsConnected
call BluetoothClient1.SendText text "0"
إليك كيفية عمل هذه الكتل: أولاً، قبل فتح ListPicker، يقوم بتحميل جميع أسماء وعناوين أجهزة Bluetooth المقترنة. وبعد ذلك، عند تحديد جهاز، يحاول التطبيق الاتصال. إذا نجح الاتصال، فسيتم تحديث التسمية إلى "متصل". وأخيرًا، يقوم الزران بإرسال الحرفين "1" و"0" عبر البلوتوث عند الضغط عليهما، ويستقبل الاردوينو هذه الأحرف ويعمل عليها.

الخطوة 4: إنشاء التطبيق وتثبيته
وأخيرًا، في MIT App Inventor، انتقل إلى إنشاء → التطبيق (توفير رمز الاستجابة السريعة لـ .apk). بعد ذلك، قم بمسح رمز الاستجابة السريعة ضوئيًا بهاتفك لتنزيل التطبيق وتثبيته. قد تحتاج أيضًا إلى تمكين "التثبيت من مصادر غير معروفة" في إعدادات Android.

توصيل هاتفك الذكي بوحدة HC-05/HC-06
عملية الاتصال هذه هي نفسها لكلا المشروعين. بعد القيام بذلك مرة واحدة، يمكنك إعادة استخدام نفس الاقتران لأي مشروع Bluetooth Arduino مستقبلي.
الخطوة 1: قم بإقران وحدة البلوتوث
- أولاً، قم بتشغيل Arduino الخاص بك (عبر USB أو طاقة خارجية). عند هذه النقطة، يجب أن يبدأ مؤشر LED الخاص بالوحدة HC-05/HC-06 في الوميض بسرعة، مما يشير إلى أنه في وضع الإقران.
- ثم، على هاتف Android الخاص بك، انتقل إلى الإعدادات → بلوتوث وتمكين البلوتوث.
- بعد ذلك، قم بالبحث عن الأجهزة. يجب أن ترى "HC-05" or "HC-06" في قائمة الأجهزة المتوفرة.
- ثم اضغط على اسم الجهاز للإقران. عندما يطلب منك كلمة المرور، أدخل 1234 (هذا هو الإعداد الافتراضي لكلا الوحدتين).
- بعد الاقتران، ستظهر الوحدة ضمن "الأجهزة المقترنة". قد يتغير مؤشر LED الخاص بالوحدة إلى وميض أبطأ أو يظل ثابتًا، وفقًا للطراز.
الخطوة 2: الاتصال عبر التطبيق
- أولاً، افتح تطبيق التحكم عبر Bluetooth الذي قمت بإنشائه باستخدام MIT App Inventor.
- مقبض "اختر جهاز بلوتوث". ستظهر قائمة بالأجهزة المقترنة.
- ثم، حدد HC-05 أو HC-06 من القائمة. إذا نجحت، فيجب أن تتغير التسمية إلى "متصل".
- يضعط "تشغيل" لإرسال "1" إلى Arduino (يتم تشغيل LED أو التتابع). يضعط "إيقاف" لإرسال "0" (ينطفئ مؤشر LED أو التتابع).
إذا لم يتمكن التطبيق من العثور على الوحدة، فتأكد أولاً من أن الوحدة بها طاقة وأن مؤشر LED الخاص بها يومض بسرعة. تأكد أيضًا من أنك قمت بإقرانه بالفعل في إعدادات Bluetooth بالهاتف. نظرًا لأن ListPicker الخاص بالتطبيق يعرض فقط الأجهزة المقترنة سابقًا، فلن تظهر الأجهزة الجديدة.
الجزء 2: مرحل البلوتوث والتحكم في المصباح 230 فولت (امتداد متقدم)
نظرًا لأنك نجحت في التحكم في مصباح LED عبر البلوتوث، يمكنك الآن توسيع نفس المفهوم لتبديل مصباح يعمل بالتيار الكهربائي باستخدام وحدة الترحيل. باختصار، التتابع عبارة عن مفتاح يتم التحكم فيه كهربائيًا. يقوم Arduino بتنشيط المرحل، ثم يقوم المرحل بعد ذلك بتوصيل أو فصل دائرة المصباح 230 فولت (أو 110 فولت).
⚠ تحذير للسلامة: يتضمن هذا المشروع طاقة التيار المتردد (230 فولت أو 110 فولت)، والتي يمكن أن تسبب إصابة خطيرة أو الوفاة. إذا لم تكن لديك خبرة في توصيل الأسلاك الكهربائية، فلا تحاول هذا المشروع. بدلاً من ذلك، اعمل مع كهربائي مؤهل أو اختبر حملًا منخفض الجهد (مثل شريط LED 12 فولت يتم تشغيله من خلال المرحل) قبل توصيله بالطاقة الرئيسية. تأكد دائمًا من أن جميع توصيلات الجهد العالي تظل معزولة بشكل صحيح، ولا تلمس الأسلاك المكشوفة أبدًا عندما تكون الدائرة بها طاقة.
نصيحة للمبتدئين: كبديل، يمكنك أيضًا اختبار مشروع الترحيل بأمان دون جهد التيار الكهربائي عن طريق توصيل حمل تيار مستمر منخفض الجهد (مثل جرس 5 فولت أو مصباح LED يعمل بالبطارية) بمحطات الترحيل المفتوحة عادة (NO) والمشتركة (COM). بهذه الطريقة، يمكنك بعد ذلك التحقق من نقرات التتابع وعمل الدائرة قبل إدخال أي جهد خطير.
أسلاك الدائرة للتحكم في مصباح التتابع
لاحظ أن اتصالات وحدة Bluetooth تظل كما هي تمامًا كما في الجزء الأول، لذلك تحتاج فقط إلى تغيير أسلاك الإخراج. بدلاً من ذلك، يقوم الدبوس 7 الآن بتشغيل وحدة الترحيل بدلاً من مؤشر LED.
| دبوس وحدة التتابع | دبوس الأردوينو | الملاحظات |
|---|---|---|
| VCC | 5V | الطاقة لوحدة التتابع |
| GND | GND | أرضية مشتركة |
| في (الإشارة) | دبوس 7 | إشارة التحكم من اردوينو |
| اتصال المصباح | محطة التتابع | الملاحظات |
|---|---|---|
| سلك المصباح 1 | لا (مفتوح عادة) | يتم الاتصال عند تنشيط التتابع |
| سلك حي (L) من التيار الكهربائي | كوم (عام) | التيار الكهربائي الوارد سلك حي |
| سلك محايد (N) من التيار الكهربائي | مباشرة إلى المصباح | محايد يتجاوز التتابع |

كود اردوينو للتحكم في تتابع البلوتوث
كما سترى، فإن رمز التحكم في التتابع يشبه إلى حد كبير رمز LED. والفرق الرئيسي هو أن الطرف 7 يقوم الآن بتشغيل إشارة دخل المرحل، كما أن معدل الباود هو 38400 لمطابقة HC-05 الافتراضي. إذا كنت تستخدم HC-06 بدلاً من ذلك، فقم بالتغيير Serial.begin(38400) to Serial.begin(9600).
/**
* Author: Omar Draidrya
* Date: 2024/06/07
* Bluetooth Relay/Lamp Control -- HC-05 / HC-06 Arduino Tutorial
* Receives '1' or '0' from a smartphone via Bluetooth
* and switches a relay (connected to a lamp) on or off.
*/
#define relayPin 7 // Pin connected to relay IN
int state = 0; // Variable to store incoming data
void setup() {
pinMode(relayPin, OUTPUT); // Set relay pin as output
digitalWrite(relayPin, LOW); // Initialize relay to OFF
Serial.begin(38400); // HC-05 default baud rate
}
void loop() {
if (Serial.available() > 0) { // Check if data is available
state = Serial.read(); // Read the incoming byte
}
if (state == '0') {
digitalWrite(relayPin, LOW); // Turn Relay OFF
Serial.println("Lamp: OFF"); // Send confirmation back
state = 0; // Reset state
} else if (state == '1') {
digitalWrite(relayPin, HIGH); // Turn Relay ON
Serial.println("Lamp: ON"); // Send confirmation back
state = 0; // Reset state
}
}
شرح الكود
يتبع هذا البرنامج نفس نمط رسم LED، مع بعض الاختلافات:
Serial.begin(38400): تم ضبط معدل الباود على 38400، وهي سرعة الاتصال الافتراضية لجهاز HC-05. إذا كنت تستخدم HC-06 (والذي هو 9600 افتراضيًا)، فقم بتغيير هذا إلىSerial.begin(9600).state = 0;بعد كل إجراء: تتم إعادة تعيين متغير الحالة بعد معالجة كل أمر. ونتيجة لذلك، لا يتم تشغيل المرحل بشكل متكرر من نفس الأمر.- وحدة التتابع يفسر الإشارة العالية على السن 7 على أنها "تنشيط"، والتي تقوم بعد ذلك بإغلاق مفتاح التتابع وإكمال دائرة المصباح. وبالمثل، تعمل الإشارة المنخفضة على إلغاء تنشيط المرحل وإطفاء المصباح.
- يبقى التطبيق كما هو. لا تحتاج إلى إنشاء تطبيق جديد. نظرًا لأن تطبيق MIT App Inventor نفسه من القسم السابق يرسل "1" و"0"، ويحدد كود Arduino ما تفعله هذه الأوامر.
بعد تحميل الرمز (تذكر فصل وحدة Bluetooth عن الأطراف 0/1 أولاً)، ثم أعد توصيل الوحدة واستخدم نفس تطبيق التحكم في Bluetooth للاختبار. إذا كان كل شيء يعمل، فيجب أن ينقر المرحل عند الضغط على "تشغيل" ثم يحرر عند الضغط على "إيقاف التشغيل".
استكشاف مشكلات البلوتوث الشائعة وإصلاحها
إذا لم يعمل إعداد Bluetooth الخاص بك كما هو متوقع، فتعامل مع هذه المشكلات الشائعة أولاً:
| مشكلة | السبب المحتمل | حل |
|---|---|---|
| لا يمكن للهاتف العثور على الوحدة النمطية HC-05/HC-06 | الوحدة غير مدعومة أو ليست في وضع الإقران | تأكد من أن مؤشر LED الخاص بالوحدة يومض بسرعة. تحقق من اتصالات VCC وGND. تأكد من تمكين البلوتوث على هاتفك. |
| أزواج Bluetooth ولكن التطبيق لا يتحكم في Arduino | عدم تطابق معدل الباود بين الكود والوحدة النمطية | إن Serial.begin() يجب أن تتطابق القيمة في الكود الخاص بك مع معدل الباود الخاص بالوحدة. القيمة الافتراضية HC-06 هي 9600؛ القيمة الافتراضية HC-05 هي 38400. |
| لا يتم تشغيل أو إيقاف تشغيل LED | دبوس خاطئ أو المقاوم المفقود | تحقق مرة أخرى من أن أنود LED متصل بالطرف 7 من خلال مقاومة 220 أوم، وأن الكاثود يذهب إلى GND. تحقق من الرقم 7 في الكود. |
| ينقر التتابع ولكن المصباح لا يعمل | أسلاك التيار الكهربائي غير صحيحة في التتابع | تحقق من توصيل السلك المباشر بـ COM، ومن توصيل سلك المصباح بـ NO (مفتوح عادةً). تحقق من أن السلك المحايد يذهب مباشرة إلى المصباح. |
| يبدو أن أسلاك TX/RX خاطئة أو فشل الاتصال | يتم تبديل TX وRX | تذكر: يذهب TXD للوحدة إلى Arduino’s RX (pin 0)، ويذهب RXD للوحدة إلى Arduino’s TX (pin 1). يعبرون. |
مشكلات الاتصال التسلسلي والتطبيق
| مشكلة | السبب المحتمل | حل |
|---|---|---|
| لا توجد استجابة من Arduino بعد تحميل الكود | تم توصيل وحدة Bluetooth أثناء التحميل | افصل وحدة Bluetooth عن الأطراف 0 و1 قبل التحميل. تشترك وحدة USB التسلسلية ووحدة Bluetooth في نفس المسامير، مما يتسبب في حدوث تعارضات. |
| يتصل التطبيق ولكن الأوامر ليس لها أي تأثير | التطبيق يرسل أحرف خاطئة | تحقق من أن Button_ON يرسل النص "1" (وليس الرقم 1) وأن Button_OFF يرسل "0". في كود Arduino، تستخدم المقارنة الأحرف الحرفية ('1' و'0'). |
| يظل مؤشر LED للوحدة ثابتًا (لا يومض) | الوحدة في وضع الأمر AT أو متصلة بالفعل | دورة الطاقة الوحدة. إذا دخل في وضع AT عند بدء التشغيل (HC-05 مع تثبيت دبوس KEY على مستوى عالٍ)، فافصل دبوس KEY وأعد التشغيل. |
| يعرض التطبيق "غير متصل" بعد تحديد الجهاز | الوحدة متصلة بالفعل بجهاز آخر، أو انتهت صلاحية الاقتران | قم بإلغاء إقران الوحدة وإعادة إقرانها في إعدادات Bluetooth بهاتفك. تأكد من عدم اتصال أي هاتف أو تطبيق آخر بالوحدة. |
الأسئلة المتداولة
هل يمكنني التحكم في أكثر من مؤشر LED أو مرحل واحد باستخدام هذا الإعداد؟
نعم. يمكنك توسيع الكود للاستماع لمزيد من الأحرف (مثل "2"، و"3"، و"A"، و"B") وتعيين كل حرف إلى دبوس مختلف. يمكنك أيضًا إضافة المزيد من الأزرار في تطبيق MIT App Inventor، حيث يرسل كل زر حرفًا مختلفًا. وهذا هو نفس النهج المستخدم في مشاريع مثل سيارة روبوت يتم التحكم فيها عن طريق البلوتوثحيث يرسل التطبيق أوامر حركية متعددة كأحرف مختلفة.
هل يعمل هذا مع iPhone (iOS)؟
لا. يستخدم الطرازان HC-05 وHC-06 تقنية Bluetooth Classic (ملف تعريف SPP)، ولا يدعم iOS هذا البروتوكول. تحتاج أجهزة iPhone إلى وحدات Bluetooth منخفضة الطاقة (BLE) مثل HM-10 أو وحدة BLE المدمجة في ESP32. أما بالنسبة لهواتف Android، فإن HC-05 وHC-06 يعملان بدون مشكلات.
إلى أي مدى يصل اتصال البلوتوث؟
يعد كل من HC-05 وHC-06 من أجهزة Bluetooth من الفئة 2 بنطاق نموذجي يبلغ حوالي 10 أمتار (33 قدمًا) في الهواء الطلق. ومع ذلك، فإن الجدران والأثاث والعوائق الأخرى ستقلل من النطاق الفعال.
هل يمكنني استخدام SoftwareSerial بدلاً من المسامير التسلسلية للأجهزة 0 و1؟
نعم. تتيح لك مكتبة SoftwareSerial استخدام الأطراف الرقمية الأخرى (على سبيل المثال، الأطراف 10 و11) مثل TX وRX. يؤدي هذا إلى تجنب تعارض التحميل ويتيح لك أيضًا استخدام Serial Monitor لتصحيح الأخطاء في نفس الوقت. يعمل SoftwareSerial بشكل أقل موثوقية بمعدلات باود أعلى، لذا فإن 9600 باود هو أفضل رهان لك عند استخدامه.
هل من الآمن توصيل أنابيب 230 فولت بمرحل يتم التحكم فيه بواسطة Arduino؟
يمكن لوحدة الترحيل المُصنفة بشكل صحيح تبديل جهد التيار الكهربائي بأمان. ومع ذلك، تتطلب دوائر توصيل التيار الكهربائي المعرفة الكهربائية واحتياطات السلامة. إذا كنت تفتقر إلى الخبرة، فاختبره بحمل جهد منخفض أولاً واستشر كهربائيًا مؤهلًا قبل العمل باستخدام مصدر الطاقة الرئيسي. تأكد دائمًا من أن جميع توصيلات الجهد العالي معزولة ومغلقة.
ما هو الفرق بين HC-05 وHC-06؟
يمكن أن يعمل HC-05 كجهاز Bluetooth رئيسي وعبد، مما يعني أنه يمكنه بدء الاتصالات وقبولها. لا يمكن لـ HC-06 أن يعمل إلا كعبد، لذا فهو يقبل فقط الاتصالات من الهاتف أو الكمبيوتر. بالنسبة للمشاريع التي يتحكم فيها هاتفك في Arduino، تعمل أي من الوحدتين. للاتصال من Arduino إلى Arduino Bluetooth، تحتاج إلى تعيين HC-05 واحد على الأقل كرئيسي.
هل يمكنني استخدام هذا مع لوحات اردوينو الأخرى؟
نعم. بما أن كلا الوحدتين تتواصلان عبر تسلسلي (TX/RX)، فيمكنك استخدام أي لوحة Arduino ذات أطراف تسلسلية. في Arduino Mega، يمكنك أيضًا استخدام Serial1 أو Serial2 أو Serial3، مما يتجنب تعارض التحميل على الأطراف 0 و1. في Nano، تظل الأسلاك كما هي في Uno.
ما هي كلمة مرور الاقتران الافتراضية؟
كلمة مرور الاقتران الافتراضية (PIN) لكل من HC-05 وHC-06 هي 1234. قد تستخدم بعض وحدات HC-06 0000 بدلاً من. إذا لزم الأمر، يمكنك تغيير كلمة المرور باستخدام أوامر AT.
لماذا أحتاج إلى فصل وحدة البلوتوث قبل تحميل الكود؟
يستخدم Arduino Uno الدبابيس 0 (RX) و 1 (TX) لكل من اتصال USB ووحدة Bluetooth. نظرًا لأن كلاهما يشتركان في نفس الدبابيس، فإنهما يتداخلان مع بعضهما البعض أثناء التحميل. لذا قم دائمًا بفصل وحدة Bluetooth عن هذه الدبابيس قبل تحميل الرمز، ثم أعد توصيلها بعد ذلك.
ما هو معدل الباود الذي يجب أن أستخدمه؟
الافتراضي HC-06 هو 9600 باود، في حين أن HC-05 افتراضيًا هو 38400 باود في وضع الاتصال (وأيضًا 38400 في وضع أمر AT). لك Serial.begin() يجب أن تتطابق القيمة مع معدل الباود الخاص بوحدتك. إذا لم تكن متأكدًا، جرب 9600 أولاً (الأكثر شيوعًا لـ HC-06)، ثم حاول 38400 (الشائع لـ HC-05).
الموارد والمشاريع القادمة
إذا كنت تريد الاستمرار، فإليك بعض مشاريع OmArTronics ذات الصلة التي تستحق التحقق منها:
مشاريع متابعة المبتدئين
- أساسيات برمجة الأردوينو. ابدأ هنا إذا كنت بحاجة إلى مراجعة مفاهيم Arduino الأساسية مثل الإدخال/الإخراج الرقمي والمتغيرات والاتصال التسلسلي.
- دليل التحكم في محرك سيرفو اردوينو. يغطي التحكم في المحركات السيرفو باستخدام Arduino. يمكنك بعد ذلك الجمع بين التحكم عبر Bluetooth والحركة السيرفو لآليات التحكم عن بعد.
- محرك L298N مع اردوينو. إن معرفة كيفية تشغيل محركات التيار المستمر باستخدام الجسر L298N H يكون مفيدًا لمشروعات البلوتوث التي تعمل بمحرك.
مشاريع بلوتوث المتقدمة
- سيارة روبوت يتم التحكم فيها عن طريق البلوتوث. قم ببناء سيارة يتم التحكم فيها بواسطة الهاتف الذكي باستخدام Arduino وHC-05 وAdafruit Motor Shield. يستخدم نفس مبادئ اتصال Bluetooth الواردة في هذا البرنامج التعليمي.
- سيارة أوموبي الروبوتية. نسخة مطورة من السيارة الروبوتية التي تعمل بتقنية Bluetooth مع هيكل مخصص مطبوع ثلاثي الأبعاد.
- الذراع الروبوتية ذات 6 دووف ذات التحكم بالبلوتوث. تحكم في ذراع آلية كاملة ذات 6 محاور لاسلكيًا من هاتفك باستخدام وحدة HC-05 وتطبيق مخصص.
- OmObiArm: روبوت متحرك بذراع روبوتية مدمجة. يجمع بين منصة متنقلة يتم التحكم فيها عن طريق البلوتوث وذراع آلية، ويتم التحكم في كل ذلك من خلال تطبيق هاتف ذكي واحد.
- عقبة-تجنب سيارة روبوت. قم ببناء روبوت مستقل يتجنب العوائق باستخدام جهاز استشعار بالموجات فوق الصوتية. تكملة جيدة للسيارة التي يتم التحكم فيها عن طريق البلوتوث.
الخاتمة
يغطي ذلك وحدات Bluetooth HC-05 وHC-06 مع Arduino. لقد بدأنا بأساسيات الاتصال التسلسلي، ثم أنشأنا مشروعًا للتحكم في LED باستخدام الأسلاك والرمز وتطبيق Android المخصص، ثم قمنا بتوسيعه للتحكم في مصباح جهد التيار الكهربائي من خلال مرحل.
يظهر الاتصال التسلسلي عبر Bluetooth، وبناء التطبيقات باستخدام MIT App Inventor، وتبديل المخرجات مرارًا وتكرارًا في مشاريع Arduino. على سبيل المثال، يمكنك محاولة إضافة المزيد من الأزرار إلى التطبيق، أو التحكم في أجهزة متعددة، أو الانتقال إلى أحد المشاريع ذات الصلة المرتبطة أعلاه.
إذا كان هناك شيء لا يعمل أو كان لديك أسئلة، قم بإسقاط تعليق أدناه. يمكنك أيضًا التحقق من منتجاتنا الأخرى دروس الاردوينو والروبوتات في OmArTronics لمزيد من المشاريع مثل هذا.
رأي واحد حول “Arduino and HC-05/HC-06 Bluetooth Module Complete Tutorial”