جدول المحتويات:

سليم بوكس - مكبر صوت بلوتوث ذكي: 10 خطوات (بالصور)
سليم بوكس - مكبر صوت بلوتوث ذكي: 10 خطوات (بالصور)

فيديو: سليم بوكس - مكبر صوت بلوتوث ذكي: 10 خطوات (بالصور)

فيديو: سليم بوكس - مكبر صوت بلوتوث ذكي: 10 خطوات (بالصور)
فيديو: انفجار سكوتر الذكي في الطفل 😵 2024, شهر نوفمبر
Anonim
Slimbox - مكبر صوت بلوتوث ذكي!
Slimbox - مكبر صوت بلوتوث ذكي!

مرحبا يا من هناك!

بالنسبة لمشروع مدرستي في MCT Howest Kortrijk ، صنعت جهاز مكبر صوت بلوتوث ذكي مع مستشعرات مختلفة وشاشة LCD و RGB NeoPixel. كل شيء يعمل على Raspberry Pi (قاعدة بيانات ، خادم ويب ، Backend).

لذا في هذا الدليل ، سأوضح لك كيف أنشأت هذا المشروع في 3 أسابيع ، خطوة بخطوة ، لذلك إذا كان أي منكم يريد إعادة إنشاء مشروعي ، فيمكنك القيام به بسهولة!

هذا أيضًا أول تعليمات لي ، إذا كان لديك أي أسئلة ، فسأحاول الإجابة عليها في أسرع وقت ممكن!

جيثب الخاص بي:

الخطوة 1: المستلزمات

اللوازم
اللوازم
اللوازم
اللوازم
اللوازم
اللوازم

DS18B20 مستشعر درجة الحرارة

DS18B20 عبارة عن مستشعر أحادي السلك يقيس درجة الحرارة ، تم تصنيعه بواسطة Maxim Integrated. هناك نوعان من أجهزة الاستشعار DS18B20 ، المكون فقط (الذي استخدمته) والإصدار المقاوم للماء ، وهو أكبر بكثير ، لكن هذا ليس ما أحتاجه لمشروعي ، لذلك استخدمت المكون فقط. يمكن لجهاز الاستشعار قياس درجة الحرارة في نطاق من -55 درجة مئوية إلى + 125 درجة مئوية (-67 درجة فهرنهايت إلى + 257 درجة فهرنهايت) ودقته تبلغ 0.5 درجة مئوية من -10 درجة مئوية إلى + 85 درجة مئوية. كما أن لديها دقة قابلة للبرمجة من 9 بت إلى 12 بت.

ورقة البيانات:

مستشعر الجهد

مقياس الجهد هو مقاوم بثلاثة أطراف يمكن ضبطه يدويًا عن طريق تدوير الجزء العلوي من المستشعر فقط. يحدد موضع الجزء العلوي جهد الخرج لمقياس الجهد.

LSM303 مقياس تسارع + بوصلة اندلاع

لوحة اندلاع LSM303 عبارة عن مزيج من مقياس تسارع ثلاثي المحاور ومقياس مغناطيسي / بوصلة ، تم تصنيعهما بواسطة Adafruit. يتم استخدامه مع واجهة I2C الخاصة بـ Raspberry Pi.

نظرة عامة:

ورقة البيانات:

MCP3008

لقراءة البيانات من مقياس الجهد الخاص بي ، استخدمت MCP3008 ، وهو عبارة عن محول تناظري 8 قنوات 10 بت إلى محول رقمي مع واجهة SPI وهو سهل البرمجة للغاية.

ورقة البيانات:

مكبر صوت - قطر 3 بوصة - 8 أوم 1 وات

هذا هو مخروط السماعة الذي اخترته بعد حساب الفولتية والأمبير التي ستحتاجها وكان هذا مناسبًا تمامًا لمشروع Raspberry Pi ، الذي صنعته Adafruit.

نظرة عامة:

مكبر أحادي MAX98357 I2S Class-D

هذا هو مكبر الصوت الذي يأتي مع السماعة ، ليس فقط هو مكبر للصوت ، بل هو أيضًا محول I2S الرقمي إلى التناظري ، لذلك فهو أيضًا مناسب تمامًا لمكبر الصوت ونظام الصوت الخاص بي.

نظرة عامة:

ورقة البيانات:

اردوينو اونو

Arduino Uno عبارة عن لوحة متحكم مفتوحة المصدر تعتمد على متحكم Microchip ATmega328P ، تم تصنيعه بواسطة Arduino.cc. تحتوي لوحة Uno على 14 دبوسًا رقميًا و 6 دبابيس تمثيلية وهي قابلة للبرمجة بالكامل باستخدام برنامج Arduino IDE

نظرة عامة:

ليفيل شيفتر

هذه لوحة صغيرة تهتم بالاتصال بين Arduino Uno و Raspberry Pi والفولتية المختلفة ، Arduino: 5V & Raspberry Pi: 3.3V. هذا ضروري لأن حلقة NeoPixel متصلة بـ Arduino وتعمل هناك ، بينما تعمل جميع الأشياء الأخرى على Raspberry Pi.

حلقة RGB NeoPixel

هذه حلقة صغيرة مليئة بـ 12 مصباحًا RGB (يمكنك شراء حلقات أكبر بمصابيح RGB أكثر ، إذا كنت ترغب في ذلك). وهو في حالتي متصل بـ Arduino Uno ، ولكن يمكن أيضًا توصيله بالعديد من الأجهزة الأخرى وهو حقًا سهل الاستخدام.

نظرة عامة:

شاشة عرض ال سي دي 16x2

لقد استخدمت شاشة LCD أساسية لطباعة درجة الحرارة والحجم وعنوان IP.

ورقة البيانات:

بطاقة Raspberry Pi 3B + & 16GB SD

يعمل مشروعي بالكامل على Raspberry Pi 3B + الخاص بي مع صورة تم تكوينها ، والتي سأساعدك في تكوينها لاحقًا في التعليمات الخاصة بي.

GPIO T-Part و 2 ألواح توصيل والعديد من أسلاك العبور

لتوصيل كل ما أحتاجه من ألواح التجارب وأسلاك التوصيل ، استخدمت جزء GPIO T بحيث يكون لدي مساحة أكبر ومن الواضح أي دبوس هو.

الخطوة 2: التخطيطي والأسلاك

التخطيطي والأسلاك
التخطيطي والأسلاك
التخطيطي والأسلاك
التخطيطي والأسلاك
التخطيطي والأسلاك
التخطيطي والأسلاك

بالنسبة إلى التخطيطي الخاص بي ، استخدمت Fritzing ، إنه برنامج يمكنك تثبيته يسمح لك بإنشاء تخطيطي سهل حقًا في أنواع مختلفة من طرق العرض.

تنزيل Fritzing:

لذا تأكد من توصيل كل شيء بالطريقة الصحيحة! في حالتي ، ألوان الأسلاك ليست هي نفسها الموجودة في التخطيطي.

الخطوة 3: تصميم قاعدة البيانات

تصميم قاعدة البيانات
تصميم قاعدة البيانات

نحن نجمع الكثير من البيانات من أجهزة الاستشعار الثلاثة المتصلة ، لذلك نحتاج إلى قاعدة بيانات لتخزين البيانات وأجهزة الاستشعار فيها. سنرى لاحقًا كيفية تكوين قاعدة البيانات على Raspberry Pi وكيفية إضافة البيانات إليها. ولكن يجب أولاً تصميم قاعدة البيانات أو 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.

الآن نريد التحكم في Raspberry Pi الخاص بنا ، يتم ذلك من خلال المعجون.

برنامج المعجون:

بمجرد التنزيل ، افتح Putty وأدخل IP '169.254.10.1' والمنفذ '22' ونوع الاتصال: SSH. الآن يمكننا أخيرًا فتح واجهة سطر الأوامر وتسجيل الدخول باستخدام معلومات تسجيل الدخول للمبتدئين -> المستخدم: pi وكلمة المرور: raspberry.

Raspi-config

sudo raspi-config

ما هو مهم حقًا لهذا المشروع هو قسم الواجهة ، علينا تمكين العديد من الواجهات المختلفة ، وتمكين جميع الواجهات التالية:

  • سلك واحد
  • SPI
  • I2C
  • مسلسل

الآن بعد أن انتهينا من raspi-config ، لنحاول إجراء اتصال بالإنترنت.

اتصال واي فاي

أولاً ، يجب أن تكون جذرًا للأوامر التالية

sudo -i

بمجرد أن تصبح الجذر ، استخدم الأمر التالي. SSID هو اسم الشبكة وكلمة المرور من الواضح أنها كلمة المرور.

wpa_passphrase "ssid" "كلمة المرور" >> /etc/wpa_supplicant/wpa_supplicant.conf

في حالة ارتكابك لخطأ ما ، يمكنك التحقق من هذه الشبكة أو تحديثها أو حذفها بمجرد إدخال هذا الملف:

nano /etc/wpa_supplicant/wpa_supplicant.conf

لذلك بعد أن دخلنا شبكتنا ، دعنا ندخل إلى واجهة عميل WPA

wpa_cli

حدد واجهتك

واجهة wlan0

أعد تحميل الملف

إعادة التشكيل

وأخيرًا يمكنك معرفة ما إذا كنت متصلاً جيدًا أم لا:

الملكية الفكرية أ

التحديث والترقية

الآن بعد أن أصبحنا متصلين بالإنترنت ، سيكون تحديث الحزم المثبتة بالفعل خطوة ذكية ، لذلك دعونا نفعل ذلك أولاً قبل تثبيت الحزم الأخرى.

sudo apt-get update

sudo apt-get ترقية

قاعدة بيانات MariaDB

قم بتثبيت خادم قاعدة بيانات MariaDB:

sudo apt-get install mariadb-server

خادم الويب Apache2

قم بتثبيت خادم الويب Apache2:

sudo apt تثبيت apache2

بايثون

تثبيت بايثون:

بدائل التحديث - install / usr / bin / python python /usr/bin/python2.7 1

بدائل التحديث - install / usr / bin / python python / usr / bin / python3 2

حزمة بايثون

سيتعين عليك تثبيت كل هذه الحزم لجعل الواجهة الخلفية تعمل بشكل مثالي:

  • قارورة
  • قارورة كورس
  • قارورة- MySQL
  • قارورة-مقبس
  • PyMySQL
  • الطلبات
  • Python-socketio
  • RPi. GPIO
  • جيفينت
  • Gevent-websocket
  • أوجسون
  • Wsaccel

مكتبة مكبرات الصوت

قم بتثبيت مكتبة السماعات من Adafruit:

curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | سحق

حان وقت إعادة التشغيل

sudo إعادة التشغيل

الخطوة 5: إعادة توجيه هندسة قاعدة البيانات الخاصة بنا إلى RPi

الآن بعد أن قمنا بتثبيت كل ما نحتاجه ، دعنا نضع قاعدة البيانات الخاصة بنا التي صممناها على Raspberry Pi الخاص بنا!

لذلك نحتاج أولاً إلى إعادة توجيه هندسة قاعدة البيانات الخاصة بنا في طاولة عمل MySql ، أثناء القيام بذلك ، قم بنسخ كود قاعدة البيانات بالكامل وحذف جميع الكلمات "المرئية" الموجودة فيها. لذلك بمجرد نسخ ذلك ، دعنا نفتح المعجون مرة أخرى ، وقم بتسجيل الدخول واكتب:

sudo mysql

والآن أنت في واجهة mysql ، انسخ كود قاعدة البيانات فيها واضغط على Enter.

الآن نحن فقط بحاجة إلى إنشاء مستخدم

إنشاء مستخدم "مستخدم" معرف بواسطة "مستخدم" ؛

منح جميع الامتيازات *. * إلى "المستخدم" ؛

أعد التشغيل الآن.

لذلك يجب إعداد كل شيء الآن ، يمكنك أيضًا إجراء اتصال بـ Pi و MySql Workbench ، لذلك من السهل التحقق من جميع البيانات الموجودة في جداولك.

الخطوة 6: تكوين Bluetooth على RPi الخاص بنا

نحن نقوم بإنشاء مكبر صوت Bluetooth ، لذلك هذا يعني أنه يتم إرسال الوسائط من مصدرنا إلى Raspberry Pi ويمكن القيام بذلك بسهولة كبيرة ، دعنا ندخله مباشرة!

مصدري لاتصال البلوتوث: https://scribles.net/streaming-bluetooth-audio-fro …

إزالة الأزرق قيد التشغيل بالفعل

sudo rm / var / run / bluealsa / *

إضافة دور بالوعة ملف تعريف A2DP

sudo bluealsa -p a2dp-sink &

افتح واجهة البلوتوث وقم بتشغيل البلوتوث

bluetoothctl

تشغيل

قم بإعداد عامل الاقتران

وكيل على

الوكيل الافتراضي

اجعل RPi الخاص بك قابلاً للاكتشاف

قابل للاكتشاف في

  • الآن من جهاز البلوتوث الخاص بك ، ابحث عن RPi وتواصل معه.
  • قم بتأكيد الاقتران على كلا الجهازين ، واكتب "نعم" في المعجون الخاص بك.
  • تخويل خدمة A2DP ، اكتب "نعم" مرة أخرى.
  • بمجرد الانتهاء من ذلك ، يمكننا الوثوق بجهازنا ، لذلك لا يتعين علينا المرور بكل هذا في كل مرة نريد الاتصال

ثق في XX: XX: XX: XX: XX: XX (عنوان mac bluetooth الخاص بك من جهاز المصدر الخاص بنا)

إذا كنت تريد أن يظل RPi الخاص بك قابلاً للاكتشاف ، فهذا هو اختيارك الخاص ، لكنني أفضل إيقاف تشغيله مرة أخرى ، حتى لا يتمكن الأشخاص من محاولة الاتصال بصندوقك

قابل للاكتشاف قبالة

ثم يمكننا الخروج من واجهة البلوتوث الخاصة بنا

خروج

وأخيرًا توجيه الصوت لدينا: يقوم جهاز المصدر الخاص بنا بإعادة التوجيه إلى RPi الخاص بنا

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

الآن أصبح جهازك متصلًا بالكامل بـ Raspberry الخاص بنا ويجب أن تكون قادرًا على تشغيل الوسائط من جهازك المصدر على مكبر صوت Pi.

الخطوة 7: كتابة الخلفية الكاملة

الآن تم الإعداد ، يمكننا أخيرًا البدء في كتابة برنامج الواجهة الخلفية!

لقد استخدمت PyCharm للخلفية بالكامل ، فأنت تحتاج فقط للتأكد من أن مشروع PyCharm الخاص بك متصل بـ Raspberry Pi الخاص بك ، وهذا يعني أن مسار النشر الخاص بك قد تم إعداده في إعداداتك وقمت بتثبيت جميع الحزم التي نحتاجها ، يجب أن يتم ذلك بالفعل في الخطوة 4.

لقد استخدمت الفصول الدراسية الخاصة بي وجميعها مدرجة أيضًا في GitHub الخاص بي. الرابط موجود في المقدمة في حال فاتك ؛)

في ملف الواجهة الخلفية الخاص بي ، استخدمت فئات الترابط ، بحيث يمكن تشغيل كل شيء في نفس الوقت ولن يقاطع بعضها البعض. وفي الجزء السفلي ، حصلت على جميع المسارات حتى نتمكن من الحصول بسهولة على البيانات في واجهتنا الأمامية.

الخطوة 8: كتابة الواجهة الأمامية (HTML و CSS و JavaScript)

الآن بعد أن تم الانتهاء من الواجهة الخلفية ، يمكننا البدء في كتابة الواجهة الأمامية الكاملة.

تم إجراء HTML & CSS بسهولة كبيرة ، وحاول العمل على الهاتف المحمول أولاً قدر الإمكان ، نظرًا لأننا نتواصل في معظم الأحيان مع Bluetooth من جهاز محمول ، فسيكون من الأسهل التحكم في لوحة القيادة المتنقلة.

يمكنك تصميم لوحة القيادة الخاصة بك بأي طريقة تريدها ، وسأترك الكود والتصميم الخاص بي هنا ، ويمكنك فعل ما تريد!

ولم تكن Javascript بهذه الصعوبة ، فقد عملت مع عدد قليل من GET من مسارات الواجهة الخلفية ، وأطنان من مستمعي الأحداث وبعض هياكل socketio.

الخطوة 9: بناء حالتي ووضعها معًا

بناء حالتي ووضعها معًا
بناء حالتي ووضعها معًا
بناء حالتي ووضعها معًا
بناء حالتي ووضعها معًا
بناء حالتي ووضعها معًا
بناء حالتي ووضعها معًا

بدأت أولاً ببعض الرسومات حول كيف أردت أن تبدو العلبة ، وكان الشيء المهم هو أنها يجب أن تكون كبيرة بما يكفي لتناسب كل شيء ، نظرًا لأن لدينا دائرة كبيرة لوضعها في العلبة.

لقد صنعت الحالة من الخشب ، وأعتقد أنه من الأسهل التعامل معها عندما لا يكون لديك الكثير من الخبرة في بناء الحالات ولديك أيضًا الكثير من الأشياء التي يمكنك القيام بها بها.

لقد بدأت من علبة زجاجات النبيذ وبدأت للتو في نشر الخشب. بمجرد أن أحصل على حالتي الأساسية ، كان علي فقط أن أحفر ثقوبًا فيها (كثيرًا في مقدمة العلبة ، كما ترون في الصور: P) وأضع بعض المسامير فيها ، إنها حالة أساسية حقًا ، لكنها تبدو رائعة ومثالية.

وبمجرد الانتهاء من القضية ، حان الوقت لتجميعها معًا ، كما ترون في الصورة الأخيرة! إنها فوضى نوعًا ما داخل الصندوق ، لكن كل شيء يعمل ولم يكن لدي مساحة أكبر بكثير ، لذلك أنصحك ربما بإنشاء حالة أكبر إذا كنت تعيد إنشاء مشروعي.

الخطوة 10: بعض المشاكل التي واجهتها في طريقي لإنشاء مكبر الصوت Slimbox …

البلوتوث والأزرقأخطاء

في كل مرة كنت أرغب في تشغيل الموسيقى أو الاتصال بالبلوتوث ، تلقيت أخطاء من البلوتوث والبلوتوث أ. لقد أجريت بعض الأبحاث حوله وكان هذا هو الحل لمشكلتي. لذلك ، لسبب ما ، تم حظر البلوتوث الخاص بي ، ولست متأكدًا مما إذا كان هذا معيارًا محظورًا. يمكنك معرفة ما إذا كان ذلك عن طريق كتابة الأمر التالي في المعجون الخاص بك.

قائمة rfkill

لذلك إذا كان softblocked ، فقط استخدم هذا:

rfkill إلغاء حظر البلوتوث

وقد ترغب في إعادة التشغيل بعد ذلك ، مصدري:

مشاكل الاتصال التسلسلي

لذا كانت هناك مشكلة كبيرة أخرى واجهتني وهي أنني لم أتمكن من إجراء أي اتصال مع Arduino الخاص بي من خلال أداة تغيير المستوى ، بعد بعض البحث اكتشفت أن '/ dev / ttyS0' الخاص بي قد اختفى وقد يكون هذا بسبب تحديث RPi الخاص بك. وجدت أيضا حلا في هذا الشأن

سيتعين عليك إعادة تمكين وحدة التحكم التسلسلية باستخدام raspi-config ، وإعادة التشغيل ، ثم إزالة "وحدة التحكم = serial0 ، 115200" بت يدويًا من '/boot/cmdline.txt'. تأكد من أن "enable_uart = 1" في' /boot/config.txt '، وأعد التشغيل مرة أخرى ، يجب أن يعيد ذلك منفذ ttyS0 ، بالإضافة إلى الرابط اللين' / dev / serial0 '.

المصدر:

موصى به: