विषयसूची:

रास्पिटोन: प्रयोग करने में आसान ज्यूकबॉक्स: 7 कदम
रास्पिटोन: प्रयोग करने में आसान ज्यूकबॉक्स: 7 कदम

वीडियो: रास्पिटोन: प्रयोग करने में आसान ज्यूकबॉक्स: 7 कदम

वीडियो: रास्पिटोन: प्रयोग करने में आसान ज्यूकबॉक्स: 7 कदम
वीडियो: Угрюм-река (1969) (1 серия) фильм 2024, जुलाई
Anonim
रास्पिटोन: ज्यूकबॉक्स का उपयोग करने में आसान
रास्पिटोन: ज्यूकबॉक्स का उपयोग करने में आसान

हैलो, मेरी अगली परियोजना है, जैसा कि मैं करता हूं, एक बहुत उपयोगी परियोजना नहीं है:

यह रास्पबेरी 3 बी+. पर आधारित ज्यूकबॉक्स है

मुझे पता है, ऐसा कुछ स्मार्टफोन और ब्लूटूथ स्पीकर के साथ आसानी से किया जा सकता है।

लेकिन मेरी परियोजना के लिए, मेरे पास दो कठिन पूर्वापेक्षाएँ थीं:

मैं कुछ "विंटेज" बनाना चाहता था।

और कुल मिलाकर, इस तथ्य को देखते हुए कि मेरी महिला निश्चित रूप से 21 वीं सदी से कंप्यूटर या ब्लूटूथ या किसी और चीज के लिए निराशाजनक है, (और यहां तक कि 20 वीं), मुझे उपयोग करने के लिए बहुत ही सरल कुछ करना था ………

तो, विनिर्देश इस प्रकार थे:

मशीन शुरू करने के लिए एक सिंगल पुश बटन

संगीत का प्रबंधन करने के लिए एक टच स्क्रीन (बहुत सरल)।

मशीन को रोकने के लिए स्क्रीन पर सिंगल टच।

और एक अच्छी आवाज पाने के लिए ………

आपूर्ति

इसके लिए मैंने इस्तेमाल किया:

1 रास्पबेरी 3 बी+

1 पुराना होम सिनेमा जो डीवीडी रीडर OOS के कारण बेकार था (वूफर के साथ एक पुराना सैमसंग 2.1 और 2 स्पीकर जिन्हें मैंने बॉक्स में फिट करने के लिए संशोधित किया था)

1 HIFIBERRY DIGI+ बोर्ड (पावर Amp के लिए ऑप्टिकल आउटपुट के साथ)

1 कैपेसिटिव टच स्क्रीन 7 (मेरा एचडीएमआई इनपुट के साथ रास्पबेरी के लिए मैकसी है और यूएसबी के माध्यम से संचालित है लेकिन कोई भी एचडीएमआई टच स्क्रीन ठीक होनी चाहिए)

1 बिजली की आपूर्ति 5V 5A

1 रिले शील्ड

1 Arduino नैनो बिजली चालू/बंद प्रक्रिया का प्रबंधन करने के लिए

1 IR ने होम सिनेमा को चलाने के लिए नेतृत्व किया (2N2222 NPN ट्रांजिस्टर द्वारा संचालित)

1 आईआर रिसीवर (परियोजना के आईआर कोड सीखने के हिस्से के लिए, मुझे रिमोट कमांड के साथ पुरानी मल्टीमीडिया हार्ड डिस्क से मेरा मिलता है)

३ एलईडी

रखरखाव मोड के लिए 1 स्विच

Arduino पर काम करने के लिए 1 स्विच (अपलोड के दौरान arduino रीसेट हो जाता है)

कुछ जेएसटी और ड्यूपॉन्ट कनेक्टर

और बॉक्स के लिए

लकड़ी और प्लाईवुड (लेकिन मैं बॉक्स के निर्माण का गहराई से वर्णन नहीं करूंगा)। बस इतना ही कहना है कि, बॉक्स के अंदर बूमर के संबंध में, 10 मिमी प्लाईवुड और 18 मिमी लकड़ी अनिवार्य है यदि आप ज्यूकबॉक्स को खेलते समय लिविंग रूम को पार करते हुए नहीं देखना चाहते हैं !!!!

चरण 1: रास्पबेरी भाग विवरण:

रास्पी को अलग-अलग चीजों का प्रबंधन करना पड़ता है:

१) होम सिनेमा के लिए आदेश (आईआर रिमोट के माध्यम से)

2) संगीत फ़ाइलें

3) टच स्क्रीन

4) Arduino के लिए दिल की धड़कन (जो Wdt का प्रबंधन करती है (कुत्ते के टाइमर को देखें))

मैंने 16 जी एसडी कार्ड पर रास्पियन स्ट्रेच वितरण से शुरुआत की (जैसा कि हम केवल एसडी कार्ड से फाइलें पढ़ेंगे, एचडीडी का उपयोग जरूरी नहीं है)। मैं इस हिस्से पर समय नहीं बिताऊंगा क्योंकि वेब इसके बारे में ट्यूटो से भरा है..

आइए अगले चरणों में विभिन्न भागों को देखें…।

चरण 2: आईआर रिमोट कोड

जैसा कि मुझे होम सिनेमा का सर्किट प्लान नहीं मिला, मैंने इसे रिमोट कमांड के माध्यम से चलाने का फैसला किया

पहला कदम जो मुझे पूरा करना था, वह था रास्पी को होम सिनेमा रिमोट कमांड के कोड सीखना। इसके लिए मैंने ऑस्टिन स्टैंटन आईआर कोड से इंस्ट्रक्शंस में बहुत अच्छे ट्यूटो का इस्तेमाल किया।

मेरे कुछ मतभेद थे, शायद नए संस्करण के कारण क्योंकि अनुदेशक पुराने हैं, हार्डवेयर.कॉन्फ़ फ़ाइल अब मौजूद नहीं है (कम से कम मुझे यह नहीं मिला)

ऐसा भी लगता है कि टुटो में प्रयुक्त ट्रांजिस्टर एक PNP ट्रांजिस्टर है, मेरे हिस्से के लिए मैंने 2N2222 का उपयोग किया है जो NPN है लेकिन परिणाम समान है। (केबलिंग को छोड़कर !!!!!!!!)

पिन असाइनमेंट /boot/config.txt में दिया गया है:

#ऑटोराइज़ेशन डी एलआईआरसी ले 2019-07-08dtoverlay=lirc-rpi, gpio_out_pin=22, gpio_in_pin=23

आईआर एलईडी रास्पि के पिन 22 से जुड़ा होगा।

एक महत्वपूर्ण टिप्पणी: रास्पी को कोड सीखते समय कमांड में सूचीबद्ध कीवर्ड का उपयोग करना अनिवार्य है

इरकॉर्ड --सूची-नामस्थान

यहाँ वह फ़ाइल है जिसे मैंने अपने ज्यूकबॉक्स के लिए बनाया है:

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

# कृपया इस फ़ाइल को # https://sourceforge.net/p/lirc-remotes/wiki/Check… # में वर्णित अनुसार समाप्त करने के लिए समय निकालें और इसे ## पर भेजकर दूसरों को उपलब्ध कराएं।

# यह कॉन्फ़िग फ़ाइल स्वचालित रूप से उत्पन्न हुई थी

# गुरु मई 9 17:33:37 2019 को lirc-0.9.4c (डिफ़ॉल्ट) का उपयोग करना # कमांड लाइन का इस्तेमाल किया गया: -d /dev/lirc0 /root/lircd.conf

# कर्नेल संस्करण (unname -r): 4.14.98-v7+ # # दूरस्थ नाम (कॉन्फ़िगरेशन फ़ाइल के अनुसार): ज्यूकबॉक्स

# रिमोट डिवाइस का ब्रांड, जो चीज आप अपने हाथ में रखते हैं: # रिमोट डिवाइस मॉडल एनआर:

# रिमोट डिवाइस की जानकारी url:

# क्या रिमोट डिवाइस में बंडल कैप्चर डिवाइस है e. जी।, ए

# यू एस बी डोंगल?:

# बंडल किए गए यूएसबी उपकरणों के लिए: यूएसबी विक्रेता आईडी, उत्पाद आईडी

# और डिवाइस स्ट्रिंग (dmesg या lsusb का उपयोग करें):

# नियंत्रित डिवाइस का प्रकार

# (टीवी, वीसीआर, ऑडियो, डीवीडी, सैटेलाइट, केबल, एचटीपीसी,…):

# इस रिमोट द्वारा नियंत्रित डिवाइस:

रिमोट शुरू करें

नाम ज्यूकबॉक्स

बिट्स 16

झंडे SPACE_ENC|CONST_LENGTH

ईपीएस 30

एप्स १००

हैडर 4470 4496

एक 542 1693

शून्य 542 581

पट्रेल 553

प्री_डेटा_बिट्स 16

प्री_डेटा 0xC2CA

अंतर 107863

टॉगल_बिट_मास्क 0x0

आवृत्ति 38000

कोड शुरू करें

KEY_POWER 0x807F

KEY_AUX 0x8877

KEY_VOLUMEUP 0xCC33

KEY_VOLUMEDOWN 0xDC23

अंत कोड

अंत रिमोट

जैसा कि आप देख सकते हैं, होम सिनेमा को चलाने के लिए मुझे केवल 4 आदेशों की आवश्यकता है

बिजली चालू / बंद)

औक्स => ऑप्टिकल इनपुट चैनल पर स्विच करने के लिए (चूंकि एचसी हमेशा डीवीडी रीडर पर शुरू होता है)

और वॉल्यूम +/-

संबंधित आदेश LIRC आदेशों के माध्यम से निष्पादित किए जाते हैं:

उदाहरण के लिए: "भेजें भेजेंEND_ONCE ज्यूकबॉक्स KEY_VOLUMEUP"

चरण 3: मुख्य कार्यक्रम

मुख्य कार्यक्रम पायथन में लिखा गया है:

जैसा कि मैं पायथन में नया हूं, मुझे लगता है कि इसमें बहुत सुधार किया जा सकता है, लेकिन यह चलता है…।

विनिर्देश:

1) ग्राफिकल स्क्रीन का प्रबंधन करें:

इसके लिए, मैंने APPJAR का उपयोग किया, जो कि TKINTER है, लेकिन छात्र (मेरे मामले) के लिए सभ्य है, इसका मतलब है कि इसका उपयोग करना बहुत आसान है, शायद कम संभावनाओं के साथ, लेकिन यह मेरे उद्देश्य के लिए पर्याप्त था।

2) mp3 फ़ाइलें चलाएं:

मैंने अजगर के लिए mplayer का इस्तेमाल किया।

3) फेरबदल मोड में खेलने के लिए यादृच्छिक संख्याएँ उत्पन्न करें:

जैसा कि मैं हर तिमाही में एक ही गाना नहीं सुनना चाहता था, मैंने यह जांचने के लिए एक छोटा प्रोग्राम बनाया कि क्या संख्या x पिछली संख्या सूची में मौजूद नहीं थी (x प्लेलिस्ट की लंबाई के आधार पर)।

जहां तक मैंने देखा, पाइथन में रैंडिंट फ़ंक्शन इतना "यादृच्छिक" नहीं है।

4) Arduino को "दिल की धड़कन" भेजें

5) फाइल प्लेयर प्रबंधित करें:

चूंकि Mplayer एसिंक्रोनस है, जब फ़ाइल शुरू होती है तो पाइथन के समाप्त होने पर जानने का कोई तरीका नहीं है (कम से कम मुझे एक आसान तरीका नहीं मिला)

यह हल करने के लिए कि मैंने फ़ाइल की लंबाई और वर्तमान फ़ाइल में प्रगति देने वाले mplayer कमांड का उपयोग किया है

४ और ५ दोनों के लिए मैंने एक आवधिक कार्य उत्पन्न करने के लिए अप्पजर द्वारा दी गई संभावना का उपयोग किया (जैसा कि एपजर एक कार्यक्रम है, यह एक आवधिक घटना बनाने का एक तरीका है)। समारोह है:

#****** टास्कमैन शुरू करें ********* ऐप.रजिस्टरइवेंट (टास्कमैन)

p.setPollTime(1000)

टास्कमैन "टास्क मैनेजर" के लिए जो प्रोग्राम में एक डीईएफ़ है जो स्क्रीन इवेंट्स नहीं है (प्ले की गई फ़ाइल का अंत, प्रगति बार को पॉप्युलेट करें, नैनो को दिल की धड़कन भेजें, ….)

एक बार शुरू होने पर स्क्रीन इस तरह दिखती है:

छवि
छवि

यहाँ प्रोग्राम है: (नोटपैड ++ या गेनी के माध्यम से खोला जा सकता है)

चरण 4: रास्पबेरी भाग: ऑटोस्टार्ट और नई फाइलें जोड़ना

यदि आप प्रोग्राम को देखते हैं तो आप देख सकते हैं कि मैं कुछ बैश फाइलों का उपयोग करता हूं:

१) Start_jukebox:

वास्तव में इसका उद्देश्य होम सिनेमा को चालू करना और D. IN इनपुट (मेरे होम सिनेमा में ऑप्टिकल इनपुट) में स्थानांतरित करना है।

पीआई@रास्पिटोन:/बिन $ कैट start_jukebox#!/bin/bash

भेजें भेजेंEND_ONCE ज्यूकबॉक्स KEY_POWER

नींद 7

भेजें भेजेंEND_ONCE ज्यूकबॉक्स KEY_AUX

नींद २

2) स्टॉप_ज्यूकबॉक्स:

होम सिनेमा को बंद करने के लिए

पीआई@रास्पिटोन:/बिन $ कैट स्टॉप_ज्यूकबॉक्स

#!/बिन/बैश

भेजें भेजेंEND_ONCE ज्यूकबॉक्स KEY_POWER

इन दो बैश फ़ाइलों को पायथन द्वारा os.system कमांड के साथ बुलाया जाता है

पायथन लिपि शुरू करने के लिए मैंने एक छोटा सा बैश बनाया

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

सीडी / घर / पीआई

अजगर jukebox_gui.py

GUI मोड में ऑटो स्टार्ट के लिए मैंने अभी ऑटोस्टार्ट फ़ाइल को /etc/xdg/lxsession/LXDE-pi में संशोधित किया है

pi@raspitone:/etc/xdg/lxsession/LXDE-pi $ cat autostart@lxpanel --profile LXDE-pi

@pcmanfm --desktop --profile LXDE-pi

@xscreensaver -no-splash

@lxterminal --command="dem_jukebox.bash"

बिंदु-आरपीआई

नई mp3 फ़ाइलें जोड़ना:

नई फाइलें जोड़ने के लिए, मैंने एक छोटी समर्पित पायथन लिपि बनाना पसंद किया:

new_song_file.py

मैं पहले सिस्टम फाइल संगठन की व्याख्या करूंगा:

सभी फ़ाइलें /home/pi. में हैं

mp3 फ़ाइलें /home/pi/Music निर्देशिका में संग्रहीत हैं

प्रत्येक कलाकार की अपनी उप निर्देशिका होती है जो संबंधित एमपी३ फाइलों को होस्ट करती है

पीआई@रास्पिटोन:~/संगीत/माइक_ओल्डफील्ड $ एलएस -कुल 760516

-आरडब्ल्यूएक्सआर----- 1 पाई पाई 2254923 जून 30 2017 A_New_Beginning.mp3

-rwxr----- 1 pi pi 2691736 juin 30 2017 Arrival.mp3

-rwxr----- 1 pi pi 8383244 juin 30 2017 Ascension.mp3

-rwxr----- 1 पाई पाई 5410816 जून 30 2017 Blue_Night.mp3

-rwxr----- 1 pi pi 13125199 juin 30 2017 Castaway_(वाद्य)। mp3

-rwxr----- 1 pi pi 12903583 juin 30 2017 Castaway.mp3

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

-rwxr----- 1 pi pi 9047745 juin 30 2017 रथ_(वाद्य)। mp3

-rwxr----- 1 pi pi 9403263 juin 30 2017 रथ.mp3

निर्देशिका में दस्तावेज़ हम खेलने के लिए फ़ाइलों की निर्मित सूची पा सकते हैं।

pi@raspitone:~/दस्तावेज़ $ cat list.txtFranz_Ferdinand/Michael_live.mp3

Franz_Ferdinand/evil_and_a_heathen.mp3

Franz_Ferdinand/Walk_Away_live.mp3

Franz_Ferdinand/love_and_destroy.mp3

Franz_Ferdinand/his_fffire.mp3

Franz_Ferdinand/eleanor_put_your_boots_on.mp3

Franz_Ferdinand/missing_you.mp3

Franz_Ferdinand/this_fire_(playgroup_remix).mp3

Franz_Ferdinand/Jacqueline.mp3

हम प्लेलिस्ट डेटा भी पा सकते हैं (लेकिन यह पायथन लिपि द्वारा बनाया गया है)

छोटी पायथन लिपि संगीत में सहेजे गए नए गीतों को सूची में जोड़ती है। यूनिक्स प्रारूप में शीर्षकों को प्रारूपित करने के बाद txt

यहां स्क्रिप्ट है: (नोटपैड ++ या गेनी के माध्यम से खोला जा सकता है)

चरण 5: Arduino नैनो के माध्यम से बिजली प्रबंधन

जैसा कि मैं कुछ आसान शुरू करना चाहता था, मैंने इसे एक छोटे नैनो द्वारा करने का फैसला किया:

सिद्धांत:

स्टार्ट बटन को दबाते समय सभी उपकरण संचालित होते हैं, नैनो शुरू होती है (1 या 2 सेकंड) और एक रिले को ट्रिगर करके पावर प्रबंधन को संभालती है जो पुश बटन संपर्कों को बंद कर देती है।

फिर नैनो रास्पबेरी से दिल की धड़कन प्राप्त करने के लिए 35 सेकंड तक प्रतीक्षा करती है (इसका मतलब है कि प्रक्रिया शुरू हो गई है और ज्यूकबॉक्स प्रोग्राम चलता है)।

जब तक नैनो दिल की धड़कन प्राप्त करती है तब तक यह रिले को चालू रखता है (डॉग टाइमर देखें)

यदि अब कोई दिल की धड़कन नहीं है (मतलब ज्यूकबॉक्स प्रोग्राम बंद हो गया है) नैनो बिजली रिले को छोड़ने के लिए 20 सेकंड (यह सुनिश्चित करने के लिए कि रास्पि पूरी तरह से बंद हो गया है) की प्रतीक्षा करता है।

ज्यूकबॉक्स तब पूरी तरह से बंद है

मैंने रखरखाव मोड को इंगित करने के लिए नैनो के एक इनपुट को सक्रिय करने के लिए एक स्विच जोड़ा (मैं ssh et vnc के माध्यम से अपने अन्य raspi सर्वरों को प्रबंधित करने के लिए ज्यूकबॉक्स का उपयोग करता हूं)। नैनो फिर वॉच डॉग प्रक्रिया को निष्क्रिय कर देती है

टिप्पणी:

रास्पि से दिल की धड़कन के लिए इनपुट को नीचे खींचने की जरूरत है (लेकिन रास्पी से 3.3V को नैनो द्वारा उच्च स्तर माना जाता है)

यह NE555 के साथ किया जा सकता है लेकिन मैं आलसी हूं और मेरे दराज में हमेशा कुछ नैनो होते हैं !!!!

यहां संक्षिप्त सी प्रोग्राम है (नोटपैड ++ के साथ खोला जा सकता है)

चरण 6: केबलिंग

केबलिंग
केबलिंग
केबलिंग
केबलिंग

स्क्रीन के लिए:

स्क्रीन को चलाने और चलाने के लिए रास्पि पर एक एचडीएमआई केबल और एक यूएसबी केबल का उपयोग किया जाता है।

फ्रंट पैनल के लिए:

नई फाइलें अपलोड करने या बैकअप बनाने में सक्षम होने के लिए रास्पि से एक यूएसबी केबल भी जुड़ा हुआ है।

सॉफ्ट तक पहुंचने में सक्षम होने के लिए नैनो से एक यूएसबी केबल जुड़ा हुआ है (यदि आवश्यक हो तो संशोधनों के लिए)

मैं बाहरी यूएसबी प्लग का उपयोग किए बिना रखरखाव करने में सक्षम होने के लिए रास्पबेरी पर एक वायरलेस कीबोर्ड डोंगल भी प्लग करता हूं

जैसा कि रास्पबेरी और अरुडिनो का उपयोग किया जाता है, केबल लगाना काफी सरल है।

सभी एक स्ट्रिप मैट्रिक्स बोर्ड पर स्थित हैं।

रास्पबेरी से 2 GPIO का उपयोग किया जाता है:

आईआर एलईडी के लिए पिन 22

Arduino के लिए दिल की धड़कन के लिए पिन 27

Arduino पर

पिन २ का उपयोग रास्पि से दिल की धड़कन के लिए एक इंटरप्ट पिन के रूप में किया जाता है।

पिन 3 से 5 का उपयोग एलईडी (स्टार्ट, डब्ल्यूडीटी, रखरखाव) को चलाने के लिए किया जाता है।

पिन 6 रखरखाव स्विच के लिए है।

पिन 7 रिले शील्ड के लिए आउटपुट है।

यहाँ फ्रिटिंग फ़ाइल है:

चरण 7: द बॉक्स

डिब्बा
डिब्बा

मैंने जो कुछ किया उसका मैं बहुत वर्णन नहीं करूंगा क्योंकि यह शक्ति amp और उपयोग किए गए वक्ताओं पर निर्भर करता है।

जानकारी के अनुसार होम सिनेमा बॉक्स के निचले भाग में स्थित है।

बस वक्ताओं के ऊपर:

1 वूफर

2 मध्यम स्पीकर, जिन्हें मैंने बॉक्स में डालने के लिए संशोधित किया है।

सबसे ऊपर:

स्क्रीन के साथ फ्रंट पैनल, एलईडी, स्विच और यूएसबी प्लग।

जंगल:

वक्ताओं के लिए, साइड पैनल्स ऊपर और नीचे मैंने 18 मिमी लकड़ी के तख़्त का उपयोग किया।

सामने की तरफ 40 मिमी स्क्रू के साथ 10 मिमी प्लाईवुड है।

केबल बिछाने और रखरखाव की सुविधा के लिए (यदि आवश्यक हो !!!) मैंने सर्किटरी को सामने वाले पैनल के पीछे एक दराज पर रखा

ओवरहीटिंग से बचने के लिए पीछे के पैनल के नीचे एक बड़ा छेद किया जाता है और मैंने सर्किटरी के ठीक बगल में पीछे के पैनल पर 5V पंखा (8 सेमी) लगाया।

ऊपर की तस्वीर सिर्फ एक विचार देने के लिए है।

तो यह बात है !!!!!!!!!

मुझे पढ़ने के लिए धन्यवाद

और अगली बार नए कारनामों के लिए मिलते हैं

सिफारिश की: