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

Raspitone: صندوق موسيقي سهل الاستخدام: 7 خطوات
Raspitone: صندوق موسيقي سهل الاستخدام: 7 خطوات

فيديو: Raspitone: صندوق موسيقي سهل الاستخدام: 7 خطوات

فيديو: Raspitone: صندوق موسيقي سهل الاستخدام: 7 خطوات
فيديو: Как спрятать данные в ячейках Excel? 2024, شهر نوفمبر
Anonim
Raspitone: صندوق موسيقي سهل الاستخدام
Raspitone: صندوق موسيقي سهل الاستخدام

مرحبًا ، مشروعي التالي ، كما اعتدت أن أفعل ، مشروع غير مفيد للغاية:

هذا صندوق موسيقي مبني على Raspberry 3 B +

أعلم أن شيئًا كهذا يمكن القيام به بسهولة باستخدام هاتف ذكي ومكبر صوت Bluetooth.

لكن بالنسبة لمشروعي ، كان لدي متطلبان أساسيان:

أردت أن أصنع شيئًا "عتيقًا".

وبشكل عام ، نظرًا لحقيقة أن سيدتي بلا أمل في الكمبيوتر أو البلوتوث أو أي شيء آخر من القرن الحادي والعشرين (وحتى القرن العشرين) ، كان علي أن أفعل شيئًا بسيطًا جدًا لاستخدام ………

لذلك كانت المواصفات كالتالي:

زر ضغط واحد لبدء تشغيل الجهاز

شاشة تعمل باللمس (بسيطة للغاية) لإدارة الموسيقى.

لمسة واحدة على الشاشة لإيقاف الماكينة.

وأن يكون لها صوت جيد ………

اللوازم

لهذا استخدمت:

1 توت العليق 3 ب +

1 سينما منزلية قديمة كانت عديمة الفائدة بسبب قارئ DVD OOS (جهاز Samsung 2.1 قديم مع مكبر صوت و 2 مكبرات صوت قمت بتعديلها لتلائم الصندوق)

1 لوحة HIFIBERRY DIGI + (مع خرج بصري لمضخم الطاقة)

1 شاشة تعمل باللمس بالسعة مقاس 7 بوصات (خاصتي مناسبة للتوت مع إدخال HDMI ويتم تشغيلها عبر USB ولكن أي شاشة تعمل باللمس HDMI يجب أن تكون على ما يرام)

1 قوة suplly 5V 5A

1 درع التتابع

1 Arduino nano لإدارة عملية تشغيل / إيقاف الطاقة

1 أدى الأشعة تحت الحمراء لقيادة السينما المنزلية (يقودها ترانزستور 2N2222 NPN)

1 مستقبل الأشعة تحت الحمراء (بالنسبة لجزء تعلم رموز الأشعة تحت الحمراء من المشروع ، أحصل على جهاز من قرص ثابت للوسائط المتعددة قديم مع أمر عن بعد)

3 ليد

1 مفتاح لوضع الصيانة

1 مفتاح للعمل على اردوينو (أثناء التحميل يتم إعادة ضبط اردوينو)

بعض موصلات JST و Dupont

وللمربع

الخشب والخشب الرقائقي (لكنني لن أصف بعمق صناعة الصندوق). فقط لنقول ذلك ، فيما يتعلق بالذراع داخل الصندوق ، فإن الخشب الرقائقي 10 مم والخشب 18 مم إلزامي إذا كنت لا تريد رؤية Jukebox يعبر غرفة المعيشة أثناء اللعب !!!!

الخطوة 1: وصف جزء التوت:

يجب على Raspi إدارة أشياء مختلفة:

1) الأوامر إلى السينما المنزلية (عبر جهاز التحكم عن بعد بالأشعة تحت الحمراء)

2) ملفات الموسيقى

3) شاشة اللمس

4) نبضات القلب إلى Arduino (التي تدير Wdt (ساعة الكلب الموقت))

لقد بدأت من توزيع Raspbian strech على بطاقة SD سعة 16 جيجا بايت (نظرًا لأننا سنقرأ فقط الملفات من بطاقة SD ، فإن استخدام محرك الأقراص الثابتة ليس ضروريًا). لن أقضي الوقت في هذا الجزء لأن الويب مليء بالتوتو حول هذا الموضوع..

دعونا نرى الأجزاء المختلفة في الخطوات التالية….

الخطوة 2: رموز IR عن بعد

نظرًا لعدم تمكني من العثور على مخطط الدائرة للسينما المنزلية ، قررت أن أقودها عبر أوامر بعيدة

كانت الخطوة الأولى التي كان علي إكمالها هي تعلم رموز نظام التحكم عن بعد للسينما المنزلية لـ Raspi ، لأنني استخدمت tuto الجيد جدًا في Instructables من أكواد Austin Stanton IR

كان لدي بعض الاختلافات ، ربما بسبب الإصدار الجديد لأن التعليمات قديمة نوعًا ما ، لم يعد ملف Hardware.conf موجودًا (على الأقل لم أجده)

يبدو أيضًا أن الترانزستور المستخدم في التوتو هو ترانزستور PNP ، من ناحيتي استخدمت 2N2222 وهو NPN لكن النتيجة واحدة (باستثناء الكابلات !!!!!!!!)

يتم تقديم تخصيص رقم التعريف الشخصي في /boot/config.txt:

#autorisation de lirc le 2019-07-08dtoverlay = lirc-rpi، gpio_out_pin = 22، gpio_in_pin = 23

سوف يكون IR LED متصلًا جدًا بـ pin22 من Raspi.

ملاحظة مهمة واحدة: عند تعلم الرموز لـ Raspi ، من الضروري استخدام الكلمات الرئيسية المدرجة في الأمر

غير مسجل - قائمة - مساحة الاسم

هذا هو الملف الذي قمت بإنشائه لصندوق الموسيقى الخاص بي:

pi @ raspitone: / etc / lirc $ cat lircd.conf

# يرجى أخذ الوقت الكافي لإنهاء هذا الملف كما هو موضح في # https://sourceforge.net/p/lirc-remotes/wiki/Check… # وإتاحته للآخرين عن طريق إرساله إلى # #

# تم إنشاء ملف التكوين هذا تلقائيًا

# باستخدام lirc-0.9.4c (افتراضي) في الخميس 9 مايو 17:33:37 2019 # سطر الأوامر المستخدم: -d / dev / lirc0 /root/lircd.conf

# إصدار Kernel (uname -r): 4.14.98-v7 + # # Remote name (اعتبارًا من ملف التكوين): jukebox

# العلامة التجارية للجهاز البعيد ، الشيء الذي تحمله في يدك: # طراز الجهاز البعيد ، nr:

# عنوان url لمعلومات الجهاز البعيد:

# هل يحتوي الجهاز البعيد على جهاز التقاط مجمع هـ. ز. ، أ

# USB دونجل؟:

# لأجهزة USB المجمعة: معرف بائع USB ، معرف المنتج

# وسلسلة الجهاز (استخدم dmesg أو lsusb):

# نوع الجهاز الذي يتم التحكم فيه

# (TV، VCR، Audio، DVD، Satellite، Cable، HTPC،…):

# جهاز (أجهزة) يتحكم فيها جهاز التحكم عن بعد هذا:

تبدأ عن بعد

اسم الموسيقي

بت 16

العلامات SPACE_ENC | CONST_LENGTH

الحلقة 30

100

رأس 4470 4496

واحد 542 1693

صفر 542581

553

16- ميعاد

ما قبل البيانات 0xC2CA

فجوة 107863

toggle_bit_mask 0x0

التردد 38000

ابدأ الرموز

مفتاح الطاقة 0x807F

مفتاح KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

مفتاح_المجلد 0xDC23

رموز النهاية

نهاية بعيد

كما ترى ، أنا فقط بحاجة إلى 4 أوامر لقيادة السينما المنزلية

الطاقة (تشغيل / إيقاف)

AUX => للتبديل إلى قناة الإدخال البصري (حيث يبدأ HC دائمًا على قارئ DVD)

وحجم +/-

يتم تنفيذ الأوامر ذات الصلة عبر أوامر LIRC:

على سبيل المثال: "irsend SEND_ONCE jukebox KEY_VOLUMEUP"

الخطوة الثالثة: البرنامج الرئيسي

البرنامج الرئيسي مكتوب بلغة بايثون:

نظرًا لأنني جديد في Python ، أعتقد أن هناك الكثير من التحسينات التي يمكن القيام بها ، لكنها تعمل….

المواصفات:

1) إدارة الشاشة الرسومية:

لهذا ، استخدمت APPJAR وهو TKINTER ولكنه متحضر للطالب (حالتي) ، وهذا يعني أنه أسهل بكثير في الاستخدام ، وربما مع إمكانيات أقل ، لكنه كان كافياً لغرضي.

2) تشغيل ملفات mp3:

لقد استخدمت mplayer للبيثون.

3) إنشاء أرقام عشوائية للعب في وضع عشوائي:

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

وظيفة randint في Python ليست "عشوائية" بقدر ما رأيت.

4) أرسل "نبضات القلب" إلى Arduino

5) إدارة مشغل الملفات:

نظرًا لأن Mplayer غير متزامن ، فعند بدء الملف ، لا توجد طريقة لمعرفة Python عند الانتهاء (على الأقل لم أجد طريقة بسيطة)

لحل ذلك ، استخدمت أوامر mplayer التي توضح طول الملف والتقدم في الملف الحالي

بالنسبة لكل من 4 و 5 ، استخدمت الإمكانية التي قدمها Appjar لإنشاء مهمة دورية (نظرًا لأن appjar هو برنامج حدث ، فهذه طريقة لإنشاء حدث دوري). الوظيفة هي:

# ******************* بدء المهام ************************ app.registerEvent (Taskman)

p.setPollTime (1000)

Taskman لـ "مدير المهام" وهو أداة تعريف في البرنامج يدير كل ما ليس أحداث الشاشة (نهاية الملف الذي تم تشغيله ، وملء شريط التقدم ، وإرسال ضربات القلب إلى Nano ،….)

بمجرد أن تبدأ الشاشة تبدو كما يلي:

صورة
صورة

ها هو البرنامج: (يمكن فتحه عبر Notepad ++ أو Geany)

الخطوة 4: جزء التوت: التشغيل التلقائي وإضافة ملفات جديدة

إذا نظرت إلى البرنامج ، يمكنك أن ترى أنني أستخدم بعض ملفات bash:

1) Start_jukebox:

في الواقع ، الغرض هو تشغيل السينما المنزلية والانتقال إلى إدخال DIN (الإدخال البصري في السينما المنزلية الخاصة بي)

pi @ raspitone: / bin $ cat start_jukebox #! / bin / bash

أرسل SEND_ONCE الموسيقي KEY_POWER

النوم 7

أرسل SEND_ONCE الموسيقي KEY_AUX

النوم 2

2) stop_jukebox:

لإيقاف تشغيل السينما المنزلية

pi @ raspitone: / bin $ cat stop_jukebox

#! / بن / باش

أرسل SEND_ONCE الموسيقي KEY_POWER

تستدعي بايثون هذين الملفين باستخدام الأمر os.system

لبدء نص بايثون ، قمت بعمل باش صغير

pi @ raspitone: ~ $ cat dem_jukebox.bash #! / bin / bash

القرص المضغوط / المنزل / بي

بيثون jukebox_gui.py

لبدء التشغيل التلقائي في وضع واجهة المستخدم الرسومية ، قمت للتو بتعديل ملف التشغيل التلقائي في / etc / xdg / lxsession / LXDE-pi

pi @ raspitone: / etc / xdg / lxsession / LXDE-pi $ cat تشغيل تلقائي @ lxpanel - ملف تعريف LXDE-pi

pcmanfm - سطح المكتب - ملف التعريف LXDE-pi

xscreensaver -لا- سبلاش

lxterminal --command = "dem_jukebox.bash"

نقطة rpi

إضافة ملفات mp3 جديدة:

لإضافة ملفات جديدة ، فضلت عمل نص برمجي صغير من لغة بايثون:

new_song_file.py

سأشرح أولاً تنظيم ملفات النظام:

جميع الملفات موجودة في / home / pi

يتم تخزين ملفات mp3 في دليل / home / pi / Music

لكل فنان دليل فرعي خاص به يستضيف ملفات mp3 ذات الصلة

pi @ raspitone: ~ / Music / Mike_oldfield $ ls -ltotal 760516

مسلسلات تركية مدبلجة 2017 mp3

-rwxr ----- 1 pi pi 2691736 juin 30 2017 وصول. mp3

اغاني عراقيه حزينه جدا جدا جدا 2017 mp3

اغاني عراقيه 2017 اغاني سودانية 2017 mp3

-rwxr ----- 1 pi pi 13125199 juin 30 2017 Castaway_ (Instrumental). mp3

اغاني عراقيه حزينة جدا جدا جدا جدا جدا جدا جدا جدا 2017 mp3

-Rwxr ----- 1 pi pi 2969869 juin 30 2017 Celt.mp3

-Rwxr ----- 1 pi pi 9047745 juin 30 2017 Chariots_ (Instrumental). mp3

مسلسلات تركية مدبلجة 2017 mp3

في مجلد المستندات ، يمكننا العثور على قائمة الملفات التي سيتم تشغيلها.

pi @ raspitone: ~ / Documents $ cat list.txtFranz_Ferdinand / Michael_live.mp3

اغاني حزينه. mp3

فرانز فرديناند / Walk_Away_live.mp3

تحميل اغنية فرانز فرديناند. mp3

فرانز فرديناند / his_fffire.mp3

فرانز فرديناند / eleanor_put_your_boots_on.mp3

فرانز فرديناند / Missing_you.mp3

Franz_Ferdinand / this_fire_ (playgroup_remix). mp3

فرانز فرديناند / جاكلين. mp3

يمكننا أيضًا العثور على بيانات قوائم التشغيل (ولكن تم إنشاؤها بواسطة نص Python)

يضيف نص Python الصغير الأغاني الجديدة المحفوظة في Music في list.txt بعد تنسيق الرنين بتنسيق UNIX

هنا هو البرنامج النصي: (يمكن فتحه عبر Notepad ++ أو Geany)

الخطوة 5: إدارة الطاقة عبر Arduino Nano

نظرًا لأنني كنت أرغب في الحصول على شيء سهل البدء ، فقد قررت تنفيذه بواسطة نانو صغير:

المبدأ:

عند الضغط على زر البدء ، يتم تشغيل جميع الأجهزة ، يبدأ nano (1 أو 2 ثانية) ويتولى إدارة الطاقة عن طريق تشغيل مرحل يحول جهات اتصال زر الضغط.

ثم ينتظر Nano لمدة 35 ثانية لتلقي نبضات القلب من Raspberry (يعني أن عملية البدء قد اكتملت وتشغيل برنامج jukebox).

طالما يتلقى نانو نبضات القلب ، فإنه يحافظ على التتابع (Watch dog timer)

إذا لم يعد هناك دقات قلب (يعني توقف برنامج الصندوق الموسيقي) ، ينتظر Nano لمدة 20 ثانية (للتأكد من توقف raspi تمامًا) لتحرير مرحل الطاقة.

ثم يتم إيقاف تشغيل الصندوق الموسيقي بالكامل

أضفت مفتاحًا لتنشيط إدخال nano للإشارة إلى وضع الصيانة (أستخدم صندوق الموسيقى لإدارة خوادم raspi الأخرى عبر ssh et vnc). ثم يقوم نانو بإلغاء تنشيط عملية مشاهدة الكلب

ملاحظة:

يجب سحب مدخلات نبضات القلب من Raspi (لكن 3.3 فولت من Raspi تعتبر مستوى عالٍ من قبل Nano)

يمكن أن يتم ذلك باستخدام NE555 لكني كسول ولدي دائمًا بعض النانو في درجي !!!!

هنا هو برنامج C القصير (يمكن فتحه باستخدام Notepad ++)

الخطوة 6: الكابلات

الكابلات
الكابلات
الكابلات
الكابلات

بالنسبة للشاشة:

يتم استخدام كبل HDMI وكابل USB في Raspi لتشغيل الشاشة وقيادتها.

للوحة الأمامية:

يتم أيضًا توصيل كبل USB من Raspi لتتمكن من تحميل ملفات جديدة أو عمل نسخ احتياطية.

يتم توصيل كبل USB من النانو لتتمكن من الوصول إلى السوفت (لإجراء تعديلات إذا لزم الأمر)

أقوم أيضًا بتوصيل دونجل لوحة مفاتيح لاسلكية على التوت لأتمكن من إجراء الصيانة دون استخدام قابس USB خارجي

نظرًا لاستخدام Raspberry و Arduino ، فإن الكبلات بسيطة نوعًا ما.

كل شيء موجود على لوحة مصفوفة الشريط.

من raspberry 2 يتم استخدام GPIO:

Pin22 لمصباح IR LED

دبوس 27 لنبضات اردوينو

على اردوينو

يستخدم Pin 2 كدبوس مقاطعة لنبضات القلب من Raspi.

تستخدم الدبابيس من 3 إلى 5 لقيادة مصابيح LED (بدء ، وزن ، صيانة).

دبوس 6 هو لمفتاح الصيانة.

يتم إخراج الدبوس 7 إلى درع الترحيل.

هنا ملف fritzing:

الخطوة 7: الصندوق

الصندوق
الصندوق

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

كمعلومات ، توجد السينما المنزلية في الجزء السفلي من الصندوق.

فوق مكبرات الصوت:

1 مكبر صوت

عدد 2 مكبرات صوت متوسطة ، قمت بتعديلها لإدراجها في المربع.

بالقمة:

اللوحة الأمامية مع الشاشة و LED والمفاتيح ومقابس USB.

الخشب:

بالنسبة لمكبرات الصوت ، فإن الألواح الجانبية أعلى وأسفل استخدمت لوحًا خشبيًا مقاس 18 مم.

الجانب الأمامي 10 مم من الخشب الرقائقي مع مسامير 40 مم.

لتسهيل الكابلات والصيانة (إذا لزم الأمر !!!) أضع الدائرة على درج خلف اللوحة الأمامية

لتجنب ارتفاع درجة الحرارة ، يتم عمل ثقب كبير في الجزء السفلي من اللوحة الخلفية وأضع مروحة 5 فولت (8 سم) على اللوحة الخلفية بجوار الدائرة مباشرة.

الصورة أعلاه هي فقط لإعطاء فكرة.

هذا كل شيء !!!!!!!!!

شكرا لقراءتك لي

ونراكم في المرة القادمة لمغامرات جديدة

موصى به: