جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
راقب حبيبتك الصغيرة وقم بتشغيل الموسيقى أو أخبرهم أن يكونوا هادئين أثناء غيابك! سيوضح هذا البرنامج التعليمي كيفية استخدام كمبيوتر Raspberry Pi لمراقبة حجم الصوت في منزلك (عبر السحابة) لمعرفة ما إذا كان حيوانك الأليف منزعجًا ومتى.
لفة الطبل … الجزء الأكثر متعة: إذا كان الصوت مرتفعًا جدًا (مثل فيدو ينبح أو يصدر صوتًا صاخبًا آخر) ، يمكننا إخبارهم بالهدوء أو تشغيل الموسيقى!
إلى جانب Pi (ومكبرات الصوت) ، سنستخدم لوحة اندلاع الميكروفون SparkFun MEMS لقياس مستويات الصوت وتشغيل مشغل الصوت. يتم تحميل البيانات إلى خدمة CloudMQTT باستخدام بروتوكول الاتصال MQTT.
إجمالي وقت القراءة: ~ 8 دقائق
إجمالي وقت البناء: 60 دقيقة (أقل مع خبرة)
شكرًا جزيلاً لـ SparkFun على دعم هذا المشروع! تحقق من البرنامج التعليمي هنا.
الخطوة 1: القراءة المقترحة
لبناء هذا المشروع ، ستحتاج إلى كمبيوتر Raspberry Pi 3 مهيأ بالكامل ومتصل بشبكة WiFi مع نظام التشغيل Raspbian OS. من المفيد أيضًا معرفة بعض برمجة Python بالإضافة إلى الأشياء التالية: (1) كيفية استخدام دبابيس Raspberry Pi GPIO والتحكم فيها ؛ (2) اتصالات MQTT ؛ و (3) أجهزة استشعار تناظرية. إذا كان أي من هذا غير مألوف ، أو إذا كنت مهتمًا فقط (كن فضوليًا!) ، فراجع البرامج التعليمية أدناه!
Raspberry Pi 3
- دليل ربط مجموعة أدوات Raspberry Pi 3
- Raspberry Pi GPIO
- اتصال SPI مع Raspberry Pi
بروتوكول اتصال MQTT
MQTT (نقل القياس عن بعد لاستعلام الرسائل) هو بروتوكول اتصالات إنترنت الأشياء شائع. سنستخدم مكتبة Paho Client Python وخدمة MQTT تسمى CloudMQTT. إليك المزيد حول MQTT وكيفية استخدامه:
- استكشاف بروتوكولات الاتصال لإنترنت الأشياء
- الشروع في العمل مع CloudMQTT
- نظرة عامة على مكتبة عميل Eclipse Paho MQTT Python
لوحة اندلاع الميكروفون MEMS
ميكروفون MEMS هو ميكروفون تمثيلي ، لذلك سنحتاج إلى محول تناظري إلى رقمي ("ADC") لقراءة الإشارة التناظرية باستخدام دبابيس Raspberry Pi الرقمية GPIO.
- الشروع في استخدام لوحة اندلاع الميكروفون SparkFun MEMS
- ورقة بيانات ميكروفون MEMS
- ورقة بيانات MCP3002 ADC
الخطوة 2: المواد
- Raspberry Pi 3 موديل بي
سنحتاج أيضًا إلى الأجهزة الطرفية التالية: Raspberry Pi 3 Case ؛ بطاقة SD (بحد أدنى 8 جيجابايت) ؛ كابل Raspberry Pi 3 GPIO ؛ كابل طاقة MicroUSB ؛ كابل HDMI وشاشة متوافقة مع HDMI ؛ لوحة مفاتيح USB ماوس USB مكبرات الصوت مع منفذ سماعة رأس 1/8 بوصة.
- SparkFun MEMS Mic Breakout Board
- MCP3002 (محول تناظري إلى رقمي)
- اللوح وأسلاك توصيل اللوح M-to-M
الخطوة 3: تكوين Raspberry Pi
الخطوة 1: التحقق من التحديثات وتثبيتها يعد التحقق من التحديثات وتثبيتها دائمًا طريقة جيدة للبدء. قم بتشغيل الأوامر التالية في النافذة الطرفية:
sudo apt-get update
sudo apt-get ترقية
sudo إعادة التشغيل
الخطوة 2: إعداد واجهة SPI لميكروفون MEMS + MCP3002
لاستخدام SPI (واجهة المنفذ التسلسلي) للقراءة في ميكروفون MEMS عبر MCP3002 ، سنحتاج إلى حزمة Python Dev:
sudo apt-get install python-dev
سنحتاج أيضًا إلى واجهة SPI (قد ترغب في إنشاء مجلد فرعي لحفظ هذا فيه):
بوابة استنساخ git: //github.com/doceme/py-spidev
sudo python setup.py install
إليك وثائق SPI-Dev إذا واجهت أي مشاكل.
الخطوة 3: تشغيل الأصوات مع OMXPlayer
OMXPlayer هو مشغل صوت وفيديو تم تحميله مسبقًا على نظام Raspbian OS. يعمل مع معظم أنواع الملفات الصوتية ، بما في ذلك:.wav و. mp3 و. m4a. هذا ما سنستخدمه لتشغيل الأصوات عندما يكون صوت فيدو مرتفعًا جدًا. تم تضمين مكتبة Python للتحكم في OMXPlayer في Raspbian (woo!).
لاختبار OMXPlayer من الجهاز ، اكتب ما يلي:
omxplayer /home/…/SongFilePath/SongFileName.mp3
إذا لم يفلح ذلك ، فحاول إجباره على جهاز إخراج الصوت المحلي:
omxplayer -o local /home/…/SongFilePath/SongFileName.mp3
الخطوة 4: تكوين خادم CloudMQTT
الآن قمنا بإعداد خادم MQTT! للقيام بذلك باستخدام CloudMQTT ، قم بما يلي:
- قم بإعداد حساب CloudMQTT (خطة "Cute Cat" مجانية).
- قم بإنشاء مثيل MyCloud جديد.
- في وحدة التحكم ، قم بإنشاء قاعدة قائمة التحكم بالوصول (ACL) جديدة.
- يمكنك مراقبة الرسائل المنشورة في واجهة مستخدم "Websocket".
أخيرًا ، قم بتثبيت مكتبة MQTT Paho Client Python:
نقطة تثبيت paho-mqtt
الخطوة 4: قم ببنائه! المعدات
توجد مخططات Pinout لـ Raspberry Pi و MCP3002 في الصور أعلاه.
1. أدخل دبابيس MCP3002 في اللوح (انظر مخطط التوصيل أعلاه)
يستخدم MCP3002 4 دبابيس SPI للاتصال: Serial Clock ("SCL") ، و Master Input Slave Output ("MISO") ، و Master Output Slave Input ("MOSI") ، و Chip Select ("CS"). تتوافق هذه المسامير مع Raspberry Pi GPIO pin 11 (SCLK) و GPIO pin 9 (MISO) و GPIO Pin 10 (MOSI) و GPIO Pin 8 (CE0).
قم بإجراء التوصيلات التالية باستخدام دبابيس MCP3002:
- قم بتوصيل Pin 1 بـ Raspberry Pi GPIO Pin 8 (CE0)
- قم بتوصيل السن 2 بالإخراج التناظري للوحة فصل الميكروفون MEMS
- قم بتوصيل دبوس 4 بـ GND
- قم بتوصيل Pin 5 بـ Raspberry Pi GPIO Pin 10 (MOSI)
- قم بتوصيل Pin 6 بـ Raspberry Pi GPIO pin 9 (MISO)
- قم بتوصيل Pin 7 بـ Raspberry Pi GPIO Pin 11 (SCLK)
- قم بتوصيل Pin 8 بـ Raspberry Pi 3.3V
2. أسلاك اللحام بلوحة اندلاع الميكروفون MEMS. اتصل بـ MCP3002 و Raspberry Pi
- قم بتوصيل Vcc بـ Raspberry Pi 3.3V.
- قم بتوصيل GND بـ Raspberry Pi GND
- قم بتوصيل AUD بـ MCP3002 Pin 2
3. قم بتوصيل جميع الكابلات الخاصة بـ Raspberry Pi وقم بتشغيل كل شيء
الخطوة 5: قم ببنائه! برمجة
هدفنا من Bark Back ذو شقين: تشغيل صوت تشغيل عندما ينبح الكلب ، وإرسال البيانات إلى خادم حيث يمكننا التحقق منها.
ها هو برنامج Python مفتوح المصدر لهذا المشروع. لا تتردد في (ويرجى القيام بذلك) ضبط وتعديل الكود.
لتشغيل البرنامج ، تحتاج إلى ملء شيئين:
- قائمة الأغاني: اكتب مسار الملف واسم الملف لكل أغنية تريد تشغيلها.
- الاعتمادات: أدخل معلومات CloudMQTT في هذا القاموس.
الخطوة 1: اقرأ في لوحة فصل الميكروفون SparkFun MEMS
اقرأ قيمة ADC (بين 0 و 1023) من لوحة اندلاع ميكروفون MEMS (عبر MCP3002) باستخدام مكتبة SPI وحساب سعة الإشارة من الذروة إلى الذروة.
قم بتعيين سعة الإشارة من الذروة إلى الذروة إلى وحدة الحجم. يقوم الكود الحالي بتعيين نطاق ADC بين 0 و 700 (بناءً على التجريب السريع) إلى وحدة الصوت بين 0 و 10. لضبط حساسية الميكروفون ، اضبط نطاق إدخال ADC.
للحصول على نظرة عامة شاملة على ميكروفون MEMS ، راجع هذا البرنامج التعليمي.
الخطوة 2: تشغيل مشغل الصوت
أولا سنحتاج الأغاني للعب! يمكنك تسجيل الأصوات بسرعة في GarageBand (أو على هاتفك الذكي) وإرسالها إلى Raspberry Pi. في Python ، استخدم مكتبة العمليات الفرعية لاستدعاء omxplayer.
في الكود ، أدخل مسار ملف الأغاني التي تريد تشغيلها في متغير * SongList * (السطر 26). تم ضبط حد الحجم الحالي على 7 في الوظيفة الرئيسية.
الخطوة 3: إرسال البيانات إلى خادم CloudMQTT
استخدم مكتبة Paho Client Python للتواصل مع خوادم CloudMQTT. للتلخيص على نطاق واسع: إعداد خادم العميل ؛ تحديد بروتوكولات الاتصال ؛ التواصل مع أوراق اعتمادنا (ويعرف أيضًا باسم الاعتمادات) ؛ والاشتراك ونشر بياناتنا. يتم تنفيذ معظم هذا في الوظيفة الرئيسية (الأسطر 129 - 149 ، والأسطر 169 - 174).
للتحقق من البيانات المستلمة ، انتقل إلى علامة التبويب "Websocket UI" في وحدة التحكم CloudMQTT.
الخطوة 6: الاختبار والتثبيت
قم بتشغيل برنامج BarkBack.py في Terminal أو في Python IDE (يمكنك أيضًا استخدام SSH لتشغيل البرنامج بعد مغادرتك بالفعل).
تحقق من حصولك على مستويات الصوت في علامة تبويب Websocket UI.
اختبر النظام عن طريق تشغيل الميكروفون (التصفيق ، الصراخ ، النباح ، إلخ) للتأكد من تشغيل السماعات لجميع الأصوات.
بمجرد تشغيل كل شيء ، يوصى بتوصيل المكونات بلوحة PCB (لوحة الدوائر المطبوعة) إذا كنت تنوي تثبيت النظام لأكثر من بضعة أيام فقط.
الوصيف في مسابقة متحكم 2017
الجائزة الأولى في مسابقة أجهزة الاستشعار 2017