فهرست مطالب:
- مرحله 1: تجهیزات
- مرحله 2: راه اندازی رزبری پای
- مرحله 3: Pi-blaster
- مرحله 4: تنظیم کد نمونه
- مرحله 5: یک گواهی SSL با امضای خود ایجاد کنید
- مرحله 6: سیم کشی کردن مدار
- مرحله 7: کد سمت سرور
- مرحله 8: کد وب سایت
- مرحله نهم: در نهایت
تصویری: رنگ پی: 9 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:57
این دستورالعمل نحوه استفاده از 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: تجهیزات
- Raspberry Pi - من از Raspberry Pi 2B که در اطراف آن قرار داشتم استفاده کردم ، اما شما می توانید یک Raspberry Pi 3 Starter Kit با قیمت حدود 100 CAD تهیه کنید
- RGB LED Strip Light - من با Minger LED Strip Light 32.8ft/10M 600leds RGB SMD 5050 بازی می کردم. این دارای یک کنترلر و منبع تغذیه حدود 40 CAD است
- Barrel Jack Connector - من یکی از مغازه لوازم الکترونیکی محلی خود را خریدم ، چیزی شبیه به این. فقط مطمئن شوید که منبع تغذیه شما مناسب است یا خیر
- اتصالات بلوز / سیم - من تعدادی کابل اتصال زن و مرد و تعدادی سیم سنج 22 سنج محکم در اطراف داشتم
- Breadboard Solderless Prototype PCB Board - چیزی شبیه به این
- 3 مقاومت 10kΩ
- 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 خاموش است
مدارهای ترانزیستور را یکی در هر کانال رنگی تنظیم کنید
- همانطور که در نمودار نشان داده شده است ، یکی از ترانزیستورها را در تخته نان وارد کنید
- یکی از مقاومتهای 10kΩ را در سراسر Drain و پایه های ترانزیستور وارد کنید. این اولین و آخرین پین است
- برای اتصال پین منبع (آخرین پین) به زمین روی تخته نان از مقداری سیم استفاده کنید
- مراحل 1 - 3 را دو بار دیگر تکرار کنید ، به طوری که سه ست داشته باشید - یک در هر رنگ (قرمز ، سبز و آبی)
پین های RPi را به برد وصل کنید
- پین 16 را به پین دروازه (اولین پین) اولین ترانزیستور وصل کنید - این کانال آبی LED خواهد بود
- پین 18 را به پین دروازه (اولین پین) اولین ترانزیستور وصل کنید - این کانال قرمز LED خواهد بود
- پین 20 را به یکی از خطوط Ground در کنار تخته نان متصل کنید
- پین 22 را به پین دروازه (اولین پین) اولین ترانزیستور وصل کنید - این کانال LED سبز خواهد بود
من از رنگهای سیم متناسب با LED ها استفاده کرده ام: آبی ، قرمز و سبز. من از رنگ مشکی برای زمین استفاده کرده ام
جک بشکه را وصل کنید
- یک سیم سفید را به انتهای جک بشکه وصل کنید
- یک سیم سیاه را به انتهای جک بشکه وصل کنید
- سیم سیاه را به همان خط زمین روی تخته نان متصل کنید که RPi Pin 20 به آن متصل شده بود
- سیم سفید را به خط + روی تخته نان متصل کنید
اتصال نوار LED
نوار LED من دارای یک کانکتور بود که اندازه کافی خوب داشت و می تواند به طور موقت به تخته نان متصل شود. کانکتور را در تخته نان فشار دادم و آن را برای آزمایش مدار سیم کشی کردم.
- اولین ترانزیستور متصل به پین 16. من یک سیم آبی از پین تخلیه (پین وسط) به سیم آبی روی کانکتور نوار LED کشیدم
-
دومین ترانزیستور به پین 18 متصل شد. من یک سیم قرمز از آن عبور کردم
زه کشی
پین (پین وسط) به سیم قرمز روی کانکتور نوار LED
-
سومین ترانزیستور متصل به پین 22. من سیم سبز رنگی را از آن عبور کردم
زه کشی
پین (پین وسط) به سیم سبز روی کانکتور نوار LED
- در نهایت ، من یک سیم سفید از خط + روی تخته نان که به جک بشکه وصل شده بود ، به سیم سفید روی کانکتور نوار 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 را با زبان انتخاب شده در لیست تغییر می دهد.
مرحله نهم: در نهایت
در اینجا نمونه ای از آنچه باید ببینید مشاهده می کنید.
لطفاً اگر مشکلی دارید به من اطلاع دهید و در صورت لزوم می توانم آن را به روز کنم.
توصیه شده:
صندلی داغ: یک کوسن گرم شونده با تغییر رنگ بسازید: 7 مرحله (همراه با تصاویر)
صندلی داغ: یک کوسن گرم شونده با تغییر رنگ بسازید: آیا می خواهید در روزهای سرد زمستان خود را برشته نگه دارید؟ Hot Seat پروژه ای است که از دو قابلیت هیجان انگیز نساجی الکترونیکی استفاده می کند - تغییر رنگ و گرما! ما در حال ساخت یک بالشتک هستیم که گرم می شود و وقتی آماده حرکت شود ، نشان می دهد که
دستگاه رنگ تشخیص رنگ: 4 مرحله
ماشین رنگ تشخیص رنگ: دستگاه تشخیص رنگ ، رنگهای اطراف خود را کپی کرده و به شما اجازه می دهد با آنها نقاشی کنید. اگر رنگ اصلی را دارید ، می توانید از حسگر رنگ RGB برای تشخیص رنگ مورد نظر خود و مخلوط کردن آن استفاده کنید. اما به یاد داشته باشید ، از شیء رنگ روشن استفاده کنید
چراغ های LED چند رنگ رنگ Reactive - سنسور تشخیص صدا آردوینو - نوار LED RGB: 4 مرحله
چراغ های LED چندرنگ Reactive Music | سنسور تشخیص صدا آردوینو | RGB LED Strip: پروژه چراغ های LED چند رنگ LED فعال در برابر موسیقی. در این پروژه ، از یک نوار LED 5050 RGB ساده (نه LED WS2812 آدرس پذیر) ، سنسور تشخیص صدا آردوینو و آداپتور 12 ولت استفاده شد
نحوه رنگ آمیزی با استفاده از برس رنگ معمولی و آب برای کشیدن روی تبلت یا تلفن همراه: 4 مرحله
نحوه رنگ آمیزی با استفاده از قلم مو و آب معمولی برای کشیدن روی تبلت یا تلفن همراه: نقاشی با قلم مو سرگرم کننده است. این پیشرفتهای زیادی را برای بچه ها به همراه دارد
تغییر رنگ موش LED سه رنگ: 5 مرحله
تغییر رنگ موش سه رنگ LED: LED خسته کننده قرمز را در ماوس با یک LED دوچرخه سواری رنگی چشمک زن سه رنگ جایگزین کنید. توجه: این جایگزینی برای LED است که برای روشن کردن انتهای ماوس استفاده می شود ، در موش افقی دیگر LED در مرکز ما برای ردیابی استفاده می شود ، جایگزین نشود