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

RPi 3 Starboard / Particle Generator: 6 خطوات (بالصور)
RPi 3 Starboard / Particle Generator: 6 خطوات (بالصور)

فيديو: RPi 3 Starboard / Particle Generator: 6 خطوات (بالصور)

فيديو: RPi 3 Starboard / Particle Generator: 6 خطوات (بالصور)
فيديو: Stepping into the Future: Linnaeus University's IoT & AI Live Stream Marathon⚡🤩 2024, يوليو
Anonim
Image
Image
قم بتجميع لوحة LED
قم بتجميع لوحة LED

هل تشعر بالملل من Raspberry Pi الخاص بك؟ هل أنت مستعد لقيادة القوى الأساسية للكون ، واستدعاء الفوتونات ورفضها حسب الرغبة؟ هل تريد شيئًا مثيرًا للاهتمام لتعلقه في غرفة المعيشة الخاصة بك ، أو مشروعًا فاخرًا لنشره على Facebook لتظهر لـ Denise أنك تقوم بعمل جيد هذه الأيام ، شكرًا جزيلاً لك؟ هل أنت محاصر في محاكاة الكمبيوتر وتبتعد عن الساعات حتى يتم تحريرك أو حذفك؟ إذا كان أي من هؤلاء أو كلهم يصفونك ، إذن [صوت المذيع] مرحبًا!

سيوضح لك هذا البرنامج التعليمي كيفية تجميع وإعداد عرض مولد الجسيمات باستخدام Raspberry Pi 3 وبعض لوحات مصفوفة RGB. يجب أن يستغرق الأمر ما بين ساعة إلى ساعتين ، وسيكون المنتج النهائي تقريبًا 30 × 8 (لا يشمل Pi) وقابل للتثبيت على الحائط. إنه يجعل الديكور رائعًا لغرفة المعيشة أو المكتب أو غرفة الألعاب أو في أي مكان آخر تريد وضعه فيه.

قبل أن تبدأ ، إليك ما ستحتاج إليه والتكاليف التقريبية:

  • Rpi 3 + SD Card + Case + Power Supply: 70 دولارًا (من Canakit ، ولكن يمكنك على الأرجح الحصول على الأجزاء أرخص إذا اشتريتها بشكل منفصل.)
  • مصفوفة 4x 32x32 RGB LED (يفضل أن تكون p6 داخلية مع مسح ضوئي 1/16): 80 دولار - 100 دولار يتم شحنها على Alibaba أو Aliexpress ؛ 160 دولارًا على Adafruit أو Sparkfun.
  • قبعة Adafruit RGB Matrix: 25 دولارًا
  • مزود الطاقة 5 فولت 4 أمبير: 15 دولارًا
  • المقاطع المطبوعة ثلاثية الأبعاد: $ 1ish (هذه مخصصة لتوصيل الألواح وتعليقها على الحائط ؛ إذا لم يكن لديك وصول إلى طابعة ثلاثية الأبعاد ، يمكنك استخدام شريط فرو لتثبيتها معًا وبعض الأقواس من متجر الأجهزة إلى علقها من الحائط. حاولت العثور على ملفات التصميم أو ملفات.stls الخاصة بها ، لكن يبدو أنها مرت من الأرض. ومع ذلك ، من السهل جدًا تصميم المقاطع.)
  • 14x M4x10 مسامير: 5 دولارات
  • أربعة كبلات 4x8 IDC وثلاثة كبلات طاقة لمصفوفات RGB (لا أعرف ما تسمى هذه!). يجب أن يتم تضمين هذه مع لوحات LED الخاصة بك.
  • المجموع: حوالي 200 دولار ، أكثر أو أقل.

لا يتطلب منك المشروع اللحام أو أن يكون لديك أي معرفة برمجية محددة ؛ يفترض أنك تعرف كيفية كتابة صورة على بطاقة microSD. إذا لم تكن متأكدًا من كيفية القيام بذلك ، فإن مؤسسة Raspberry Pi لديها برنامج تعليمي جيد هنا.

يفترض أيضًا أن لديك معرفة أساسية بكيفية القيام بالأشياء من سطر الأوامر في Linux ، وتفترض الإرشادات التفصيلية للشفرة أنك تعرف أساسيات Python (ولكن - لا تحتاج إلى اتباع التعليمات البرمجية التفصيلية لتتمكن من إنشاء و قم بتشغيل مولد الجسيمات.) إذا علقت في أي من الخطوات ، فلا تتردد في طرح سؤال أو النشر في / r / raspberry_pi (وهو أيضًا ، كما أفترض ، الجمهور الرئيسي لهذه التعليمات)

الخطوة 1: قم بتجميع لوحة LED

قم بتجميع لوحة LED
قم بتجميع لوحة LED

أولاً ، ستقوم بتجميع اللوحات الفردية 32 × 32 LED في لوحة واحدة كبيرة بحجم 128 × 32. ستحتاج إلى إلقاء نظرة على لوحاتك والعثور على الأسهم الصغيرة التي تشير إلى ترتيب الاتصال ؛ بالنسبة لي هم بالقرب من موصلات HUB75 / 2x8 IDC. تأكد من وجود الأسهم التي تشير من حيث سيتم توصيل Rpi (من جهة اليمين في الصورة أعلاه) على طول اللوحة.

ستحتاج أيضًا إلى توصيل كبلات الطاقة. تحتوي معظم هذه الكابلات على موصلين أنثيين متصلان باللوحات ، ومجموعة واحدة من أطراف الأشياء بأسمائها الحقيقية التي تتصل بمصدر الطاقة. تحتوي اللوحات التي أعمل معها على مؤشرات 5V و GND مخفية بالكامل تقريبًا تحت الموصلات نفسها ، لكن الكابلات تتصل فقط في اتجاه واحد. ستحتاج إلى التأكد من أنك تقوم بتوصيل جميع 5Vs معًا وجميع GNDs معًا ، لأنه إذا قمت بتشغيلها للخلف ، فمن شبه المؤكد أنك ستقليها.

نظرًا لأن كبلات الطاقة المضمنة في لوحاتي كانت قصيرة جدًا ، فقد اضطررت إلى تمديد إحداها عن طريق إدخال شوكات طرف الأشياء بأسمائها الحقيقية في موصل آخر (هذا أمر بسيط جدًا - قد تضطر إلى ثني أطراف الأشياء بأسمائها الحقيقية إلى الداخل قليلاً ، لكنني '' قمت بتضمين صورة فقط في حالة). انتهى بي الأمر بمجموعتين من أطراف الأشياء بأسمائها الحقيقية وموصل 2x8 IDC على يمين لوحة LED الممدودة الآن.

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

لذلك - بمجرد توصيل جميع اللوحات مع المشابك وكابلات 2x8 IDC وكابلات الطاقة ، فأنت جاهز للانتقال إلى الخطوة التالية!

الخطوة 2: تحضير Raspberry Pi

بعد ذلك ، ستضع لوحة LED جانبًا (في الوقت الحالي) وستجعل Pi 3 جاهزًا لتشغيله. سنستخدم مكتبة مصفوفة RGB الخاصة بـ Raspbian Stretch Lite و hzeller (بدلاً من مكتبة مصفوفة Adafruit ، وهي أقدم ولم تتم صيانتها).

أولاً ، سترغب في كتابة صورة Raspbian Lite على بطاقة SD ؛ بمجرد القيام بذلك ، امض قدمًا وقم بتوصيل الشاشة ولوحة المفاتيح بـ pi وقم بتشغيله. (يمكنك أيضًا القيام بذلك بدون رأس ، إما عبر موصل ssh أو موصل تسلسلي ، ولكن إذا كانت هذه هي الطريقة التي ستتبعها ، فربما لا تحتاج إلى إخباري بكيفية القيام بذلك.) ستحتاج إلى اتصال بالإنترنت لهذا الغرض. ؛ إذا كان لديك شبكة wifi ، فقم بتوصيل Pi بشبكتك اللاسلكية عن طريق تحرير /etc/wpa_supplicant/wpa_supplicant.conf وتشغيل wpa_cli -i wlan0. (إذا لم تفعل ذلك من قبل ، يمكنك الحصول على التعليمات هنا).

بمجرد اتصالك بالإنترنت ، سنقوم بتحديث إعدادات مستودع dpkg وتنزيل المكتبات التي نحتاجها عن طريق تشغيل الأوامر التالية:

sudo apt-get update

sudo apt-get install git python-dev python-pil

استنساخ بوابة

الآن علينا تجميع وتثبيت كود المصفوفة. لذلك ستنتقل إلى المجلد الذي يحتوي على المكتبة:

قرص مضغوط rpi-rgb-led- مصفوفة

وقم بتجميعها (قد يستغرق ذلك دقيقة):

جعل && صنع بناء بيثون

وتثبيت روابط بيثون:

sudo جعل تثبيت بيثون

إذا واجهت أي أخطاء أثناء تجميع رمز المكتبة ، فارجع وتأكد من تثبيت python-dev و python-pil بشكل صحيح! لن يتم تجميع روابط python بدون تثبيت كلتا الحزمتين.

ستحتاج أيضًا إلى تعطيل إخراج صوت Pi (يتداخل الصوت الداخلي مع كود المصفوفة) عن طريق تحرير /boot/config.txt. ابحث عن السطر الذي يقول dtparam = audio = on وقم بتغييره إلى dtparam = audio = off.

إذا تم تجميع كل شيء على ما يرام (ستحصل على بعض التحذيرات حول Wstrict-protoypes) ، يجب أن يكون pi جاهزًا لتشغيل لوحة المصفوفة. انطلق وأغلقه (sudo shutdown now) ، وافصله ، وسنقوم بتوصيل لوحة الإضاءة بـ pi في الخطوة التالية.

الخطوة 3: قم بتوصيل Pi + Matrix Hat + LED Board

قم بتوصيل Pi + Matrix Hat + LED Board
قم بتوصيل Pi + Matrix Hat + LED Board

لذا ، الآن بعد أن تم إيقاف تشغيل Pi الخاص بك وفصله ، دعنا نربط قبعة المصفوفة بـ pi ولوحة LED بقبعة المصفوفة. إذا لم يكن Pi الخاص بك موجودًا بالفعل ، فهذا هو الوقت المناسب لوضعه هناك.

قم بتثبيت قبعة المصفوفة عن طريق تبطينها بدبابيس GPIO الموجودة على Pi ودفعها برفق لأسفل بقوة متساوية على كلا الجانبين. تأكد من اصطفاف المسامير بشكل صحيح ، بحيث تغطي الرؤوس الأنثوية الموجودة على القبعة دبابيس GPIO الموجودة على الطرف. إذا أخطأت في محاذاتها ، فهذه ليست كارثة. فقط اسحبه للخلف برفق وقم بتصويب أي دبابيس انثنية.

بمجرد ارتداء القبعة ، ضع Pi على يمين لوحة LED المجمعة (تحقق مرة أخرى من توصيلات الطاقة مرة أخرى ، وتأكد من أن الأسهم تشير من Pi إلى طول اللوحة) وقم بتوصيل IDC كابل إلى قبعة المصفوفة.

بعد ذلك ، سترغب في توصيل أطراف الأشياء بأسمائها الحقيقية للطاقة في الكتلة الطرفية لقبعة المصفوفة. لديك موصلين بأسمائها الحقيقية لكل جانب ، لكن يجب أن يتناسب كلاهما هناك جيدًا. قم بفك البراغي أولاً و - يجب أن يتم ذلك دون أن تقول - تأكد من وضع أطراف التوصيل بجهد 5 فولت في الجانب المسمى + (يجب أن تكون هذه الأطراف حمراء ، ولكن - مرة أخرى - تحقق مرة أخرى من الموصلات ولا تفترض أنها صنعت بشكل صحيح) و محطات GND (يجب أن تكون سوداء) في الجانب المسمى -. بمجرد دخولهم هناك ، اربط المسامير الموجودة أعلى الكتلة الطرفية ، ويجب أن يكون لديك شيء يشبه صورة الرأس لهذه الخطوة.

الآن - ربما لاحظت أن هذا التكوين الخاص يترك نصف محطة الأشياء بأسمائها الحقيقية على كلا الجانبين مكشوفًا ، وتحوم على بعد ميليمترات فقط فوق قبعة المصفوفة (وليس بعيدًا عن بعضها البعض.) و - ستصبح محطات الأشياء بأسمائها الحقيقية قريبًا جدًا تحمل العديد من الفولتات وعدة أمبير من الطاقة الخام. هل هذا (يمكنني سماعك تسأل من الجانب الآخر من الشاشة) حقًا الطريقة الصحيحة للقيام بذلك؟ هل هي (تقترب وتهمس) فكرة جيدة؟

والإجابة هي (أجبت هز كتفي) - لا ، ليس كذلك. الطريقة الصحيحة للقيام بذلك هي تجريد أطراف الأشياء بأسمائها الحقيقية من كبلات الطاقة وإعادة تجعيدها في الموصل الصحيح لتلك الكتلة الطرفية (أو تركها كأسلاك عارية وتوصيلها بدون موصل في الكتلة). إذا تعذر ذلك ، يمكنك وضع بعض أنابيب الانكماش الحراري حول الجانب المكشوف من موصل الأشياء بأسمائها الحقيقية أو لفها بشريط كهربائي. لكن العالم سقط والإنسان كسول وعبثا ، لذلك لم أفعل ذلك.

لكن - مغلفة أو غير مغلفة - المحطات الطرفية بأسمائها الحقيقية متصلة بالكتلة الطرفية ، ونحن على استعداد للانتقال إلى الخطوة التالية.

الخطوة 4: اختبر مصفوفة RGB

الآن بعد أن تم توصيل Pi بلوحة الإضاءة ، اقلب اللوحة وأعد تشغيل Pi مرة أخرى. يمكنك تشغيل قبعة المصفوفة بعد توصيل Pi ؛ إذا قمت بتشغيل القبعة قبل Pi ، فإن Pi سيحاول التمهيد مع عدم وجود تيار كافٍ ، وسيشتكي بمرارة (وقد يسبب لك ذعر النواة وليس التمهيد على الإطلاق).

إذا كنت تواجه مشكلة في تشغيل Pi مع قبعة المصفوفة ، فتأكد من أنك تستخدم مصدر طاقة قويًا كافيًا لـ Pi (يجب أن يكون 2A + جيدًا) وحاول توصيل كل من مصدر الطاقة للقبعة وللحصول على Pii في نفس قطاع الطاقة أو سلك التمديد ، وتشغيلهما معًا.

بمجرد تمهيد Pi ، نحن على استعداد لاختبار المصفوفات. انتقل إلى حيث توجد عينات ربط الثعبان (cd / rpi-rgb-led-matrix / bindings / python / sample) وجرب مولد الكتلة الدوارة باستخدام الأمر التالي:

sudo./rotating-block-generator.py -m adafruit-hat --led-chain 4

يجب عليك تشغيله كـ sudo لأن مكتبة المصفوفة تحتاج إلى وصول منخفض المستوى إلى الأجهزة عند التهيئة. يحدد -m الطريقة التي يتم بها توصيل الألواح بـ pi (في هذه الحالة ، قبعة adafruit) وتحدد سلسلة --led - لقد خمنت ذلك - عدد اللوحات التي ربطناها ببعضها البعض. كل من الصفوف والأعمدة لكل لوحة افتراضيًا هو 32 ، لذلك نحن جيدون هناك.

الآن - بمجرد تنفيذ البرنامج ، سيحدث أحد أمرين (أو واحدًا من ثلاثة):

  • لا شيء يحدث
  • تحصل على كتلة دوارة لطيفة في منتصف لوحة الإضاءة الخاصة بك.
  • لوحة الإضاءة تعمل ، آه ، على ما أعتقد ، لكنها تبدو … غريبة (نصفها أخضر ، وبعض الصفوف لا تضيء ، وما إلى ذلك)

إذا لم يحدث شيء ، أو إذا بدت اللوحة غريبة ، فاضغط على ctrl + c للخروج من البرنامج النموذجي ، وأغلق pi ، وتحقق من جميع التوصيلات (كبل IDC ، والطاقة ، وتأكد من توصيل كل من موردي الطاقة ، وما إلى ذلك) تأكد أيضًا من توصيل القبعة بشكل صحيح ؛ إذا لم يتم إصلاح ذلك ، فقم بإنزاله إلى لوحة واحدة (تأكد من استخدام --led-chain 1 عند اختباره) ومعرفة ما إذا كانت إحدى اللوحات قد تكون سيئة. إذا لم يفلح ذلك ، فراجع نصائح hzeller لتحري الخلل وإصلاحه. إذا كان هذا لا يزال لا يعمل ، فحاول النشر في / r / raspberry_pi (أو منتديات Adafruit ، إذا حصلت على لوحاتك من Adafruit ، أو تبادل المكدس ، وما إلى ذلك)

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

الخطوة 5: معدلات مضاعفة الإرسال والمسح الضوئي (أو: تحويل لحظي على الطريق إلى القبر)

لذا ، فإن أحد الأخطاء التي ارتكبتها عندما طلبت أول مجموعة من الألواح الخاصة بي من علي بابا هو أنني حصلت على ألواح خارجية (لم لا ، أعتقد أنها مقاومة للماء وأكثر إشراقًا!). وعندما قمت بتوصيلهم بقبعة المصفوفة الخاصة بي ، بدت الأمور.. ليست صحيحة.

لفهم سبب ذلك ، سنأخذ دقيقة لإلقاء نظرة على Phil Burgess من وصف Adafruit لكيفية عمل هذه اللوحات. ستلاحظ أن Burgess يشير إلى أن الألواح لا تضيء جميع مصابيح LED الخاصة بها مرة واحدة - فهي تضيء مجموعات من الصفوف. تسمى العلاقة بين ارتفاع اللوحة بالبكسل وعدد الصفوف التي تضيء مرة واحدة بمعدل المسح الضوئي. لذلك ، على سبيل المثال - في لوحة 32 × 32 مع مسح ضوئي 1/16 ، يتم إضاءة صفين (1 و 17 ، 2 و 18 ، 3 و 19 ، إلخ) مرة واحدة ، على طول اللوحة ، ثم تكرر وحدة التحكم. تم تصميم معظم المكتبات التي تدير مصفوفات RGB للوحات حيث يكون معدل المسح الضوئي 1/2 من الارتفاع بالبكسل - أي أنها تقود صفين من مصابيح LED في وقت واحد.

تحتوي الألواح الخارجية (وبعض اللوحات الداخلية - تأكد من إلقاء نظرة على المواصفات قبل الطلب) بمعدلات مسح تبلغ 1/4 من الارتفاع بالبكسل ، مما يعني أنهم يتوقعون تشغيل أربعة خطوط في وقت واحد. هذا يجعلهم أكثر إشراقًا (وهو أمر جيد) ولكنه يجعل الكثير من التعليمات البرمجية القياسية لا تعمل معهم (وهو أمر سيء). بالإضافة إلى ذلك ، فإنهم يميلون إلى جعل البكسل خارج الترتيب داخليًا ، الأمر الذي يتطلب تحويل قيم x و y في البرنامج من أجل معالجة وحدات البكسل الصحيحة. لماذا صنع بهذه الطريقة؟ ليس لدي فكره. هل تعرف؟ إذا كان الأمر كذلك، من فضلك قل لي. وإلا فإنه سيبقى لغزا.

لذا ، إذا كان لديك واحدة من هذه الألواح الخارجية الغريبة ، فأنت (على الأرجح) محظوظ! أضاف hzeller مؤخرًا دعمًا للتكوينات الشائعة لهذه الأنواع من اللوحات إلى مكتبته. يمكنك قراءة المزيد حول هذا الموضوع على صفحة github للمشروع ، ولكن يمكنك تمرير --led-multiplexing = {0، 1، 2، 3} إلى نموذج التعليمات البرمجية (قد تحتاج أيضًا إلى التظاهر بأن لديك سلسلة مزدوجة الطول من ألواح نصف الطول) ويجب أن تعمل.

هناك بعض أنماط تحويل البكسل غير مدعومة - و (خمن ماذا) تحتوي لوحاتي على واحدة منها! لذلك ، كان علي أن أكتب رمز التحويل الخاص بي (أنا أيضًا - لأي سبب كان - يجب أن أخبر المكتبة أن تتصرف كما لو أنني حصلت على ثماني لوحات 16 × 32 مرتبطة ببعضها البعض). وهو كالتالي:

def transformPixels (j، k): effJ = j٪ 32

إف ك = ك٪ 32

modY = k

مودكس = ي

#modX و modY هما X و Y المعدلان ؛

#effJ و effK تأكد من أننا نتحول داخل مصفوفة 32x32 قبل الدفع

إذا ((إفج)> 15):

modX = modX + 16

إذا ((effK)> 7):

modY = modY - 8

modX = modX + 16

إذا ((effK)> 15):

modX = modX - 16

إذا ((effK)> 23):

modY = modY - 8

modX = modX + 16

# ثم ندفعهم إلى الموقع الصحيح (كل x + 32 يتحرك في لوحة واحدة)

إذا (ي> 31):

modX + = 32

إذا (j> 63):

modX + = 32

إذا (ي> 95):

modX + = 32

العودة (modX ، modY)

إذا كان لديك لوحة مثل لوحة ، فقد يعمل هذا من أجلها. إذا لم يكن الأمر كذلك ، فسيتعين عليك كتابة ما تريده - لذا ، كما تعلم ، حظًا سعيدًا وتوفيقًا.

الخطوة 6: برنامج Starboard (أو: Back on Track and Ready to Pixel)

الآن بعد أن أصبحت المصفوفات الخاصة بك جاهزة للعمل وجاهزة للعمل ، كل ما عليك فعله هو وضع برنامج starboard على Pi الخاص بك وجعله جاهزًا للعمل. تأكد من أنك في الدليل الرئيسي لمستخدم pi (cd / home / pi) وقم بتشغيل الأمر التالي:

استنساخ بوابة

يجب أن يكون لديك مجلد جديد ، يمين ، يحتوي على ثلاثة ملفات: LICENSE.md و README.md و starboard_s16.py. جرب برنامج starboard من خلال تشغيله من خلال Python:

sudo python./starboard_s16.py

ويجب أن تحصل على مجموعة من الجسيمات تتحرك بسرعات مختلفة وتتحلل بمعدلات مختلفة. كل 10000 علامة أو نحو ذلك (يمكنك الانتقال إلى نص بيثون لتعديل / تغيير هذا) سيتغير الأوضاع (هناك أربعة: RGB و HSV و Rainbow و Greyscale).

لذا ، فإن الشيء الوحيد المتبقي الآن هو تشغيل رمز starboard عند بدء التشغيل. سنفعل ذلك عن طريق تحرير (باستخدام sudo) /etc/rc.local. ما تريد القيام به هو إضافة السطر التالي مباشرة قبل "خروج 0" في البرنامج النصي:

python /home/pi/starboard/starboard_s16.py &

بعد القيام بذلك ، أعد تشغيل pi - بمجرد تشغيله خلال تسلسل التمهيد ، يجب أن يبدأ البرنامج النصي starboard_s16.py مباشرة!

إذا كنت تريد أن تتجول في النص ، فلا تتردد في فعل ذلك - إنه مرخص بموجب GNU GPL 3.0. إذا لم يتم تشغيل البرنامج النصي من أجلك ، أو كنت تواجه مشكلة في استخدامه ، فلا تتردد في إخباري أو إرسال خطأ على github ، وسأرى ما يمكنني فعله لإصلاحه!

آخر شيء (للغاية) قد ترغب في القيام به هو إعداد SSH على pi ، بحيث يمكنك التحكم فيه عن بُعد وإغلاقه بأمان. ستحتاج / بالتأكيد / تريد تغيير كلمة مرورك (عبر الأمر passwd) ، ويمكنك العثور على إرشادات لتمكين ssh (أيضًا من سطر الأوامر) هنا.

موصى به: