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

لوحة رسائل IoT RPi LED: 3 خطوات (بالصور)
لوحة رسائل IoT RPi LED: 3 خطوات (بالصور)

فيديو: لوحة رسائل IoT RPi LED: 3 خطوات (بالصور)

فيديو: لوحة رسائل IoT RPi LED: 3 خطوات (بالصور)
فيديو: LED Control with Raspberry Pi using Blynk 2.0 IoT Mobile App and Web Dashboard | SME Dehradun 2024, شهر نوفمبر
Anonim
Image
Image
إعداد الأجهزة
إعداد الأجهزة

في Instructable ، قمت بإنشاء لوحة رسائل LED متصلة بشبكة wifi باستخدام Raspberry Pi (RPi). سيتصل المستخدمون بخادم الويب الخاص بـ Raspberry Pi باستخدام متصفحاتهم لإرسال رسائل قصيرة ستظهر على شاشة LED مقاس 8 × 8. نظرًا لأن استخدام مصفوفة 8x8 LED مع برنامج التشغيل MAX7219 في Python موثق جيدًا من قبل الآخرين على الإنترنت ، يركز هذا المشروع على إنشاء واجهة خادم ويب واستخدام ZeroMQ Messaging لإدارة الرسائل الواردة.

تحديث: هنا مشروع متابعة IoT Decimal / Hexadecimal 8x8 LED Matrix Drawing Board

(أنا منسق نادي Girls Who Code Club وقد توصلت إلى هذا المشروع البسيط لتعليم الطلاب تصميم واجهة الويب والمراسلة.)

الخطوة 1: إعداد الجهاز

إعداد الأجهزة
إعداد الأجهزة
إعداد الأجهزة
إعداد الأجهزة

يتطلب هذا المشروع الأجهزة التالية:

  • فطيرة التوت
  • مصدر طاقة USB مثل Anker مع كابل USB قصير إلى MicroUSB
  • وحدة مصفوفة نقطية MAX7219 مع كابل الشريط (Aliexpress بأقل من 2 دولار)
  • حاوية (صنعت واحدة من صندوق من الورق المقوى ورشتها باللون الأسود)

إعداد الأجهزة هو الجزء السهل. ما عليك سوى توصيل كبل شريطي مكون من 5 أسلاك من مصفوفة LED إلى RPi لكل مستند مكتبة MAX7219.

LED-> RPi ======== VCC-> GPIO Pin # 2 (5v) GND-> GPIO Pin # 6 (GND) DIN-> GPIO Pin # 19CS -> GPIO Pin # 24CLK-> GPIO Pin # 23

لقد استخدمت شريطًا رغويًا على الوجهين لتركيب وحدة LED على علبة RPi. بعد ذلك ، صنعت حاوية من صندوق من الورق المقوى لإيواء كل من RPi والبطارية.

الخطوة 2: إعداد البرنامج

إعداد البرنامج
إعداد البرنامج
إعداد البرنامج
إعداد البرنامج
إعداد البرنامج
إعداد البرنامج
إعداد البرنامج
إعداد البرنامج

يجب أن يكون لدى RPi البرامج التالية:

  • بايثون 3
  • اباتشي 2 ويب سيفر
  • برنامج تشغيل Max7219 لبيثون
  • المراسلة ZeroMQ

بايثون 3

يجب أن يكون RPi مثبتًا مسبقًا على Python 3. أثناء كتابة الكود الخاص بي لـ Python 3 ، يجب أن يعمل Python 2 مع بعض التغييرات الطفيفة.

اباتشي 2

قم بإعداد Apache وقم بتمكين البرمجة النصية لـ Python CGI. فيما يلي بعض الموارد الرائعة لإعداد Apache على RPi ، لذا لن أكرر هنا. ما عليك سوى اتباع البرامج التعليمية أدناه لإعداد Apache و CGI. تأكد من أن البرامج النصية *.py قابلة للتنفيذ من المستعرض.

  • https://raspberrywebserver.com/cgiscripting/
  • https://www.knight-of-pi.org/apache-web-server-with-cgi-for-python/

سائق Max7291

قم بتثبيت برنامج التشغيل Max7219 باتباع أحدث دليل للتثبيت:

https://max7219.readthedocs.io/en/latest/install.html

بعد التثبيت ، قم بتشغيل مثال الكود ، matrix_test.py ، لكل دليل تثبيت لعرض "Hello World" على مصفوفة LED. يجب أن يعمل هذا قبل الانتقال إلى الخطوة التالية.

المراسلة ZeroMQ

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

بالنسبة لهذا المشروع ، سنقوم فقط بتثبيت حزمة Python pyzmq وليس حزمة ZeroMQ بأكملها.

يركض:

sudo pip3 تثبيت pyzmq

اقرأ دليل ZeroMQ على https://zguide.zeromq.org وجرب مثال خادم وعميل hello world في Python. انسخ رمز Python المثال لكل من الخادم والعميل إلى RPi وتأكد من أنهما يعملان قبل الانتقال إلى الخطوة التالية.

الخطوة 3: إعداد صفحة الويب

في صفحة الويب ، استخدمت إطار عمل bootstrap css / js لجعل الصفحة تبدو جميلة. هذا اختياري تمامًا.

قم بتنزيل ملف led_msg.tar.gz المرفق إلى جذر Apache أو الدليل الفرعي. لفك ضغط ملف gzip'd tar ، قم بتشغيل:

القطران -xzvf led_msg.tar.gz

يؤدي هذا إلى إنشاء الملفات التالية:

msg.py (البرنامج الرئيسي)

قوالب / interstitial.html (قالب html) قوالب / send_msg.html (قالب html) static / img / led_150x150-j.webp

اختياريًا ، قم بتثبيت إطار عمل bootstrap css / js ضمن الدليل الثابت.

أدخل عنوان URL لـ msg.py متصفحك وتأكد من ظهور صفحة الويب. لا ترسل رسالة بعد !!!

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

قم بتنزيل كود max7219_server.py المرفق في الدليل الرئيسي الخاص بك ، وليس في مسار جذر Apache حيث يمكن تنفيذه بواسطة مستخدمي الويب. قم بتشغيله كجذر:

سودو بيثون max7219_server.py

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

إذا كنت تريد إيقاف تشغيل الخادم ، فما عليك سوى إجراء Control-C للخروج من شاشة الخادم.

هذا كل شيء. آمل أن تستمتع بهذا المشروع بقدر ما استمتعت.

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

موصى به: