- تثبيت الحزم المطلوبة لاتصالات البلوتوث:
- إقران الأجهزة مع Raspberry Pi عبر البلوتوث:
- اختيار لعبة السيارة:
- مخطط الدائرة وشرحها:
- التحكم في السيارة عن بعد باستخدام تطبيق Android BlueTerm:
- برمجة بايثون:
يشتهر Raspberry Pi بشعبية كبيرة في مشاريع إنترنت الأشياء نظرًا لقدرته السلسة على الاتصال اللاسلكي عبر الإنترنت. يحتوي Raspberry Pi 3 على شبكة Wi-Fi و Bluetooth مدمجة ، والبلوتوث هو بروتوكول اتصال لاسلكي شائع جدًا. سنقوم اليوم ببناء سيارة يتم التحكم فيها عن بعد باستخدام Raspberry Pi 3 و Bluetooth ، وهنا سنستخدم الهاتف الذكي كجهاز تحكم عن بعد للتحكم في السيارة. لقد قمنا سابقًا ببناء سيارة RC هذه باستخدام Arduino.
نحن هنا نستخدم Raspberry Pi 3 الذي يحتوي على تقنية Bluetooth مدمجة ، لذلك لا نحتاج إلى استخدام أي دونجل USB Bluetooth خارجي. نحن هنا نستخدم بروتوكول RFCOMM Bluetooth للاتصال اللاسلكي.
تتبع البرمجة الخاصة بـ Bluetooth في Python نموذج برمجة المقبس ويتم إجراء الاتصالات بين أجهزة Bluetooth من خلال مقبس RFCOMM. RFCOMM (اتصالات الترددات الراديوية) هو بروتوكول Bluetooth الذي يوفر منافذ تسلسلية RS-232 مقلدة ويسمى أيضًا بمحاكاة المنفذ التسلسلي. يعتمد ملف تعريف منفذ Bluetooth التسلسلي على هذا البروتوكول. تحظى RFCOMM بشعبية كبيرة في تطبيقات Bluetooth بسبب دعمها الواسع وواجهة برمجة التطبيقات المتاحة للجمهور. إنه مرتبط ببروتوكول L2CAP.
إذا كان لديك Raspberry Pi 2 ، فأنت بحاجة إما إلى استخدام وحدة بلوتوث خارجية أو وحدة بلوتوث HC-06. تحقق من مشاريعنا السابقة لاستخدام أجهزة Bluetooth الخارجية هذه: التحكم في Raspberry Pi GPIO باستخدام تطبيق Android عبر Bluetooth والأجهزة المنزلية التي يتحكم فيها Raspberry Pi.
تثبيت الحزم المطلوبة لاتصالات البلوتوث:
قبل البدء ، نحتاج إلى تثبيت بعض البرامج لإعداد اتصال Bluetooth في Raspberry Pi. يجب أن يكون لديك بطاقة ذاكرة مثبتة على Raspbian Jessie جاهزة مع Raspberry Pi. تحقق من هذه المقالة لتثبيت نظام التشغيل Raspbian وبدء استخدام Raspberry Pi. لذلك نحتاج الآن أولاً إلى تحديث Raspbian باستخدام الأوامر التالية:
sudo apt-get update sudo apt-get Upgrade
ثم نحتاج إلى تثبيت بعض الحزم المتعلقة بالبلوتوث:
sudo apt-get install blueman bluz
ثم أعد تشغيل Raspberry Pi:
sudo إعادة التشغيل
BlueZ هو مشروع مفتوح المصدر ومكدس بروتوكول Linux Bluetooth الرسمي. وهو يدعم جميع بروتوكولات Bluetooth الأساسية وأصبح الآن جزءًا من Linux Kernel الرسمي.
يوفر Blueman واجهة سطح المكتب لإدارة والتحكم في أجهزة Bluetooth.
أخيرًا ، نحتاج إلى مكتبة python للاتصال عبر Bluetooth حتى نتمكن من إرسال واستقبال البيانات من خلال RFCOMM باستخدام لغة Python:
سودو apt-get install python-bluetooth
قم أيضًا بتثبيت مكتبات دعم GPIO لـ Raspberry Pi:
sudo apt-get install python-rpi.gpio
لقد انتهينا الآن من تثبيت الحزم المطلوبة لاتصالات Bluetooth في Raspberry Pi.
إقران الأجهزة مع Raspberry Pi عبر البلوتوث:
من السهل جدًا إقران أجهزة Bluetooth ، مثل الهاتف المحمول ، مع Raspberry Pi. هنا قمنا بإقران هاتف Android الذكي الخاص بنا مع Raspberry Pi. لقد قمنا سابقًا بتثبيت BlueZ في Pi ، والذي يوفر أداة مساعدة لسطر الأوامر تسمى "bluetoothctl" لإدارة أجهزة Bluetooth الخاصة بنا.
افتح الآن الأداة المساعدة bluetoothctl عن طريق الأمر أدناه:
sudo bluetoothctl
يمكنك التحقق من جميع أوامر أداة bluetoothctl عن طريق كتابة "مساعدة" . في الوقت الحالي ، نحتاج إلى إدخال الأوامر أدناه بترتيب معين:
# power on # agent on # قابل للاكتشاف علي # pairable on # scan on
بعد آخر أمر "فحص" ، سترى جهاز البلوتوث (الهاتف المحمول) في القائمة. تأكد من تشغيل Bluetooth في هاتفك المحمول وأنه مرئي من خلال الأجهزة المجاورة. ثم انسخ عنوان MAC الخاص بجهازك وقم بإقرانه باستخدام الأمر المحدد:
زوج
ثم سيُطلب منك إدخال رمز المرور أو رقم التعريف الشخصي في وحدة التحكم الطرفية ، ثم اكتب رمز المرور هناك واضغط على إدخال. ثم اكتب نفس رمز المرور في هاتفك المحمول عندما يُطلب منك ذلك ، ويتم الآن إقرانك بنجاح مع Raspberry Pi. لقد أوضحنا أيضًا هذه العملية برمتها في الفيديو الوارد في البرنامج التعليمي السابق للتحكم في GPIO. هنا رابط يوتيوب المباشر.
كما ذكرنا سابقًا ، يمكنك أيضًا استخدام واجهة سطح المكتب لإقران الهاتف المحمول. بعد تثبيت Blueman ، سترى أيقونة Bluetooth في الجانب الأيمن من سطح مكتب Raspberry Pi كما هو موضح أدناه ، حيث يمكنك بسهولة إجراء الاقتران.
اختيار لعبة السيارة:
في مشروع Raspberry Pi Controlled Car ، استخدمنا سيارة لعبة للتوضيح. هنا اخترنا سيارة لعبة RF مع ميزة التوجيه المتحرك من اليسار إلى اليمين. بعد شراء هذه السيارة ، قمنا باستبدال دائرة RF الخاصة بها بدائرة Raspberry الخاصة بنا. تحتوي هذه السيارة على محركين للتيار المستمر ، أحدهما لتدوير عجلتين أماميتين والآخر لتدوير عجلتين خلفيتين. يستخدم محرك الجانب الأمامي لإعطاء اتجاه للسيارة يعني انعطاف الجانب الأيسر أو الأيمن (مثل ميزة توجيه السيارة الحقيقية). ويستخدم محرك الجانب الخلفي لقيادة السيارة في الاتجاه الأمامي والخلفي. يتم استخدام Bluetooth of Raspberry لتلقي الأوامر لاسلكيًا من هاتف android للتحكم في السيارة.
يمكنك استخدام أي سيارة لعبة بها محركان للتيار المستمر لتدوير العجلات الأمامية والخلفية.
مخطط الدائرة وشرحها:
في هذه السيارة التي يتم التحكم فيها عن بعد ، نحتاج فقط إلى توصيل Raspberry Pi بمحركين باستخدام وحدة L293D. لتشغيل Raspberry Pi والسيارة ، استخدمنا بنك طاقة متنقل. يعتبر بنك الطاقة المحمول كافيًا لتشغيل Raspberry Pi ومحركات السيارة ، ولكن عندما نضع باور بانك فوق السيارة ، فبسبب الوزن الثقيل لسيارة بنك الطاقة المحمولة لن تتمكن من التحرك بشكل صحيح. لذلك نوصي باستخدام مزود الطاقة منخفض الوزن أو بطاريات الليثيوم لتشغيل النظام. يتم عرض جميع التوصيلات في مخطط الدائرة أدناه. تحقق أيضًا من قسم الروبوتات لدينا لمعرفة المزيد حول التحكم في المحركات باستخدام تقنيات مختلفة.
ملاحظة: لا تضع أكثر من 5 فولت على التوت باي.
تم عمل هذه الدائرة على لوحة الأداء لهذا المشروع ، بحيث يكون هناك وزن أقل على السيارة.
التحكم في السيارة عن بعد باستخدام تطبيق Android BlueTerm:
الآن بعد إعداد كل الأشياء ومحاولة تقشير الهاتف الذكي بنجاح عبر البلوتوث ، نحتاج إلى تثبيت تطبيق Android للتواصل مع Raspberry Pi باستخدام محول تسلسلي Bluetooth ، حتى نتمكن من التحكم في دبابيس GPIO الخاصة بـ Raspberry Pi. كما ذكرنا سابقًا ، يحاكي بروتوكول RFCOMM / SPP الاتصال التسلسلي عبر البلوتوث ، لذلك قمنا بتثبيت تطبيق BlueTerm الذي يدعم هذا البروتوكول.
يمكنك أيضًا استخدام أي تطبيق Bluetooth Terminal آخر يدعم الاتصال عبر مقبس RFCOMM.
الآن بعد تنزيل تطبيق BlueTerm وتثبيته ، قم بتشغيل برنامج Python المحدد أدناه من الجهاز وتوصيل جهاز raspberrypi المقترن من تطبيق BlueTerm في نفس الوقت.
بعد اتصال ناجح ، سترى متصلًا: raspberrypi في الزاوية اليمنى العليا من التطبيق كما هو موضح أدناه:
الآن يمكنك فقط إدخال الأوامر التالية من تطبيق BlueTerm لجعل السيارة تتحرك في الاتجاه المطلوب. اضغط على "q" للخروج من البرنامج. يمكنك استخدام Google Voice Typing Keyboard للتحكم في هذه السيارة باستخدام صوتك. تحقق من العرض الكامل في الفيديو المقدم في النهاية.
الأوامر:
F - تحريك إلى الأمام
ب - تحريك للخلف
S - توقف
L - حركة اليسار إلى الأمام
R - تحريك يمين إلى الأمام
أ - حركة اليسار للخلف
P - تحريك يمين للخلف
س - قم بإنهاء
برمجة بايثون:
برنامج Python للتحكم في Raspberry Pi GPIO باستخدام تطبيق Android بسيط للغاية ولا يحتاج إلى شرح. نحتاج فقط إلى معرفة القليل عن الكود المتعلق باتصال Bluetooth RFCOMM. بخلاف ذلك ، يشبه التحكم في أي روبوت أو سيارة بجعل دبوس المحرك مرتفعًا أو منخفضًا. البرنامج الكامل مذكور أدناه في قسم الكود.
أولاً ، نحتاج إلى استيراد مكتبة مقابس Bluetooth التي تمكننا من التحكم في Bluetooth بلغة Python ؛ لقد قمنا بتثبيت المكتبة لنفسه في القسم السابق.
استيراد بلوتوث
ثم قمنا بتضمين بعض ملفات الرأس الأخرى وتحديد دبابيس للمحركات ووضعها افتراضيًا منخفضًا.
استيراد وقت استيراد البلوتوث RPi.GPIO كـ GPIO m11 = 18 m12 = 23 m21 = 24 m22 = 25 GPIO.set warnings (False) GPIO.setmode (GPIO.BCM) GPIO.setup (m11، GPIO.OUT) GPIO.setup (m12، GPIO.OUT) GPIO.setup (m21، GPIO.OUT) GPIO.setup (m22، GPIO.OUT) GPIO.output (m11، 0) GPIO.output (m12، 0) GPIO.output (m21، 0) GPIO.output (m22، 0)
يوجد أدناه الرمز المسؤول عن اتصال Bluetooth:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM) منفذ = 1 server_socket.bind ((""، port)) server_socket.listen (1) client_socket، address = server_socket.accept () print "Accepted connection from"، address
هنا يمكننا فهمها سطراً بسطر:
server_socket = bluetooth.BluetoothSocket (bluetooth.RFCOMM): إنشاء مقبس لاتصالات Bluetooth RFCOMM.
server_socket.bind (("" ، المنفذ): - يربط الخادم البرنامج النصي الموجود على المضيف '' بالمنفذ.
server_socket.listen (1): يستمع الخادم لقبول اتصال واحد في كل مرة.
client_socket، address = server_socket.accept (): يقبل الخادم طلب اتصال العميل ويعين عنوان mac إلى العنوان المتغير ، ويكون client_socket هو مقبس العميل
بعد ذلك ، قمنا بإنشاء بعض الوظائف المسؤولة عن تحريك السيارة في الاتجاه المطلوب: def left_side_forward () ، def right_side_forward () ، def forward () ، def left_side_reverse () ، def right_side_reverse () ، def reverse () def stop (). سيتم استدعاء هذه الوظائف على التوالي عندما نضغط على L ، R ، F ، A ، P ، B ، S من تطبيق Mobile blueTerm وستتحرك السيارة وفقًا لذلك.
data = "" while 1: data = client_socket.recv (1024) print "Received:٪ s"٪ data if (data == "F"): forward () elif (data == "L"): left_side_forward () elif (data == "R"): right_side_forward () elif (data == "B"): reverse () elif (data == "A"): left_side_reverse () elif (data == "P"): right_side_reverse () بيانات elif == "S": stop () elif (data == "Q"): طباعة ("Quit") كسر client_socket.close () server_socket.close ()
data = client_socket.recv (1024): تلقي البيانات من خلال مقبس العميل client_socket وتخصيصها للبيانات المتغيرة. يمكن استقبال 1024 حرفًا كحد أقصى في المرة الواحدة.
أخيرًا ، بعد كل البرمجة ، أغلق اتصال العميل والخادم باستخدام الكود أدناه:
client_socket.close () server_socket.close ()