فهرست مطالب:

Mood Speaker- یک بلندگوی قدرتمند برای پخش موسیقی Mood بر اساس دمای محیط: 9 مرحله
Mood Speaker- یک بلندگوی قدرتمند برای پخش موسیقی Mood بر اساس دمای محیط: 9 مرحله

تصویری: Mood Speaker- یک بلندگوی قدرتمند برای پخش موسیقی Mood بر اساس دمای محیط: 9 مرحله

تصویری: Mood Speaker- یک بلندگوی قدرتمند برای پخش موسیقی Mood بر اساس دمای محیط: 9 مرحله
تصویری: 125 نوآورانه ترین وسایل نقلیه الکتریکی و حمل و نقل شخصی 2024, جولای
Anonim
Mood Speaker- یک بلندگوی قدرتمند برای پخش موسیقی Mood بر اساس دمای محیط
Mood Speaker- یک بلندگوی قدرتمند برای پخش موسیقی Mood بر اساس دمای محیط

سلام!

برای پروژه مدرسه من در MCT Howest Kortrijk ، من یک بلندگوی Mood تهیه کردم ، این یک بلندگوی بلوتوث هوشمند با سنسورهای مختلف ، یک LCD و WS2812b ledstrip است. بلندگو موسیقی را بر اساس دما پخش می کند ، اما می تواند به عنوان یک بلوتوث معمولی نیز استفاده شود گوینده. همه چیز بر روی Raspberry Pi (پایگاه داده ، وب سرور ، Backend) اجرا می شود.

بنابراین این دستورالعمل مرحله به مرحله است که چگونه این پروژه را در 3 هفته تحقق بخشیدم. بنابراین اگر می خواهید پروژه من را دوباره بسازید ، می توانید از راهنمای زیر پیروی کنید

این اولین موردی است که من نوشتم ، بنابراین اگر سوءاستفاده ای وجود داشته باشد ، سعی می کنم تا آنجا که می توانم به آنها پاسخ دهم!

GitHub من:

مرحله 1: لوازم

کارت SD رزبری پای 3B و 16 گیگابایت

کل پروژه من روی Raspberry Pi 3B با یک تصویر پیکربندی شده اجرا می شود ، که در مرحله بعد توضیح خواهم داد (مرحله 4: راه اندازی رزبری پای)

صفحه نمایش LCD 16x2

من از صفحه نمایش LCD اصلی برای چاپ دما ، روشنایی و آدرس IP خود استفاده کردم.

برگه اطلاعات:

سنسور دما DS18B20

DS18B20 یک سنسور تک سیم است که دما را اندازه گیری می کند و توسط Maxim Integrated تولید شده است. 2 نوع سنسور DS18B20 وجود دارد ، فقط جزء (که من از آن استفاده کردم) و نسخه ضد آب ، که بسیار بزرگتر است ، اما این چیزی نیست که من برای پروژه خود نیاز داشتم ، بنابراین من فقط از قطعه استفاده کردم. این سنسور می تواند دما را در محدوده 55- تا 125+ درجه سانتی گراد (67- درجه فارنهایت تا 257 درجه فارنهایت) اندازه گیری کند و دقت آن 0.5 درجه سانتی گراد از -10 تا 85 درجه سانتی گراد است. همچنین دارای وضوح قابل برنامه ریزی از 9 بیت تا 12 بیت است.

برگه اطلاعات:

MCP3008

برای خواندن اطلاعات LDR و PIR-sensor من از MCP3008 استفاده کردم که مبدل آنالوگ به دیجیتال 8 کانالی 8 بیتی با رابط SPI است و برنامه ریزی آن بسیار آسان است.

برگه اطلاعات:

سنسور حرکت PIR

برای تشخیص زمان ورود و خروج شخصی به اتاق من ، از سنسور مادون قرمز غیرفعال استفاده کردم زیرا استفاده از آنها آسان است و کوچک هستند.

برگه اطلاعات:

LDR

من از یک مقاومت نوری یا LDR (مقاومت کاهش نور ، یا مقاومت وابسته به نور) برای تشخیص سطح روشنایی اتاق استفاده کردم. و همچنین برای روشن کردن Ledstrip هنگام تاریک شدن اتاق.

بلندگو - قطر 3 اینچ - 4 اهم 3 وات

این مخروط بلندگو است که من بعد از محاسبه ولتاژ و آمپر مورد نیاز آن را انتخاب کردم و این برای پروژه Raspberry Pi من ، تولید شده توسط Adafruit ، مناسب بود.

نمای کلی:

MAX98357 I2S Class-D Mono Amplifier

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

نمای کلی:

برگه اطلاعات:

آردوینو اونو

Arduino Uno یک برد میکروکنترلر منبع باز است که بر اساس میکروکنترلر Microchip ATmega328P ساخته شده توسط Arduino.cc. برد Uno دارای 14 پین دیجیتال ، 6 پین آنالوگ است و با نرم افزار Arduino IDE کاملاً قابل برنامه ریزی است

مرور کلی:

تغییر دهنده سطح

این یک برد کوچک است که از ارتباط بین Arduino Uno و Raspberry Pi و ولتاژهای مختلف ، Arduino: 5V و Raspberry Pi: 3.3V مراقبت می کند. این مورد نیاز است زیرا نوار led به آردوینو متصل شده و در آنجا کار می کند ، در حالی که سایر موارد با رزبری پای اجرا می شوند.

WS2812B - Ledstrip

این یک نوار LED با 60 عدد رهبری RGB است (در صورت تمایل می توانید نوارهای بلندتر با LED های RGB بیشتری خریداری کنید). که در مورد من به Arduino Uno متصل است ، اما می تواند به بسیاری از دستگاه های دیگر متصل شود و واقعاً ساده است.

برگه اطلاعات:

GPIO T-Part ، 1 Breadboard و تعداد زیادی jumperwires

برای اتصال همه چیزهایی که به نان بردها و jumperwires نیاز داشتم ، از قسمت GPIO T استفاده نکردم ، اما شما می توانید از آن برای مشخص کردن اینکه سطل کجا می رود استفاده کنید.

مرحله 2: شماتیک و سیم کشی

شماتیک و سیم کشی
شماتیک و سیم کشی
شماتیک و سیم کشی
شماتیک و سیم کشی

برای ساختن شماتیک من از Fritzing استفاده کردم ، این برنامه ای است که می توانید نصب کنید و به شما امکان می دهد یک طرح کلی واقعاً آسان در انواع مختلف دید ایجاد کنید. من از breadboard و نمای شماتیک استفاده کردم.

دانلود Fritzing:

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

مرحله 3: طراحی پایگاه داده

طراحی پایگاه داده
طراحی پایگاه داده

ما داده های زیادی از 3 سنسور (دما از DS18B20 ، روشنایی از LDR و وضعیت از حسگر PIR) جمع آوری می کنیم. بنابراین بهترین کار این است که همه این داده ها در یک پایگاه داده نگهداری شوند. در مرحله بعد نحوه پیکربندی پایگاه داده را توضیح خواهم داد (مرحله 5: مهندسی پیشرو پایگاه داده ما به RPi!) اما ابتدا باید طراحی یا ERD (نمودار روابط نهاد) انجام شود. مال من با 3NF عادی شد به همین دلیل ما قطعات و تاریخچه قطعات را به جدولی دیگر تقسیم می کنیم. ما از پایگاه داده Music برای پیگیری آهنگ هایی که گوش داده شده اند استفاده می کنیم.

به طور کلی ، این یک پایگاه داده واقعاً ساده و آسان برای کار بیشتر است.

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

بنابراین اکنون که ما اصول اولیه پروژه را انجام داده ایم. بیایید با راه اندازی رزبری پای شروع کنیم!

قسمت 1: پیکربندی کارت SD

1) نرم افزار و فایل های مورد نیاز را بارگیری کنید

برای این فرایند کامل باید 2 نرم افزار و 1 سیستم عامل یعنی Raspbian را بارگیری کنید. 1 نرم افزار: اولین نرم افزار Win32 Disk Imager است.

sourceforge.net/projects/win32diskimager/

نرم افزار دوم: نرم افزار دوم SD Card Formatter است.

www.sdcard.org/downloads/formatter_4/

Raspbian OS: این سیستم عامل اصلی Pi است.

www.raspberrypi.org/downloads/raspberry-pi-os/

همه فایلها را روی دسکتاپ استخراج کنید.

2) کارت SD و کارت خوان را دریافت کنید

حداقل یک کارت SD 8 گیگابایتی کلاس 10 با کارت خوان دریافت کنید. آن کارت را به کارت خوان وارد کرده و آن را به پورت USB وصل کنید.

3) کارت SD را فرمت کنید

SD Card Formatter را باز کرده و درایو را انتخاب کنید.

روی قالب کلیک کنید و هیچ گزینه دیگری را تغییر ندهید.

پس از اتمام قالب بندی ، روی OK کلیک کنید.

4) سیستم عامل را روی کارت SD بنویسید

win32diskimager را باز کنید.

فایل.img سیستم عامل Raspbian را که از فایل بارگیری شده استخراج شده است مرور کنید.

روی open و سپس روی Write کلیک کنید.

اگر هشداری ظاهر شد ، با کلیک روی OK ، آن ها را نادیده بگیرید. منتظر بمانید تا نوشتن کامل شود و ممکن است چند دقیقه طول بکشد. پس صبور باشید.

n

5) هنگامی که این کار انجام شد ، ما آماده ایم تا قبل از قرار دادن تصویر در RPi خود تعدیل نهایی را انجام دهیم.

به فهرست SD کارت خود بروید ، فایلی با نام 'cmdline.txt' را جستجو کرده و آن را باز کنید.

اکنون 'ip = 169.254.10.1' را در همان خط اضافه کنید.

فایل را ذخیره کنید.

فایلی با نام 'ssh' بدون پسوند یا محتوا ایجاد کنید. (ساده ترین راه این است که یک فایل txt ایجاد کرده و پس از آن.txt را حذف کنید)

اکنون که همه چیز بر روی کارت SD نصب شده است ، می توانید آن را به طور ایمن از رایانه خود خارج کرده و بدون اتصال برق به Raspberry Pi قرار دهید. هنگامی که کارت SD وارد RPI می شود ، یک کابل LAN را از رایانه خود به پورت RPi LAN وصل کنید ، پس از اتصال به این سیم می توانید برق را به RPi وصل کنید.

قسمت 2: پیکربندی RPi

بتونه

اکنون می خواهیم رزبری پای خود را پیکربندی کنیم ، این کار از طریق Putty انجام می شود.

نرم افزار بتونه:

پس از بارگیری ، Putty را باز کرده و IP '169.254.10.1' و Port '22' و نوع اتصال: SSH را وارد کنید.

اکنون می توانیم سرانجام رابط خط فرمان خود را باز کرده و با اطلاعات ورود به سیستم شروع به کار کنیم -> User: pi & Password: raspberry. (توصیه می شود که آن را در اسرع وقت تغییر دهید. در اینجا راهنمای نحوه استفاده است:

Raspi-config

ما باید رابط های مختلف را فعال کنیم و برای این کار ابتدا باید کد زیر را تایپ کنیم:

sudo raspi-config

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

  • تک سیم
  • سریال
  • I2C
  • SPI

این همه کاری بود که ما باید با raspi-config انجام دهیم

افزودن WIFI شما

ابتدا باید root شوید تا دستور زیر ریشه دار شود

sudo -i

پس از روت شدن ، از دستور زیر استفاده کنید: (SSID را با نام شبکه و رمز عبور خود با رمز شبکه خود جایگزین کنید)

wpa_passphrase "ssid" "password" >> /etc/wpa_supplicant/wpa_supplicant.conf

در صورت انجام کار اشتباه ، می توانید این شبکه را فقط با وارد کردن دستور زیر بررسی ، به روز کنید یا حذف کنید:

nano /etc/wpa_supplicant/wpa_supplicant.conf

بنابراین پس از ورود به شبکه ، اجازه دهید وارد رابط سرویس گیرنده WPA شویم

wpa_cli

رابط کاربری خود را انتخاب کنید

رابط wlan0

فایل را دوباره بارگذاری کنید

پیکربندی مجدد

و در نهایت می توانید ببینید آیا به خوبی وصل شده اید:

ip a

قسمت 3: به روز رسانی نرم افزار نصب RPi +

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

sudo apt-get update

sudo apt-get upgrade

پس از به روز رسانی RPi باید نرم افزارهای زیر را نصب کنیم:

پایگاه داده MariaDB

sudo apt-get نصب mariadb-server

سرور وب Apache2

sudo apt install apache2

پایتون

Update-alternatives --install/usr/bin/python python /usr/bin/python3.7 1 Update-alternatives --install/usr/bin/python python/usr/bin/python3 2

بسته پایتون

شما باید تمام این بسته ها را نصب کنید تا سیستم پشتیبان کاملاً کار کند:

  • فلاسک
  • Flask-Cors
  • Flask-MySql
  • Flask-SocketIO
  • درخواست PyMySQL
  • Python-socketio
  • RPi. GPIO
  • گئونت
  • Gevent-websocket

کتابخانه بلندگو

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

curl -sS > | bash

Step 4: Reboot

After everything has been installed we will have to reboot the pi to make sure everything works correctly

sudo reboot

Step 5: Setting Up the Database to the RPi

راه اندازی پایگاه داده بر روی RPi!
راه اندازی پایگاه داده بر روی RPi!

اکنون که همه چیز مورد نیاز خود را نصب کرده ایم ، بیایید پایگاه داده ای را که طراحی کرده ایم روی رزبری پای خود قرار دهیم!

برای راه اندازی پایگاه داده باید MySql و RPi را متصل کنیم. برای این کار ما MySQLWorkbench را باز کرده و یک اتصال جدید ایجاد می کنیم. هنگام مشاهده تصویر ، باید تغییر دهید تا اطلاعات به تصویر شما تغییر کند.

اگر هنوز چیزی را تغییر نداده اید می توانید برای SSH pi و تمشک ، برای MySQL mysql و mysql استفاده کنید.

وقتی چیزی مشخص نیست ، می توانید این آموزش را نیز دنبال کنید:

برای صادرات پایگاه داده خود استفاده از PHPmyAdmin باید آسان تر باشد زیرا با MySql می توانید خطاهای زیادی را دریافت کنید

مرحله 6: پیکربندی بلوتوث در RPi ما

ما در حال ایجاد یک بلندگوی Mood هستیم که می توانیم با موسیقی خودمان نیز از آن استفاده کنیم ، بنابراین وقتی RPi باشد ، این کار آسان تر می شود

متصل به bluetooth من یک آموزش را برای آن دنبال کردم که می توانید در اینجا پیدا کنید:

scribles.net/streaming-bluetooth-audio-fr…

من همه چیز را در اینجا برای همه کسانی که مایل به بازسازی آن هستند نوشتم

حذف bluealsa در حال اجرا

sudo rm/var/run/bluealsa/*

اضافه کردن نمای A2DP نقش سینک

sudo bluealsa -p a2dp -sink &

رابط بلوتوث را باز کرده و بلوتوث خود را روشن کنید

bluetoothctl روشن است

یک عامل جفت سازی راه اندازی کنید

agent on default-agent

RPi خود را قابل کشف کنید

قابل کشف در

  • اکنون از طریق دستگاه بلوتوث خود ، RPi را جستجو کرده و با آن ارتباط برقرار کنید.
  • جفت شدن را در هر دو دستگاه تأیید کنید ، در بتونه خود "بله" را تایپ کنید.
  • سرویس A2DP را تأیید کنید ، دوباره "بله" را تایپ کنید.
  • پس از انجام این کار ، می توانیم به دستگاه خود اعتماد کنیم ، بنابراین لازم نیست هر بار که می خواهیم متصل شویم این کار را انجام دهیم

اعتماد XX: XX: XX: XX: XX: XX (آدرس مک بلوتوث شما از دستگاه منبع ما)

اگر می خواهید RPi شما همچنان قابل کشف باشد ، این انتخاب خود شماست ، اما من ترجیح می دهم آن را دوباره خاموش کنم تا مردم نتوانند با جعبه شما ارتباط برقرار کنند

قابل کشف

سپس می توانیم از رابط بلوتوث خود خارج شویم

خروج

و سرانجام مسیریابی صوتی ما: دستگاه منبع ما به RPi ما ارسال می شود

bluealsa-aplay 00: 00: 00: 00: 00: 00: 00

اکنون دستگاه ما با بلوتوث به تمشک ما متصل شده است و شما باید بتوانید با پخش هر رسانه ای مانند Spotify و غیره آن را آزمایش کنید.

مرحله 7: نوشتن پشتیبان کامل

بنابراین اکنون تنظیمات به پایان رسیده است ، ما می توانیم سرانجام نوشتن برنامه پشتیبان خود را شروع کنیم!

من برای کل پشتیبانم از Visual Studio Code استفاده کردم ، فقط باید مطمئن شوید که پروژه Visual Studio شما به Raspberry Pi شما متصل است ، این بدان معناست که کابل LAN شما باید به RPi شما متصل شده و یک اتصال SSH ایجاد کند. (اطلاعات مربوط به نحوه ایجاد اتصال از راه دور را می توانید در اینجا پیدا کنید:

من از کلاسهای خودم استفاده کردم و اینها همگی در GitHub من گنجانده شده است.

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

مرحله 8: نوشتن Frontend (HTML ، CSS و JavaScript)

اکنون که پس زمینه به پایان رسیده است ، می توانیم شروع به نوشتن جلد کامل کنیم.

HTML و CSS برای من بسیار سخت بود. من تمام تلاش خود را کردم تا ابتدا موبایل شود زیرا می توانم با بلوتوث به آن متصل شوم تا آهنگ ها را با Spotify تغییر دهم. بنابراین کنترل آن از طریق داشبورد تلفن همراه آسان تر خواهد بود

شما می توانید داشبورد خود را به هر شکلی که می خواهید طراحی کنید ، من فقط کد و طراحی خود را در اینجا می گذارم ، شما می توانید هر کاری که دوست دارید انجام دهید!

و جاوا اسکریپت برای من آسان نبود ، با چند GET از مسیرهای پشتیبان من ، هزاران شنونده رویداد و برخی ساختارهای socketio کار کردم تا داده ها را از سنسورهایم دریافت کنم.

مرحله 9: ساختن پرونده من و کنار هم قرار دادن آن

ساختن پرونده من و کنار هم قرار دادن آن
ساختن پرونده من و کنار هم قرار دادن آن
ساختن پرونده من و کنار هم قرار دادن آن
ساختن پرونده من و کنار هم قرار دادن آن
ساختن پرونده من و کنار هم قرار دادن آن
ساختن پرونده من و کنار هم قرار دادن آن
ساختن پرونده من و کنار هم قرار دادن آن
ساختن پرونده من و کنار هم قرار دادن آن

من ابتدا ترسیم نمودم که چگونه می خواهم کیس به نظر برسد ، نکته مهم این بود که باید به اندازه کافی بزرگ باشد تا همه چیز جا بیفتد ، زیرا ما یک مدار بزرگ برای قرار دادن کیس در اختیار داشتیم اما باید فشرده بمانیم تا اینطور نباشد. زیاد فضا نگیرید

من قاب را از چوب ساخته ام ، فکر می کنم راحت ترین کار با آن زمانی است که شما تجربه چندانی در زمینه ساخت کیس ها ندارید و همچنین کارهای زیادی دارید که می توانید با آن انجام دهید.

من از یک تخته قدیمی شروع به کار کردم و تازه شروع به اره کردن چوب کردم. هنگامی که من کیف اصلی خود را داشتم ، فقط مجبور شدم سوراخ هایی را در آن ایجاد کنم (در قسمت جلوی بدنه زیاد ، همانطور که در تصاویر مشاهده می کنید و چند میخ در آن قرار داده اید ، این یک مورد واقعاً اساسی است ، اما به نظر می رسد بسیار جالب است) من همچنین تصمیم گرفتم آن را سفید رنگ کنم تا خوب به نظر برسد.

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

توصیه شده: