فهرست مطالب:
- مرحله 1: لوازم
- مرحله 2: شماتیک و سیم کشی
- مرحله 3: طراحی پایگاه داده
- مرحله 4: آماده سازی Raspberry Pi
- گام پنجم: مهندسی پایگاه داده ما به RPi
- مرحله 6: پیکربندی بلوتوث در RPi ما
- مرحله 7: نوشتن پشتیبان کامل
- مرحله 8: نوشتن Frontend (HTML ، CSS و JavaScript)
- مرحله 9: ساختن پرونده من و کنار هم قرار دادن آن
- مرحله 10: برخی از مشکلاتی که من در راه ایجاد بلندگوی Slimbox داشتم…
تصویری: Slimbox - بلندگوی بلوتوث هوشمند!: 10 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
سلام!
برای پروژه مدرسه در 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.
نرم افزار:
شروع تصویر:
بنابراین پس از بارگیری این موارد:
- کارت SD خود را در رایانه خود قرار دهید.
- Win32 را که بارگیری کرده اید باز کنید.
- فایل تصویری Raspbian را که هم اکنون بارگیری کرده اید انتخاب کنید.
- روی "نوشتن" در محل کارت SD خود کلیک کنید.
بسته به سخت افزار شما ممکن است کمی طول بکشد. پس از انجام این کار ، ما آماده ایم تا قبل از قرار دادن تصویر در RPi خود تعدیل نهایی را انجام دهیم.
- به فهرست SD کارت خود بروید ، فایلی با نام 'cmdline.txt' را جستجو کرده و آن را باز کنید.
- اکنون 'ip = 169.254.10.1' را در همان خط اضافه کنید.
- فایل را ذخیره کنید.
- فایلی با نام '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 'را به آن بازگرداند.
منبع:
توصیه شده:
چراغ رومیزی هوشمند - روشنایی هوشمند W/ Arduino - فضای کاری Neopixels: 10 مرحله (همراه با تصاویر)
چراغ رومیزی هوشمند | روشنایی هوشمند W/ Arduino | فضای کاری Neopixels: در حال حاضر ما روزهای زیادی را در خانه می گذرانیم ، به طور مجازی مشغول مطالعه و کار هستیم ، بنابراین چرا نباید با یک سیستم روشنایی سفارشی و هوشمند LED های Arduino و Ws2812b LED ها ، فضای کار خود را بزرگتر کنیم. در اینجا به شما نشان می دهم که چگونه Smart خود را بسازید چراغ LED رومیزی که
سوئیچ پدال بلوتوث برای دوربین گوشی های هوشمند: 13 مرحله (همراه با تصاویر)
سوئیچ پدال بلوتوث برای دوربین گوشی های هوشمند: این روزها من در حال ساخت دستورالعمل ها ، فیلم های یوتیوب و پست های وبلاگ هستم. برای پربارتر شدن پست وبلاگ ، گرفتن عکس های زیاد تا حد امکان ضروری است. انجام این کار چندان آسان نیست زیرا یک انسان فقط دو دست دارد. من نیاز دارم
تبدیل یک گوشی هوشمند بدون استفاده به یک صفحه نمایش هوشمند: 6 مرحله (همراه با تصاویر)
تبدیل یک گوشی هوشمند بلااستفاده به یک صفحه نمایش هوشمند: آموزش Deze به زبان انگلیسی است ، آیا می توانید یک تلفن هوشمند قدیمی (بدون استفاده) قدیمی داشته باشید؟ با دنبال کردن این آموزش گام به گام آسان ، آن را با استفاده از برگه های Google و مقداری قلم و کاغذ به یک صفحه نمایش هوشمند تبدیل کنید. وقتی تموم شد
ساعت زنگ دار هوشمند: یک ساعت زنگ دار هوشمند ساخته شده با تمشک پای: 10 مرحله (همراه با تصاویر)
ساعت زنگ دار هوشمند: ساعت زنگ دار هوشمند ساخته شده با تمشک پای: آیا تا به حال به دنبال ساعت هوشمند بوده اید؟ اگر چنین است ، این راه حل برای شما است! من ساعت زنگ دار هوشمند ساختم ، این یک ساعت است که می توانید زمان زنگ ساعت را با توجه به وب سایت تغییر دهید. هنگامی که زنگ هشدار به صدا در می آید ، یک صدا (زنگ) و 2 چراغ
نحوه کنترل سوئیچ هوشمند پایه Sonoff ESP8266 با تلفن هوشمند: 4 مرحله (همراه با تصاویر)
نحوه کنترل کلید اصلی Sonoff ESP8266 با تلفن هوشمند: Sonoff یک خط دستگاه برای خانه هوشمند است که توسط ITEAD توسعه یافته است. یکی از انعطاف پذیرترین و ارزان ترین دستگاه های آن خط Sonoff Basic است. این یک سوئیچ فعال Wi-Fi است که بر اساس یک تراشه عالی ، ESP8266 ساخته شده است. این مقاله نحوه تنظیم Cl