- المتطلبات المسبقة
- المكونات المطلوبة
- تثبيت Node-RED على Raspberry Pi
- إطلاق Node-RED في Raspberry Pi
- فهم واجهة Node-RED
- المخططات
- إنشاء تدفق في Node-RED
- إضافة زر ضغط / مفتاح في واجهة Node-RED مع Raspberry Pi
هل تساءلت يومًا عما إذا كانت هناك طريقة لعمل نماذج أولية بسيطة لحلول إنترنت الأشياء دون الحاجة إلى قضاء أيام في كتابة الرموز أو بناء مشاريع عملية متقدمة بدون تشفير. نعم ، هذا ممكن مع منصة Node-Red. تم تطوير Node-RED بواسطة IBM ، وهو أداة برمجة مفتوحة المصدر لتوصيل أجهزة الأجهزة وواجهات برمجة التطبيقات والخدمات عبر الإنترنت معًا بطريقة جديدة ومثيرة للاهتمام. إنه يوفر محررًا قائمًا على المستعرض يجعل من السهل ربط " التدفقات " معًا باستخدام مجموعة واسعة من العقد في اللوحة التي يمكن نشرها في وقت التشغيل بنقرة واحدة.
Node-RED هي أداة قوية لبناء تطبيقات إنترنت الأشياء (IoT) بهدف تبسيط مكون البرمجة.
يستخدم البرمجة المرئية التي تسمح لك بتوصيل كتل التعليمات البرمجية ، المعروفة باسم العقد ، معًا لأداء مهمة. في البرنامج التعليمي اليوم ، سوف ندرس كيف يمكنك نشر مشاريع بسيطة على raspberry pi باستخدام Node-RED. و التوت بي عقدة حمراء البرنامج التعليمي سوف تغطي.
- تثبيت Node-RED على Raspberry Pi.
- مقدمة لواجهة مستخدم Node-RED
- كيفية إعداد تدفقات Node-RED
- كيفية التحكم في دبابيس Raspberry Pi GPIO باستخدام Node-RED
- كيفية استخدام مدخلات ومخرجات Node-RED وصنع القرار باستخدام المفاتيح
المتطلبات المسبقة
سيعتمد هذا البرنامج التعليمي على نظام التشغيل Raspbian stretch OS وسأفترض أنك على دراية بإعداد Raspberry Pi معه ، وأنت تعرف كيفية SSH في Pi باستخدام برنامج طرفي مثل المعجون. إذا كانت لديك مشاكل مع أي من هذا ، فهناك الكثير من دروس Raspberry Pi التعليمية على هذا الموقع والتي يمكن أن تساعدك.
لإكمال البرنامج التعليمي بسهولة ، أنصحك باستخدام شاشة متصلة بـ raspberry pi أو استخدام برنامج VNC Viewer. إذا لم يكن لديك شاشة وتبدأ من جديد مع Pi ، فيمكنك قراءة إعداد Headless Raspberry Pi هذا لمتابعة هذا البرنامج التعليمي. بينما يعمل Node-Red من مستعرض ويب ويمكن الوصول إليه على جهاز الكمبيوتر الذي يتصل به Pi عبر عنوان IP الخاص بـ Pi ، أعتقد أن تجربة VNC / الشاشة ستمنحك تعليقًا أفضل للأشياء.
كعرض توضيحي لإظهار كيفية عمل Node-Red ، سنستخدم Node-RED لبرمجة Raspberry Pi للتحكم في مؤشر LED متصل بـ GPIO الخاص به وتعديل البرنامج لاحقًا للسماح بالتحكم في LED من زر ضغط لمسي متصل بـ Pi GPIO.
المكونات المطلوبة
المكونات التالية مطلوبة لبناء هذا المشروع ؛
- Raspberry Pi 3 مع بطاقة SD محملة مسبقًا بـ Raspbian Stretch مسبقة التحميل
- 100 اوم المقاوم (1)
- ال اي دي (1)
- اللوح (1)
- أسلاك العبور من ذكر إلى أنثى
- زر ضغط باللمس (1)
تثبيت Node-RED على Raspberry Pi
بينما يأتي Node-Red مثبتًا مسبقًا على نظام Raspbian Stretch OS ، نحتاج إلى ترقيته قبل أن نتمكن من الاستمتاع ببعض ميزاته الأخيرة. ترقية سوف Node-Red
- قم بترقية المستخدم الحالي إلى LTS 8.x أو 10.x Node.js وأحدث Node-RED
- قم بترحيل أي عقد مثبتة عالميًا إلى مساحة المستخدمين ~ /.node-red حتى يمكن إدارتها عبر مدير اللوحة ، ولا تقوم بتحديث أي عقد مثبت من قبل مستخدم. يجب أن يتم ذلك يدويًا بواسطة المستخدم (انظر أدناه).
- اختياريًا (أعد) تثبيت العقد الإضافية المثبتة مسبقًا على صورة Raspbian Pi الكاملة.
ومع ذلك ، فإن عملية ترقية Node-Red تشبه تثبيت واحدة جديدة ، لذا من أجل هذا البرنامج التعليمي ، سوف نتعامل معها على أنها تثبيت جديد حتى يتمكن الأشخاص الذين يستخدمون إصدارات نظام التشغيل الأخرى من اتباعها.
اتبع الخطوات أدناه لتثبيت / ترقية Node-RED على Raspberry Pi الخاص بك.
نحن نبدأ من خلال تطوير وتحديث بي ، لضمان كل شيء على الأمر متروك للقضايا التاريخ والتوافق تجنب. قم بذلك عن طريق فتح Terminal أو عبر ssh ، وتشغيل ؛
سودو apt-get update
تليها
sudo apt-get ترقية
بعد ذلك ، قم بتشغيل البرنامج النصي bash أدناه على الجهاز ؛
bash <(curl -sL
و سوف النصي باش تفعل الأشياء التالية
- اسأل عما إذا كنت تريد (إعادة) تثبيت عقد Pi الإضافية
- احفظ قائمة بأي عُقد حمراء مثبتة عالميًا موجودة في / usr / lib / node_modules
- apt-get إزالة Node-Red الموجودة
- قم بإزالة أي ثنائيات ذات لون أحمر عقدة من / usr / bin و / usr / local / bin
- أزل أي وحدات ذات لون أحمر عقدي من / usr / lib / node_modules و / usr / local / lib / node_modules
- اكتشف ما إذا كان Node.js مثبتًا من حزمة Node.js أو دبيان
- إذا لم يكن الإصدار v8 أو أحدث - قم بإزالته حسب الاقتضاء وقم بتثبيت أحدث إصدار من v8 أو v10 LTS (بدون استخدام apt).
- تنظيف ذاكرة التخزين المؤقت npm و node-gyp cache لإزالة أي إصدارات سابقة من التعليمات البرمجية
- قم بتثبيت أحدث إصدار من Node-RED
- أعد تثبيت تحت حساب المستخدم أي عقد تم تثبيتها مسبقًا عالميًا
- أعد تثبيت عقد Pi الإضافية إذا لزم الأمر
- أعد بناء جميع العقد - لإعادة تجميع أي ثنائيات لتتناسب مع أحدث إصدار من Node.js
- أضف أوامر node-red-start و node-red-stop و node-red-log إلى / usr / bin
- إضافة اختصار القائمة والرمز
- إضافة البرنامج النصي النظام وتعيين المستخدم
- إذا أضفت درجة حرارة وحدة المعالجة المركزية على Pi -> مثال IoT
يقوم سكربت bash أعلاه بتشغيل العديد من الأوامر مثل sudo ويقوم بحذف Node.js الموجودة وأدلة Node-RED الأساسية. يمكنك التحقق من محتوى البرنامج النصي على صفحة GitHub هذه قبل تشغيله للتأكد من أنه لن يؤثر على أي مشروع لديك بالفعل على Pi.
بعد اكتمال التثبيت ، يجب أن ترى الآن رمز Node-Red ضمن قائمة تطبيقات البرمجة في قائمتك.
إطلاق Node-RED في Raspberry Pi
يمكن تشغيل Node-Red عبر قسم القائمة من سطح مكتب raspberry Pi ، عبر الجهاز ، أو عبر ssh.
لبدء التشغيل على سطح مكتب raspberry Pi ، انقر فوق رمز Raspberry ، وحوم الماوس فوق البرمجة ، وانقر فوق Node-RED (القائمة> البرمجة> NodeRed) لتشغيله.
يمكن أيضًا إطلاقه من ssh أو Terminal عن طريق التشغيل ؛
عقدة البداية الحمراء
يجب أن تشاهد نافذة مثل النافذة أدناه تعرض تشغيل العقدة الحمراء على سطح المكتب.
بمجرد رؤية ذلك ، انتقل إلى القائمة-> الإنترنت وقم بتشغيل متصفح الويب chromium. بينما لا يحتاج Raspberry pi إلى الإنترنت لتشغيل Node-Red ، فإنه يستخدم متصفحًا كواجهة.
مع إطلاق الكروم ، أدخل المضيف المحلي: 1880 في شريط العناوين متبوعًا بمفتاح الإدخال. 1880 هو المنفذ الموجود على raspberry pi الذي تم ضبط Node-Red عليه مسبقًا للتواصل. يجب أن يعرض هذا واجهة Node-Red كما هو موضح في الصورة أدناه.
فهم واجهة Node-RED
و اجهة عقدة الأحمر يتألف من لوحة التدفق، لوحة العقد، وحدة التصحيح وحدة المعلومات كما هو مبين في الصورة أعلاه.
ل وحة تدفق هي حيث يتم ربط العقد معا لإنشاء برنامج الذي في عقدة الأحمر يسمى تدفق، في حين أن لوحة عقدة يتألف من الأشياء التي لممثل الأجهزة والبروتوكولات والبرامج السمات المرتبطة الأجهزة. يتضمن بروتوكولات مثل MQTT لـ IoT ، وأوضاع إخراج وإدخال GPIO للوحات مثل raspberry pi. و حدة المعلومات توفر معلومات عن كائنات الضوء / المختارة في حين أن وحدة التصحيحيعمل تمامًا مثل شاشة Arduino Serial ويمكنه تقديم ملاحظات أثناء تشغيل التدفق. يتم استخدام زر النشر لتحميل التدفق إلى الأجهزة المستهدفة. يحتوي زر القائمة على أنواع تحميل مختلفة لمساعدتك في تحقيق أقصى استفادة من مشروعك. مع تشغيل Node-Red وتشغيله ، يمكننا الآن المضي قدمًا في بناء المشروع التجريبي.
المخططات
كما ذكرنا خلال المقدمة ، سيكون مشروعنا التجريبي لهذا اليوم هو التحكم في GPIO الخاص بـ Raspberry Pi باستخدام تدفق Node-RED. لإظهار الاختلاف في حالة GPIO ، سنقوم بتوصيل مؤشر LED بـ GPIO بحيث عندما يتم تشغيل دبوس GPIO المحدد ، يضيء مؤشر LED والعكس صحيح.
قم بتوصيل مؤشر LED بـ Raspberry PI كما هو موضح في المخططات أدناه.
أقوم أيضًا ببناء نفس الشيء على أجهزتي باستخدام لوحة توصيل ومصباح LED ومقاوم وبعض أسلاك التوصيل. يبدو إعداد أجهزتي شيئًا كهذا بمجرد إجراء الاتصالات.
يمكن تحويل هذا المشروع بسهولة إلى مشروع أتمتة المنزل ، فقط عن طريق استبدال مصباح LED بمرحل وأي جهاز تيار متردد ، تعرف على كيفية القيام بذلك من خلال الاطلاع على مشاريع أتمتة المنزل المختلفة.
إنشاء تدفق في Node-RED
مع توصيل LED ، يمكننا المضي قدمًا في تطوير التدفق. تسمى البرامج في NodeRed التدفقات تمامًا كما يطلق عليها Arduino IDE الرسومات. يتم إنشاء التدفقات باستخدام مجموعة من العقد. يمكنك إنشاء تدفقات متعددة يمكن تشغيلها جميعًا في نفس الوقت ، ولكن في هذا البرنامج التعليمي ، سننشئ تدفقًا واحدًا لتشغيل / إيقاف تشغيل LED.
للبدء ، قم بالتمرير إلى الجزء السفلي من لوحة Nodes ، وسترى قسم raspberry pi nodes باتجاه النهاية مع عقدتين تسمى rpigpio. تُستخدم هذه العقد للتواصل مع GPIO الخاص بـ Raspberry Pi. أحد العقد للإدخال بينما الآخر للإخراج متمايز عن طريق موضع شعار raspberry Pi. بالنسبة لعقدة الإدخال ، يأتي الشعار قبل النص ، بينما يأتي الشعار لعقدة الإخراج بعد النص كما هو موضح في الصورة أدناه.
في هذا البرنامج التعليمي ، سنستخدم عقدة الإخراج ، واسحبها إلى قسم التدفق في الواجهة. تشبه هذه الخطوة إعلان دبوس معين من Arduino كمخرج باستخدام الأمر pinMode () . انقر نقرًا مزدوجًا فوق عقدة الإخراج وستفتح نافذة منبثقة كما هو موضح أدناه للسماح لك بتحرير خصائص العقدة.
ضمن قسم خاصية الدبوس ، حدد GPIO17 (دبوس 11). ثم قم بتعيين خاصية النوع على " الإخراج الرقمي " وحدد " تهيئة حالة الدبوس؟" خانة اختيار مع ترك خيار " المستوى الأولي للرقم السري " منخفضًا (0). امنح العقدة أي اسم تريده وانقر فوق الزر "تم".
يجب أن يتغير اسم العقدة تلقائيًا إلى تلك التي أدخلتها ضمن إعداد الخصائص. على سبيل المثال ، قمت بتسميته على أنه LED ، وبالتالي تم تغيير اسم العقدة أيضًا باسم LED كما هو موضح أدناه.
لتشغيل / إيقاف تشغيل LED ، نحتاج إلى استخدام إدخال ، شيء ما لدفع الإجراء. بينما يمكننا استخدام زر ضغط ، أريد استخدام هذا لتقديم الميزة في Node-RED التي تسمح بحقن الرسائل في التدفقات. هذه الميزة تسمى عقدة الحقن. سنستخدم عقدتين للحقن. سيكون أحدهما هو تشغيل مؤشر LED بينما يقوم الآخر بإيقاف تشغيله.
انتقل إلى لوحة العقدة واسحب عقدة الحقن إلى التدفق. إنها العقدة الأولى في اللوحة مع سهم ، يتم تمييز عقدة الحقن في الصورة أدناه.
انقر نقرًا مزدوجًا فوقه لتعديل خصائصه. قم بتغيير نوع البيانات إلى سلسلة من خلال النقر فوق القائمة المنسدلة أمام الحمولة ، وإدخال 1 في مربع الحمولة. القيمة في صندوق الحمولة هي ما سيتم حقنه في التدفق عند الضغط على العقدة. اضبط اسم العقدة على "ON" اضغط على زر "Done" للحفظ.
كرر ما سبق للعقدة الثانية ، واضبط قيمة الحمولة على "0" واسمها على "إيقاف" كما هو موضح أدناه.
في إطار مهمة الخصائص، و تكرار المنسدلة يمكن استخدامها لأتمتة الحقن حتى يتم الضغط على أزرار على فترات. يمكن استخدام هذا لإنشاء تأثير الوميض. اربط العقد معًا كما هو موضح أدناه ، عن طريق سحب النقطة الرمادية على إحدى العقد إلى الأخرى لإنشاء التدفق.
وبهذا نكون قد أكملنا الآن أول تدفق للعقدة الحمراء.
الخطوة التالية بالنسبة لنا هي نشر التدفق على التوت باي. انقر فوق زر النشر الأحمر. من المفترض أن ترى فلاش "تم نشره بنجاح" أعلى الشاشة كما هو موضح أدناه.
انقر فوق الزر الرمادي خلف عقد الحقن لتنشيط كل عقد.
من خلال النقر على عقدة الحقن "on" ، يجب أن ترى "on" المحقونة بنجاح معروضة ويضيء مؤشر LED. يجب أن ينطفئ مؤشر LED عند النقر فوق عقدة الحقن "إيقاف التشغيل".
هذا هو. يمكن العثور على العمل الكامل لهذا الإعداد في الفيديو المرتبط أسفل هذه الصفحة.
إضافة زر ضغط / مفتاح في واجهة Node-RED مع Raspberry Pi
لشرح كيفية توصيل / إضافة عنصر إدخال إلى التدفق الخاص بك ، سنأخذ التدفق أعلاه إلى أبعد من ذلك بإضافة زر ضغط لاستبدال عقد الحقن.
قم بتوصيل الزر الانضغاطي بـ raspberry pi ، بحيث يتم توصيل إحدى ساقي الزر الانضغاطي بالأرض والآخر متصل بـ GPIO pin 4 (pin 11) الخاص بـ raspbery pi ، كما هو موضح في المخططات أدناه.
بعد القيام بذلك ، ارجع إلى Node-Red واحذف عقدتي الحقن اللتين استخدمناهما سابقًا ، من خلال النقر على العقد والضغط على حذف على لوحة المفاتيح أو النقر المزدوج على العقد والضغط على حذف في النافذة المنبثقة. بعد ذلك ، قم بالتمرير لأسفل في لوحة العقدة إلى قسم raspberry pi وحدد عقدة الإدخال. إنه الرمز الذي يحتوي على أيقونة Raspberry Pi على اليسار ، قبل اسم العقدة.
اسحب العقدة إلى التدفق وانقر عليها مرتين لتعديل الخصائص. اضبط الدبوس على GPIO 4 (دبوس 11) واضبط القائمة المنسدلة أمام المقاوم للسحب لأعلى. هذا سوف "يسحب" GPIO 4 إلى HIGH. انقر فوق الزر تم بعد تعيين الخصائص.
للسماح لنا باتخاذ قرارات منطقية عند الضغط على المفتاح بدلاً من قصر GPIO4 على الأرض ، سنستخدم عقدة التبديل. ابحث عنها في لوحة العقدة ، تحت قسم الوظيفة واسحب إلى التدفق.
تسمح لك عقدة التبديل باتخاذ القرارات بطريقة مشابهة لعبارات "if". يمكن إعداده ليكون له مخرجات مختلفة حسب قيمة الإدخال. بالنسبة لهذا البرنامج التعليمي ، سنقوم بتكوينه بمسارين إخراج ، بحيث أنه عندما تكون خاصية msg.payload تساوي 1 (لا يتم الضغط على مفتاح التبديل) ، يجب أن تتبع المسار الأول وسيتم اتباع المسار الثاني إذا كان هناك أي إدخال آخر بخلاف 1 عند الإدخال (يتم الضغط على المفتاح). يتم إضافة المسارات باستخدام زر "+ إضافة". انقر نقرًا مزدوجًا على العقدة وقم بتكوينها كما هو موضح أعلاه. انقر فوق "تم" عند الانتهاء.
بمجرد الضغط على زر تم ، يجب أن ترى المسارين ينعكسان في مظهر عقدة التبديل ، حيث سيكون لها الآن تقاطعين عند الإخراج.
بعد ذلك ، نحتاج إلى إدخال عقدة "تغيير". سيتم استخدام عقدة التغيير لتعيين حالة LED بناءً على نتيجة عقدة الوسيطة.
سنستخدم عقدتين من عقد التغيير. سيتم تعيين حمولة أول واحد على 0 كما هو موضح في الصورة أدناه وتعيين حمولة الثانية على واحد. انقر فوق تم بعد تحرير الخصائص لكليهما.
لشرح أفضل ، هل تذكر أننا استخدمنا المقاوم للسحب؟ وبالتالي ، عندما لا يتم الضغط على الزر ، سيكون الناتج عند هذا الدبوس مرتفعًا (1) ، مما يعني أنه إذا مررناها عبر عقدة التبديل ، فسيكون مؤشر LED "قيد التشغيل" ، نظرًا لأن هذا لا ينبغي أن يكون كذلك ، فسنقوم استخدم عقدة "التغيير" لتعيينها على أنها منخفضة (0). تُستخدم عقدة "التغيير" الثانية لتعيين القيمة إلى قيمة واحدة بحيث أنه عند اكتشاف أي شيء بخلاف الحالة العالية لـ GPIO pin 4 ، يجب تشغيل مؤشر LED "قيد التشغيل" لأن هذا يعني الضغط على الزر الانضغاطي. قم بتوصيل عقد التغيير وبقية العقد معًا كما هو موضح في الصورة أدناه.
وبهذا نكون جاهزين الآن لنشر المشروع. انتقل عبر الاتصال للتأكد من أن كل شيء كما ينبغي ، ثم انقر فوق زر النشر. كالعادة ، إذا نجحت ، يجب أن ترى النشر المنبثق بنجاح وستتمكن الآن من التحكم في المصباح باستخدام المفتاح.
في حين أن Node-Red يجعل من السهل والسريع إنشاء نموذج أولي للبناء دون القلق بشأن الكود ، فقد لا يكون في الواقع هو الأنسب ، خاصة للمطورين ذوي الخبرة الذين يريدون المرونة والتحكم في البرنامج. ومع ذلك ، فهي أداة رائعة تتيح لك إنشاء نماذج أولية في دقائق.
حتى المرة القادمة!