فهرست مطالب:

رنگ پی: 9 مرحله
رنگ پی: 9 مرحله

تصویری: رنگ پی: 9 مرحله

تصویری: رنگ پی: 9 مرحله
تصویری: وقتی با بابات کالاف بازی می کنی و اونموقع هست که همه چیز +18 میشه🔞😂 2024, اکتبر
Anonim
رنگ پی
رنگ پی

این دستورالعمل نحوه استفاده از Raspberry Pi را برای کنترل صدا نوار RGB LED ، از طریق یک وب سایت ، با استفاده از رابط های Web Speech API برای SpeechRecognition و SpeechSynthesis نشان می دهد.

این مثال نشان می دهد که چگونه

  • یک وب سایت اساسی با استفاده از Node.js از طریق HTTPS ایجاد کنید
  • از واسط های Web Speech API برای SpeechRecognition و SpeechSynthesis استفاده کنید.
  • از چارچوب Cylon.js برای کنترل نوار LED RGB در رزبری پای استفاده کنید
  • برقراری ارتباط از طریق WSS (سوکت های وب امن) از صفحه وب به Cylon.js برای کنترل رنگ LED

توجه داشته باشید

  • برای شنیدن ترکیب کننده گفتار به بلندگو یا هدفون نیاز دارید
  • برای کارکرد تشخیص صدا باید به میکروفون خود دسترسی دهید
  • به دلیل دسترسی به میکروفون شما ، سایت باید تحت HTTPS اجرا شود
  • کتابخانه 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 CAD تهیه کنید
  2. RGB LED Strip Light - من با Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050 بازی می کردم. این دارای یک کنترلر و منبع تغذیه حدود 40 CAD است
  3. Barrel Jack Connector - من یکی از مغازه لوازم الکترونیکی محلی خود را خریدم ، چیزی شبیه به این. فقط مطمئن شوید که منبع تغذیه شما مناسب است یا خیر
  4. اتصالات بلوز / سیم - من تعدادی کابل اتصال زن و مرد و تعدادی سیم سنج 22 سنج محکم در اطراف داشتم
  5. Breadboard Solderless Prototype PCB Board - چیزی شبیه به این
  6. 3 مقاومت 10kΩ
  7. 3 ماسفت N -channel برای کنترل LED ها - من تعدادی IRL3303 از فروشگاه الکترونیکی محلی خود خریداری کردم. مهم است که ولتاژ آستانه دروازه حداکثر باشد. 3.3V بنابراین می توان آن را توسط پین های RPi هدایت کرد. معمولاً با "L" (منطق-سطح) در نام نشان داده می شود.

مرحله 2: راه اندازی رزبری پای

سیستم عامل

من معمولاً از جدیدترین بیلد 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 nodejs install

Git را نصب کنید

sudo apt-get git install

مرحله 3: Pi-blaster

پی بلاستر
پی بلاستر

pi-blaster PWM را در پین های GPIO که از رزبری پای درخواست می کنید فعال می کند. تکنیک مورد استفاده بسیار کارآمد است: از CPU استفاده نمی کند و پالس های بسیار پایدار می دهد.

این مدولاسیون عرض پالس به 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

در نهایت ، پیوندهایی را که می خواهید استفاده کنید پیکربندی کنید

در زیر حساب root یا با استفاده از 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

پی بلستر را مجدداً راه اندازی کنید

راه اندازی مجدد سرویس sudo pi-blaster

pi-blaster را متوقف کنید

سرویس sudo pi-blaster stop

pi-blaster را به طور خودکار در هنگام راه اندازی شروع کنید

sudo systemctl pi-blaster را فعال کنید

هشدارها و هشدارهای دیگر

پین هایی که توسط pi-blaster استفاده می شوند به عنوان خروجی پیکربندی می شوند. چیزی را به ورودی وصل نکنید وگرنه ممکن است آن را از بین ببرید! این ممکن است در خروجی کارت صدا شما اختلال ایجاد کند.

مرحله 4: تنظیم کد نمونه

کد نمونه را کلون کنید

1. یک پوشه اصلی برای نصب در آن تنظیم کنید

cd /opt

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

2. مخزن نمونه git را کلون کنید

git clone

یا

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

3. وابستگی ها را نصب کنید

cd color-pi

npm نصب کنید

این ممکن است 2-3 دقیقه طول بکشد

4. این پروژه نیاز به برقراری ارتباط از طریق HTTPS و WSS دارد. در این زمان cylon-api-socketio اتصالات SSL را پشتیبانی نمی کند. یک درخواست pull باز برای افزودن این پشتیبانی وجود دارد ، اما تا زمانی که آن ادغام نشود ، یک فایل وصله در این مخزن وجود دارد. بعد از نصب npm دستور زیر را اجرا کنید

git checkout node_modules/cylon-api-socketio/lib/api.js

مرحله 5: یک گواهی SSL با امضای خود ایجاد کنید

1. یک فایل کلید خصوصی ایجاد کنید

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

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

2. ایجاد CSR (درخواست امضای گواهینامه)

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

در این مرحله از شما اطلاعاتی در مورد درخواست گواهی درخواست می شود. از آنجا که این یک گواهی خود امضاء شده است ، این به شما بستگی دارد که چگونه اطلاعات را دقیق وارد کنید. به عنوان مثال

نام کشور (کد 2 حرف) [AU]: CA

نام ایالت یا استان (نام کامل) [برخی ایالت]: نام منطقه بریتیش کلمبیا (به عنوان مثال ، شهر) : نام سازمان ونکوور (به عنوان مثال ، شرکت) [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 ایجاد می کنیم

openssl dhparam -out dh_2048.pem 2048

این می تواند 15-20 دقیقه طول بکشد

مرحله 6: سیم کشی کردن مدار

سیم کشی مدار
سیم کشی مدار
سیم کشی مدار
سیم کشی مدار
سیم کشی مدار
سیم کشی مدار
سیم کشی مدار
سیم کشی مدار

تغذیه نوار LED

نوار LED از 12 ولت تغذیه می کند. رزبری پای تنها دارای توان خروجی 3.3 ولت یا 5 ولت است و قادر به خروجی در نزدیکی آمپرهای مورد نیاز برای رانندگی LED های زیاد نیست.

مهم است که منبع تغذیه 12 ولت را به رزبری پای وصل نکنید. ترانزیستورهای MOSFET کانال N برای جداسازی 3.3 ولت روی پایه های RPi و 12 ولت منبع تغذیه LED استفاده می شود.

MOSFET دارای سه پایه Gate ، Drain و Source است. اگر مطمئن نیستید که کدام گوگل برای برگه داده ترانزیستور مورد استفاده شما است ، به عنوان مثال IRL3303

ما قصد داریم Raspberry Pi Pin را به Gate ، سیم LED را به Drain و یک نقطه مشترک را به منبع متصل کنیم. هنگامی که پین بالا می رود ، ولتاژ بین Drain و Source Gate را فعال می کند و دروازه را به منبع متصل می کند.

ما همچنین قصد داریم مقاومتهای 10kΩ را در سراسر دروازه و منبع قرار دهیم ، به طوری که وقتی پین RPi بالا است ، می توانیم با کاهش جریان عبوری از آن از پین محافظت کنیم.

مراحل بعدی را با مسئولیت خود انجام دهید. من هیچ مسئولیتی در قبال هر چیزی که ممکن است اشتباه شود را بر عهده نمی گیرم

یک تصویر مهیج و یک عکس از مدار واقعی در بالا وجود دارد.

توصیه می کنم این کار را در حالی انجام دهید که برق RPi و نوار LED خاموش است

مدارهای ترانزیستور را یکی در هر کانال رنگی تنظیم کنید

  1. همانطور که در نمودار نشان داده شده است ، یکی از ترانزیستورها را در تخته نان وارد کنید
  2. یکی از مقاومتهای 10kΩ را در سراسر Drain و پایه های ترانزیستور وارد کنید. این اولین و آخرین پین است
  3. برای اتصال پین منبع (آخرین پین) به زمین روی تخته نان از مقداری سیم استفاده کنید
  4. مراحل 1 - 3 را دو بار دیگر تکرار کنید ، به طوری که سه ست داشته باشید - یک در هر رنگ (قرمز ، سبز و آبی)

پین های RPi را به برد وصل کنید

  1. پین 16 را به پین دروازه (اولین پین) اولین ترانزیستور وصل کنید - این کانال آبی LED خواهد بود
  2. پین 18 را به پین دروازه (اولین پین) اولین ترانزیستور وصل کنید - این کانال قرمز LED خواهد بود
  3. پین 20 را به یکی از خطوط Ground در کنار تخته نان متصل کنید
  4. پین 22 را به پین دروازه (اولین پین) اولین ترانزیستور وصل کنید - این کانال LED سبز خواهد بود

من از رنگهای سیم متناسب با LED ها استفاده کرده ام: آبی ، قرمز و سبز. من از رنگ مشکی برای زمین استفاده کرده ام

جک بشکه را وصل کنید

  1. یک سیم سفید را به انتهای جک بشکه وصل کنید
  2. یک سیم سیاه را به انتهای جک بشکه وصل کنید
  3. سیم سیاه را به همان خط زمین روی تخته نان متصل کنید که RPi Pin 20 به آن متصل شده بود
  4. سیم سفید را به خط + روی تخته نان متصل کنید

اتصال نوار LED

نوار LED من دارای یک کانکتور بود که اندازه کافی خوب داشت و می تواند به طور موقت به تخته نان متصل شود. کانکتور را در تخته نان فشار دادم و آن را برای آزمایش مدار سیم کشی کردم.

  1. اولین ترانزیستور متصل به پین 16. من یک سیم آبی از پین تخلیه (پین وسط) به سیم آبی روی کانکتور نوار LED کشیدم
  2. دومین ترانزیستور به پین 18 متصل شد. من یک سیم قرمز از آن عبور کردم

    زه کشی

    پین (پین وسط) به سیم قرمز روی کانکتور نوار LED

  3. سومین ترانزیستور متصل به پین 22. من سیم سبز رنگی را از آن عبور کردم

    زه کشی

    پین (پین وسط) به سیم سبز روی کانکتور نوار LED

  4. در نهایت ، من یک سیم سفید از خط + روی تخته نان که به جک بشکه وصل شده بود ، به سیم سفید روی کانکتور نوار LED ، اجرا کردم.

قدرت

پس از بررسی مدار ، باید رزبری پای را روشن کرده و منبع تغذیه 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

توجه: این موارد باید با پین های فیزیکی مورد استفاده شما مطابقت داشته باشد. در صورت تغییر این موارد ، به GPIO های تعریف شده در فایل/etc/default/pi-blaster نیز نیاز دارید. مثلا

DAEMON_OPTS =-gpio 16 ، 20 ، 21

کد سرور اصلی را می توان در فایل app.js یافت. این فایل وب سرور HTTPS را راه اندازی می کند و همچنین ، از طریق چارچوب Cylon.js ، از socket.io برای گوش دادن به درخواست های سوکت وب در یک پورت جداگانه استفاده می کند.

برای دسترسی به وب سایت ، باید یک مرورگر وب را در رایانه اصلی خود باز کنید (من این را فقط در Chrome آزمایش کرده ام) و از آدرس IP رزبری پای استفاده کنید ، به عنوان مثال.

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 به طور کامل روشن است.

به عنوان مثال،

قرمز r = 255 ، g = 0 ، b = 0

سبز r = 0 ، g = 255 ، b = 0 آبی r = 0 ، g = 0 ، b = 255 سفید r = 255 ، g = 255 ، b = 255 سیاه / خاموش r = 0 ، g = 0 ، b = 0

مرحله 8: کد وب سایت

کد وب سایت
کد وب سایت

عمومی

این وب سایت از تشخیص صدا برای انتخاب رنگ ها از لیست از پیش تعیین شده استفاده می کند. برای افزودن رنگ به لیست ، فایل را در سرور ویرایش کنید: public/data/colours.json

به عنوان مثال،

"قرمز": "#FF0000" ،

وقتی رنگی پیدا شد یا از کشویی انتخاب شد ، کادر خروجی روی آن رنگ تنظیم می شود و پیامی از طریق socket.io به Raspnerry Pi ارسال می شود که LED ها را به همان رنگ تنظیم می کند.

توجه: بسته به میزان LED های خوب شما ممکن است یک رنگ مشابه را ببینید یا نبینید. تکرار برخی از آنها آسان تر از سایرین است

هنگامی که برای اولین بار وب سایت را بارگیری می کنید ، زیرا از گواهی SSL خود امضا استفاده می کنید ، باید این را در مرورگر تصدیق کنید. شما باید یک هشدار امنیتی در مورد گواهی مشاهده کنید.

تشخیص صدا

این جعبه دارای نماد میکروفون است. اگر روی نماد وقتی سبز است کلیک کنید ، شروع به گوش دادن به رنگ ها می کند. در حال گوش دادن ، قرمز می شود. برای مدت کوتاهی گوش می دهد و سپس متوقف می شود. با کلیک روی نماد میکروفون در صورت قرمز بودن آن ، گوش دادن آن نیز متوقف می شود.

از آنجا که این سایت نیاز به دسترسی به میکروفون شما دارد ، باید در صورت درخواست از آن مجوز بگیرید

توجه: برای این قسمت به میکروفون نیاز دارید. من از آن روی دوربین وبم استفاده می کنم.

رونوشت موقت

این جعبه حدس کلماتی را که می گویید ، همانطور که آنها را می گویید ، دنبال می کند.

رونوشت نهایی

این جعبه آخرین حدس هایی را که گفتید دنبال می کند.

رنگهای شناخته شده

این لیستی از تمام رنگهایی است که صفحه در مورد آنها می داند. از فایل colours.json ایجاد می شود. اگر یکی از این رنگ ها را انتخاب کنید ، صفحه رنگ را بیان می کند و رنگ خروجی را تنظیم می کند.

توجه: برای شنیدن سخنرانی به بلندگو یا هدفون نیاز دارید

رنگها یافت شد

این صفحه وب در حال حاضر فقط از تطبیق رنگ پشتیبانی می کند. اگر کلمه یا کلماتی که در میکروفون بیان کرده اید با نام یک رنگ شناخته شده مطابقت داشته باشد یا رنگی را از لیست رنگهای شناخته شده انتخاب کنید ، در اینجا به عنوان یک گزارش اضافه می شود.

خروجی

آخرین رنگ موجود در اینجا نمایش داده می شود. مقدار Color Hex (به عنوان مثال #7cb9e8) و مقدار RGB (به عنوان مثال 124 ، 185 ، 232) به عنوان متن نمایش داده می شود و پس زمینه کادر وسط بر روی رنگ واقعی تنظیم می شود.

این رنگ برای رزبری پای نیز ارسال می شود و باید تغییر رنگ نوار LED را مشاهده کنید.

توجه: اگر تغییر رنگ LED را مشاهده نمی کنید ، سعی کنید pi-blaster و/یا برنامه node.js را راه اندازی مجدد کنید.

راه اندازی مجدد سرویس sudo pi-blaster

شروع sudo npm

صداهای شناخته شده

این کادر لیستی از "Known Voices" را از speechSynthesis پشتیبانی شده نمایش می دهد. با انتخاب یکی از این صداها ، صدا و زبانی که می شنوید تغییر می کند و نام صدا را بیان می کند.

همچنین زبان SpeechRecognition را با زبان انتخاب شده در لیست تغییر می دهد.

مرحله نهم: در نهایت

Image
Image

در اینجا نمونه ای از آنچه باید ببینید مشاهده می کنید.

لطفاً اگر مشکلی دارید به من اطلاع دهید و در صورت لزوم می توانم آن را به روز کنم.

توصیه شده: