فهرست مطالب:

Slimbox - بلندگوی بلوتوث هوشمند!: 10 مرحله (همراه با تصاویر)
Slimbox - بلندگوی بلوتوث هوشمند!: 10 مرحله (همراه با تصاویر)

تصویری: Slimbox - بلندگوی بلوتوث هوشمند!: 10 مرحله (همراه با تصاویر)

تصویری: Slimbox - بلندگوی بلوتوث هوشمند!: 10 مرحله (همراه با تصاویر)
تصویری: حل مشكله ضعف وبطئ جهاز تي في بوكس Tvbox || لجميع الاجهزه 2024, نوامبر
Anonim
Slimbox - بلندگوی بلوتوث هوشمند!
Slimbox - بلندگوی بلوتوث هوشمند!

سلام!

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

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

این نیز اولین دستورالعمل من است ، اگر سوالی دارید ، سعی می کنم در اسرع وقت به آنها پاسخ دهم!

GitHub من:

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

تدارکات
تدارکات
تدارکات
تدارکات
تدارکات
تدارکات

سنسور دما DS18B20

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

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

سنسور پتانسیومتر

پتانسیومتر مقاومتی با سه پایانه است که با چرخاندن قسمت بالای سنسور به صورت دستی قابل تنظیم است. موقعیت قسمت بالایی ولتاژ خروجی پتانسیومتر را تعیین می کند.

LSM303 شتاب سنج + قطب نما برک آوت

تخته شکست LSM303 ترکیبی از شتاب سنج سه محوره و مغناطیس سنج / قطب نما است که توسط Adafruit تولید شده است. از رابط I2C رزبری پای استفاده می شود.

نمای کلی:

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

MCP3008

برای خواندن داده های پتانسیومتر خود ، از MCP3008 استفاده کردم که یک مبدل آنالوگ به دیجیتال 8 کانالی 8 بیتی با رابط SPI است و برنامه ریزی آن بسیار آسان است.

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

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

این مخروط بلندگو است که من بعد از محاسبه ولتاژ و آمپر مورد نیاز آن را انتخاب کردم و این برای پروژه 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 مراقبت می کند. این مورد نیاز است زیرا حلقه NeoPixel به آردوینو متصل است و در آنجا اجرا می شود ، در حالی که سایر موارد روی Raspberry Pi اجرا می شوند.

RGB NeoPixel Ring

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

نمای کلی:

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

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

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

رزبری پای 3B+ و کارت حافظه SD 16 گیگابایتی

کل پروژه من بر روی Raspberry Pi 3B+ من با یک تصویر پیکربندی شده اجرا می شود ، که بعداً در دستورالعمل من به شما در پیکربندی کمک می کنم.

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

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

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

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

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

دانلود Fritzing:

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

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

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

ما داده های زیادی را از 3 سنسور متصل جمع آوری می کنیم ، بنابراین به پایگاه داده ای نیاز داریم که داده ها و حسگرها را در آن ذخیره کند. بعداً نحوه پیکربندی پایگاه داده در رزبری پای و نحوه افزودن داده به آن را خواهیم دید. اما ابتدا باید طراحی پایگاه داده یا ERD (نمودار رابطه نهاد) انجام شود و مال من نیز با 3NF عادی شد. به همین دلیل ما سنسورها را به میز دیگری تقسیم کرده و با شناسه کار می کنیم.

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

مرحله 4: آماده سازی Raspberry Pi

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

پیکربندی کارت SD

ابتدا ، شما به یک کارت SD 16 گیگابایتی نیاز دارید که می توانید تصویر خود را روی آن قرار دهید و یک برنامه برای بارگذاری تصویر اولیه در کارت SD.

نرم افزار:

شروع تصویر:

بنابراین پس از بارگیری این موارد:

  1. کارت SD خود را در رایانه خود قرار دهید.
  2. Win32 را که بارگیری کرده اید باز کنید.
  3. فایل تصویری Raspbian را که هم اکنون بارگیری کرده اید انتخاب کنید.
  4. روی "نوشتن" در محل کارت SD خود کلیک کنید.

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

  1. به فهرست SD کارت خود بروید ، فایلی با نام 'cmdline.txt' را جستجو کرده و آن را باز کنید.
  2. اکنون 'ip = 169.254.10.1' را در همان خط اضافه کنید.
  3. فایل را ذخیره کنید.
  4. فایلی با نام 'ssh' بدون پسوند یا محتوا ایجاد کنید.

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

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

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

پس از بارگیری ، Putty را باز کرده و IP '169.254.10.1' و Port '22' و نوع اتصال: SSH را وارد کنید. اکنون می توانیم سرانجام رابط خط فرمان خود را باز کرده و با اطلاعات ورود به سیستم شروع به کار کنیم -> User: pi & Password: raspberry.

Raspi-config

sudo raspi-config

آنچه واقعاً برای این پروژه مهم است بخش رابط است ، ما باید بسیاری از رابط های مختلف را فعال کنیم ، همه رابط های زیر را فعال کنیم:

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

حالا که کار با raspi-config تمام شد ، بیایید سعی کنیم با اینترنت ارتباط برقرار کنیم.

اتصال وای فای

ابتدا باید دستورات زیر را 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

بروزرسانی و ارتقاء

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

sudo apt-get update

sudo apt-get upgrade

پایگاه داده MariaDB

سرور پایگاه داده MariaDB را نصب کنید:

sudo apt-get نصب mariadb-server

سرور وب Apache2

وب سرور Apache2 را نصب کنید:

sudo apt install apache2

پایتون

Python را نصب کنید:

Update-alternatives --install/usr/bin/python python /usr/bin/python2.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
  • اوجسون
  • Wsaccel

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

کتابخانه بلندگوها را از Adafruit نصب کنید:

curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | خراب کردن

زمان راه اندازی مجدد

راه اندازی مجدد sudo

گام پنجم: مهندسی پایگاه داده ما به RPi

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

بنابراین ابتدا باید پایگاه داده خود را در میز کار MySql مهندسی کنیم ، در حالی که این کار را انجام می دهیم ، کد پایگاه داده کامل خود را کپی کرده و تمام کلمات "قابل مشاهده" موجود در آن را حذف کنید. بنابراین هنگامی که کپی شد ، اجازه دهید دوباره بتونه را باز کرده ، وارد شوید و تایپ کنید:

sudo mysql

و اکنون در رابط mysql هستید ، کد پایگاه داده خود را در آن کپی کرده و enter را فشار دهید.

اکنون ما فقط باید یک کاربر ایجاد کنیم

CREATE USER 'user' IDENTIFIED BY 'user'؛

اعطای همه امتیازات بر روی *. * به 'کاربر' ؛

حالا راه اندازی مجدد کنید.

بنابراین همه چیز باید اکنون تنظیم شود ، همچنین می توانید با Pi و MySql Workbench خود ارتباط برقرار کنید ، بنابراین بررسی تمام داده های جداول آسان تر است.

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

ما در حال ایجاد یک بلندگوی بلوتوث هستیم ، بنابراین این بدان معناست که رسانه از منبع ما به Raspberry Pi ارسال می شود و این کار می تواند بسیار آسان انجام شود ، بیایید مستقیماً وارد آن شویم!

منبع من برای اتصال بلوتوث:

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

sudo rm/var/run/bluealsa/*

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

sudo bluealsa -p a2dp -sink &

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

bluetoothctl

روشن شدن

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

نماینده در

عامل پیش فرض

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

قابل کشف در

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

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

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

قابل کشف

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

خروج

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

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

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

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

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

من از PyCharm برای کل پشتیبان خود استفاده کردم ، فقط باید مطمئن شوید که پروژه PyCharm شما به Raspberry Pi شما متصل است ، این بدان معناست که مسیر استقرار شما در تنظیمات شما تنظیم شده است و شما تمام بسته های مورد نیاز خود را نصب کرده اید ، باید قبلاً در مرحله انجام شود 4

من از کلاسهای خودم استفاده کردم و اینها همگی در GitHub من گنجانده شده است. پیوند در مقدمه است در صورتی که آن را از دست داده اید ؛)

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

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

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

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

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

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

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

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

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

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

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

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

مرحله 10: برخی از مشکلاتی که من در راه ایجاد بلندگوی Slimbox داشتم…

خطاهای بلوتوث و bluealsa

هر زمان که می خواستم موسیقی پخش کنم یا با بلوتوث ارتباط برقرار کنم ، خطاهایی از بلوتوث و بلوالسا دریافت می کردم. من در مورد آن تحقیق کردم و این راه حل مشکل من بود. بنابراین به دلایلی بلوتوث من نرم افزاری شده است ، مطمئن نیستم که آیا این نرم افزاری استاندارد است. شما می توانید با تایپ کردن دستور زیر در Putty خود ببینید که آیا این کار را انجام می دهد.

لیست rfkill

بنابراین اگر نرم افزاری است ، فقط از این استفاده کنید:

rfkill رفع انسداد بلوتوث

و ممکن است بخواهید بعد از این راه اندازی مجدد کنید ، منبع من:

مشکلات اتصال سریال

بنابراین یکی دیگر از مشکلات بزرگ من این بود که من نمی توانم از طریق levelshifter با Arduino خود ارتباطی برقرار کنم ، پس از برخی جستجوها متوجه شدم که '/dev/ttyS0' من از بین رفته است و این می تواند به دلیل به روز رسانی RPi شما باشد. همچنین در این مورد راه حلی یافت

باید مجدداً کنسول سریال را با raspi-config فعال کنید ، راه اندازی مجدد کنید و سپس بیت "console = serial0، 115200" را از "/boot/cmdline.txt" به صورت دستی حذف کنید. تأیید کنید که "enable_uart = 1" در " /boot/config.txt '، و دوباره راه اندازی مجدد کنید. این باید پورت ttyS0 شما و همچنین پیوند نرم افزار'/dev/serial0 'را به آن بازگرداند.

منبع:

توصیه شده: