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

اللون pi: 9 خطوات
اللون pi: 9 خطوات

فيديو: اللون pi: 9 خطوات

فيديو: اللون pi: 9 خطوات
فيديو: رسومات سهله تسويها وقت الفراغ 2024, شهر نوفمبر
Anonim
اللون بي
اللون بي

يوضح هذا التوجيه كيفية استخدام Raspberry Pi للتحكم الصوتي في شريط RGB LED ، من خلال موقع ويب ، باستخدام واجهات Web Speech API لـ SpeechRecognition و SpeechSynthesis.

يوضح هذا المثال كيف

  • قم بإنشاء موقع ويب أساسي باستخدام Node.js عبر
  • استخدم واجهات Web Speech API لـ SpeechRecognition و SpeechSynthesis.
  • استخدم إطار عمل Cylon.js للتحكم في شريط RGB LED على Raspberry Pi
  • تواصل عبر WSS (مآخذ الويب الآمنة) من صفحة الويب إلى Cylon.js للتحكم في لون LED

ملحوظة

  • ستحتاج إلى مكبرات صوت أو سماعات رأس لسماع مُركِّب الكلام
  • ستحتاج إلى منح حق الوصول إلى الميكروفون حتى يعمل التعرف على الصوت
  • لأن هذا الوصول إلى الميكروفون الخاص بك ، يجب تشغيل الموقع تحت
  • مكتبة cylon-api-socketio لا تدعم https في الوقت الحالي. لدي طلب سحب في انتظار الدمج ، ولكن حتى ذلك الحين تحتاج إلى استبدال /node_modules/cylon-api-socketio/lib/api.js بالملف الموجود في هذا المستودع
  • هناك حاجة إلى pi-blaster لإنجاز هذا العمل.

الخطوة 1: المعدات

  1. Raspberry Pi - لقد استخدمت Raspberry Pi 2B الذي كنت أضعه حوله ، ولكن يمكنك الحصول على Raspberry Pi 3 Starter Kit مقابل حوالي 100 دولار كندي
  2. RGB LED Strip Light - كنت ألعب مع Minger LED Strip Light 32.8ft / 10M 600leds RGB SMD 5050. يأتي هذا مع وحدة تحكم ومصدر طاقة لحوالي 40 دولار كندي
  3. موصل برميل جاك - اشتريت واحدًا من متجر الإلكترونيات المحلي الخاص بي ، شيء من هذا القبيل. فقط تأكد مما إذا كان يناسب مصدر الطاقة الخاص بك
  4. موصلات / سلك الطائر - كان لدي بعض كبلات الموصل من أنثى إلى ذكر وبعض الأسلاك الصلبة قياس 22 ملقاة حولها
  5. Breadboard Solderless Prototype PCB Board - شيء من هذا القبيل
  6. 3 × 10kΩ مقاومات
  7. 3 x N-channel MOSFETs للتحكم في مصابيح LED - اشتريت بعض وحدات IRL3303 من متجري الإلكتروني المحلي. من المهم أن يكون جهد عتبة البوابات بحد أقصى. 3.3 فولت بحيث يمكن تشغيلها بواسطة دبابيس RPi ؛ عادةً ما يُشار إليه بـ "L" (مستوى المنطق) في الاسم.

الخطوة 2: إعداد Raspberry Pi

نظام التشغيل

عادةً ما أستخدم أحدث إصدار من Raspbian. قم بتنزيل الصورة وكتابتها على بطاقة SD. إذا كنت تستخدم جهاز كمبيوتر يعمل بنظام Windows ، فيمكنك استخدام Win32 Disk Imager لكتابة الصورة على بطاقة SD.

Node.js

قم بتثبيت أحدث إصدار من Node.js. في وقت كتابة هذا التقرير ، كنت أستخدم 8.9.1

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -

sudo apt-get install nodejs

قم بتثبيت Git

sudo apt-get install git

الخطوة 3: Pi-blaster

بي بلاستر
بي بلاستر

يقوم pi-blaster بتمكين PWM على دبابيس GPIO التي تطلبها من Raspberry Pi. التقنية المستخدمة فعالة للغاية: لا تستخدم وحدة المعالجة المركزية وتعطي نبضات ثابتة للغاية.

يسمح تعديل عرض النبض هذا لـ Raspberry Pi بالتحكم في مدى سطوع كل من قنوات الأحمر والأخضر والأزرق لشريط LED.

أولاً ، استنساخ المستودع

cd / opt /

sudo git clone https://github.com/sarfata/pi-blaster.git sudo chown -R pi: pi pi-blaster

ثم قم بالبناء والتثبيت

cd / opt / pi-blaster./autogen.sh &&./configure && make && sudo make install

أخيرًا ، قم بتهيئة المسامير التي تريد استخدامها

تحت حساب الجذر ، أو باستخدام sudo ، قم بإنشاء الملف وتحريره

/ etc / default / pi-blaster

أضف الأسطر التالية

DAEMON_OPTS = - gpio 23، 24، 25

تحتاج دبابيس gpio هذه إلى مطابقة المسامير التي تقوم بتوصيلها بشريط LED الخاص بك.

ملاحظة: يوجد فرق بين GPIO ورقم التعريف الشخصي. يستخدم هذا المثال ما يلي

LED - أزرق ، GPIO-23 ، دبوس - 16

LED - أحمر ، GPIO-24 ، دبوس - 18 LED - أخضر ، GPIO-25 ، دبوس - 22

تعديلات اضافية

بدء pi-blaster

بدء خدمة sudo pi-blaster

أعد تشغيل pi-blaster

إعادة تشغيل sudo service pi-blaster

وقف pi-blaster

توقف sudo service pi-blaster

بدء pi-blaster تلقائيًا في وقت التمهيد

sudo systemctl تمكين pi-blaster

التحذيرات والمحاذير الأخرى

سيتم تكوين الدبابيس المستخدمة بواسطة pi-blaster كمخرجات. لا تقم بتوصيل أي شيء بإدخال أو قد تدمره! يستخدم هذا البرنامج الخفي مولد PWM للأجهزة من raspberry pi للحصول على توقيتات دقيقة. قد يتداخل هذا مع إخراج بطاقة الصوت الخاصة بك.

الخطوة 4: إعداد رمز المثال

استنساخ رمز المثال

1. قم بإعداد مجلد أساسي للتثبيت فيه

cd / opt

sudo mkdir com.jonhaydock sudo chown pi: pi com.jonhaydockcd com.jonhaydock

2. استنساخ مثال مستودع git

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

أو

git clone [email protected]: haydockjp / color-pi.git

3. تثبيت التبعيات

cd color-pi

تثبيت npm

قد يستغرق هذا 2-3 دقائق

4. يحتاج هذا المشروع إلى التواصل عبر HTTPS و WSS. في هذا الوقت لا يدعم cylon-api-socketio اتصالات SSL. يوجد طلب سحب مفتوح لإضافة هذا الدعم ، ولكن حتى يتم دمج ذلك ، يوجد ملف تصحيح في هذا المستودع. قم بتشغيل الأمر التالي بعد تثبيت npm

بوابة الخروج node_modules / cylon-api-socketio / lib / api.js

الخطوة 5: إنشاء شهادة SSL موقعة ذاتيًا

1. إنشاء ملف مفتاح خاص

cd /opt/com.jonhaydock/colour-pi/certs

opensl genrsa -out color-pi-key.pem 2048

2. إنشاء CSR (طلب توقيع الشهادة)

opensl req-new -key color-pi-key.pem -out color-pi-csr.pem

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

اسم البلد (رمز مكون من حرفين) [أستراليا]: CA

اسم الولاية أو المقاطعة (الاسم الكامل) [Some-State]: اسم المنطقة المحلية في كولومبيا البريطانية (على سبيل المثال ، المدينة) : اسم مؤسسة فانكوفر (على سبيل المثال ، الشركة) [Internet Widgits Pty Ltd]: اسم الوحدة التنظيمية Color Pi (على سبيل المثال ، القسم) : الاسم الشائع (مثل خادم FQDN أو اسمك) : عنوان البريد الإلكتروني color-pi : [email protected]

كلمة مرور اختبار :

اسم شركة اختياري :

في هذا المثال ، ما عليك سوى الضغط على "رجوع" لترك كلمة مرور التحدي فارغة

3. إنشاء الشهادة

openssl x509 -req -days 1095 -in color-pi-csr.pem -signkey color-pi-key.pem -out color-pi-cert.pem

4. لمزيد من الأمان ، سننشئ أيضًا ملف Diffie Hellman Parameters

opensl dhparam -out dh_2048.pem 2048

قد يستغرق هذا من 15 إلى 20 دقيقة

الخطوة 6: توصيل الدائرة الكهربائية

توصيل الدائرة الكهربائية
توصيل الدائرة الكهربائية
توصيل الدائرة الكهربائية
توصيل الدائرة الكهربائية
توصيل الدائرة الكهربائية
توصيل الدائرة الكهربائية
توصيل الدائرة الكهربائية
توصيل الدائرة الكهربائية

تشغيل شريط LED

يتم تشغيل شريط LED بجهد 12 فولت. إن Raspberry Pi قادر فقط على إخراج 3.3 فولت أو 5 فولت وليس قادرًا على الإخراج في أي مكان بالقرب من الأمبيرات اللازمة لتشغيل العديد من مصابيح LED.

من المهم عدم توصيل مصدر طاقة 12 فولت بـ Raspberry Pi. تُستخدم ترانزستورات N-channel MOSFET لفصل 3.3 فولت على دبابيس RPi و 12 فولت من مصدر طاقة LED.

يحتوي MOSFET على ثلاثة دبابيس بوابة ، استنزاف ومصدر. إذا لم تكن متأكدًا من نوع Google الخاص بورقة بيانات الترانزستور الذي تستخدمه ، على سبيل المثال IRL3303

سنقوم بتوصيل Raspberry Pi Pin بالبوابة وسلك LED بالمصرف وأرضية مشتركة بالمصدر. عندما يرتفع الدبوس ، فإن الجهد الكهربي بين الصرف والمصدر سينشط البوابة وسيقوم بتوصيل البوابة بالمصدر.

سنقوم أيضًا بوضع مقاومات 10kΩ عبر البوابة والمصدر ، بحيث عندما يكون دبوس RPi مرتفعًا ، يمكننا حماية الدبوس عن طريق تقليل التيار الذي يمر عبره.

نفذ الخطوات التالية على مسؤوليتك الخاصة. أنا لا أتحمل أي مسؤولية عن أي شيء قد يحدث خطأ

توجد صورة مقلقة وصورة للدائرة الفعلية أعلاه.

أوصي بالقيام بذلك أثناء إيقاف تشغيل الطاقة لـ RPi وشريط LED

قم بإعداد دوائر الترانزستور ، واحدة لكل قناة لون

  1. أدخل أحد الترانزستورات في اللوح كما هو موضح في الرسم التخطيطي
  2. أدخل أحد مقاومات 10kΩ عبر المصرف ودبابيس المصدر في الترانزستور. هذا هو الدبوس الأول والأخير
  3. استخدم بعض الأسلاك لتوصيل دبوس المصدر (آخر دبوس) بالأرض على اللوح
  4. كرر الخطوات من 1 إلى 3 مرتين أخريين ، بحيث يكون لديك ثلاث مجموعات - واحدة لكل لون (أحمر وأخضر وأزرق)

قم بتوصيل دبابيس RPi باللوحة

  1. قم بتوصيل دبوس 16 بمسمار البوابة (الدبوس الأول) للترانزستور الأول - ستكون هذه قناة LED الزرقاء
  2. قم بتوصيل دبوس 18 بمسمار البوابة (الدبوس الأول) لأول ترانزستور - ستكون هذه قناة الصمام الأحمر
  3. قم بتوصيل دبوس 20 بأحد الخطوط الأرضية على جانب اللوح
  4. قم بتوصيل دبوس 22 بمسمار البوابة (الدبوس الأول) لأول ترانزستور - ستكون هذه قناة LED الخضراء

لقد استخدمت ألوان الأسلاك المطابقة لمصابيح LED: الأزرق والأحمر والأخضر. لقد استخدمت الأسود للأرض

قم بتوصيل برميل جاك

  1. قم بتوصيل سلك أبيض بالطرف + لمقبس البرميل
  2. قم بتوصيل سلك أسود بنهاية مقبس البرميل
  3. قم بتوصيل السلك الأسود بنفس الخط الأرضي على اللوح الذي تم توصيل RPi Pin 20 به
  4. قم بتوصيل السلك الأبيض بخط + على اللوح

توصيل شريط LED

جاء شريط LED الخاص بي مزودًا بموصل كان حجمه جيدًا بما يكفي بحيث يمكن توصيله مؤقتًا بلوح التجارب. لقد دفعت الموصل في اللوح وقمت بتوصيله لاختبار الدائرة.

  1. أول ترانزستور متصل بـ Pin 16. قمت بتشغيل سلك أزرق من دبوس الصرف (الدبوس الأوسط) إلى السلك الأزرق في موصل شريط LED
  2. الترانزستور الثاني المتصل بـ Pin 18. ركضت سلكًا أحمر من

    بالوعة

    دبوس (الدبوس الأوسط) إلى السلك الأحمر على موصل شريط LED

  3. الترانزستور الثالث متصل بـ Pin 22. ركضت سلكًا أخضر من

    بالوعة

    دبوس (الدبوس الأوسط) إلى السلك الأخضر على موصل شريط LED

  4. أخيرًا ، قمت بتشغيل سلك أبيض من خط + على اللوح الذي كان متصلاً بمقبس البرميل ، إلى السلك الأبيض على موصل شريط LED.

قوة

بعد فحص الدائرة ، يجب أن تكون جيدًا لتشغيل Raspberry Pi وتوصيل مصدر التيار 12 فولت بمقبس البرميل.

الخطوة 7: الكود الجانبي للخادم

رمز جانب الخادم
رمز جانب الخادم

تشغيل الكود الجانبي للخادم

cd /opt/com.jonhaydock/colour-pi

بدء sudo npm

سيؤدي ذلك إلى بدء تشغيل خادم الويب والبدء في الاستماع إلى طلبات HTTPS و WSS.

ملاحظة: تذكر أن تقوم بتشغيل pi-blaster أولاً

متغيرات البيئة

منفذ موقع الويب الافتراضي هو 443 ، ولكن يمكنك تجاوز ذلك عن طريق تعيين متغير بيئة قبل بدء الكود. على سبيل المثال

تصدير COLOUR_PI_PORT = 2443

منفذ مقبس الويب الافتراضي هو 1443 ، ولكن يمكنك تجاوز ذلك عن طريق تعيين متغير بيئة قبل بدء الكود. على سبيل المثال

تصدير COLOUR_PI_WSS_PORT = 3443

ملاحظة: نظرًا لأن مقبس الويب يتم التعامل معه بواسطة cylon.js وليس موقع الويب الرئيسي ، فيجب أن يكون هذا على منافذ مختلفة

يمكن أيضًا تجاوز الدبابيس المستخدمة للأزرق (الدبوس 16) والأخضر (الدبوس 18) والأحمر (الدبوس 22). على سبيل المثال

تصدير COLOUR_PI_PIN_BLUE = 36

تصدير COLOUR_PI_PIN_RED = 38 تصدير COLOUR_PI_PIN_GREEN = 40

ملاحظة: يجب أن تتطابق هذه مع المسامير المادية التي استخدمتها. إذا قمت بتغييرها ، فستحتاج أيضًا إلى تحديث GPIOs المحددة في الملف / etc / default / pi-blaster. على سبيل المثال

DAEMON_OPTS = - gpio 16، 20، 21

يمكن العثور على رمز الخادم الرئيسي في ملف app.js. يبدأ هذا الملف خادم الويب HTTPS وأيضًا ، من خلال إطار عمل Cylon.js ، يستخدم socket.io للاستماع إلى طلبات مقبس الويب على منفذ منفصل.

للوصول إلى موقع الويب ، يجب عليك فتح متصفح ويب على جهاز الكمبيوتر الرئيسي (لقد اختبرت هذا فقط في Chrome) واستخدام عنوان IP الخاص بـ Raspberry Pi ، على سبيل المثال

10.0.1.2/

يمكنك معرفة عنوان IP الخاص بك من سطر أوامر Raspberry Pi.

ifconfig

سيقوم خادم الويب بتقديم أي محتوى ضمن المجلد العام. يتم عرض صفحة index.html افتراضيًا.

ينشئ Cylon.js نقطة نهاية يمكنك توصيل Socket.io بها.

10.0.1.2:1443/api/robots/colour-pi

يمكنك إرسال رسالة set_colour عبر المقبس لتعيين قيم الأحمر والأخضر والأزرق

device.emit ('set_colour'، r، g، b)

الذي يستدعي الأمر set_colour ، الذي يستدعي الوظيفة setColour في app.js. تحدد هذه الوظيفة مستويات السطوع ، لكل من قيم R و G و B ، بين 0 و 255. حيث يكون 0 في وضع الإيقاف و 255 قيد التشغيل بالكامل.

على سبيل المثال

أحمر ص = 255 ، ز = 0 ، ب = 0

أخضر ص = 0 ، ز = 255 ، ب = 0 أزرق ص = 0 ، ز = 0 ، ب = 255 أبيض ص = 255 ، ز = 255 ، ب = 255 أسود / إيقاف ص = 0 ، ز = 0 ، ب = 0

الخطوة 8: كود الموقع

كود الموقع
كود الموقع

عام

يستخدم موقع الويب التعرف على الصوت لتحديد الألوان من قائمة محددة مسبقًا. لإضافة لون إلى القائمة ، قم بتحرير الملف على الخادم: public / data / colours.json

على سبيل المثال

"أحمر": "# FF0000"،

عند العثور على لون أو تحديده من القائمة المنسدلة ، سيتم تعيين مربع الإخراج على هذا اللون وسيتم إرسال رسالة عبر socket.io إلى Raspnerry Pi ، والتي ستضبط مصابيح LED على نفس اللون.

ملاحظة: بناءً على مدى جودة مصابيح LED الخاصة بك ، قد ترى أو لا ترى لونًا مشابهًا. بعضها أسهل في التكرار من البعض الآخر

عند تحميل موقع الويب لأول مرة ، نظرًا لأنك تستخدم شهادة SSL موقعة ذاتيًا ، فستحتاج إلى الإقرار بذلك في المتصفح. يجب أن ترى تنبيه أمان حول الشهادة.

التعرف على الصوت

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

نظرًا لأن هذا الموقع يحتاج إلى الوصول إلى الميكروفون الخاص بك ، فستحتاج إلى منحه إذنًا عند مطالبتك بذلك

ملاحظة: أنت بحاجة إلى ميكروفون لهذا الجزء. أنا استخدم واحد على كاميرا الويب الخاصة بي.

نسخة مؤقتة

هذا الصندوق يتتبع تخمينات الكلمات التي تقولها ، كما تقولها.

نسخة نهائية

هذا المربع يتتبع التخمين النهائي هو ما قلته.

الألوان المعروفة

هذه قائمة بجميع الألوان التي تعرفها الصفحة. يتم إنشاؤه من ملف colours.json. إذا حددت أحد هذه الألوان ، فستتحدث الصفحة عن اللون وتضبط لون الإخراج.

ملاحظة: أنت بحاجة إلى مكبرات صوت أو سماعات رأس لسماع الكلام

وجدت الألوان

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

انتاج |

سيتم عرض آخر لون تم العثور عليه هنا. سيتم عرض قيمة Color Hex (على سبيل المثال # 7cb9e8) وقيمة RGB (مثل 124 ، 185 ، 232) كنص وسيتم تعيين خلفية المربع الموجود في المنتصف على اللون الفعلي.

يتم إرسال هذا اللون أيضًا إلى Raspberry Pi وسترى لون شريط LED يتغير.

ملاحظة: إذا كنت لا ترى تغيير لون LED ، فحاول إعادة تشغيل pi-blaster و / أو تطبيق node.js

إعادة تشغيل sudo service pi-blaster

بدء sudo npm

أصوات معروفة

يعرض هذا المربع قائمة "الأصوات المعروفة" من تركيب الكلام المدعوم. سيؤدي تحديد أحد هذه الأصوات إلى تغيير الصوت واللغة التي ستسمعها ، وسيتحدث باسم الصوت.

سيؤدي أيضًا إلى تغيير لغة SpeechRecognition لتكون هي نفسها التي تم اختيارها في القائمة.

الخطوة 9: أخيرًا

Image
Image

هنا مثال لما يجب أن تراه.

يُرجى إعلامي إذا كانت لديك أي مشكلة ويمكنني التحديث حسب الحاجة.

موصى به: